Merge branch 'travis/skinning/pt3-easy-comps' into travis/b1

This commit is contained in:
Travis Ralston 2021-03-10 12:32:02 -07:00
commit bec6697f36
39 changed files with 2446 additions and 960 deletions

View file

@ -203,8 +203,9 @@ limitations under the License.
.mx_SpaceRoomDirectory_actions {
width: 180px;
text-align: right;
height: min-content;
margin: auto 0 auto 28px;
margin-left: 28px;
display: inline-flex;
align-items: center;
.mx_AccessibleButton {
vertical-align: middle;
@ -223,9 +224,5 @@ limitations under the License.
line-height: $font-15px;
color: $secondary-fg-color;
}
.mx_Checkbox {
display: inline-block;
}
}
}

View file

@ -14,8 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
// XXX: We shouldn't be using TemporaryTile anywhere - delete it.
.mx_DecoratedRoomAvatar, .mx_TemporaryTile {
.mx_DecoratedRoomAvatar, .mx_ExtraTile {
position: relative;
&.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar {

View file

@ -22,7 +22,7 @@ import MultiInviter from './utils/MultiInviter';
import Modal from './Modal';
import * as sdk from './';
import { _t } from './languageHandler';
import InviteDialog, {KIND_DM, KIND_INVITE, KIND_SPACE_INVITE} from "./components/views/dialogs/InviteDialog";
import InviteDialog, {KIND_DM, KIND_INVITE} from "./components/views/dialogs/InviteDialog";
import CommunityPrototypeInviteDialog from "./components/views/dialogs/CommunityPrototypeInviteDialog";
import {CommunityPrototypeStore} from "./stores/CommunityPrototypeStore";
@ -50,11 +50,10 @@ export function showStartChatInviteDialog(initialText) {
}
export function showRoomInviteDialog(roomId) {
const isSpace = MatrixClientPeg.get()?.getRoom(roomId)?.isSpaceRoom();
// This dialog handles the room creation internally - we don't need to worry about it.
Modal.createTrackedDialog(
"Invite Users", isSpace ? "Space" : "Room", InviteDialog, {
kind: isSpace ? KIND_SPACE_INVITE : KIND_INVITE,
"Invite Users", "", InviteDialog, {
kind: KIND_INVITE,
roomId,
},
/*className=*/null, /*isPriority=*/false, /*isStatic=*/true,

View file

@ -37,7 +37,7 @@ export default class VoipUserMapper {
return results[0].userid;
}
public async getOrCreateVirtualRoomForRoom(roomId: string):Promise<string> {
public async getOrCreateVirtualRoomForRoom(roomId: string): Promise<string> {
const userId = DMRoomMap.shared().getUserIdForRoomId(roomId);
if (!userId) return null;
@ -52,7 +52,7 @@ export default class VoipUserMapper {
return virtualRoomId;
}
public nativeRoomForVirtualRoom(roomId: string):string {
public nativeRoomForVirtualRoom(roomId: string): string {
const virtualRoom = MatrixClientPeg.get().getRoom(roomId);
if (!virtualRoom) return null;
const virtualRoomEvent = virtualRoom.getAccountData(VIRTUAL_ROOM_EVENT_TYPE);
@ -60,7 +60,7 @@ export default class VoipUserMapper {
return virtualRoomEvent.getContent()['native_room'] || null;
}
public isVirtualRoom(room: Room):boolean {
public isVirtualRoom(room: Room): boolean {
if (this.nativeRoomForVirtualRoom(room.roomId)) return true;
if (this.virtualRoomIdCache.has(room.roomId)) return true;
@ -79,6 +79,8 @@ export default class VoipUserMapper {
}
public async onNewInvitedRoom(invitedRoom: Room) {
if (!CallHandler.sharedInstance().getSupportsVirtualRooms()) return;
const inviterId = invitedRoom.getDMInviter();
console.log(`Checking virtual-ness of room ID ${invitedRoom.roomId}, invited by ${inviterId}`);
const result = await CallHandler.sharedInstance().sipNativeLookup(inviterId);

View file

@ -500,6 +500,9 @@ export default class MessagePanel extends React.Component {
let prevEvent = null; // the last event we showed
// Note: the EventTile might still render a "sent/sending receipt" independent of
// this information. When not providing read receipt information, the tile is likely
// to assume that sent receipts are to be shown more often.
this._readReceiptsByEvent = {};
if (this.props.showReadReceipts) {
this._readReceiptsByEvent = this._getReadReceiptsByShownEvent();
@ -536,10 +539,17 @@ export default class MessagePanel extends React.Component {
const nextEvent = i < this.props.events.length - 1
? this.props.events[i + 1]
: null;
// The next event with tile is used to to determine the 'last successful' flag
// when rendering the tile. The shouldShowEvent function is pretty quick at what
// it does, so this should have no significant cost even when a room is used for
// not-chat purposes.
const nextTile = this.props.events.slice(i + 1).find(e => this._shouldShowEvent(e));
// make sure we unpack the array returned by _getTilesForEvent,
// otherwise react will auto-generate keys and we will end up
// replacing all of the DOM elements every time we paginate.
ret.push(...this._getTilesForEvent(prevEvent, mxEv, last, nextEvent));
ret.push(...this._getTilesForEvent(prevEvent, mxEv, last, nextEvent, nextTile));
prevEvent = mxEv;
}
@ -555,7 +565,7 @@ export default class MessagePanel extends React.Component {
return ret;
}
_getTilesForEvent(prevEvent, mxEv, last, nextEvent) {
_getTilesForEvent(prevEvent, mxEv, last, nextEvent, nextEventWithTile) {
const TileErrorBoundary = sdk.getComponent('messages.TileErrorBoundary');
const EventTile = sdk.getComponent('rooms.EventTile');
const DateSeparator = sdk.getComponent('messages.DateSeparator');
@ -600,12 +610,23 @@ export default class MessagePanel extends React.Component {
let isLastSuccessful = false;
const isSentState = s => !s || s === 'sent';
const isSent = isSentState(mxEv.getAssociatedStatus());
if (!nextEvent && isSent) {
const hasNextEvent = nextEvent && this._shouldShowEvent(nextEvent);
if (!hasNextEvent && isSent) {
isLastSuccessful = true;
} else if (nextEvent && isSent && !isSentState(nextEvent.getAssociatedStatus())) {
} else if (hasNextEvent && isSent && !isSentState(nextEvent.getAssociatedStatus())) {
isLastSuccessful = true;
}
// This is a bit nuanced, but if our next event is hidden but a future event is not
// hidden then we're not the last successful.
if (
nextEventWithTile &&
nextEventWithTile !== nextEvent &&
isSentState(nextEventWithTile.getAssociatedStatus())
) {
isLastSuccessful = false;
}
// We only want to consider "last successful" if the event is sent by us, otherwise of course
// it's successful: we received it.
isLastSuccessful = isLastSuccessful && mxEv.getSender() === MatrixClientPeg.get().getUserId();

View file

@ -64,6 +64,7 @@ export interface ISpaceSummaryEvent {
state_key: string;
content: {
order?: string;
suggested?: boolean;
auto_join?: boolean;
via?: string;
};
@ -91,7 +92,7 @@ const SubSpace: React.FC<ISubspaceProps> = ({
const name = space.name || space.canonical_alias || space.aliases?.[0] || _t("Unnamed Space");
const evContent = event?.getContent();
const [autoJoin, _setAutoJoin] = useState(evContent?.auto_join);
const [suggested, _setSuggested] = useState(evContent?.suggested);
const [removed, _setRemoved] = useState(!evContent?.via);
const cli = MatrixClientPeg.get();
@ -102,12 +103,12 @@ const SubSpace: React.FC<ISubspaceProps> = ({
let actions;
if (editing && queueAction) {
if (event && cli.getRoom(event.getRoomId())?.currentState.maySendStateEvent(event.getType(), cli.getUserId())) {
const setAutoJoin = () => {
_setAutoJoin(v => {
const setSuggested = () => {
_setSuggested(v => {
queueAction({
event,
removed,
autoJoin: !v,
suggested: !v,
});
return !v;
});
@ -118,7 +119,7 @@ const SubSpace: React.FC<ISubspaceProps> = ({
queueAction({
event,
removed: !v,
autoJoin,
suggested,
});
return !v;
});
@ -131,7 +132,7 @@ const SubSpace: React.FC<ISubspaceProps> = ({
} else {
actions = <React.Fragment>
<FormButton kind="danger" onClick={setRemoved} label={_t("Remove from Space")} />
<StyledCheckbox checked={autoJoin} onChange={setAutoJoin} />
<StyledCheckbox checked={suggested} onChange={setSuggested} />
</React.Fragment>;
}
} else {
@ -182,8 +183,8 @@ const SubSpace: React.FC<ISubspaceProps> = ({
interface IAction {
event: MatrixEvent;
suggested: boolean;
removed: boolean;
autoJoin: boolean;
}
interface IRoomTileProps {
@ -199,7 +200,7 @@ const RoomTile = ({ room, event, editing, queueAction, onPreviewClick, onJoinCli
const name = room.name || room.canonical_alias || room.aliases?.[0] || _t("Unnamed Room");
const evContent = event?.getContent();
const [autoJoin, _setAutoJoin] = useState(evContent?.auto_join);
const [suggested, _setSuggested] = useState(evContent?.suggested);
const [removed, _setRemoved] = useState(!evContent?.via);
const cli = MatrixClientPeg.get();
@ -209,12 +210,12 @@ const RoomTile = ({ room, event, editing, queueAction, onPreviewClick, onJoinCli
let actions;
if (editing && queueAction) {
if (event && cli.getRoom(event.getRoomId())?.currentState.maySendStateEvent(event.getType(), cli.getUserId())) {
const setAutoJoin = () => {
_setAutoJoin(v => {
const setSuggested = () => {
_setSuggested(v => {
queueAction({
event,
removed,
autoJoin: !v,
suggested: !v,
});
return !v;
});
@ -225,7 +226,7 @@ const RoomTile = ({ room, event, editing, queueAction, onPreviewClick, onJoinCli
queueAction({
event,
removed: !v,
autoJoin,
suggested,
});
return !v;
});
@ -238,7 +239,7 @@ const RoomTile = ({ room, event, editing, queueAction, onPreviewClick, onJoinCli
} else {
actions = <React.Fragment>
<FormButton kind="danger" onClick={setRemoved} label={_t("Remove from Space")} />
<StyledCheckbox checked={autoJoin} onChange={setAutoJoin} />
<StyledCheckbox checked={suggested} onChange={setSuggested} />
</React.Fragment>;
}
} else {
@ -445,10 +446,10 @@ const SpaceRoomDirectory: React.FC<IProps> = ({ space, initialText = "", onFinis
const onSaveButtonClicked = () => {
// TODO setBusy
pendingActions.current.forEach(({event, autoJoin, removed}) => {
pendingActions.current.forEach(({event, suggested, removed}) => {
const content = {
...event.getContent(),
auto_join: autoJoin,
suggested,
};
if (removed) {
@ -463,7 +464,7 @@ const SpaceRoomDirectory: React.FC<IProps> = ({ space, initialText = "", onFinis
if (isEditing) {
adminButton = <React.Fragment>
<FormButton label={_t("Save changes")} onClick={onSaveButtonClicked} />
<span>{ _t("All users join by default") }</span>
<span>{ _t("Promoted to users") }</span>
</React.Fragment>;
} else {
adminButton = <FormButton label={_t("Manage rooms")} onClick={onManageButtonClicked} />;

View file

@ -557,7 +557,7 @@ export default class SpaceRoomView extends React.PureComponent<IProps, IState> {
case Phase.PublicCreateRooms:
return <SpaceSetupFirstRooms
space={this.props.space}
title={_t("What discussions do you want to have?")}
title={_t("What are some things you want to discuss?")}
description={_t("We'll create rooms for each topic.")}
onFinished={() => this.setState({ phase: Phase.PublicShare })}
/>;

View file

@ -27,7 +27,7 @@ export default class InfoDialog extends React.Component {
className: PropTypes.string,
title: PropTypes.string,
description: PropTypes.node,
button: PropTypes.oneOfType(PropTypes.string, PropTypes.bool),
button: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
onFinished: PropTypes.func,
hasCloseButton: PropTypes.bool,
onKeyDown: PropTypes.func,

View file

@ -49,7 +49,6 @@ import {replaceableComponent} from "../../../utils/replaceableComponent";
export const KIND_DM = "dm";
export const KIND_INVITE = "invite";
export const KIND_SPACE_INVITE = "space_invite";
export const KIND_CALL_TRANSFER = "call_transfer";
const INITIAL_ROOMS_SHOWN = 3; // Number of rooms to show at first
@ -311,7 +310,7 @@ interface IInviteDialogProps {
// not provided.
kind: string,
// The room ID this dialog is for. Only required for KIND_INVITE and KIND_SPACE_INVITE.
// The room ID this dialog is for. Only required for KIND_INVITE.
roomId: string,
// The call to transfer. Only required for KIND_CALL_TRANSFER.
@ -351,8 +350,8 @@ export default class InviteDialog extends React.PureComponent<IInviteDialogProps
constructor(props) {
super(props);
if ((props.kind === KIND_INVITE || props.kind === KIND_SPACE_INVITE) && !props.roomId) {
throw new Error("When using KIND_INVITE or KIND_SPACE_INVITE a roomId is required for an InviteDialog");
if ((props.kind === KIND_INVITE) && !props.roomId) {
throw new Error("When using KIND_INVITE a roomId is required for an InviteDialog");
} else if (props.kind === KIND_CALL_TRANSFER && !props.call) {
throw new Error("When using KIND_CALL_TRANSFER a call is required for an InviteDialog");
}
@ -1029,7 +1028,7 @@ export default class InviteDialog extends React.PureComponent<IInviteDialogProps
sectionSubname = _t("May include members not in %(communityName)s", {communityName});
}
if (this.props.kind === KIND_INVITE || this.props.kind === KIND_SPACE_INVITE) {
if (this.props.kind === KIND_INVITE) {
sectionName = kind === 'recents' ? _t("Recently Direct Messaged") : _t("Suggestions");
}
@ -1250,25 +1249,31 @@ export default class InviteDialog extends React.PureComponent<IInviteDialogProps
}
buttonText = _t("Go");
goButtonFn = this._startDm;
} else if (this.props.kind === KIND_INVITE || this.props.kind === KIND_SPACE_INVITE) {
title = this.props.kind === KIND_INVITE ? _t("Invite to this room") : _t("Invite to this space");
} else if (this.props.kind === KIND_INVITE) {
const room = MatrixClientPeg.get()?.getRoom(this.props.roomId);
const isSpace = room?.isSpaceRoom();
title = isSpace
? _t("Invite to %(spaceName)s", {
spaceName: room.name || _t("Unnamed Space"),
})
: _t("Invite to this room");
let helpTextUntranslated;
if (this.props.kind === KIND_INVITE) {
if (isSpace) {
if (identityServersEnabled) {
helpTextUntranslated = _td("Invite someone using their name, email address, username " +
"(like <userId/>) or <a>share this room</a>.");
"(like <userId/>) or <a>share this space</a>.");
} else {
helpTextUntranslated = _td("Invite someone using their name, username " +
"(like <userId/>) or <a>share this room</a>.");
"(like <userId/>) or <a>share this space</a>.");
}
} else { // KIND_SPACE_INVITE
} else {
if (identityServersEnabled) {
helpTextUntranslated = _td("Invite someone using their name, email address, username " +
"(like <userId/>) or <a>share this space</a>.");
"(like <userId/>) or <a>share this room</a>.");
} else {
helpTextUntranslated = _td("Invite someone using their name, username " +
"(like <userId/>) or <a>share this space</a>.");
"(like <userId/>) or <a>share this room</a>.");
}
}

View file

@ -40,6 +40,7 @@ import RoomAvatar from "../avatars/RoomAvatar";
import {WIDGET_LAYOUT_EVENT_TYPE} from "../../../stores/widgets/WidgetLayoutStore";
import {objectHasDiff} from "../../../utils/objects";
import {replaceableComponent} from "../../../utils/replaceableComponent";
import Tooltip from "../elements/Tooltip";
const eventTileTypes = {
'm.room.message': 'messages.MessageEvent',
@ -569,11 +570,8 @@ export default class EventTile extends React.Component {
};
getReadAvatars() {
if (this._shouldShowSentReceipt) {
return <span className="mx_EventTile_readAvatars"><span className='mx_EventTile_receiptSent' /></span>;
}
if (this._shouldShowSendingReceipt) {
return <span className="mx_EventTile_readAvatars"><span className='mx_EventTile_receiptSending' /></span>;
if (this._shouldShowSentReceipt || this._shouldShowSendingReceipt) {
return <SentReceipt messageState={this.props.mxEvent.getAssociatedStatus()} />;
}
// return early if there are no read receipts
@ -1182,7 +1180,6 @@ class E2ePadlock extends React.Component {
render() {
let tooltip = null;
if (this.state.hover) {
const Tooltip = sdk.getComponent("elements.Tooltip");
tooltip = <Tooltip className="mx_EventTile_e2eIcon_tooltip" label={this.props.title} dir="auto" />;
}
@ -1197,3 +1194,56 @@ class E2ePadlock extends React.Component {
);
}
}
interface ISentReceiptProps {
messageState: string; // TODO: Types for message sending state
}
interface ISentReceiptState {
hover: boolean;
}
class SentReceipt extends React.PureComponent<ISentReceiptProps, ISentReceiptState> {
constructor() {
super();
this.state = {
hover: false,
};
}
onHoverStart = () => {
this.setState({hover: true});
};
onHoverEnd = () => {
this.setState({hover: false});
};
render() {
const isSent = !this.props.messageState || this.props.messageState === 'sent';
const receiptClasses = classNames({
'mx_EventTile_receiptSent': isSent,
'mx_EventTile_receiptSending': !isSent,
});
let tooltip = null;
if (this.state.hover) {
let label = _t("Sending your message...");
if (this.props.messageState === 'encrypting') {
label = _t("Encrypting your message...");
} else if (isSent) {
label = _t("Your message was sent");
}
// The yOffset is somewhat arbitrary - it just brings the tooltip down to be more associated
// with the read receipt.
tooltip = <Tooltip className="mx_EventTile_readAvatars_receiptTooltip" label={label} yOffset={20} />;
}
return <span className="mx_EventTile_readAvatars">
<span className={receiptClasses} onMouseEnter={this.onHoverStart} onMouseLeave={this.onHoverEnd}>
{tooltip}
</span>
</span>;
}
}

View file

@ -1,5 +1,5 @@
/*
Copyright 2020 The Matrix.org Foundation C.I.C.
Copyright 2020, 2021 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.
@ -22,14 +22,13 @@ import {
} from "../../../accessibility/RovingTabIndex";
import NotificationBadge from "./NotificationBadge";
import { NotificationState } from "../../../stores/notifications/NotificationState";
import {replaceableComponent} from "../../../utils/replaceableComponent";
interface IProps {
isMinimized: boolean;
isSelected: boolean;
displayName: string;
avatar: React.ReactElement;
notificationState: NotificationState;
notificationState?: NotificationState;
onClick: () => void;
}
@ -37,9 +36,7 @@ interface IState {
hover: boolean;
}
// TODO: Remove with community invites in the room list: https://github.com/vector-im/element-web/issues/14456
@replaceableComponent("views.rooms.TemporaryTile")
export default class TemporaryTile extends React.Component<IProps, IState> {
export default class ExtraTile extends React.Component<IProps, IState> {
constructor(props: IProps) {
super(props);
@ -59,18 +56,21 @@ export default class TemporaryTile extends React.Component<IProps, IState> {
public render(): React.ReactElement {
// XXX: We copy classes because it's easier
const classes = classNames({
'mx_ExtraTile': true,
'mx_RoomTile': true,
'mx_TemporaryTile': true,
'mx_RoomTile_selected': this.props.isSelected,
'mx_RoomTile_minimized': this.props.isMinimized,
});
const badge = (
<NotificationBadge
notification={this.props.notificationState}
forceCount={false}
/>
);
let badge;
if (this.props.notificationState) {
badge = (
<NotificationBadge
notification={this.props.notificationState}
forceCount={false}
/>
);
}
let name = this.props.displayName;
if (typeof name !== 'string') name = '';
@ -78,7 +78,7 @@ export default class TemporaryTile extends React.Component<IProps, IState> {
const nameClasses = classNames({
"mx_RoomTile_name": true,
"mx_RoomTile_nameHasUnreadEvents": this.props.notificationState.isUnread,
"mx_RoomTile_nameHasUnreadEvents": this.props.notificationState?.isUnread,
});
let nameContainer = (

View file

@ -16,9 +16,10 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import * as React from "react";
import React, { ReactComponentElement } from "react";
import { Dispatcher } from "flux";
import { Room } from "matrix-js-sdk/src/models/room";
import * as fbEmitter from "fbemitter";
import { _t, _td } from "../../../languageHandler";
import { RovingTabIndexProvider } from "../../../accessibility/RovingTabIndex";
@ -33,7 +34,7 @@ import RoomSublist from "./RoomSublist";
import { ActionPayload } from "../../../dispatcher/payloads";
import { MatrixClientPeg } from "../../../MatrixClientPeg";
import GroupAvatar from "../avatars/GroupAvatar";
import TemporaryTile from "./TemporaryTile";
import ExtraTile from "./ExtraTile";
import { StaticNotificationState } from "../../../stores/notifications/StaticNotificationState";
import { NotificationColor } from "../../../stores/notifications/NotificationColor";
import { Action } from "../../../dispatcher/actions";
@ -47,10 +48,12 @@ import { IconizedContextMenuOption, IconizedContextMenuOptionList } from "../con
import AccessibleButton from "../elements/AccessibleButton";
import { CommunityPrototypeStore } from "../../../stores/CommunityPrototypeStore";
import CallHandler from "../../../CallHandler";
import SpaceStore from "../../../stores/SpaceStore";
import SpaceStore, { SUGGESTED_ROOMS } from "../../../stores/SpaceStore";
import { showAddExistingRooms, showCreateNewRoom } from "../../../utils/space";
import { EventType } from "matrix-js-sdk/src/@types/event";
import {replaceableComponent} from "../../../utils/replaceableComponent";
import RoomAvatar from "../avatars/RoomAvatar";
import { ISpaceSummaryRoom } from "../../structures/SpaceRoomDirectory";
interface IProps {
onKeyDown: (ev: React.KeyboardEvent) => void;
@ -64,6 +67,8 @@ interface IProps {
interface IState {
sublists: ITagMap;
isNameFiltering: boolean;
currentRoomId?: string;
suggestedRooms: ISpaceSummaryRoom[];
}
const TAG_ORDER: TagID[] = [
@ -76,6 +81,7 @@ const TAG_ORDER: TagID[] = [
DefaultTagID.LowPriority,
DefaultTagID.ServerNotice,
DefaultTagID.Suggested,
DefaultTagID.Archived,
];
const CUSTOM_TAGS_BEFORE_TAG = DefaultTagID.LowPriority;
@ -243,6 +249,12 @@ const TAG_AESTHETICS: ITagAestheticsMap = {
isInvite: false,
defaultHidden: true,
},
[DefaultTagID.Suggested]: {
sectionLabel: _td("Suggested Rooms"),
isInvite: false,
defaultHidden: false,
},
};
function customTagAesthetics(tagId: TagID): ITagAesthetics {
@ -262,6 +274,7 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
private dispatcherRef;
private customTagStoreRef;
private tagAesthetics: ITagAestheticsMap;
private roomStoreToken: fbEmitter.EventSubscription;
constructor(props: IProps) {
super(props);
@ -269,6 +282,7 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
this.state = {
sublists: {},
isNameFiltering: !!RoomListStore.instance.getFirstNameFilterCondition(),
suggestedRooms: SpaceStore.instance.suggestedRooms,
};
// shallow-copy from the template as we need to make modifications to it
@ -276,20 +290,30 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
this.updateDmAddRoomAction();
this.dispatcherRef = defaultDispatcher.register(this.onAction);
this.roomStoreToken = RoomViewStore.addListener(this.onRoomViewStoreUpdate);
}
public componentDidMount(): void {
SpaceStore.instance.on(SUGGESTED_ROOMS, this.updateSuggestedRooms);
RoomListStore.instance.on(LISTS_UPDATE_EVENT, this.updateLists);
this.customTagStoreRef = CustomRoomTagStore.addListener(this.updateLists);
this.updateLists(); // trigger the first update
}
public componentWillUnmount() {
SpaceStore.instance.off(SUGGESTED_ROOMS, this.updateSuggestedRooms);
RoomListStore.instance.off(LISTS_UPDATE_EVENT, this.updateLists);
defaultDispatcher.unregister(this.dispatcherRef);
if (this.customTagStoreRef) this.customTagStoreRef.remove();
if (this.roomStoreToken) this.roomStoreToken.remove();
}
private onRoomViewStoreUpdate = () => {
this.setState({
currentRoomId: RoomViewStore.getRoomId(),
});
};
private updateDmAddRoomAction() {
const dmTagAesthetics = objectShallowClone(TAG_AESTHETICS[DefaultTagID.DM]);
if (CallHandler.sharedInstance().getSupportsPstnProtocol()) {
@ -321,7 +345,7 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
private getRoomDelta = (roomId: string, delta: number, unread = false) => {
const lists = RoomListStore.instance.orderedLists;
const rooms: Room = [];
const rooms: Room[] = [];
TAG_ORDER.forEach(t => {
let listRooms = lists[t];
@ -342,6 +366,10 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
return room;
};
private updateSuggestedRooms = (suggestedRooms: ISpaceSummaryRoom[]) => {
this.setState({ suggestedRooms });
};
private updateLists = () => {
const newLists = RoomListStore.instance.orderedLists;
if (SettingsStore.getValue("advancedRoomListLogging")) {
@ -396,7 +424,44 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
dis.dispatch({ action: Action.ViewRoomDirectory, initialText });
};
private renderCommunityInvites(): TemporaryTile[] {
private renderSuggestedRooms(): ReactComponentElement<typeof ExtraTile>[] {
return this.state.suggestedRooms.map(room => {
const name = room.name || room.canonical_alias || room.aliases.pop() || _t("Empty room");
const avatar = (
<RoomAvatar
oobData={{
name,
avatarUrl: room.avatar_url,
}}
width={32}
height={32}
resizeMethod="crop"
/>
);
const viewRoom = () => {
defaultDispatcher.dispatch({
action: "view_room",
room_id: room.room_id,
oobData: {
avatarUrl: room.avatar_url,
name,
},
});
};
return (
<ExtraTile
isMinimized={this.props.isMinimized}
isSelected={this.state.currentRoomId === room.room_id}
displayName={name}
avatar={avatar}
onClick={viewRoom}
key={`suggestedRoomTile_${room.room_id}`}
/>
);
});
}
private renderCommunityInvites(): ReactComponentElement<typeof ExtraTile>[] {
// TODO: Put community invites in a more sensible place (not in the room list)
// See https://github.com/vector-im/element-web/issues/14456
return MatrixClientPeg.get().getGroups().filter(g => {
@ -417,7 +482,7 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
});
};
return (
<TemporaryTile
<ExtraTile
isMinimized={this.props.isMinimized}
isSelected={false}
displayName={g.name}
@ -449,7 +514,14 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
for (const orderedTagId of tagOrder) {
const orderedRooms = this.state.sublists[orderedTagId] || [];
const extraTiles = orderedTagId === DefaultTagID.Invite ? this.renderCommunityInvites() : null;
let extraTiles = null;
if (orderedTagId === DefaultTagID.Invite) {
extraTiles = this.renderCommunityInvites();
} else if (orderedTagId === DefaultTagID.Suggested) {
extraTiles = this.renderSuggestedRooms();
}
const totalTiles = orderedRooms.length + (extraTiles ? extraTiles.length : 0);
if (totalTiles === 0 && !ALWAYS_VISIBLE_TAGS.includes(orderedTagId)) {
continue; // skip tag - not needed
@ -472,7 +544,7 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
isMinimized={this.props.isMinimized}
onResize={this.props.onResize}
showSkeleton={showSkeleton}
extraBadTilesThatShouldntExist={extraTiles}
extraTiles={extraTiles}
/>);
}

View file

@ -17,7 +17,7 @@ limitations under the License.
*/
import * as React from "react";
import {createRef} from "react";
import { createRef, ReactComponentElement } from "react";
import { Room } from "matrix-js-sdk/src/models/room";
import classNames from 'classnames';
import { RovingAccessibleButton, RovingTabIndexWrapper } from "../../../accessibility/RovingTabIndex";
@ -48,7 +48,7 @@ import { RoomNotificationStateStore } from "../../../stores/notifications/RoomNo
import RoomListLayoutStore from "../../../stores/room-list/RoomListLayoutStore";
import { arrayFastClone, arrayHasOrderChange } from "../../../utils/arrays";
import { objectExcluding, objectHasDiff } from "../../../utils/objects";
import TemporaryTile from "./TemporaryTile";
import ExtraTile from "./ExtraTile";
import { ListNotificationState } from "../../../stores/notifications/ListNotificationState";
import IconizedContextMenu from "../context_menus/IconizedContextMenu";
import {replaceableComponent} from "../../../utils/replaceableComponent";
@ -74,9 +74,7 @@ interface IProps {
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.
extraBadTilesThatShouldntExist?: TemporaryTile[];
extraTiles?: ReactComponentElement<typeof ExtraTile>[];
// TODO: Account for https://github.com/vector-im/element-web/issues/14179
}
@ -96,7 +94,7 @@ interface IState {
isExpanded: boolean; // used for the for expand of the sublist when the room list is being filtered
height: number;
rooms: Room[];
filteredExtraTiles?: TemporaryTile[];
filteredExtraTiles?: ReactComponentElement<typeof ExtraTile>[];
}
@replaceableComponent("views.rooms.RoomSublist")
@ -155,12 +153,12 @@ export default class RoomSublist extends React.Component<IProps, IState> {
return padding;
}
private get extraTiles(): TemporaryTile[] | null {
private get extraTiles(): ReactComponentElement<typeof ExtraTile>[] | null {
if (this.state.filteredExtraTiles) {
return this.state.filteredExtraTiles;
}
if (this.props.extraBadTilesThatShouldntExist) {
return this.props.extraBadTilesThatShouldntExist;
if (this.props.extraTiles) {
return this.props.extraTiles;
}
return null;
}
@ -179,7 +177,7 @@ export default class RoomSublist extends React.Component<IProps, IState> {
}
public componentDidUpdate(prevProps: Readonly<IProps>, prevState: Readonly<IState>) {
const prevExtraTiles = prevState.filteredExtraTiles || prevProps.extraBadTilesThatShouldntExist;
const prevExtraTiles = prevState.filteredExtraTiles || prevProps.extraTiles;
// as the rooms can come in one by one we need to reevaluate
// the amount of available rooms to cap the amount of requested visible rooms by the layout
if (RoomSublist.calcNumTiles(prevState.rooms, prevExtraTiles) !== this.numTiles) {
@ -202,8 +200,8 @@ export default class RoomSublist extends React.Component<IProps, IState> {
// If we're supposed to handle extra tiles, take the performance hit and re-render all the
// time so we don't have to consider them as part of the visible room optimization.
const prevExtraTiles = this.props.extraBadTilesThatShouldntExist || [];
const nextExtraTiles = (nextState.filteredExtraTiles || nextProps.extraBadTilesThatShouldntExist) || [];
const prevExtraTiles = this.props.extraTiles || [];
const nextExtraTiles = (nextState.filteredExtraTiles || nextProps.extraTiles) || [];
if (prevExtraTiles.length > 0 || nextExtraTiles.length > 0) {
return true;
}
@ -251,10 +249,10 @@ export default class RoomSublist extends React.Component<IProps, IState> {
private onListsUpdated = () => {
const stateUpdates: IState & any = {}; // &any is to avoid a cast on the initializer
if (this.props.extraBadTilesThatShouldntExist) {
if (this.props.extraTiles) {
const nameCondition = RoomListStore.instance.getFirstNameFilterCondition();
if (nameCondition) {
stateUpdates.filteredExtraTiles = this.props.extraBadTilesThatShouldntExist
stateUpdates.filteredExtraTiles = this.props.extraTiles
.filter(t => nameCondition.matches(t.props.displayName || ""));
} else if (this.state.filteredExtraTiles) {
stateUpdates.filteredExtraTiles = null;

View file

@ -107,7 +107,8 @@ const SpaceCreateMenu = ({ onFinished }) => {
if (visibility === null) {
body = <React.Fragment>
<h2>{ _t("Create a space") }</h2>
<p>{ _t("Organise rooms into spaces, for just you or anyone") }</p>
<p>{ _t("Spaces are new ways to group rooms and people. " +
"To join an existing space youll need an invite") }</p>
<SpaceCreateMenuType
title={_t("Public")}
@ -117,12 +118,12 @@ const SpaceCreateMenu = ({ onFinished }) => {
/>
<SpaceCreateMenuType
title={_t("Private")}
description={_t("Invite only space, best for yourself or teams")}
description={_t("Invite only, best for yourself or teams")}
className="mx_SpaceCreateMenuType_private"
onClick={() => setVisibility(Visibility.Private)}
/>
{/*<p>{ _t("Looking to join an existing space?") }</p>*/}
<p>{ _t("You can change this later") }</p>
</React.Fragment>;
} else {
body = <React.Fragment>
@ -134,9 +135,7 @@ const SpaceCreateMenu = ({ onFinished }) => {
<h2>
{
visibility === Visibility.Public
? _t("Personalise your public space")
: _t("Personalise your private space")
visibility === Visibility.Public ? _t("Your public space") : _t("Your private space")
}
</h2>
<p>

View file

@ -231,7 +231,7 @@
"You do not have permission to do that in this room.": "V této místnosti nemáte na toto právo.",
"You cannot place a call with yourself.": "Nemůžete volat sami sobě.",
"You cannot place VoIP calls in this browser.": "V tomto prohlížeči nelze vytáčet VoIP hovory.",
"You do not have permission to post to this room": "Na přispívání do této místnosti nemáte právo",
"You do not have permission to post to this room": "Nemáte oprávnění zveřejňovat příspěvky v této místnosti",
"Online": "Online",
"Offline": "Offline",
"Check for update": "Zkontrolovat aktualizace",
@ -490,7 +490,7 @@
"were invited %(count)s times|other": "byli %(count)s krát pozváni",
"were invited %(count)s times|one": "byli pozváni",
"was invited %(count)s times|other": "byl %(count)s krát pozván",
"was invited %(count)s times|one": "byl pozván",
"was invited %(count)s times|one": "byl(a) pozván(a)",
"were banned %(count)s times|other": "mělid %(count)s krát zakázaný vstup",
"were banned %(count)s times|one": "měli zakázaný vstup",
"was banned %(count)s times|other": "měl %(count)s krát zakázaný vstup",
@ -1409,7 +1409,7 @@
"Use an identity server to invite by email. <default>Use the default (%(defaultIdentityServerName)s)</default> or manage in <settings>Settings</settings>.": "Odeslat pozvánku pomocí serveru identit. <default>Použít výchozí (%(defaultIdentityServerName)s)</default> nebo přenastavit <settings>Nastavení</settings>.",
"Use an identity server to invite by email. Manage in <settings>Settings</settings>.": "Odeslat pozvánku pomocí serveru identit. Přenastavit v <settings>Nastavení</settings>.",
"Close dialog": "Zavřít dialog",
"Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Napište nám prosím co se pokazilo a nebo nám napište issue na GitHub, kde popíšete problém.",
"Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Dejte nám vědět, prosím, co se pokazilo nebo vytvořte issue na GitHubu, kde problém popište.",
"Removing…": "Odstaňování…",
"Clear all data": "Smazat všechna data",
"Please enter a name for the room": "Zadejte prosím název místnosti",
@ -1529,7 +1529,7 @@
"Flags": "Vlajky",
"Quick Reactions": "Rychlé reakce",
"Cancel search": "Zrušit hledání",
"Please <newIssueLink>create a new issue</newIssueLink> on GitHub so that we can investigate this bug.": "Vyrobte prosím <newIssueLink>nové issue</newIssueLink> na GitHubu abychom mohli chybu opravit.",
"Please <newIssueLink>create a new issue</newIssueLink> on GitHub so that we can investigate this bug.": "Vytvořte prosím <newIssueLink>novou issue</newIssueLink> na GitHubu abychom mohli chybu opravit.",
"%(severalUsers)smade no changes %(count)s times|other": "%(severalUsers)s neudělali %(count)s krát žádnou změnu",
"%(severalUsers)smade no changes %(count)s times|one": "%(severalUsers)s neudělali žádnou změnu",
"%(oneUser)smade no changes %(count)s times|other": "%(oneUser)s neudělal(a) %(count)s krát žádnou změnu",
@ -2981,5 +2981,27 @@
"Failed to connect to your homeserver. Please close this dialog and try again.": "Připojení k domovskému serveru se nezdařilo. Zavřete toto dialogové okno a zkuste to znovu.",
"Abort": "Přerušit",
"Are you sure you wish to abort creation of the host? The process cannot be continued.": "Opravdu chcete přerušit vytváření hostitele? Proces nemůže být navázán.",
"Confirm abort of host creation": "Potvrďte přerušení vytváření hostitele"
"Confirm abort of host creation": "Potvrďte přerušení vytváření hostitele",
"Upgrade to %(hostSignupBrand)s": "Aktualizovat na %(hostSignupBrand)s",
"Edit Values": "Upravit hodnoty",
"Values at explicit levels in this room:": "Hodnoty na explicitních úrovních v této místnosti:",
"Values at explicit levels:": "Hodnoty na explicitních úrovních:",
"Value in this room:": "Hodnota v této místnosti:",
"Value:": "Hodnota:",
"Save setting values": "Uložit hodnoty nastavení",
"Values at explicit levels in this room": "Hodnoty na explicitních úrovních v této místnosti",
"Values at explicit levels": "Hodnoty na explicitních úrovních",
"Settable at room": "Nastavitelné v místnosti",
"Settable at global": "Nastavitelné na globální úrovni",
"Level": "Úroveň",
"Setting definition:": "Definice nastavení:",
"This UI does NOT check the types of the values. Use at your own risk.": "Toto uživatelské rozhraní NEKONTROLUJE typy hodnot. Použití na vlastní nebezpečí.",
"Caution:": "Pozor:",
"Setting:": "Nastavení:",
"Value in this room": "Hodnota v této místnosti",
"Value": "Hodnota",
"Setting ID": "ID nastavení",
"Failed to save settings": "Nastavení se nepodařilo uložit",
"Settings Explorer": "Průzkumník nastavení",
"Show chat effects (animations when receiving e.g. confetti)": "Zobrazit efekty chatu (animace např. při přijetí konfet)"
}

View file

@ -16,7 +16,7 @@
"Deops user with given id": "Setzt das Berechtigungslevel des/der Benutzer:in mit der angegebenen ID zurück",
"Invites user with given id to current room": "Lädt den/die Benutzer:in mit der angegebenen ID in den aktuellen Raum ein",
"Kicks user with given id": "Benutzer:in mit der angegebenen ID kicken",
"Changes your display nickname": "Ändert deinen angezeigten Nicknamen",
"Changes your display nickname": "Ändert deinen Anzeigenamen",
"Change Password": "Passwort ändern",
"Searches DuckDuckGo for results": "Verwendet DuckDuckGo für Suchergebnisse",
"Commands": "Kommandos",
@ -115,7 +115,7 @@
"You are already in a call.": "Du bist bereits in einem Gespräch.",
"You cannot place a call with yourself.": "Du kannst keinen Anruf mit dir selbst starten.",
"You cannot place VoIP calls in this browser.": "VoIP-Gespräche werden von diesem Browser nicht unterstützt.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Home-Server verbunden zu sein.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Homeserver verbunden zu sein.",
"Sun": "So",
"Mon": "Mo",
"Tue": "Di",
@ -181,7 +181,7 @@
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s hat die Verbannung von %(targetName)s aufgehoben.",
"Usage": "Verwendung",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen.",
"You need to be able to invite users to do that.": "Du brauchst die Berechtigung Benutzer:innen einzuladen haben, um diese Aktion ausführen zu können.",
"You need to be able to invite users to do that.": "Du musst die Berechtigung \"Benutzer:innen einladen\" haben, um diese Aktion ausführen zu können.",
"You need to be logged in.": "Du musst angemeldet sein.",
"There are no visible files in this room": "Es gibt keine sichtbaren Dateien in diesem Raum",
"Connectivity to the server has been lost.": "Verbindung zum Server wurde unterbrochen.",
@ -636,7 +636,7 @@
"Which officially provided instance you are using, if any": "Welche offiziell angebotene Instanz du nutzt, wenn überhaupt eine",
"<a>In reply to</a> <pill>": "<a>Als Antwort auf</a> <pill>",
"This room is not public. You will not be able to rejoin without an invite.": "Dies ist kein öffentlicher Raum. Du wirst diesen nicht ohne Einladung wieder beitreten können.",
"%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s änderte den Anzeigenamen auf %(displayName)s.",
"%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s hat den Anzeigenamen zu %(displayName)s geändert.",
"Failed to set direct chat tag": "Fehler beim Setzen der Direkt-Chat-Markierung",
"Failed to remove tag %(tagName)s from room": "Entfernen der Raum-Kennzeichnung %(tagName)s fehlgeschlagen",
"Failed to add tag %(tagName)s to room": "Fehler beim Hinzufügen des \"%(tagName)s\"-Tags an dem Raum",
@ -834,7 +834,7 @@
"This event could not be displayed": "Dieses Ereignis konnte nicht angezeigt werden",
"A call is currently being placed!": "Ein Anruf wurde schon gestartet!",
"Permission Required": "Berechtigung benötigt",
"You do not have permission to start a conference call in this room": "Du hast keine Berechtigung um ein Konferenzgespräch in diesem Raum zu starten",
"You do not have permission to start a conference call in this room": "Du hast keine Berechtigung ein Konferenzgespräch in diesem Raum zu starten",
"Failed to remove widget": "Widget konnte nicht entfernt werden",
"An error ocurred whilst trying to remove the widget from the room": "Ein Fehler trat auf während versucht wurde, das Widget aus diesem Raum zu entfernen",
"System Alerts": "System-Benachrichtigung",
@ -1433,7 +1433,7 @@
"Never send encrypted messages to unverified sessions in this room from this session": "Sende niemals verschlüsselte Nachrichten von dieser Sitzung zu unverifizierten Sitzungen in diesem Raum",
"Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Durch die Änderung des Passworts werden derzeit alle Ende-zu-Ende-Verschlüsselungsschlüssel in allen Sitzungen zurückgesetzt, sodass der verschlüsselte Chat-Verlauf nicht mehr lesbar ist, es sei denn, du exportierst zuerst deine Raumschlüssel und importierst sie anschließend wieder. In Zukunft wird dies verbessert werden.",
"Delete %(count)s sessions|other": "%(count)s Sitzungen löschen",
"Backup is not signed by any of your sessions": "Die Sicherung wurde von keiner deiner Sitzungen unterzeichnet",
"Backup is not signed by any of your sessions": "Die Sicherung wurde von keiner deiner Sitzungen bestätigt",
"Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "Dein Passwort wurde erfolgreich geändert. Du erhältst keine Push-Benachrichtigungen zu anderen Sitzungen, bis du dich wieder bei diesen anmeldest",
"Notification sound": "Benachrichtigungston",
"Set a new custom sound": "Setze einen neuen benutzerdefinierten Ton",
@ -1569,7 +1569,7 @@
"%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s hat die alternative Adresse %(addresses)s für diesen Raum entfernt.",
"%(senderName)s changed the alternative addresses for this room.": "%(senderName)s hat die alternative Adresse für diesen Raum geändert.",
"%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s hat die Haupt- und Alternativadressen für diesen Raum geändert.",
"%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Nutzer!nnen, die %(glob)s entsprechen",
"%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Benutzer:innen, die %(glob)s entsprechen",
"%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Räume, die %(glob)s entsprechen",
"%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Server, die %(glob)s entsprechen",
"%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel, die %(glob)s entspricht",
@ -1636,7 +1636,7 @@
"Use Single Sign On to continue": "Single-Sign-On zum Fortfahren nutzen",
"Confirm adding this email address by using Single Sign On to prove your identity.": "Bestätige die hinzugefügte E-Mail-Adresse mit Single Sign-On, um deine Identität nachzuweisen.",
"Single Sign On": "Single Sign-On",
"Confirm adding email": "Bestätige hinzugefügte E-Mail-Addresse",
"Confirm adding email": "Hinzugefügte E-Mail-Addresse bestätigen",
"Confirm adding this phone number by using Single Sign On to prove your identity.": "Bestätige die hinzugefügte Telefonnummer, indem du deine Identität mittels Single Sign-On nachweist.",
"Click the button below to confirm adding this phone number.": "Klicke unten die Schaltfläche, um die hinzugefügte Telefonnummer zu bestätigen.",
"If you cancel now, you won't complete your operation.": "Wenn du jetzt abbrichst, wirst du deinen Vorgang nicht fertigstellen.",
@ -2060,7 +2060,7 @@
"An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "Beim Ändern der Anforderungen für Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher, dass du die nötigen Berechtigungen besitzt und versuche es erneut.",
"An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.": "Beim Ändern der Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher, dass du die nötigen Berechtigungen besitzt und versuche es erneut.",
"Unable to share email address": "E-Mail-Adresse kann nicht geteilt werden",
"Please enter verification code sent via text.": "Gib den Verifikationscode ein, den du empfangen hast.",
"Please enter verification code sent via text.": "Gib den Bestätigungscode ein, den du empfangen hast.",
"Almost there! Is your other session showing the same shield?": "Fast geschafft! Zeigt deine andere Sitzung das gleiche Schild?",
"Almost there! Is %(displayName)s showing the same shield?": "Fast geschafft! Wird bei %(displayName)s das gleiche Schild angezeigt?",
"Click the link in the email you received to verify and then click continue again.": "Klicke auf den Link in der Bestätigungs-E-Mail, und dann auf Weiter.",
@ -2567,7 +2567,7 @@
"See when the name changes in this room": "Sehen wenn sich der Name in diesem Raum ändert",
"Change the name of your active room": "Den Namen deines aktiven Raums ändern",
"See when the name changes in your active room": "Sehen wenn der Name sich in deinem aktiven Raum ändert",
"Change the avatar of this room": "Avatar von diesem Raum ändern",
"Change the avatar of this room": "Icon von diesem Raum ändern",
"See when the avatar changes in this room": "Sehen wenn der Avatar sich in diesem Raum ändert",
"Change the avatar of your active room": "Den Avatar deines aktiven Raums ändern",
"See when the avatar changes in your active room": "Sehen wenn ein Avatar in deinem aktiven Raum geändert wird",
@ -2664,7 +2664,7 @@
"Fill Screen": "Bildschirm ausfüllen",
"Voice Call": "Sprachanruf",
"Video Call": "Videoanruf",
"Remain on your screen while running": "Bleiben Sie auf Ihrem Bildschirm während der Ausführung von",
"Remain on your screen while running": "Bleib auf deinem Bildschirm während der Ausführung von",
"Remain on your screen when viewing another room, when running": "Bleiben Sie auf Ihrem Bildschirm, während Sie einen anderen Raum betrachten, wenn Sie ausführen",
"Zimbabwe": "Simbabwe",
"Zambia": "Sambia",
@ -2944,8 +2944,8 @@
"Homeserver": "Heimserver",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Element with an existing Matrix account on a different homeserver.": "Du kannst in den benutzerdefinierten Serveroptionen eine andere Heimserver-URL angeben, um dich bei anderen Matrixservern anzumelden.",
"Server Options": "Servereinstellungen",
"No other application is using the webcam": "Keine andere Anwendung auf die Webcam zugreift",
"Permission is granted to use the webcam": "Auf die Webcam zugegriffen werden darf",
"No other application is using the webcam": "keine andere Anwendung auf die Webcam zugreift",
"Permission is granted to use the webcam": "auf die Webcam zugegriffen werden darf",
"A microphone and webcam are plugged in and set up correctly": "Mikrofon und Webcam eingesteckt und richtig eingerichtet sind",
"Call failed because no microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Der Anruf ist fehlgeschlagen weil nicht auf das Mikrofon zugegriffen werden konnte. Stelle sicher, dass das Mikrofon richtig eingesteckt und eingerichtet ist.",
"Call failed because no webcam or microphone could not be accessed. Check that:": "Der Anruf ist fehlgeschlagen weil nicht auf das Mikrofon oder die Webcam zugegriffen werden konnte. Stelle sicher, dass:",
@ -3036,7 +3036,7 @@
"Converts the room to a DM": "Wandelt den Raum zu Direktnachricht um",
"Something went wrong in confirming your identity. Cancel and try again.": "Bei der Bestätigung deiner Identität ist ein Fehler aufgetreten. Abbrechen und erneut versuchen.",
"Use app": "App verwenden",
"Element Web is experimental on mobile. For a better experience and the latest features, use our free native app.": "Element Web ist experimentell auf mobilen Endgeräten. Für eine bessere Erfahrung und die neuesten Erweiterungen, nutze unsere freie, native App.",
"Element Web is experimental on mobile. For a better experience and the latest features, use our free native app.": "Element Web ist auf mobilen Endgeräten experimentell. Für eine bessere Erfahrung und die neuesten Erweiterungen, nutze unsere freie, native App.",
"Use app for a better experience": "Nutze die App für eine bessere Erfahrung",
"We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.": "Wir haben deinen Browser gebeten, sich zu merken, bei welchem Homeserver du dich anmeldest, aber dein Browser hat dies leider vergessen. Gehe zur Anmeldeseite und versuche es erneut.",
"Show stickers button": "Sticker-Schaltfläche anzeigen",
@ -3059,5 +3059,24 @@
"Cookie Policy": "Cookie-Richtlinie",
"Learn more in our <privacyPolicyLink />, <termsOfServiceLink /> and <cookiePolicyLink />.": "Erfahren mehr in unserer <privacyPolicyLink />, <termsOfServiceLink /> und <cookiePolicyLink />.",
"Failed to connect to your homeserver. Please close this dialog and try again.": "Verbindung zum Homeserver fehlgeschlagen. Bitte schließe diesen Dialog and versuche es erneut.",
"Abort": "Abbrechen"
"Abort": "Abbrechen",
"Upgrade to %(hostSignupBrand)s": "Zu %(hostSignupBrand)s upgraden",
"Edit Values": "Werte bearbeiten",
"Value in this room:": "Wert in diesem Raum:",
"Value:": "Wert:",
"Level": "Level",
"This UI does NOT check the types of the values. Use at your own risk.": "Diese Benutzeroberfläche prüft nicht auf richtige Datentypen. Benutzung auf eigene Gefahr.",
"Setting:": "Einstellung:",
"Value": "Wert",
"Setting ID": "Einstellungs-ID",
"Failed to save settings": "Einstellungen konnten nicht gespeichert werden",
"Show chat effects (animations when receiving e.g. confetti)": "Animierte Chateffekte zeigen, wenn z.B. Konfetti-Emojis erhalten werden",
"Save setting values": "Einstellungswerte speichern",
"Caution:": "Vorsicht:",
"Settable at global": "Global einstellbar",
"Setting definition:": "Definition der Einstellung:",
"Value in this room": "Wert in diesem Raum",
"Settings Explorer": "Einstellungs-Explorer",
"Values at explicit levels": "Werte für explizite Levels",
"Settable at room": "Für den Raum einstellbar"
}

View file

@ -988,14 +988,15 @@
"Name": "Name",
"Description": "Description",
"Create a space": "Create a space",
"Organise rooms into spaces, for just you or anyone": "Organise rooms into spaces, for just you or anyone",
"Spaces are new ways to group rooms and people. To join an existing space youll need an invite": "Spaces are new ways to group rooms and people. To join an existing space youll need an invite",
"Public": "Public",
"Open space for anyone, best for communities": "Open space for anyone, best for communities",
"Private": "Private",
"Invite only space, best for yourself or teams": "Invite only space, best for yourself or teams",
"Invite only, best for yourself or teams": "Invite only, best for yourself or teams",
"You can change this later": "You can change this later",
"Go back": "Go back",
"Personalise your public space": "Personalise your public space",
"Personalise your private space": "Personalise your private space",
"Your public space": "Your public space",
"Your private space": "Your private space",
"Give it a photo, name and description to help you identify it.": "Give it a photo, name and description to help you identify it.",
"You can change these at any point.": "You can change these at any point.",
"Creating...": "Creating...",
@ -1440,6 +1441,9 @@
"Unencrypted": "Unencrypted",
"Encrypted by a deleted session": "Encrypted by a deleted session",
"The authenticity of this encrypted message can't be guaranteed on this device.": "The authenticity of this encrypted message can't be guaranteed on this device.",
"Sending your message...": "Sending your message...",
"Encrypting your message...": "Encrypting your message...",
"Your message was sent": "Your message was sent",
"Please select the destination room for this message": "Please select the destination room for this message",
"Scroll to most recent messages": "Scroll to most recent messages",
"Close preview": "Close preview",
@ -1529,7 +1533,9 @@
"Low priority": "Low priority",
"System Alerts": "System Alerts",
"Historical": "Historical",
"Suggested Rooms": "Suggested Rooms",
"Custom Tag": "Custom Tag",
"Empty room": "Empty room",
"Can't see what youre looking for?": "Can't see what youre looking for?",
"Start a new chat": "Start a new chat",
"Explore all public rooms": "Explore all public rooms",
@ -2191,10 +2197,12 @@
"Start a conversation with someone using their name or username (like <userId/>).": "Start a conversation with someone using their name or username (like <userId/>).",
"This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click <a>here</a>": "This won't invite them to %(communityName)s. To invite someone to %(communityName)s, click <a>here</a>",
"Go": "Go",
"Invite someone using their name, email address, username (like <userId/>) or <a>share this room</a>.": "Invite someone using their name, email address, username (like <userId/>) or <a>share this room</a>.",
"Invite someone using their name, username (like <userId/>) or <a>share this room</a>.": "Invite someone using their name, username (like <userId/>) or <a>share this room</a>.",
"Invite to %(spaceName)s": "Invite to %(spaceName)s",
"Unnamed Space": "Unnamed Space",
"Invite someone using their name, email address, username (like <userId/>) or <a>share this space</a>.": "Invite someone using their name, email address, username (like <userId/>) or <a>share this space</a>.",
"Invite someone using their name, username (like <userId/>) or <a>share this space</a>.": "Invite someone using their name, username (like <userId/>) or <a>share this space</a>.",
"Invite someone using their name, email address, username (like <userId/>) or <a>share this room</a>.": "Invite someone using their name, email address, username (like <userId/>) or <a>share this room</a>.",
"Invite someone using their name, username (like <userId/>) or <a>share this room</a>.": "Invite someone using their name, username (like <userId/>) or <a>share this room</a>.",
"Transfer": "Transfer",
"a new master key signature": "a new master key signature",
"a new cross-signing key signature": "a new cross-signing key signature",
@ -2592,14 +2600,13 @@
"Drop file here to upload": "Drop file here to upload",
"You have %(count)s unread notifications in a prior version of this room.|other": "You have %(count)s unread notifications in a prior version of this room.",
"You have %(count)s unread notifications in a prior version of this room.|one": "You have %(count)s unread notification in a prior version of this room.",
"Unnamed Space": "Unnamed Space",
"Undo": "Undo",
"Remove from Space": "Remove from Space",
"No permissions": "No permissions",
"You're in this space": "You're in this space",
"You're in this room": "You're in this room",
"Save changes": "Save changes",
"All users join by default": "All users join by default",
"Promoted to users": "Promoted to users",
"Manage rooms": "Manage rooms",
"Find a room...": "Find a room...",
"Accept Invite": "Accept Invite",
@ -2631,7 +2638,7 @@
"Invite your teammates": "Invite your teammates",
"Invite by username": "Invite by username",
"Inviting...": "Inviting...",
"What discussions do you want to have?": "What discussions do you want to have?",
"What are some things you want to discuss?": "What are some things you want to discuss?",
"We'll create rooms for each topic.": "We'll create rooms for each topic.",
"What projects are you working on?": "What projects are you working on?",
"We'll create rooms for each of them. You can add existing rooms after setup.": "We'll create rooms for each of them. You can add existing rooms after setup.",

View file

@ -3006,5 +3006,44 @@
"Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.": "Via hejmservilo estis neatingebla kaj ne povis vin salutigi. Bonvolu reprovi. Se tio daŭros, bonvolu kontakti la administranton de via hejmservilo.",
"Try again": "Reprovu",
"We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.": "Ni petis la foliumilon memori, kiun hejmservilon vi uzas por saluti, sed domaĝe, via foliumilo forgesis. Iru al la saluta paĝo kaj reprovu.",
"We couldn't log you in": "Ni ne povis salutigi vin"
"We couldn't log you in": "Ni ne povis salutigi vin",
"%(creator)s created this DM.": "%(creator)s kreis ĉi tiun rektan ĉambron.",
"Invalid URL": "Nevalida URL",
"Unable to validate homeserver": "Ne povas validigi hejmservilon",
"Just a heads up, if you don't add an email and forget your password, you could <b>permanently lose access to your account</b>.": "Averte, se vi ne aldonos retpoŝtadreson kaj poste forgesos vian pasvorton, vi eble <b>por ĉiam perdos aliron al via konto</b>.",
"Continuing without email": "Daŭrigante sen retpoŝtadreso",
"We recommend you change your password and Security Key in Settings immediately": "Ni rekomendas, ke vi tuj ŝanĝu viajn pasvorton kaj Sekurecan ŝlosilon per la Agordoj",
"Transfer": "Transigi",
"Invite someone using their name, email address, username (like <userId/>) or <a>share this room</a>.": "Invitu iun per ĝia nomo, retpoŝtadreso, uzantonomo (ekz. <userId/>), aŭ <a>konigu ĉi tiun ĉambron</a>.",
"Start a conversation with someone using their name, email address or username (like <userId/>).": "Komencu interparolon kun iu per ĝia nomo, retpoŝtadreso, aŭ uzantonomo (ekz. <userId/>).",
"Failed to transfer call": "Malsukcesis transigi vokon",
"A call can only be transferred to a single user.": "Voko povas transiĝi nur al unu uzanto.",
"Learn more in our <privacyPolicyLink />, <termsOfServiceLink /> and <cookiePolicyLink />.": "Eksciu plion per niaj <privacyPolicyLink />, <termsOfServiceLink /> kaj <cookiePolicyLink />.",
"Failed to connect to your homeserver. Please close this dialog and try again.": "Malsukcesis konektiĝi al via hejmservilo. Bonvolu fermi ĉi tiun interagujon kaj reprovi.",
"Edit Values": "Redakti valorojn",
"Value in this room:": "Valoro en ĉi tiu ĉambro:",
"Value:": "Valoro:",
"Settable at room": "Agordebla ĉambre",
"Settable at global": "Agordebla ĉiee",
"Level": "Nivelo",
"Setting definition:": "Difino de agordo:",
"This UI does NOT check the types of the values. Use at your own risk.": "Ĉi tiu fasado ne kontrolas la tipojn de valoroj. Uzu je via risko.",
"Caution:": "Atentu:",
"Setting:": "Agordo:",
"Value in this room": "Valoro en ĉi tiu ĉambro",
"Value": "Valoro",
"Setting ID": "Identigilo de agordo",
"Failed to save settings": "Malsukcesis konservi agordojn",
"Settings Explorer": "Esplorilo de agordoj",
"Set my room layout for everyone": "Agordi al ĉiuj mian aranĝon de ĉambro",
"Open dial pad": "Malfermi ciferplaton",
"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 Security Key.": "Savkopiu viajn čifrajn šlosilojn kune kun la datumoj de via konto, okaze ke vi perdos aliron al viaj salutaĵoj. Viaj ŝlosiloj sekuriĝos per unika Sekureca ŝlosilo.",
"Dial pad": "Ciferplato",
"Show chat effects (animations when receiving e.g. confetti)": "Montri grafikaĵojn en babilujo (ekz. movbildojn, ricevante konfetojn)",
"Use Ctrl + Enter to send a message": "Sendu mesaĝon per stirklavo (Ctrl) + eniga klavo",
"Use Command + Enter to send a message": "Sendu mesaĝon per komanda klavo + eniga klavo",
"Use Ctrl + F to search": "Serĉu per stirklavo (Ctrl) + F",
"Use Command + F to search": "Serĉu per komanda klavo + F",
"%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s ŝanĝis la servilblokajn listojn por ĉi tiu ĉambro.",
"%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s agordis la servilblokajn listojn por ĉi tiu ĉambro."
}

File diff suppressed because it is too large Load diff

View file

@ -3066,5 +3066,27 @@
"Privacy Policy": "Privaatsuspoliitika",
"Cookie Policy": "Küpsiste kasutamine",
"Learn more in our <privacyPolicyLink />, <termsOfServiceLink /> and <cookiePolicyLink />.": "Lisateavet leiad <privacyPolicyLink />, <termsOfServiceLink /> ja <cookiePolicyLink /> lehtedelt.",
"Failed to connect to your homeserver. Please close this dialog and try again.": "Ei õnnestunud ühendada koduserveriga. Palun sulge see aken ja proovi uuesti."
"Failed to connect to your homeserver. Please close this dialog and try again.": "Ei õnnestunud ühendada koduserveriga. Palun sulge see aken ja proovi uuesti.",
"Upgrade to %(hostSignupBrand)s": "Kui soovid, siis võta kasutusele %(hostSignupBrand)s",
"Edit Values": "Muuda väärtusi",
"Values at explicit levels in this room:": "Väärtused konkreetsel tasemel selles jututoas:",
"Values at explicit levels:": "Väärtused konkreetsel tasemel:",
"Value in this room:": "Väärtus selles jututoas:",
"Value:": "Väärtus:",
"Save setting values": "Salvesta seadistuste väärtused",
"Values at explicit levels in this room": "Väärtused konkreetsel tasemel selles jututoas",
"Values at explicit levels": "Väärtused konkreetsel tasemel",
"Settable at room": "Seadistatav jututoa-kohaselt",
"Settable at global": "Seadistatav üldiselt",
"Level": "Tase",
"Setting definition:": "Seadistuse määratlus:",
"This UI does NOT check the types of the values. Use at your own risk.": "See kasutajaliides ei oska kontrollida väärtuste tüüpi ja vormingut. Muudatusi teed omal vastutusel.",
"Caution:": "Hoiatus:",
"Setting:": "Seadistus:",
"Value in this room": "Väärtus selles jututoas",
"Value": "Väärtus",
"Setting ID": "Seadistuse tunnus",
"Failed to save settings": "Seadistuste salvestamine ei õnnestunud",
"Settings Explorer": "Seadistuste haldur",
"Show chat effects (animations when receiving e.g. confetti)": "Näita vestluses edevat graafikat (näiteks kui keegi on saatnud serpentiine)"
}

File diff suppressed because it is too large Load diff

View file

@ -3065,5 +3065,27 @@
"Failed to connect to your homeserver. Please close this dialog and try again.": "Fallou a conexión co teu servidor de inicio. Pecha esta información e inténtao outra vez.",
"Abort": "Abortar",
"Are you sure you wish to abort creation of the host? The process cannot be continued.": "Tes a certeza de querer cancelar a creación do servidor? O proceso non pode ser completado.",
"Confirm abort of host creation": "Corfirma que cancelas a creación do servidor"
"Confirm abort of host creation": "Corfirma que cancelas a creación do servidor",
"Upgrade to %(hostSignupBrand)s": "Actualizar a %(hostSignupBrand)s",
"Edit Values": "Editar valores",
"Values at explicit levels in this room:": "Valores a niveis explícitos nesta sala:",
"Values at explicit levels:": "Valores a niveis explícitos:",
"Value in this room:": "Valor nesta sala:",
"Value:": "Valor:",
"Save setting values": "Gardar valores configurados",
"Values at explicit levels in this room": "Valores a niveis explícitos nesta sala",
"Values at explicit levels": "Valores e niveis explícitos",
"Settable at room": "Configurable na sala",
"Settable at global": "Configurable como global",
"Level": "Nivel",
"Setting definition:": "Definición do axuste:",
"This UI does NOT check the types of the values. Use at your own risk.": "Esta IU non comproba os tipos dos valores. Usa baixo a túa responsabilidade.",
"Caution:": "Aviso:",
"Setting:": "Axuste:",
"Value in this room": "Valor nesta sala",
"Value": "Valor",
"Setting ID": "ID do axuste",
"Failed to save settings": "Non se gardaron os axustes",
"Settings Explorer": "Navegar nos axustes",
"Show chat effects (animations when receiving e.g. confetti)": "Mostrar efectos no chat (animacións na recepción, ex. confetti)"
}

View file

@ -3060,5 +3060,27 @@
"Failed to connect to your homeserver. Please close this dialog and try again.": "A matrix szerverhez való csatlakozás nem sikerült. Zárja be ezt az ablakot és próbálja újra.",
"Abort": "Megszakítás",
"Are you sure you wish to abort creation of the host? The process cannot be continued.": "Biztos benne, hogy meg kívánja szakítani a gazdagép létrehozásának a folyamatát? A folyamat nem folytatható.",
"Confirm abort of host creation": "Erősítse meg a gazdagép készítés megszakítását"
"Confirm abort of host creation": "Erősítse meg a gazdagép készítés megszakítását",
"Upgrade to %(hostSignupBrand)s": "Frissítés erre: %(hostSignupBrand)s",
"Edit Values": "Értékek szerkesztése",
"Values at explicit levels in this room:": "Egyedi szinthez tartozó értékek ebben a szobában:",
"Values at explicit levels:": "Egyedi szinthez tartozó értékek:",
"Value in this room:": "Érték ebben a szobában:",
"Value:": "Érték:",
"Save setting values": "Beállított értékek mentése",
"Values at explicit levels in this room": "Egyedi szinthez tartozó értékek ebben a szobában",
"Values at explicit levels": "Egyedi szinthez tartozó értékek",
"Settable at room": "Szobára beállítható",
"Settable at global": "Általánosan beállítható",
"Level": "Szint",
"Setting definition:": "Beállítás leírása:",
"This UI does NOT check the types of the values. Use at your own risk.": "Ez a felület nem ellenőrzi az érték típusát. Csak saját felelősségére használja.",
"Caution:": "Figyelmeztetés:",
"Setting:": "Beállítás:",
"Value in this room": "Érték ebben a szobában",
"Value": "Érték",
"Setting ID": "Beállítás azon.",
"Failed to save settings": "A beállítások elmentése nem sikerült",
"Settings Explorer": "Beállítás Böngésző",
"Show chat effects (animations when receiving e.g. confetti)": "Csevegés effektek megjelenítése (mint a konfetti animáció)"
}

View file

@ -458,5 +458,7 @@
"Passphrases must match": "Lykilfrasar verða að stemma",
"Passphrase must not be empty": "Lykilfrasi má ekki vera auður",
"Create Account": "Stofna Reikning",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "vinsamlegast setja upp <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eða <safariLink>Safari</safariLink> fyrir besta reynsluna."
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "vinsamlegast setja upp <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eða <safariLink>Safari</safariLink> fyrir besta reynsluna.",
"Explore rooms": "Kanna herbergi",
"Sign In": "Skrá inn"
}

View file

@ -3065,5 +3065,27 @@
"Recently visited rooms": "Stanze visitate di recente",
"Show line numbers in code blocks": "Mostra numeri di riga nei blocchi di codice",
"Expand code blocks by default": "Espandi blocchi di codice in modo predefinito",
"Show stickers button": "Mostra pulsante adesivi"
"Show stickers button": "Mostra pulsante adesivi",
"Upgrade to %(hostSignupBrand)s": "Aggiorna a %(hostSignupBrand)s",
"Edit Values": "Modifica valori",
"Values at explicit levels in this room:": "Valori a livelli espliciti in questa stanza:",
"Values at explicit levels:": "Valori a livelli espliciti:",
"Value in this room:": "Valore in questa stanza:",
"Value:": "Valore:",
"Save setting values": "Salva valori impostazione",
"Values at explicit levels in this room": "Valori a livelli espliciti in questa stanza",
"Values at explicit levels": "Valori a livelli espliciti",
"Settable at room": "Impostabile per stanza",
"Settable at global": "Impostabile globalmente",
"Level": "Livello",
"Setting definition:": "Definizione impostazione:",
"This UI does NOT check the types of the values. Use at your own risk.": "Questa interfaccia NON controlla i tipi dei valori. Usa a tuo rischio.",
"Caution:": "Attenzione:",
"Setting:": "Impostazione:",
"Value in this room": "Valore in questa stanza",
"Value": "Valore",
"Setting ID": "ID impostazione",
"Failed to save settings": "Impossibile salvare le impostazioni",
"Settings Explorer": "Esploratore di impostazioni",
"Show chat effects (animations when receiving e.g. confetti)": "Mostra effetti chat (animazioni quando si ricevono ad es. coriandoli)"
}

View file

@ -341,7 +341,7 @@
"Unable to connect to Homeserver. Retrying...": "ホームサーバーに接続できません。 再試行中...",
"Your browser does not support the required cryptography extensions": "お使いのブラウザは、必要な暗号化拡張機能をサポートしていません",
"Not a valid %(brand)s keyfile": "有効な%(brand)sキーファイルではありません",
"Authentication check failed: incorrect password?": "認証に失敗しました: パスワードの間違っている可能性があります。",
"Authentication check failed: incorrect password?": "認証に失敗しました: 間違ったパスワード?",
"Sorry, your homeserver is too old to participate in this room.": "申し訳ありませんが、あなたのホームサーバーはこの部屋に参加するには古すぎます。",
"Please contact your homeserver administrator.": "ホームサーバー管理者に連絡してください。",
"Failed to join room": "部屋に参加できませんでした",
@ -416,8 +416,8 @@
"Share Link to User": "ユーザーへのリンクを共有する",
"Unmute": "ミュート解除",
"Admin Tools": "管理者ツール",
"and %(count)s others...|other": "そして、他 %(count)s ...",
"and %(count)s others...|one": "そして、もう1つ...",
"and %(count)s others...|other": "他 %(count)s ...",
"and %(count)s others...|one": "他1人...",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (権限レベル: %(powerLevelNumber)s )",
"Attachment": "付属品",
"Hangup": "電話を切る",
@ -554,7 +554,7 @@
"Only visible to community members": "コミュニティメンバーにのみ表示されます",
"Filter community rooms": "コミュニティルームを絞り込む",
"Something went wrong when trying to get your communities.": "コミュニティに参加しようとすると何かがうまくいかなかった。",
"Display your community flair in rooms configured to show it.": "表示するよう設定した部屋であなたのコミュニティ バッジを表示",
"Display your community flair in rooms configured to show it.": "表示するよう設定した部屋であなたのコミュニティ バッジを表示します。",
"Show developer tools": "開発者ツールを表示",
"You're not currently a member of any communities.": "あなたは現在、どのコミュニティのメンバーでもありません。",
"Unknown Address": "不明な住所",
@ -625,7 +625,7 @@
"Custom level": "カスタムレベル",
"Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "返信されたイベントを読み込めません。存在しないか、表示する権限がありません。",
"<a>In reply to</a> <pill>": "<a>返信</a> <pill>",
"And %(count)s more...|other": "そして %(count)s もっと...",
"And %(count)s more...|other": "他 %(count)s 人以上...",
"ex. @bob:example.com": "例 @bob:example.com",
"Add User": "ユーザーを追加",
"Matrix ID": "Matirx ID",
@ -875,7 +875,7 @@
"Open Devtools": "開発ツールを開く",
"Flair": "バッジ",
"Fill screen": "フィルスクリーン",
"Unignore": "無視しない",
"Unignore": "無視をやめる",
"Unable to load! Check your network connectivity and try again.": "ロードできません! ネットワーク通信を確認の上もう一度お試しください。",
"Failed to invite users to the room:": "部屋にユーザーを招待できませんでした:",
"You do not have permission to invite people to this room.": "この部屋にユーザーを招待する権限がありません。",
@ -1064,7 +1064,7 @@
"%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s がこの部屋に %(groups)s のバッジを追加しました。",
"%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s がこの部屋から %(groups)s のバッジを削除しました。",
"%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s が %(newGroups)s のバッジを追加し、 %(oldGroups)s のバッジを削除しました。",
"Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "キーが正常にバックアップされていない場合、暗号化されたメッセージにアクセスできなくなります。本当によろしいですか?",
"Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "本当によろしいですか? もしキーが正常にバックアップされていない場合、暗号化されたメッセージにアクセスできなくなります。",
"not stored": "保存されていません",
"All keys backed up": "すべてのキーがバックアップされました",
"Backup version: ": "バックアップのバージョン: ",
@ -1072,7 +1072,7 @@
"Backup key stored: ": "バックアップキーの保存: ",
"Back up your keys before signing out to avoid losing them.": "暗号化キーを失くさないために、サインアウトする前にキーをバックアップしてください。",
"Start using Key Backup": "キーのバックアップをはじめる",
"Error updating flair": "バッジの更新でエラーが発生しました",
"Error updating flair": "バッジの更新でエラーが発生しました",
"There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "この部屋のバッジの更新でエラーが発生しました。サーバーが許可していないか、一時的なエラーが発生しました。",
"Edited at %(date)s. Click to view edits.": "%(date)sに編集。クリックして編集を表示。",
"edited": "編集済み",
@ -1103,7 +1103,7 @@
"Session ID:": "セッション ID:",
"Session key:": "セッション鍵:",
"Cross-signing": "クロス署名",
"A session's public name is visible to people you communicate with": "各セッションの公開名は、あなたの連絡先のユーザーが閲覧できます",
"A session's public name is visible to people you communicate with": "各セッションの公開名は、あなたの連絡先のユーザーが閲覧できます",
"Session name": "セッション名",
"Session key": "セッション鍵",
"Never send encrypted messages to unverified sessions from this session": "このセッションでは、未検証のセッションに対して暗号化されたメッセージを送信しない",
@ -1161,7 +1161,7 @@
"Confirm": "確認",
"Enable audible notifications for this session": "このセッションでは音声通知を有効にする",
"Enable encryption?": "暗号化を有効にしますか?",
"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. <a>Learn more about encryption.</a>": "一度有効にした部屋の暗号化は無効にすることはできません。暗号化された部屋で送信されたメッセージは、サーバーからは見ることができず、その部屋の参加者だけが見ることができます。暗号化を有効にすると、多くのボットやブリッジが正常に動作しなくなる場合があります。<a>暗号化についての詳細はこちらをご覧ください</a>",
"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. <a>Learn more about encryption.</a>": "一度有効にした部屋の暗号化は無効にすることはできません。暗号化された部屋で送信されたメッセージは、サーバーからは見ることができず、その部屋の参加者だけが見ることができます。暗号化を有効にすると、多くのボットやブリッジが正常に動作しなくなる場合があります。<a>暗号化についての詳細はこちらをご覧ください</a>",
"Enter username": "ユーザー名を入力",
"Email (optional)": "メールアドレス (任意)",
"Phone (optional)": "電話番号 (任意)",
@ -1208,7 +1208,7 @@
"Suggestions": "提案",
"Start a conversation with someone using their name, username (like <userId/>) or email address.": "相手の名前、( <userId/> のような)ユーザー名、メールアドレスを使って会話を開始できます。",
"Go": "続行",
"Session already verified!": "このセッションは検証済みです",
"Session already verified!": "このセッションは検証済みです!",
"WARNING: Session already verified, but keys do NOT MATCH!": "警告: このセッションは検証済みです、しかし鍵が一致していません!",
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "警告: 鍵の検証に失敗しました!提供された鍵「%(fingerprint)s」は、%(userId)s およびセッション %(deviceId)s の署名鍵「%(fprint)s」と一致しません。これはつまり、あなたの会話が傍受・盗聴されようとしている恐れがあるということです",
"Show typing notifications": "入力中通知を表示する",
@ -1234,11 +1234,11 @@
" to store messages from ": " を使用中であり ",
"rooms.": "件の部屋のメッセージが含まれています。",
"Manage": "管理",
"Add an email address to configure email notifications": "メールアドレスを追加すると電子メール通知の設定も行えます",
"Add an email address to configure email notifications": "メールアドレスを追加すると電子メール通知の設定も行えます",
"Custom theme URL": "カスタムテーマ URL",
"Add theme": "テーマの追加",
"Account management": "アカウントの管理",
"Deactivating your account is a permanent action - be careful!": "アカウントの無効化は取り消せません。ご注意ください。",
"Deactivating your account is a permanent action - be careful!": "アカウントの無効化は取り消せません。注意してください!",
"Deactivate account": "アカウントの無効化",
"Room list": "部屋一覧",
"Timeline": "タイムライン",
@ -1283,7 +1283,7 @@
"Backup has a signature from <verify>unknown</verify> session with ID %(deviceId)s": "バックアップには、ID %(deviceId)s の<verify>未知のセッション</verify>による署名があります",
"Backup has a <validity>valid</validity> signature from this session": "バックアップには、このセッションによる<validity>有効</validity>な署名があります",
"Backup has an <validity>invalid</validity> signature from this session": "バックアップには、このセッションによる<validity>無効</validity>な署名があります",
"Backup has a <validity>valid</validity> signature from <verify>verified</verify> session <device></device>": "バックアップには、<verify>検証済み</verify>のセッション <device></device> による<validity>有効</validity>署名があります",
"Backup has a <validity>valid</validity> signature from <verify>verified</verify> session <device></device>": "バックアップには<verify>検証された</verify>セッションの<device></device> による<validity>有効</validity>署名があります",
"Backup has a <validity>valid</validity> signature from <verify>unverified</verify> session <device></device>": "バックアップには、<verify>未検証</verify>のセッション <device></device> による<validity>有効</validity>な署名があります",
"Backup has an <validity>invalid</validity> signature from <verify>verified</verify> session <device></device>": "バックアップには、<verify>検証済み</verify>のセッション <device></device> による<validity>無効</validity>な署名があります",
"Backup has an <validity>invalid</validity> signature from <verify>unverified</verify> session <device></device>": "バックアップには、<verify>未検証</verify>のセッション <device></device> による<validity>無効</validity>な署名があります",
@ -1313,7 +1313,7 @@
"Autocomplete delay (ms)": "自動補完の遅延 (ms)",
"Missing media permissions, click the button below to request.": "メディア権限が不足しています、リクエストするには下のボタンを押してください。",
"Request media permissions": "メディア権限をリクエスト",
"Joining room …": "部屋に参加中...",
"Joining room …": "部屋に参加中",
"Join the discussion": "話し合いに参加",
"%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s はプレビューできません。部屋に参加しますか?",
"Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "他のユーザーがあなたのホームサーバー (%(localDomain)s) を通じてこの部屋を見つけられるよう、アドレスを設定しましょう",
@ -1436,9 +1436,9 @@
"Report bugs & give feedback": "バグ報告とフィードバック",
"Everyone in this room is verified": "この部屋内の全員を検証済み",
"Verify all users in a room to ensure it's secure.": "この部屋内のすべてのユーザーが安全であることを確認しました。",
"You've successfully verified %(displayName)s!": "%(displayName)s は正常に検証されました",
"You've successfully verified %(deviceName)s (%(deviceId)s)!": "%(deviceName)s (%(deviceId)s) は正常に検証されました",
"You've successfully verified your device!": "このデバイスは正常に検証されました",
"You've successfully verified %(displayName)s!": "%(displayName)s は正常に検証されました!",
"You've successfully verified %(deviceName)s (%(deviceId)s)!": "%(deviceName)s (%(deviceId)s) は正常に検証されました!",
"You've successfully verified your device!": "このデバイスは正常に検証されました!",
"You've successfully verified this user.": "このユーザーは正常に検証されました。",
"Reject & Ignore user": "拒否した上でこのユーザーを無視する",
"<userName/> invited you": "<userName/> があなたを招待しています",
@ -1452,7 +1452,7 @@
"Got it": "了解",
"Got It": "了解",
"Accepting…": "了承中…",
"Waiting for %(displayName)s to verify…": "%(displayName)s が検証するのを待っています…",
"Waiting for %(displayName)s to verify…": "%(displayName)s による検証を待っています…",
"Waiting for %(displayName)s to accept…": "%(displayName)s が了承するのを待っています…",
"Room avatar": "部屋のアバター",
"Start Verification": "検証を開始",
@ -1484,7 +1484,7 @@
"e.g. my-room": "例: my-room",
"Room address": "ルームアドレス",
"New published address (e.g. #alias:server)": "新しい公開アドレス (例: #alias:server)",
"No other published addresses yet, add one below": "現在、公開アドレスがありません。以下から追加可能です",
"No other published addresses yet, add one below": "現在、公開アドレスがありません。以下から追加可能です",
"Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s rooms.|one": "検索結果を表示させるために、暗号化されたメッセージをローカルに安全にキャッシュしています。現在、%(rooms)s 件の部屋のメッセージの保存に %(size)s を使用中です。",
"Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s rooms.|other": "検索結果を表示させるために、暗号化されたメッセージをローカルに安全にキャッシュしています。現在、%(rooms)s 件の部屋のメッセージの保存に %(size)s を使用中です。",
"Mentions & Keywords": "メンションとキーワード",
@ -1531,7 +1531,810 @@
"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.": "鍵共有リクエストは自動的にあなたの他のセッションに送信されます。他のセッションで鍵共有リクエストを拒否または却下した場合は、ここをクリックしてこのセッションの鍵を再度リクエストしてください。",
"Your key share request has been sent - please check your other sessions for key share requests.": "鍵共有リクエストが送信されました。あなたの他のセッションで鍵共有リクエストをご確認ください。",
"<requestLink>Re-request encryption keys</requestLink> from your other sessions.": "あなたの他のセッションに<requestLink>暗号鍵を再リクエストする</requestLink>。",
"Block anyone not part of %(serverName)s from ever joining this room.": "%(serverName)s 以外からの参加をブロック",
"Block anyone not part of %(serverName)s from ever joining this room.": "%(serverName)s 以外からの参加をブロックします。",
"Private rooms can be found and joined by invitation only. Public rooms can be found and joined by anyone.": "プライベートな部屋は招待者のみが参加できます。公開された部屋は誰でも検索・参加できます。",
"To report a Matrix-related security issue, please read the Matrix.org <a>Security Disclosure Policy</a>.": "Matrix 関連のセキュリティ問題を報告するには、Matrix.org の <a>Security Disclosure Policy</a> をご覧ください。"
"To report a Matrix-related security issue, please read the Matrix.org <a>Security Disclosure Policy</a>.": "Matrix 関連のセキュリティ問題を報告するには、Matrix.org の <a>Security Disclosure Policy</a> をご覧ください。",
"Confirm adding email": "メールアドレスの追加を確認する",
"Confirm adding this email address by using Single Sign On to prove your identity.": "シングルサインオンを使用して本人確認を行い、メールアドレスの追加を承認してください。",
"There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "そのアドレスの作成中にエラーが発生しました。 サーバーで許可されていないか、一時的な障害が発生した可能性があります。",
"Error creating address": "アドレスの作成中にエラーが発生しました",
"There was an error updating the room's alternative addresses. It may not be allowed by the server or a temporary failure occurred.": "部屋の代替アドレスの更新中にエラーが発生しました。 サーバーで許可されていないか、一時的な障害が発生した可能性があります。",
"There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "部屋のメインアドレスの更新中にエラーが発生しました。 サーバーで許可されていないか、一時的な障害が発生した可能性があります。",
"Error updating main address": "メインアドレスの更新中にエラーが発生しました",
"Mark all as read": "すべて既読としてマーク",
"Invited by %(sender)s": "%(sender)s からの招待",
"Revoke invite": "招待を取り消す",
"Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "招待を取り消すことができませんでした。 サーバーで一時的な問題が発生しているか、招待を取り消すための十分な権限がない可能性があります。",
"Failed to revoke invite": "招待を取り消せませんでした",
"Hint: Begin your message with <code>//</code> to start it with a slash.": "ヒント: 通常メッセージをスラッシュで開始したい場合は <code>//</code> から始めます。",
"You can use <code>/help</code> to list available commands. Did you mean to send this as a message?": "<code>/help</code>を使って利用可能なコマンドを一覧できます。メッセージとして送るつもりでしたか?",
"This room is running room version <roomVersion />, which this homeserver has marked as <i>unstable</i>.": "この部屋はホームサーバが<i>不安定</i>と判断した部屋バージョン<roomVersion />で動作しています。",
"Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "この部屋をアップグレードすると、部屋の現在のインスタンスがシャットダウンされて、同じ名前でアップグレードされた部屋が作成されます。",
"This room has already been upgraded.": "この部屋はすでにアップグレードされています。",
"Unread messages.": "未読メッセージ。",
"%(count)s unread messages.|one": "未読メッセージ1件。",
"%(count)s unread messages.|other": "未読メッセージ%(count)s件。",
"%(count)s unread messages including mentions.|one": "未読のメンション1件。",
"%(count)s unread messages including mentions.|other": "メンションを含む未読メッセージ%(count)s件。",
"Jump to first invite.": "最初の招待にジャンプします。",
"Jump to first unread room.": "未読のある最初の部屋にジャンプします。",
"A-Z": "A-Z",
"Activity": "活発さ",
"Show previews of messages": "メッセージのプレビューを表示する",
"Show rooms with unread messages first": "未読メッセージのある部屋を最初に表示する",
"%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please <issueLink>submit a bug report</issueLink>.": "部屋にアクセスしようとした際に エラー(%(errcode)s)が発生しました。このメッセージが誤って表示されていると思われる場合は<issueLink>バグレポートを送信してください</issueLink>。",
"Try again later, or ask a room admin to check if you have access.": "後でもう一度試すか、あなたがアクセスできるかどうか部屋の管理者に問い合わせてください。",
"This room doesn't exist. Are you sure you're at the right place?": "この部屋は存在しません。表示内容が正しくない可能性があります?",
"You're previewing %(roomName)s. Want to join it?": "部屋 %(roomName)s のプレビューです。参加したいですか?",
"Share this email in Settings to receive invites directly in %(brand)s.": "このメールアドレスを設定から共有すると、%(brand)s から招待を受け取れます。",
"Use an identity server in Settings to receive invites directly in %(brand)s.": "設定から identity サーバーを使うと、%(brand)s から直接招待を受け取れます。",
"This invite to %(roomName)s was sent to %(email)s": "部屋 %(roomName)s への正体はメールアドレス %(email)s へ送られました",
"Link this email with your account in Settings to receive invites directly in %(brand)s.": "このメールアドレスを設定からあなたのアカウントにリンクすると %(brand)s から直接招待を受け取ることができます。",
"This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "部屋 %(roomName)s への招待はアカウントに関連付けられていないメールアドレス %(email)s に送られました",
"You can still join it because this is a public room.": "公開された部屋なので参加が可能です。",
"Try to join anyway": "とにかく参加してみる",
"You can only join it with a working invite.": "有効な招待がある場合にのみ参加できます。",
"An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "招待を検証しようとした際にエラー(%(errcode)s)が発生しました。この情報を部屋の管理者に伝えてみてはどうでしょうか。",
"Something went wrong with your invite to %(roomName)s": "%(roomName)s への招待に問題が発生しました",
"You were banned from %(roomName)s by %(memberName)s": "%(memberName)s により %(roomName)s からあなたは禁止されました",
"Re-join": "再参加",
"Reason: %(reason)s": "理由: %(reason)s",
"You were kicked from %(roomName)s by %(memberName)s": "%(memberName)s により %(roomName)s からあなたは蹴り出されました",
"Loading room preview": "部屋プレビューのロード中",
"Sign Up": "サインアップ",
"Join the conversation with an account": "アカウントで会話に参加する",
"Rejecting invite …": "招待を拒否する…",
"%(count)s results|one": "%(count)s 件の結果",
"%(count)s results|other": "%(count)s 件の結果",
"Use the + to make a new room or explore existing ones below": "+を使って新しい部屋を作成するか、以下の既存の部屋を探索します",
"Explore all public rooms": "すべての公開ルームを探索する",
"Start a new chat": "新しいチャットを開始します",
"Can't see what youre looking for?": "探しているものが見つかりませんか?",
"Custom Tag": "カスタムタグ",
"Explore public rooms": "公開ルームを探索する",
"Discovery options will appear once you have added a phone number above.": "上記の電話番号を追加すると Discovery オプションが表示されます。",
"Verification code": "確認コード",
"Please enter verification code sent via text.": "テキストで送信された確認コードを入力してください。",
"Unable to verify phone number.": "電話番号を検証できません。",
"Unable to share phone number": "電話番号を共有できません",
"Unable to revoke sharing for phone number": "電話番号の共有を取り消せません",
"Discovery options will appear once you have added an email above.": "上記のメールを追加すると Discovery オプションが表示されます。",
"Share": "共有",
"Revoke": "取り消す",
"Complete": "完了",
"Verify the link in your inbox": "受信したメールの検証リンクを開いてください",
"Click the link in the email you received to verify and then click continue again.": "受信したメール中のリンクを開いて検証して、その後に「続ける」を押します。",
"Your email address hasn't been verified yet": "あなたのメールアドレスはまだ検証されていません",
"Unable to share email address": "メールアドレスを共有できません",
"Unable to revoke sharing for email address": "メールアドレスの共有を取り消せません",
"To link to this room, please add an address.": "この部屋にリンクするにはアドレスを追加してください。",
"Send %(eventType)s events": "%(eventType)s イベントを送信します",
"Remove messages sent by others": "他の人から送信されたメッセージを削除する",
"An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.": "ユーザーのパワーレベルの変更中にエラーが発生しました。 十分な権限があることを確認して、再試行してください。",
"Uploaded sound": "アップロードされたサウンド",
"Bridges": "ブリッジ",
"This room isnt bridging messages to any platforms. <a>Learn more.</a>": "この部屋はどのプラットフォームともメッセージをブリッジしていません。<a>詳細</a>",
"This room is bridging messages to the following platforms. <a>Learn more.</a>": "この部屋は以下のプラットフォームにメッセージをブリッジしています。 <a>詳細</a>",
"View older messages in %(roomName)s.": "%(roomName)s の古いメッセージを表示します。",
"this room": "この部屋",
"Upgrade this room to the recommended room version": "この部屋を推奨部屋バージョンにアップグレードします",
"<b>Warning</b>: Upgrading a room will <i>not automatically migrate room members to the new version of the room.</i> 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.": "<b>警告</b>: ルームをアップグレードしても、<i>ルームメンバーが新しいバージョンのルームに自動的に移行されることはありません。</i> 古いバージョンのルームの新しいルームへのリンクを投稿します。ルームメンバーは、このリンクをクリックして新しいルームに参加する必要があります。",
"Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "サーバー管理者は、プライベートな部屋とダイレクトメッセージでデフォルトでエンドツーエンド暗号化を無効にしています。",
"Accept all %(invitedRooms)s invites": "%(invitedRooms)s の招待を全て受け入れる",
"Read Marker off-screen lifetime (ms)": "既読マーカーを動かすまでの時間(画面オフ時)(ミリ秒)",
"Read Marker lifetime (ms)": "既読マーカーを動かすまでの時間(ミリ秒)",
"Subscribe": "購読",
"Room ID or address of ban list": "禁止リストの部屋IDまたはアドレス",
"If this isn't what you want, please use a different tool to ignore users.": "これが希望どおりでない場合は、別のツールを使用してユーザーを無視してください。",
"Subscribing to a ban list will cause you to join it!": "禁止リストを購読するとあなたはその効果が得られます!",
"Subscribed lists": "購読リスト",
"eg: @bot:* or example.org": "例: @bot:* や example.org など",
"Server or user ID to ignore": "無視するサーバー/ユーザー ID",
"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.": "あなたの個人的な禁止リストはあなたがメッセージを見たくないすべてのユーザー/サーバーを保持します。 最初のユーザー/サーバーを無視すると、「マイ禁止リスト」という名前の新しい部屋が部屋リストに表示されます。この部屋から出ると禁止リストは効果を失います。",
"Personal ban list": "個人的な禁止リスト",
"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.": "人を無視することは、誰を禁止するかについての規則を含む禁止リストを通して行われます。 禁止リストに登録すると、そのリストによってブロックされたユーザー/サーバーが非表示になります。",
"Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, <code>@bot:*</code> would ignore all users that have the name 'bot' on any server.": "無視するユーザー/サーバーをここに追加します。 アスタリスクを使用して %(brand)s を任意の文字と一致させます。たとえば、 <code>@bot:*</code> は任意のサーバーで「bot」という名前のすべてのユーザーを無視します。",
"⚠ These settings are meant for advanced users.": "⚠これらの設定は、上級ユーザーを対象としています。",
"You are currently subscribed to:": "購読されています:",
"View rules": "ルールを表示",
"Unsubscribe": "購読の解除",
"You are not subscribed to any lists": "あなたはどのリストにも加入していません",
"You are currently ignoring:": "あなたは無視しています:",
"You have not ignored anyone.": "あなたは誰も無視していません。",
"User rules": "ユーザールール",
"Server rules": "サーバールール",
"Ban list rules - %(roomName)s": "禁止ルールのリスト - %(roomName)s",
"None": "なし",
"Please try again or view your console for hints.": "もう一度試すか、コンソールでヒントを確認してください。",
"Error unsubscribing from list": "リスト購読解除のエラー",
"Error removing ignored user/server": "ユーザー/サーバーの無視を除去する際のエラー",
"Please verify the room ID or address and try again.": "部屋のIDやアドレスを確認して、もう一度お試しください。",
"Error subscribing to list": "リスト購読のエラー",
"Something went wrong. Please try again or view your console for hints.": "何かがうまくいかなかった。 もう一度試すか、コンソールでヒントを確認してください。",
"Error adding ignored user/server": "ユーザー/サーバーの無視を追加する際のエラー",
"Ignored/Blocked": "無視/ブロック",
"Customise your experience with experimental labs features. <a>Learn more</a>.": "試験機能を使って利用経験を調整します。 <a>もっと見る</a>。",
"Chat with %(brand)s Bot": "%(brand)s ボットとチャットする",
"For help with using %(brand)s, click <a>here</a> or start a chat with our bot using the button below.": "%(brand)s の使用についてサポートが必要な場合は、 <a>こちら</a> をクリックするか、下のボタンを使用してボットとチャットを開始してください。",
"Discovery": "見つける",
"Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "identity サーバー (%(serverName)s) の利用規約に同意して、メールアドレスや電話番号でユーザを見つけたり見つけられたり招待したりできるようにします。",
"Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "パスワードは正常に変更されました。 他のセッションに再度ログインするまで、他のセッションでプッシュ通知を受信しません",
"Set the name of a font installed on your system & %(brand)s will attempt to use it.": "システムにインストールされているフォントの名前を設定すると、 %(brand)s がそれを使おうとします。",
"Theme added!": "テーマが追加されました!",
"Error downloading theme information.": "テーマ情報のダウンロード中にエラーが発生しました。",
"Invalid theme schema.": "テーマスキーマが無効です。",
"Use between %(min)s pt and %(max)s pt": "%(min)s %(max)s (pt)の間の数字を指定します",
"Custom font size can only be between %(min)s pt and %(max)s pt": "カスタムフォントサイズの指定(単位: point)は %(min)s %(max)s の間にできます",
"Size must be a number": "サイズには数値を指定してください",
"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.": "identity サーバーから切断すると、連絡先を使ってユーザを見つけたり見つけられたり招待したりできなくなります。",
"You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "現在 identity サーバーを使用していません。連絡先を使ってユーザを見つけたり見つけられたりするには identity サーバーを以下に追加します。",
"Identity Server": "identity サーバー",
"If you don't want to use <server /> to discover and be discoverable by existing contacts you know, enter another identity server below.": "連絡先の検出に <server /> ではなく他の identity サーバーを使いたい場合は以下に指定してください。",
"You are currently using <server></server> to discover and be discoverable by existing contacts you know. You can change your identity server below.": "現在 <server></server> を使用して、連絡先を検出可能にしています。以下で identity サーバーを変更できます。",
"Identity Server (%(server)s)": "identity サーバー (%(server)s)",
"We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "切断する前に、identity サーバーからメールアドレスと電話番号を削除することをお勧めします。",
"You are still <b>sharing your personal data</b> on the identity server <idserver />.": "まだ identity サーバー <idserver /> で<b>個人データを共有</b>しています。",
"Disconnect anyway": "とにかく切断します",
"wait and try again later": "しばらく待って、後でもう一度試す",
"contact the administrators of identity server <idserver />": "identity サーバー <idserver /> の管理者に連絡する",
"check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "identity サーバーをブロックする可能性のあるもの(Privacy Badgerなど)がないか、ブラウザプラグインを確認してください",
"You should:": "するべきこと:",
"You should <b>remove your personal data</b> from identity server <idserver /> before disconnecting. Unfortunately, identity server <idserver /> is currently offline or cannot be reached.": "切断する前に identity サーバー <idserver /> から<b>個人データを削除</b>する必要があります。 しかし残念ながら identity サーバー <idserver /> は現在オフライン状態か、またはアクセスできません。",
"Disconnect": "切断する",
"Disconnect from the identity server <idserver />?": "identity サーバー <idserver /> から切断しますか?",
"Disconnect identity server": "identity サーバーを切断します",
"The identity server you have chosen does not have any terms of service.": "選択した identity サーバーには利用規約がありません。",
"Terms of service not accepted or the identity server is invalid.": "利用規約に同意していないか、identity サーバーが無効です。",
"Disconnect from the identity server <current /> and connect to <new /> instead?": "identity サーバー <current /> から切断して <new /> に接続しますか?",
"Change identity server": "identity サーバーを変更する",
"Checking server": "サーバーをチェックしています",
"Could not connect to Identity Server": "identity サーバーに接続できませんでした",
"Not a valid Identity Server (status code %(code)s)": "有効な identity サーバーではありません (ステータスコード %(code)s)",
"Identity Server URL must be HTTPS": "identityサーバーのURLは HTTPS スキーマである必要があります",
"not ready": "準備ができていない",
"ready": "準備ができました",
"unexpected type": "unexpected type",
"well formed": "well formed",
"Your keys are <b>not being backed up from this session</b>.": "キーは<b>このセッションからバックアップされていません</b>。",
"Backing up %(sessionsRemaining)s keys...": "%(sessionsRemaining)s キーをバックアップしています…",
"Unable to load key backup status": "キーのバックアップ状態を読み込めません",
"The operation could not be completed": "操作を完了できませんでした",
"Failed to save your profile": "プロファイルの保存に失敗しました",
"You might have configured them in a client other than %(brand)s. You cannot tune them in %(brand)s but they still apply.": "%(brand)s 以外のクライアントでそれらを構成した可能性があります。%(brand)sで変更することはできませんが適用されます。",
"There are advanced notifications which are not shown here.": "ここに表示されていない追加の通知があります。",
"Clear notifications": "通知をクリアする",
"The integration manager is offline or it cannot reach your homeserver.": "integration マネージャーがオフライン状態か、またはあなたのホームサーバに到達できません。",
"%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use <desktopLink>%(brand)s Desktop</desktopLink> for encrypted messages to appear in search results.": "Webブラウザー上で動作する %(brand)s Web は暗号化メッセージの安全なキャッシュをローカルに保存できません。<desktopLink>%(brand)s Desktop</desktopLink> アプリを使うと暗号化メッセージを検索結果に表示することができます。",
"%(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 <nativeLink>search components added</nativeLink>.": "暗号化されたメッセージの安全なキャッシュをローカルに保存するためのいくつかのコンポーネントが %(brand)s にはありません。 この機能を試してみたい場合は、<nativeLink>検索コンポーネントが追加された </nativeLink> %(brand)s デスクトップのカスタム版をビルドしてください。",
"Securely cache encrypted messages locally for them to appear in search results.": "暗号化メッセージの安全なキャッシュをローカルに保存して、検索結果に表示できるようにします。",
"Delete sessions|one": "セッションを削除する",
"Delete sessions|other": "セッションを削除する",
"Click the button below to confirm deleting these sessions.|one": "下のボタンをクリックしてこのセッションの削除を確認してください。",
"Click the button below to confirm deleting these sessions.|other": "下のボタンをクリックしてこれらのセッションの削除を確認してください。",
"Confirm deleting these sessions": "これらのセッションの削除を確認してください",
"Confirm deleting these sessions by using Single Sign On to prove your identity.|one": "あなたのidentityを確認するためシングルサインオンを使いこのセッションを削除することを確認します。",
"Confirm deleting these sessions by using Single Sign On to prove your identity.|other": "あなたのidentityを調べるためにシングルサインオンを使いこれらのセッションを削除することを確認します。",
"not found in storage": "ストレージには見つかりません",
"Set up": "設定する",
"Cross-signing is not set up.": "クロス署名が設定されていません。",
"Passwords don't match": "パスワードが一致しません",
"Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "パスワードを変更すると全てのセッションでエンドツーエンド暗号化キーがリセットされて暗号化されたチャット履歴が読み取れなくなります。将来的にはこれは改善される見込みですが、現時点では、パスワード変更の前に部屋のキーをエクスポートして後で再インポートすることを検討してください。",
"Channel: <channelLink/>": "Channel: <channelLink/>",
"Workspace: <networkLink/>": "Workspace: <networkLink/>",
"This bridge is managed by <user />.": "このブリッジは<user />により管理されています。",
"This bridge was provisioned by <user />.": "このブリッジは<user />により提供されました。",
"Decline (%(counter)s)": "Decline (%(counter)s)",
"From %(deviceName)s (%(deviceId)s)": "From %(deviceName)s (%(deviceId)s)",
"Your server isn't responding to some <a>requests</a>.": "あなたのサーバは数回の<a>リクエスト</a>に応答しません。",
"Pin": "ピン",
"Folder": "フォルダー",
"Headphones": "ヘッドホン",
"Anchor": "錨",
"Bell": "鐘",
"Trumpet": "トランペット",
"Guitar": "ギター",
"Ball": "ボール",
"Trophy": "トロフィー",
"Rocket": "ロケット",
"Aeroplane": "飛行機",
"Bicycle": "自転車",
"Train": "列車",
"Flag": "旗",
"Telephone": "電話",
"Hammer": "ハンマー",
"Key": "鍵",
"Lock": "錠前",
"Scissors": "鋏",
"Paperclip": "紙ばさみ",
"Pencil": "鉛筆",
"Book": "本",
"Light bulb": "電球",
"Gift": "ギフト",
"Clock": "時計",
"Hourglass": "砂時計",
"Umbrella": "傘",
"Thumbs up": "サムズアップ",
"Santa": "サンタ",
"Spanner": "スパナ",
"Glasses": "眼鏡",
"Hat": "帽子",
"Robot": "ロボット",
"Smiley": "笑顔",
"Heart": "ハート",
"Cake": "ケーキ",
"Pizza": "ピザ",
"Corn": "トウモロコシ",
"Strawberry": "苺",
"Apple": "林檎",
"Banana": "バナナ",
"Fire": "炎",
"Cloud": "雲",
"Moon": "月",
"Globe": "金魚鉢",
"Mushroom": "茸",
"Cactus": "サボテン",
"Tree": "木",
"Flower": "花",
"Butterfly": "蝶",
"Octopus": "蛸",
"Fish": "魚",
"Turtle": "亀",
"Penguin": "ペンギン",
"Rooster": "鶏",
"Panda": "パンダ",
"Rabbit": "兎",
"Elephant": "象",
"Pig": "豚",
"Unicorn": "一角獣",
"Horse": "馬",
"Lion": "ライオン",
"Cat": "猫",
"Dog": "犬",
"To be secure, do this in person or use a trusted way to communicate.": "安全を確保するため、1人でこれを行うか、または信頼できる方法で連携してください。",
"They don't match": "それらは一致しません",
"They match": "それらは一致します",
"Cancelling…": "取り消し中…",
"Waiting for your other session to verify…": "他のセッションによる検証を待っています…",
"Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "他のセッション %(deviceName)s (%(deviceId)s) による検証を待っています…",
"Unable to find a supported verification method.": "どの検証方法にも対応していません。",
"Verify this user by confirming the following number appears on their screen.": "このユーザを検証するため、両方の画面に同じ番号が表示されていることを確認してください。",
"The user must be unbanned before they can be invited.": "招待する前にユーザの禁止を解除する必要があります。",
"Unrecognised address": "認識されないアドレス",
"Error leaving room": "部屋を出る際のエラー",
"Unexpected server error trying to leave the room": "部屋を出る際に予期しないサーバーエラー",
"The message you are trying to send is too large.": "送信しようとしているメッセージが大きすぎます。",
"Unexpected error resolving identity server configuration": "identity サーバー構成の解釈中に予期しないエラーが発生しました",
"Unexpected error resolving homeserver configuration": "ホームサーバー構成の解釈中に予期しないエラーが発生しました",
"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.": "あなたはログインできますが、identity サーバーがオンラインに戻るまで一部の機能を使用できません。 この警告が引き続き表示される場合は、構成を確認するか、サーバー管理者に連絡してください。",
"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.": "あなたはパスワードをリセットできますが、identity サーバーがオンラインに復帰するまで一部の機能を使用できません。 この警告が引き続き表示される場合は、構成を確認するか、サーバー管理者に連絡してください。",
"You can register, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "あなたは登録できますが、identity サーバーがオンラインに復帰するまで一部の機能は使用できません。 この警告が引き続き表示される場合は、構成を確認するか、サーバー管理者に連絡してください。",
"Ask your %(brand)s admin to check <a>your config</a> for incorrect or duplicate entries.": "<a>設定</a>が間違っているか重複しているか確認するよう、%(brand)s の管理者に問い合わせてください。",
"Ensure you have a stable internet connection, or get in touch with the server admin": "安定したインターネット接続があることを確認するか、サーバー管理者に連絡してください",
"See <b>%(msgtype)s</b> messages posted to your active room": "アクティブな部屋に送られた <b>%(msgtype)s</b> メッセージを見る",
"See <b>%(msgtype)s</b> messages posted to this room": "部屋に送られた <b>%(msgtype)s</b> メッセージを見る",
"Send <b>%(msgtype)s</b> messages as you in your active room": "あなたとしてアクティブな部屋に <b>%(msgtype)s</b> メッセージを送る",
"Send <b>%(msgtype)s</b> messages as you in this room": "あなたとして部屋に <b>%(msgtype)s</b> メッセージを送る",
"See general files posted to your active room": "アクティブな部屋に送られたファイルを見る",
"See general files posted to this room": "部屋に送られたファイルを見る",
"Send general files as you in your active room": "あなたとしてアクティブな部屋にファイルを送る",
"Send general files as you in this room": "あなたとしてファイルを部屋に送る",
"See videos posted to this room": "部屋に送られた動画を見る",
"See videos posted to your active room": "アクティブな部屋に送られた動画を見る",
"Send videos as you in your active room": "あなたとしてアクティブな部屋に画像を送る",
"Send videos as you in this room": "あなたとして部屋に動画を送る",
"See images posted to your active room": "アクティブな部屋に送られた画像を見る",
"See images posted to this room": "部屋に送られた画像を見る",
"Send images as you in your active room": "あなたとしてアクティブな部屋に画像を送る",
"Send images as you in this room": "あなたとして部屋に画像を送る",
"See emotes posted to your active room": "アクティブな部屋に送られたエモートを見る",
"See emotes posted to this room": "部屋に送られたエモートを見る",
"Send emotes as you in your active room": "あなたとしてアクティブな部屋にエモートを送る",
"Send emotes as you in this room": "あなたとして部屋にエモートを送る",
"See text messages posted to your active room": "アクティブな部屋に送られたテキストメッセージを見る",
"See text messages posted to this room": "部屋に送られたテキストメッセージを見る",
"Send text messages as you in your active room": "あなたとしてアクティブな部屋にメッセージを送る",
"Send text messages as you in this room": "あなたとしてテキストメッセージを部屋に送る",
"See messages posted to your active room": "アクティブな部屋に送られたメッセージを見る",
"See messages posted to this room": "部屋に送られたメッセージを見る",
"Send messages as you in your active room": "あなたとしてメッセージをアクティブな部屋に送る",
"Send messages as you in this room": "あなたとしてメッセージを部屋に送る",
"The <b>%(capability)s</b> capability": "<b>%(capability)s</b> 機能",
"See <b>%(eventType)s</b> events posted to your active room": "アクティブな部屋に送られたイベント <b>%(eventType)s</b> を見る",
"Send <b>%(eventType)s</b> events as you in your active room": "あなたとしてイベント <b>%(eventType)s</b> をアクティブな部屋に送る",
"See <b>%(eventType)s</b> events posted to this room": "この部屋に送られたイベント <b>%(eventType)s</b> を見る",
"Send <b>%(eventType)s</b> events as you in this room": "あなたとしてイベント <b>%(eventType)s</b> をこの部屋に送る",
"with state key %(stateKey)s": "ステートキー %(stateKey)s と共に",
"with an empty state key": "空のステートキーと共に",
"See when anyone posts a sticker to your active room": "アクティブな部屋にステッカーが送られた時刻を見る",
"Send stickers to your active room as you": "あなたとしてアクティブな部屋にステッカーを送る",
"See when a sticker is posted in this room": "部屋にステッカーが投稿された時刻を見る",
"Send stickers to this room as you": "あなたとして部屋にステッカーを送る",
"See when the avatar changes in your active room": "アクティブな部屋でアバターが変わった時刻を見る",
"Change the avatar of your active room": "アクティブな部屋のアバター画像を変える",
"See when the avatar changes in this room": "部屋のアバター画像が変わった時刻を見る",
"Change the avatar of this room": "部屋のアバター画像を変える",
"See when the name changes in your active room": "アクティブな部屋で名前が変わった時刻を見る",
"Change the name of your active room": "アクティブな部屋の名前を変える",
"See when the name changes in this room": "部屋の名前が変わった時刻を見る",
"Change the name of this room": "部屋の名前を変える",
"See when the topic changes in your active room": "アクティブな部屋でトピックが変わった時刻を見る",
"Change the topic of your active room": "アクティブな部屋のトピックを変える",
"See when the topic changes in this room": "部屋のトピックが変わった時刻を見る",
"Change the topic of this room": "部屋のトピックを変える",
"Change which room, message, or user you're viewing": "表示する部屋/メッセージ/ユーザを変える",
"Change which room you're viewing": "表示する部屋を変える",
"Send stickers into your active room": "アクティブな部屋にステッカーを送る",
"Send stickers into this room": "この部屋にステッカーを送る",
"Remain on your screen while running": "実行中は画面に留める",
"Remain on your screen when viewing another room, when running": "他の部屋を表示してる間も実行中は画面に留める",
"Ask this user to verify their session, or manually verify it below.": "このユーザーに彼らのセッションを検証するよう問い合わせるか、以下のように手動で検証してください。",
"Verify your other session using one of the options below.": "以下のどれか一つを使って他のセッションを検証します。",
"%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)sは禁止ルール %(oldGlob)s を %(newGlob)s (理由 %(reason)s)に変更しました",
"%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s はサーバ禁止ルール %(oldGlob)s を %(newGlob)s (理由 %(reason)s) に変更しました",
"%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s は部屋の禁止ルール %(oldGlob)s を %(newGlob)s (理由 %(reason)s) に変更しました",
"%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s はユーザ禁止ルール %(oldGlob)s を %(newGlob)s (理由 %(reason)s) に変更しました",
"%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s は禁止ルール %(glob)s (理由 %(reason)s)を作成しました",
"%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s はサーバ禁止ルール %(glob)s (理由 %(reason)s)を作成しました",
"%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s は部屋の禁止ルール %(glob)s (理由 %(reason)s)を作成しました",
"%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s はユーザ禁止ルール %(glob)s (理由 %(reason)s)を作成しました",
"%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s は禁止ルール %(glob)s (理由 %(reason)s)を更新しました",
"%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s はサーバ禁止ルール %(glob)s (理由 %(reason)s)を更新しました",
"%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s は部屋の禁止ルール %(glob)s (理由 %(reason)s)を更新しました",
"%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s はユーザ禁止ルール %(glob)s (理由 %(reason)s)を更新しました",
"%(senderName)s updated an invalid ban rule": "%(senderName)s はinvalidな禁止ルールを更新しました",
"%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s は 禁止ルール %(glob)s を削除しました",
"%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s はサーバ禁止ルール %(glob)s を削除しました",
"%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s は部屋の禁止ルール %(glob)s を削除しました",
"%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s はユーザー禁止ルール %(glob)s を削除しました",
"%(senderName)s has updated the widget layout": "%(senderName)s はウィジェットのレイアウトを更新しました",
"%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s は部屋 %(targetDisplayName)s への招待を取り消しました。",
"%(senderName)s declined the call.": "%(senderName)s は通話を拒否しました。",
"(an error occurred)": "(エラーが発生しました)",
"(their device couldn't start the camera / microphone)": "(彼らのデバイスはカメラ/マイクを使用できませんでした)",
"(connection failed)": "(接続に失敗しました)",
"%(senderName)s changed the addresses for this room.": "%(senderName)s がこの部屋のアドレスを変更しました。",
"%(senderName)s changed the main and alternative addresses for this room.": "%(senderName)s がこの部屋のメインアドレスと代替アドレスを変更しました。",
"%(senderName)s changed the alternative addresses for this room.": "%(senderName)s がこの部屋の代替アドレスを変更しました。",
"%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s がこの部屋の代替アドレス %(addresses)s を削除しました。",
"%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s がこの部屋の代替アドレス %(addresses)s を削除しました。",
"%(senderName)s added the alternative addresses %(addresses)s for this room.|one": "%(senderName)s がこの部屋の代替アドレス %(addresses)s を追加しました。",
"%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s がこの部屋の代替アドレス %(addresses)s を追加しました。",
"🎉 All servers are banned from participating! This room can no longer be used.": "🎉すべてのサーバーは参加を禁止されています! この部屋は使用できなくなりました。",
"%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s がこの部屋のサーバーACLを変更しました。",
"%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s がこの部屋のサーバーACLを設定しました。",
"Converts the DM to a room": "DMを部屋に変換します",
"Converts the room to a DM": "部屋をDMに変換します",
"Takes the call in the current room off hold": "現在の部屋の通話を保留から外します",
"Places the call in the current room on hold": "保留中の現在の部屋に通話を発信します",
"Sends a message to the given user": "指定されたユーザーにメッセージを送ります",
"Opens chat with the given user": "指定されたユーザーとのチャットを開きます",
"Send a bug report with logs": "ログ付きのバグ報告を送る",
"Displays information about a user": "ユーザーの情報を表示します",
"The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "指定された署名キーは %(userId)s のセッション %(deviceId)s から受け取ったキーと一致します。セッションは検証済みです。",
"Unknown (user, session) pair:": "ユーザーとセッションのペアが不明です:",
"Verifies a user, session, and pubkey tuple": "ユーザー、セッション、およびpubkeyタプルを検証します",
"Please supply a widget URL or embed code": "ウィジェットのURLまたは埋め込みコードを入力してください",
"Could not find user in room": "部屋にユーザーが見つかりません",
"Command failed": "コマンドが失敗しました",
"Unrecognised room address:": "部屋のアドレスを認識できません:",
"Joins room with given address": "指定されたアドレスの部屋に参加します",
"Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "メールでの招待に identity サーバーを使います。デフォルトの identity サーバー (%(defaultIdentityServerName)s) を使う場合は「続ける」を押してください。または設定画面を開いて変更してください。",
"Failed to set topic": "トピックの設定に失敗しました",
"Double check that your server supports the room version chosen and try again.": "選択した部屋のバージョンをあなたのサーバーがサポートしているか何度も確認してから、もう一度試してください。",
"Sends a message as html, without interpreting it as markdown": "メッセージを(Markdownではなく)HTMLとして送信します",
"Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "プレーンテキストメッセージの前に ( ͡° ͜ʖ ͡°) を付けます",
"Prepends ┬──┬ ( ゜-゜ノ) to a plain-text message": "プレーンテキストメッセージの前に ┬──┬ ( ゜-゜ノ) を付けます",
"Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "プレーンテキストメッセージの前に (╯°□°)╯︵ ┻━┻ を付けます",
"Effects": "効果",
"Setting up keys": "キーのセットアップ",
"Are you sure you want to cancel entering passphrase?": "パスフレーズの入力をキャンセルしてもよいですか?",
"Cancel entering passphrase?": "パスフレーズの入力をキャンセルしますか?",
"Custom (%(level)s)": "カスタム(%(level)s)",
"Use your account or create a new one to continue.": "作成ずみのアカウントを使うか、新しいアカウントを作成して続けます。",
"Sign In or Create Account": "サインインまたはアカウントの作成",
"Zimbabwe": "ジンバブエ",
"Zambia": "ザンビア",
"Yemen": "イエメン",
"Western Sahara": "西サハラ",
"Wallis & Futuna": "ウォリス・フツナ",
"Vietnam": "ベトナム",
"Venezuela": "ベネズエラ",
"Vatican City": "バチカン市",
"Vanuatu": "バヌアツ",
"Uzbekistan": "ウズベキスタン",
"Uruguay": "ウルグアイ",
"United Arab Emirates": "アラブ首長国連邦",
"Ukraine": "ウクライナ",
"Uganda": "ウガンダ",
"U.S. Virgin Islands": "アメリカ領バージン諸島",
"Tuvalu": "ツバル",
"Turks & Caicos Islands": "タークス・カイコス諸島",
"Turkmenistan": "トルクメニスタン",
"Turkey": "トルコ",
"Tunisia": "チュニジア",
"Trinidad & Tobago": "トリニダード・トバゴ",
"Tonga": "トンガ",
"Tokelau": "トケラウ",
"Togo": "トーゴ",
"Timor-Leste": "東ティモール",
"Thailand": "タイ",
"Tanzania": "タンザニア",
"Tajikistan": "タジキスタン",
"Taiwan": "台湾",
"São Tomé & Príncipe": "サントメ・プリンシペ",
"Syria": "シリア",
"Switzerland": "スイス",
"Sweden": "スウェーデン",
"Swaziland": "スワジランド",
"Svalbard & Jan Mayen": "スバールバル&ヤンマイエン",
"Suriname": "スリナム",
"Sudan": "スーダン",
"St. Vincent & Grenadines": "セントビンセント&グレナディーン諸島",
"St. Pierre & Miquelon": "サンピエール島ミクロン島",
"St. Martin": "セントマーチン",
"St. Lucia": "セントルシア",
"St. Kitts & Nevis": "セントクリストファー・ネイビス",
"St. Helena": "セントヘレナ",
"St. Barthélemy": "サン・バルテルミー島",
"Sri Lanka": "スリランカ",
"Spain": "スペイン",
"South Sudan": "南スーダン",
"South Korea": "韓国",
"South Georgia & South Sandwich Islands": "南ジョージア&南サンドイッチ諸島",
"Explore community rooms": "コミュニティルームを探索する",
"Open dial pad": "ダイヤルパッドを開く",
"Start a Conversation": "会話を始める",
"Show Widgets": "ウィジェットを表示する",
"Hide Widgets": "ウィジェットを隠す",
"No recently visited rooms": "最近訪れた部屋はありません",
"Recently visited rooms": "最近訪れた部屋",
"Room %(name)s": "部屋 %(name)s",
"Code block": "コードブロック",
"Strikethrough": "取り消し線",
"The authenticity of this encrypted message can't be guaranteed on this device.": "この暗号化メッセージの信頼性はこのデバイスでは保証できません。",
"Mod": "Mod",
"Edit message": "メッセージの編集",
"Someone is using an unknown session": "誰かが不明なセッションを使用しています",
"You have verified this user. This user has verified all of their sessions.": "このユーザーを検証しました。このユーザは全てのセッションを検証しました。",
"You have not verified this user.": "あなたはこのユーザーを検証していません。",
"This user has not verified all of their sessions.": "このユーザーはすべてのセッションを確認していません。",
"Phone Number": "電話番号",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "+%(msisdn)s にテキストメッセージを送りました。メッセージに含まれた確認コードを入力してください。",
"Remove %(phone)s?": "%(phone)s を除去しますか?",
"We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "アドレスを確認するためメールを送りました。そこにある手順に従い、その後に下のボタンを押してください。",
"Remove %(email)s?": "%(email)s を除去しますか?",
"South Africa": "南アフリカ",
"Somalia": "ソマリア",
"Solomon Islands": "ソロモン諸島",
"Slovenia": "スロベニア",
"Slovakia": "スロバキア",
"Sint Maarten": "シントマールテン",
"Singapore": "シンガポール",
"Sierra Leone": "シエラレオネ",
"Seychelles": "セイシェル",
"Serbia": "セルビア",
"Senegal": "セネガル",
"Saudi Arabia": "サウジアラビア",
"San Marino": "サンマリノ",
"Samoa": "サモア",
"Réunion": "レユニオン",
"Rwanda": "ルワンダ",
"Russia": "ロシア",
"Romania": "ルーマニア",
"Qatar": "カタール",
"Puerto Rico": "プエルトリコ",
"Portugal": "ポルトガル",
"Poland": "ポーランド",
"Pitcairn Islands": "ピトケアン諸島",
"Philippines": "フィリピン",
"Peru": "ペルー",
"Paraguay": "パラグアイ",
"Papua New Guinea": "パプアニューギニア",
"Panama": "パナマ",
"Palestine": "パレスチナ",
"Palau": "パラオ",
"Pakistan": "パキスタン",
"Oman": "オマーン",
"Norway": "ノルウェー",
"Northern Mariana Islands": "北マリアナ諸島",
"North Korea": "北朝鮮",
"Norfolk Island": "ノーフォーク島",
"Niue": "ニウエ",
"Nigeria": "ナイジェリア",
"Niger": "ニジェール",
"Nicaragua": "ニカラグア",
"New Zealand": "ニュージーランド",
"New Caledonia": "ニューカレドニア",
"Netherlands": "オランダ",
"Nepal": "ネパール",
"Nauru": "ナウル",
"Namibia": "ナミビア",
"Myanmar": "ミャンマー",
"Mozambique": "モザンビーク",
"Morocco": "モロッコ",
"Montserrat": "モントセラト",
"Montenegro": "モンテネグロ",
"Mongolia": "モンゴル",
"Monaco": "モナコ",
"Moldova": "モルドバ",
"Micronesia": "ミクロネシア",
"Mexico": "メキシコ",
"Mayotte": "マヨット",
"Mauritius": "モーリシャス",
"Mauritania": "モーリタニア",
"Martinique": "マルティニーク",
"Marshall Islands": "マーシャル諸島",
"Malta": "マルタ",
"Mali": "マリ",
"Maldives": "モルディブ",
"Malaysia": "マレーシア",
"Malawi": "マラウイ",
"Madagascar": "マダガスカル",
"Macedonia": "マケドニア",
"Macau": "マカオ",
"Luxembourg": "ルクセンブルク",
"Lithuania": "リトアニア",
"Liechtenstein": "リヒテンシュタイン",
"Libya": "リビア",
"Liberia": "リベリア",
"Lesotho": "レソト",
"Lebanon": "レバノン",
"Latvia": "ラトビア",
"Laos": "ラオス",
"Kyrgyzstan": "キルギスタン",
"Kuwait": "クウェート",
"Kosovo": "コソボ",
"Kiribati": "キリバス",
"Kenya": "ケニア",
"Kazakhstan": "カザフスタン",
"Jordan": "ヨルダン",
"Jersey": "ジャージー",
"Japan": "日本",
"Jamaica": "ジャマイカ",
"Italy": "イタリア",
"Israel": "イスラエル",
"Isle of Man": "マン島",
"Ireland": "アイルランド",
"Iraq": "イラク",
"Iran": "イラン",
"Indonesia": "インドネシア",
"India": "インド",
"Iceland": "アイスランド",
"Hungary": "ハンガリー",
"Hong Kong": "香港",
"Honduras": "ホンジュラス",
"Heard & McDonald Islands": "ハード島とマクドナルド諸島",
"Haiti": "ハイチ",
"Guyana": "ガイアナ",
"Guinea-Bissau": "ギニアビサウ",
"Guinea": "ギニア",
"Guernsey": "ガーンジー",
"Guatemala": "グアテマラ",
"Guam": "グアム",
"Guadeloupe": "グアドループ",
"Grenada": "グレナダ",
"Greenland": "グリーンランド",
"Greece": "ギリシャ",
"Gibraltar": "ジブラルタル",
"Ghana": "ガーナ",
"Germany": "ドイツ",
"Georgia": "ジョージア",
"Gambia": "ガンビア",
"Gabon": "ガボン",
"French Southern Territories": "フランス領南方領土",
"French Polynesia": "フランス領ポリネシア",
"French Guiana": "フランス領ギアナ",
"France": "フランス",
"Finland": "フィンランド",
"Fiji": "フィジー",
"Faroe Islands": "フェロー諸島",
"Falkland Islands": "フォークランド諸島",
"Ethiopia": "エチオピア",
"Estonia": "エストニア",
"Eritrea": "エリトリア",
"Equatorial Guinea": "赤道ギニア",
"El Salvador": "エルサルバドル",
"Egypt": "エジプト",
"Ecuador": "エクアドル",
"Dominican Republic": "ドミニカ共和国",
"Dominica": "ドミニカ",
"Djibouti": "ジブチ",
"Denmark": "デンマーク",
"Côte dIvoire": "コートジボワール",
"Czech Republic": "チェコ共和国",
"Cyprus": "キプロス",
"Curaçao": "キュラソー",
"Cuba": "キューバ",
"Croatia": "クロアチア",
"Costa Rica": "コスタリカ",
"Cook Islands": "クック諸島",
"Congo - Kinshasa": "コンゴ-キンシャサ",
"Congo - Brazzaville": "コンゴ-ブラザビル",
"Comoros": "コモロ",
"Colombia": "コロンビア",
"Cocos (Keeling) Islands": "ココス(キーリング)諸島",
"Christmas Island": "クリスマス島",
"China": "中国",
"Chile": "チリ",
"Chad": "チャド",
"Central African Republic": "中央アフリカ共和国",
"Cayman Islands": "ケイマン諸島",
"Caribbean Netherlands": "カリブ海オランダ",
"Cape Verde": "カーボベルデ",
"Canada": "カナダ",
"Cameroon": "カメルーン",
"Cambodia": "カンボジア",
"Burundi": "ブルンジ",
"Burkina Faso": "ブルキナファソ",
"Bulgaria": "ブルガリア",
"Brunei": "ブルネイ",
"British Virgin Islands": "イギリス領ヴァージン諸島",
"British Indian Ocean Territory": "イギリス領インド洋地域",
"Brazil": "ブラジル",
"Bouvet Island": "ブーベ島",
"Botswana": "ボツワナ",
"Bosnia": "ボスニア",
"Bolivia": "ボリビア",
"Bhutan": "ブータン",
"Bermuda": "バミューダ",
"Benin": "ベナン",
"Belize": "ベリーズ",
"Belgium": "ベルギー",
"Belarus": "ベラルーシ",
"Barbados": "バルバドス",
"Bangladesh": "バングラデシュ",
"Bahrain": "バーレーン",
"Bahamas": "バハマ",
"Azerbaijan": "アゼルバイジャン",
"Austria": "オーストリア",
"Australia": "オーストラリア",
"Aruba": "アルバ",
"Armenia": "アルメニア",
"Argentina": "アルゼンチン",
"Antigua & Barbuda": "アンティグア&バーブーダ",
"Antarctica": "南極大陸",
"Anguilla": "アンギラ",
"Angola": "アンゴラ",
"Andorra": "アンドラ",
"American Samoa": "アメリカ領サモア",
"Algeria": "アルジェリア",
"Albania": "アルバニア",
"Åland Islands": "オーランド諸島",
"Afghanistan": "アフガニスタン",
"United States": "アメリカ",
"United Kingdom": "イギリス",
"%(name)s is requesting verification": "%(name)s は検証を要望しています",
"Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.": "ホームサーバーがログインの試行を拒否しました。時間がかかりすぎたことが原因かもしれません。もう一度やり直してください。これが続く場合はホームサーバー管理者に連絡してください。",
"Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.": "ホームサーバーにアクセスできませんでした。もう一度やり直してください。これが続く場合はホームサーバー管理者に連絡してください。",
"Try again": "もう一度試す",
"We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.": "残念ながらブラウザはサインインするホームサーバーを忘れてしまいました。 サインインページに移動して再試行してください。",
"We couldn't log you in": "ログインできませんでした",
"This action requires accessing the default identity server <server /> to validate an email address or phone number, but the server does not have any terms of service.": "このアクションはデフォルトのidentity サーバー <server /> にアクセスしてメールアドレスまたは電話番号を検証する必要がありますが、サーバには利用規約がありません。",
"Room name or address": "部屋の名前またはアドレス",
"At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "現時点ではファイルで返信することはできません。 返信せずにこのファイルをアップロードしますか?",
"This will end the conference for everyone. Continue?": "これは全員の会議を終了させます。続けますか?",
"End conference": "会議を終了する",
"You've reached the maximum number of simultaneous calls.": "同時通話数の上限に達しました。",
"Too Many Calls": "通話が多すぎます",
"No other application is using the webcam": "他のアプリがWebカメラを使用中ではないこと",
"Permission is granted to use the webcam": "Webカメラを使う権限が与えられていること",
"A microphone and webcam are plugged in and set up correctly": "マイクとWebカメラが接続されていて、正しく設定されていること",
"Verify this user by confirming the following emoji appear on their screen.": "このユーザを検証するため、両方の画面に絵文字が同じ順序で表示されていることを確認してください。",
"Verify this session by confirming the following number appears on its screen.": "このセッションを検証するため、同じ番号が両方の画面に表示されていることを確認してください。",
"Confirm the emoji below are displayed on both sessions, in the same order:": "以下の絵文字が両方のセッションで同じ順序で表示されていることをしてください:",
"Start": "開始",
"Compare a unique set of emoji if you don't have a camera on either device": "両方の端末でQRコードをキャプチャできない場合、絵文字の比較を選んでください",
"Compare unique emoji": "絵文字の並びを比較する",
"or": "または",
"Scan this unique code": "ユニークなコードをスキャン",
"Verify this session by completing one of the following:": "以下のどれか一つの方法で、このセッションを検証します。",
"Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "ユーザ間でエンドツーエンド暗号化されたメッセージです。第三者が解読することはできません。",
"Verified!": "検証されました!",
"The other party cancelled the verification.": "相手方が確認をキャンセルしました。",
"Incoming call": "着信",
"Incoming video call": "ビデオ通話の着信",
"Incoming voice call": "音声通話の着信",
"Unknown caller": "不明な発信者",
"Dial pad": "ダイヤルパッド",
"There was an error looking up the phone number": "電話番号を見つける際にエラーがありました",
"Unable to look up phone number": "電話番号が見つかりません",
"%(name)s on hold": "%(name)s が保留中",
"Return to call": "電話に戻る",
"Fill Screen": "全画面",
"Voice Call": "音声電話",
"Video Call": "ビデオ通話",
"%(peerName)s held the call": "%(peerName)s が電話をかけました",
"You held the call <a>Resume</a>": "<a>再開</a>の電話をかけました",
"You held the call <a>Switch</a>": "<a>スイッチ</a>に電話をかけました",
"sends snowfall": "降雪を送る",
"Sends the given message with snowfall": "メッセージを降雪と共に送る",
"sends fireworks": "花火を送る",
"Sends the given message with fireworks": "メッセージを花火と共に送る",
"sends confetti": "紙吹雪を送る",
"Sends the given message with confetti": "メッセージを紙吹雪と共に送信します",
"This is your list of users/servers you have blocked - don't leave the room!": "あなたがブロックしたユーザー/サーバーのリストです。部屋から出ないでください!",
"My Ban List": "私の禁止リスト",
"Downloading logs": "ログのダウンロード",
"Uploading logs": "ログのアップロード",
"Show chat effects (animations when receiving e.g. confetti)": "チャット効果を表示する(紙吹雪などを受け取ったときのアニメーション)",
"IRC display name width": "IRC表示名の幅",
"How fast should messages be downloaded.": "メッセージをダウンロードする速度。",
"Enable message search in encrypted rooms": "暗号化された部屋でもメッセージ検索を有効にする",
"Show hidden events in timeline": "省略されたイベントをタイムラインに表示する",
"Use Command + Enter to send a message": "メッセージ送信に Command + Enter を使う",
"Use Command + F to search": "検索に Command + F を使う",
"Show line numbers in code blocks": "コードブロックに行番号を表示する",
"Expand code blocks by default": "デフォルトでコードブロックを展開表示する",
"Show stickers button": "ステッカーボタンを表示する",
"Show info about bridges in room settings": "部屋の設定にブリッジの情報を表示する",
"Enable advanced debugging for the room list": "ルーム一覧の高度なデバッグを有効にする",
"Offline encrypted messaging using dehydrated devices": "dehydrated デバイスを使用したオフライン暗号化メッセージング",
"Show message previews for reactions in all rooms": "すべての部屋でリアクションのメッセージプレビューを表示する",
"Show message previews for reactions in DMs": "DM中のリアクションにメッセージプレビューを表示する",
"Support adding custom themes": "カスタムテーマの追加に対応する",
"Try out new ways to ignore people (experimental)": "人々を無視する新しい方法を試す (実験的)",
"Multiple integration managers": "複数の integration マネージャー",
"Group & filter rooms by custom tags (refresh to apply changes)": "カスタムタグを使って部屋をグループまたはフィルタします(ページのリロードが必要)",
"New spinner design": "新しいスピナーのデザイン",
"Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Communities v2 prototypes. 互換性のあるホームサーバーが必要です。 非常に実験的。注意して使用してください。",
"Render LaTeX maths in messages": "メッセージ中の LaTeX 数式を描画する",
"Change notification settings": "通知設定を変更する",
"%(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 が呼び出し中",
"Waiting for answer": "応答を待っています",
"%(senderName)s started a call": "%(senderName)s が通話を開始しました",
"You started a call": "あなたは通話を開始しました",
"Call ended": "通話が終了しました",
"%(senderName)s ended the call": "%(senderName)s が通話を終了しました",
"You ended the call": "あなたは通話を終了しました",
"Call in progress": "通話中",
"%(senderName)s joined the call": "%(senderName)s が通話に参加しました",
"You joined the call": "通話に参加しました",
"The person who invited you already left the room, or their server is offline.": "あなたを招待した人はすでに部屋を出たか、彼らのサーバーがオフライン状態です。",
"The person who invited you already left the room.": "あなたを招待した人はすでに部屋を出ました。",
"There was an error joining the room": "部屋に参加する際にエラーがありました",
"Guest": "ゲスト",
"Verify the new login accessing your account: %(name)s": "あなたのアカウントへの新しいログインを確認します: %(name)s",
"New login. Was this you?": "新しいログインがありました。これはあなたですか?",
"Safeguard against losing access to encrypted messages & data": "暗号化されたメッセージとデータへのアクセスを失うことから保護します",
"Ok": "OK",
"Contact your <a>server admin</a>.": "<a>サーバ管理者</a>に問い合わせてください。",
"Your homeserver has exceeded one of its resource limits.": "ホームサーバーはリソースの上限に達しました。",
"Your homeserver has exceeded its user limit.": "あなたのホームサーバーはユーザー数の上限に達しました。",
"Use app": "アプリを使う",
"Element Web is experimental on mobile. For a better experience and the latest features, use our free native app.": "Element Webはモバイル端末ではまだ試験的です。より良い体験と最新の機能を得るには、無料のネイティブアプリを使用してください。",
"Use app for a better experience": "より良い体験のためにアプリを使用する",
"Enable": "有効",
"Enable desktop notifications": "デスクトップ通知を有効にする",
"Don't miss a reply": "返信をお見逃しなく",
"Verify all your sessions to ensure your account & messages are safe": "すべてのセッションを確認して、アカウントとメッセージが安全であることを確認します",
"Review where youre logged in": "どこからログインしたか確認する",
"No": "いいえ",
"Yes": "はい",
"Send <UsageDataLink>anonymous usage data</UsageDataLink> which helps us improve %(brand)s. This will use a <PolicyLink>cookie</PolicyLink>.": "%(brand)s の向上に役立つ <UsageDataLink>匿名の使用状況データ</UsageDataLink> を送信します。 これは <PolicyLink>cookie</PolicyLink> を使用します。",
"Help us improve %(brand)s": "%(brand)s の改善にご協力ください",
"Short keyboard patterns are easy to guess": "短いキーボードパターンは簡単に推測されます",
"Straight rows of keys are easy to guess": "キーの配置順序を辿ると簡単に推測されます",
"Common names and surnames are easy to guess": "名前と名字は簡単に推測されます",
"Names and surnames by themselves are easy to guess": "名前や名字は簡単に推測されます",
"Call failed because webcam or microphone could not be accessed. Check that:": "Webカメラやマイクを利用できず通話に失敗しました。確認してください:",
"Unable to access webcam / microphone": "Webカメラとマイクを利用できません",
"Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "マイクを利用できなかったので通話に失敗しました。マイクが接続されて正しく設定されているか確認してください。",
"Unable to access microphone": "マイクを利用できません",
"Alternatively, you can try to use the public server at <code>turn.matrix.org</code>, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "または公開サーバー <code>turn.matrix.org</code> を使用することもできますが、信頼性は低く、また公開サーバにIPアドレスが漏洩します。これはアプリ設定でも変更できます。",
"Please ask the administrator of your homeserver (<code>%(homeserverDomain)s</code>) to configure a TURN server in order for calls to work reliably.": "通話が機能するよう、ホームサーバー(<code>%(homeserverDomain)s</code>)の管理者にTURNサーバーの設定を尋ねてください。",
"The call was answered on another device.": "通話は他の端末で応答されました。",
"Answered Elsewhere": "他端末で応答しました",
"The call could not be established": "通話を確立できませんでした",
"The other party declined the call.": "相手方は通話を拒否しました。",
"Call Declined": "通話は拒否されました",
"Whether you're using %(brand)s as an installed Progressive Web App": "インストールされた Progressive Web App として %(brand)s を使用しているか",
"Whether you're using %(brand)s on a device where touch is the primary input mechanism": "主な入力方法がタッチであるデバイスで %(brand)s を使っているか",
"Click the button below to confirm adding this phone number.": "下のボタンをクリックして電話番号の追加を確認します。",
"Confirm adding phone number": "電話番号の追加を確認する",
"Confirm adding this phone number by using Single Sign On to prove your identity.": "シングルサインオンを使用して本人確認を行い、電話番号の追加を承認してください。",
"Click the button below to confirm adding this email address.": "下のボタンを押してこのメールアドレスを確認します。"
}

View file

@ -429,7 +429,7 @@
"Unban this user?": "Atblokuoti šį vartotoją?",
"Ban this user?": "Užblokuoti šį vartotoją?",
"Failed to ban user": "Nepavyko užblokuoti vartotojo",
"Invited": "Pakviestas",
"Invited": "Pakviesta",
"Filter room members": "Filtruoti kambario dalyvius",
"Server unavailable, overloaded, or something else went wrong.": "Serveris neprieinamas, perkrautas arba nutiko kažkas kito.",
"%(duration)ss": "%(duration)s sek",
@ -2089,5 +2089,7 @@
"If your other sessions do not have the key for this message you will not be able to decrypt them.": "Jei jūsų kiti seansai neturi šios žinutės rakto, jūs negalėsite jos iššifruoti.",
"Missing session data": "Trūksta seanso duomenų",
"Successfully restored %(sessionCount)s keys": "Sėkmingai atkurti %(sessionCount)s raktai",
"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.": "Įspėjimas: Jūsų asmeniniai duomenys (įskaitant šifravimo raktus) vis dar yra saugomi šiame seanse. Išvalykite juos, jei baigėte naudoti šį seansą, arba norite prisijungti prie kitos paskyros."
"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.": "Įspėjimas: Jūsų asmeniniai duomenys (įskaitant šifravimo raktus) vis dar yra saugomi šiame seanse. Išvalykite juos, jei baigėte naudoti šį seansą, arba norite prisijungti prie kitos paskyros.",
"Reason (optional)": "Priežastis (nebūtina)",
"Reason: %(reason)s": "Priežastis: %(reason)s"
}

View file

@ -145,7 +145,7 @@
"Displays action": "Toont actie",
"Emoji": "Emoji",
"%(senderName)s ended the call.": "%(senderName)s heeft opgehangen.",
"Enter passphrase": "Voer wachtwoord in",
"Enter passphrase": "Wachtwoord invoeren",
"Error decrypting attachment": "Fout bij het ontsleutelen van de bijlage",
"Error: Problem communicating with the given homeserver.": "Fout: probleem bij communicatie met de gegeven thuisserver.",
"Existing Call": "Bestaande oproep",
@ -165,7 +165,7 @@
"Failed to set display name": "Instellen van weergavenaam is mislukt",
"Failed to unban": "Ontbannen mislukt",
"Failed to upload profile picture!": "Uploaden van profielfoto is mislukt!",
"Failed to verify email address: make sure you clicked the link in the email": "Kan het e-mailadres niet verifiëren: zorg ervoor dat u de koppeling in de e-mail heeft aangeklikt",
"Failed to verify email address: make sure you clicked the link in the email": "Kan het e-mailadres niet verifiëren: zorg ervoor dat je de koppeling in de e-mail hebt aangeklikt",
"Failure to create room": "Aanmaken van gesprek is mislukt",
"Favourites": "Favorieten",
"Fill screen": "Scherm vullen",
@ -240,7 +240,7 @@
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s heeft %(targetDisplayName)s in het gesprek uitgenodigd.",
"Server error": "Serverfout",
"Server may be unavailable, overloaded, or search timed out :(": "De server is misschien onbereikbaar of overbelast, of het zoeken duurde te lang :(",
"Server may be unavailable, overloaded, or you hit a bug.": "De server is misschien onbereikbaar of overbelast, of u bent een fout tegengekomen.",
"Server may be unavailable, overloaded, or you hit a bug.": "De server is misschien onbereikbaar of overbelast, of je bent een fout tegengekomen.",
"Server unavailable, overloaded, or something else went wrong.": "De server is onbereikbaar of overbelast, of er is iets anders foutgegaan.",
"Session ID": "Sessie-ID",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s heeft %(targetName)s het gesprek uitgestuurd.",
@ -304,8 +304,8 @@
"Who can read history?": "Wie kan de geschiedenis lezen?",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s heeft de uitnodiging van %(targetName)s ingetrokken.",
"You are already in a call.": "U bent al in gesprek.",
"You cannot place a call with yourself.": "U kunt uzelf niet bellen.",
"You cannot place VoIP calls in this browser.": "U kunt in deze browser geen VoIP-oproepen plegen.",
"You cannot place a call with yourself.": "Je kunt jezelf niet bellen.",
"You cannot place VoIP calls in this browser.": "Je kunt in deze browser geen VoIP-oproepen plegen.",
"You do not have permission to post to this room": "U heeft geen toestemming actief aan dit gesprek deel te nemen",
"You have <a>disabled</a> URL previews by default.": "U heeft URL-voorvertoningen standaard <a>uitgeschakeld</a>.",
"You have <a>enabled</a> URL previews by default.": "U heeft URL-voorvertoningen standaard <a>ingeschakeld</a>.",
@ -335,11 +335,11 @@
"Passphrases must match": "Wachtwoorden moeten overeenkomen",
"Passphrase must not be empty": "Wachtwoord mag niet leeg zijn",
"Export room keys": "Gesprekssleutels wegschrijven",
"Confirm passphrase": "Bevestig wachtwoord",
"Confirm passphrase": "Wachtwoord bevestigen",
"Import room keys": "Gesprekssleutels inlezen",
"File to import": "In te lezen bestand",
"This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Hiermee kunt u de sleutels van uw ontvangen berichten in versleutelde gesprekken naar een lokaal bestand wegschrijven. Als u dat bestand dan in een andere Matrix-cliënt inleest kan die ook die berichten ontcijferen.",
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Wie het weggeschreven bestand kan lezen, kan daarmee ook alle versleutelde berichten die u kunt zien ontcijferen - ga er dus zorgvuldig mee om! Daartoe kunt u hieronder een wachtwoord invoeren, dat dan gebruikt zal worden om het bestand te versleutelen. Het is dan enkel mogelijk de gegevens in te lezen met hetzelfde wachtwoord.",
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Het opgeslagen bestand geeft toegang tot het lezen en schrijven van uw versleutelde berichten - ga er dus zorgvuldig mee om! Bescherm uzelf door hieronder een wachtwoord in te voeren, dat dan gebruikt zal worden om het bestand te versleutelen. Het is dan alleen mogelijk de gegevens te lezen met hetzelfde wachtwoord.",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Hiermee kunt u vanuit een andere Matrix-cliënt weggeschreven versleutelingssleutels inlezen, zodat u alle berichten die de andere cliënt kon ontcijferen ook hier kunt lezen.",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Het weggeschreven bestand is beveiligd met een wachtwoord. Voer dat wachtwoord hier in om het bestand te ontsleutelen.",
"You must join the room to see its files": "Slechts na toetreding tot het gesprek zult u de bestanden kunnen zien",
@ -420,7 +420,7 @@
"Which rooms would you like to add to this community?": "Welke gesprekken wilt u toevoegen aan deze gemeenschap?",
"Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Widgets verwijderen geldt voor alle deelnemers aan dit gesprek. Weet u zeker dat u deze widget wilt verwijderen?",
"Delete Widget": "Widget verwijderen",
"Who would you like to add to this community?": "Wie wilt u toevoegen aan deze gemeenschap?",
"Who would you like to add to this community?": "Wie wil je toevoegen aan deze gemeenschap?",
"Invite to Community": "Uitnodigen tot gemeenschap",
"Show these rooms to non-members on the community page and room list?": "Deze gesprekken tonen aan niet-leden op de gemeenschapspagina en gesprekslijst?",
"Add rooms to the community": "Voeg gesprekken toe aan de gemeenschap",
@ -628,12 +628,12 @@
"Room Notification": "Groepsgespreksmelding",
"The information being sent to us to help make %(brand)s better includes:": "De informatie die naar ons wordt verstuurd om %(brand)s te verbeteren bevat:",
"Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Waar deze pagina identificeerbare informatie bevat, zoals een gespreks-, gebruikers- of groeps-ID, zullen deze gegevens verwijderd worden voordat ze naar de server gestuurd worden.",
"The platform you're on": "Het platform dat u gebruikt",
"The platform you're on": "Het platform dat je gebruikt",
"The version of %(brand)s": "De versie van %(brand)s",
"Your language of choice": "De door u gekozen taal",
"Which officially provided instance you are using, if any": "Welke officieel aangeboden instantie u eventueel gebruikt",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Of u de tekstverwerker al dan niet in de modus voor opgemaakte tekst gebruikt",
"Your homeserver's URL": "De URL van uw homeserver",
"Your language of choice": "De door jou gekozen taal",
"Which officially provided instance you are using, if any": "Welke officieel aangeboden instantie je eventueel gebruikt",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Of je de tekstverwerker al dan niet in de modus voor opgemaakte tekst gebruikt",
"Your homeserver's URL": "De URL van je homeserver",
"<a>In reply to</a> <pill>": "<a>Als antwoord op</a> <pill>",
"This room is not public. You will not be able to rejoin without an invite.": "Dit is geen openbaar gesprek. Slechts op uitnodiging zult u opnieuw kunnen toetreden.",
"were unbanned %(count)s times|one": "zijn ontbannen",
@ -689,7 +689,7 @@
"Messages in one-to-one chats": "Berichten in één-op-één gesprekken",
"Unavailable": "Niet beschikbaar",
"View Decrypted Source": "Ontsleutelde bron bekijken",
"Failed to update keywords": "Bijwerken van trefwoorden is mislukt",
"Failed to update keywords": "Updaten van trefwoorden is mislukt",
"remove %(name)s from the directory.": "verwijder %(name)s uit de catalogus.",
"Notifications on the following keywords follow rules which cant be displayed here:": "Meldingen op de volgende trefwoorden volgen regels die hier niet getoond kunnen worden:",
"Please set a password!": "Stel een wachtwoord in!",
@ -740,7 +740,7 @@
"What's new?": "Wat is er nieuw?",
"Notify me for anything else": "Stuur een melding voor al het andere",
"When I'm invited to a room": "Wanneer ik uitgenodigd word in een gesprek",
"Can't update user notification settings": "Kan de meldingsinstellingen van de gebruiker niet bijwerken",
"Can't update user notification settings": "Kan de meldingsinstellingen van de gebruiker niet updaten",
"Notify for all other messages/rooms": "Stuur een melding voor alle andere berichten/gesprekken",
"Unable to look up room ID from server": "Kon de gesprek-ID niet van de server ophalen",
"Couldn't find a matching Matrix room": "Kon geen bijbehorend Matrix-gesprek vinden",
@ -783,16 +783,16 @@
"Failed to send logs: ": "Versturen van logboeken mislukt: ",
"Preparing to send logs": "Logboeken worden voorbereid voor versturen",
"e.g. %(exampleValue)s": "bv. %(exampleValue)s",
"Every page you use in the app": "Iedere bladzijde die u in de toepassing gebruikt",
"Every page you use in the app": "Iedere bladzijde die je in de toepassing gebruikt",
"e.g. <CurrentPageURL>": "bv. <CurrentPageURL>",
"Your device resolution": "De resolutie van uw apparaat",
"Your device resolution": "De resolutie van je apparaat",
"Missing roomId.": "roomId ontbreekt.",
"Always show encryption icons": "Versleutelingspictogrammen altijd tonen",
"Send analytics data": "Statistische gegevens versturen",
"Enable widget screenshots on supported widgets": "Widget-schermafbeeldingen inschakelen op ondersteunde widgets",
"Muted Users": "Gedempte gebruikers",
"Popout widget": "Widget in nieuw venster openen",
"Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Kan de gebeurtenis waarop gereageerd was niet laden. Wellicht bestaat die niet, of heeft u geen toestemming die te bekijken.",
"Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Kan de gebeurtenis waarop gereageerd was niet laden. Wellicht bestaat die niet, of u heeft geen toestemming die te bekijken.",
"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. <b>This action is irreversible.</b>": "Dit zal uw account voorgoed onbruikbaar maken. U zult niet meer kunnen inloggen, en niemand anders zal zich met dezelfde gebruikers-ID kunnen registreren. Hierdoor zal uw account alle gesprekken waaraan u deelneemt verlaten, en worden de accountgegevens verwijderd van de identiteitsserver. <b>Deze stap is onomkeerbaar.</b>",
"Deactivating your account <b>does not by default cause us to forget messages you have sent.</b> If you would like us to forget your messages, please tick the box below.": "Het sluiten van uw account <b>maakt op zich niet dat wij de door u verstuurde berichten vergeten.</b> Als u wilt dat wij uw berichten vergeten, vink dan het vakje hieronder aan.",
"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.": "De zichtbaarheid van berichten in Matrix is zoals bij e-mails. Het vergeten van uw berichten betekent dat berichten die u heeft verstuurd niet meer gedeeld worden met nieuwe of ongeregistreerde gebruikers, maar geregistreerde gebruikers die al toegang hebben tot deze berichten zullen alsnog toegang hebben tot hun eigen kopie ervan.",
@ -813,7 +813,7 @@
"A call is currently being placed!": "Er wordt al een oproep gemaakt!",
"A call is already in progress!": "Er is al een gesprek actief!",
"Permission Required": "Toestemming vereist",
"You do not have permission to start a conference call in this room": "U heeft geen toestemming in dit groepsgesprek een vergadergesprek te starten",
"You do not have permission to start a conference call in this room": "Je hebt geen toestemming in dit groepsgesprek een vergadergesprek te starten",
"This event could not be displayed": "Deze gebeurtenis kon niet weergegeven worden",
"Demote yourself?": "Uzelf degraderen?",
"Demote": "Degraderen",
@ -842,9 +842,9 @@
"Bulk options": "Bulkopties",
"This homeserver has hit its Monthly Active User limit.": "Deze homeserver heeft zijn limiet voor maandelijks actieve gebruikers bereikt.",
"This homeserver has exceeded one of its resource limits.": "Deze homeserver heeft één van zijn systeembronlimieten overschreden.",
"Whether or not you're logged in (we don't record your username)": "Of u al dan niet ingelogd bent (we slaan uw gebruikersnaam niet op)",
"Whether or not you're logged in (we don't record your username)": "Of je al dan niet ingelogd bent (we slaan je gebruikersnaam niet op)",
"The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Het bestand %(fileName)s is groter dan de uploadlimiet van de homeserver",
"Unable to load! Check your network connectivity and try again.": "Laden mislukt! Controleer uw netwerktoegang en probeer het nogmaals.",
"Unable to load! Check your network connectivity and try again.": "Laden mislukt! Controleer je netwerktoegang en probeer het nogmaals.",
"Failed to invite users to the room:": "Kon de volgende gebruikers hier niet uitnodigen:",
"Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Plakt ¯\\_(ツ)_/¯ vóór een bericht zonder opmaak",
"Upgrades a room to a new version": "Actualiseert het gesprek tot een nieuwe versie",
@ -852,7 +852,7 @@
"Gets or sets the room topic": "Verkrijgt het onderwerp van het gesprek of stelt het in",
"This room has no topic.": "Dit gesprek heeft geen onderwerp.",
"Sets the room name": "Stelt de gespreksnaam in",
"%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s heeft dit gesprek bijgewerkt.",
"%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s heeft dit gesprek geüpgraded.",
"%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s heeft het gesprek toegankelijk gemaakt voor iedereen die de koppeling kent.",
"%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s heeft het gesprek enkel op uitnodiging toegankelijk gemaakt.",
"%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s heeft de toegangsregel veranderd naar %(rule)s",
@ -1240,7 +1240,7 @@
"%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s heeft de uitnodiging aan %(targetDisplayName)s toe te treden tot het gesprek ingetrokken.",
"Upgrade this room to the recommended room version": "Werk dit gesprek bij tot de aanbevolen versie",
"This room is running room version <roomVersion />, which this homeserver has marked as <i>unstable</i>.": "Dit gesprek draait op groepsgespreksversie <roomVersion />, die door deze homeserver als <i>onstabiel</i> is gemarkeerd.",
"Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Bijwerken zal de huidige versie van dit gesprek sluiten, en onder dezelfde naam een bijgewerkte versie starten.",
"Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Upgraden zal de huidige versie van dit gesprek sluiten, en onder dezelfde naam een geüpgraded versie starten.",
"Failed to revoke invite": "Intrekken van uitnodiging is mislukt",
"Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Kon de uitnodiging niet intrekken. De server ondervindt mogelijk een tijdelijk probleem, of u heeft niet het recht de uitnodiging in te trekken.",
"Revoke invite": "Uitnodiging intrekken",
@ -1255,9 +1255,9 @@
"The homeserver may be unavailable or overloaded.": "De homeserver is mogelijk onbereikbaar of overbelast.",
"You have %(count)s unread notifications in a prior version of this room.|other": "U heeft %(count)s ongelezen meldingen in een vorige versie van dit gesprek.",
"You have %(count)s unread notifications in a prior version of this room.|one": "U heeft %(count)s ongelezen meldingen in een vorige versie van dit gesprek.",
"Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Of u de icoontjes voor recente gesprekken (boven de gesprekkenlijst) al dan niet gebruikt",
"Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Of je de icoontjes voor recente gesprekken (boven de gesprekkenlijst) al dan niet gebruikt",
"Replying With Files": "Beantwoorden met bestanden",
"At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Het is momenteel niet mogelijk met een bestand te antwoorden. Wilt u dit bestand uploaden zonder te antwoorden?",
"At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Het is momenteel niet mogelijk met een bestand te antwoorden. Wil je dit bestand uploaden zonder te antwoorden?",
"The file '%(fileName)s' failed to upload.": "Het bestand %(fileName)s kon niet geüpload worden.",
"Rotate counter-clockwise": "Tegen de klok in draaien",
"Rotate clockwise": "Met de klok mee draaien",
@ -1289,7 +1289,7 @@
"Unexpected error resolving homeserver configuration": "Onverwachte fout bij het controleren van de homeserverconfiguratie",
"The user's homeserver does not support the version of the room.": "De homeserver van de gebruiker biedt geen ondersteuning voor de gespreksversie.",
"Show hidden events in timeline": "Verborgen gebeurtenissen op de tijdslijn weergeven",
"When rooms are upgraded": "Wanneer gesprekken bijgewerkt worden",
"When rooms are upgraded": "Wanneer gesprekken geüpgraded worden",
"this room": "dit gesprek",
"View older messages in %(roomName)s.": "Bekijk oudere berichten in %(roomName)s.",
"Joining room …": "Deelnemen aan gesprek…",
@ -1316,7 +1316,7 @@
"This room doesn't exist. Are you sure you're at the right place?": "Dit gesprek bestaat niet. Weet u zeker dat u zich op de juiste plaats bevindt?",
"Try again later, or ask a room admin to check if you have access.": "Probeer het later opnieuw, of vraag een gespreksbeheerder om te controleren of u wel toegang heeft.",
"%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please <issueLink>submit a bug report</issueLink>.": "De foutcode %(errcode)s is weergegeven bij het toetreden van het gesprek. Als u meent dat u dit bericht foutief te zien krijgt, gelieve dan <issueLink>een foutmelding in te dienen</issueLink>.",
"This room has already been upgraded.": "Dit gesprek is reeds bijgewerkt.",
"This room has already been upgraded.": "Dit gesprek is reeds geüpgraded.",
"<reactors/><reactedWith>reacted with %(shortName)s</reactedWith>": "<reactors/><reactedWith>heeft gereageerd met %(shortName)s</reactedWith>",
"edited": "bewerkt",
"Rotate Left": "Links draaien",
@ -1433,8 +1433,8 @@
"Command Help": "Hulp bij opdrachten",
"No identity server is configured: add one in server settings to reset your password.": "Er is geen identiteitsserver geconfigureerd: voeg er één toe in de serverinstellingen om uw wachtwoord opnieuw in te stellen.",
"Call failed due to misconfigured server": "Oproep mislukt door verkeerd geconfigureerde server",
"Please ask the administrator of your homeserver (<code>%(homeserverDomain)s</code>) to configure a TURN server in order for calls to work reliably.": "Vraag uw homeserverbeheerder (<code>%(homeserverDomain)s</code>) een TURN-server te configureren voor de betrouwbaarheid van de oproepen.",
"Alternatively, you can try to use the public server at <code>turn.matrix.org</code>, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "U kunt ook de publieke server op <code>turn.matrix.org</code> gebruiken, maar dit zal minder betrouwbaar zijn, en zal uw IP-adres met die server delen. U kunt dit ook beheren in de Instellingen.",
"Please ask the administrator of your homeserver (<code>%(homeserverDomain)s</code>) to configure a TURN server in order for calls to work reliably.": "Vraag je homeserverbeheerder (<code>%(homeserverDomain)s</code>) een TURN-server te configureren voor de betrouwbaarheid van de oproepen.",
"Alternatively, you can try to use the public server at <code>turn.matrix.org</code>, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Je kunt ook de publieke server op <code>turn.matrix.org</code> gebruiken, maar dit zal minder betrouwbaar zijn, en zal uw IP-adres met die server delen. Je kunt dit ook beheren in de Instellingen.",
"Try using turn.matrix.org": "Probeer turn.matrix.org te gebruiken",
"Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Sta de terugvalserver voor oproepbijstand turn.matrix.org toe wanneer uw homeserver er geen aanbiedt (uw IP-adres wordt gedeeld gedurende een oproep)",
"Identity server has no terms of service": "De identiteitsserver heeft geen dienstvoorwaarden",
@ -1557,7 +1557,7 @@
"This action requires accessing the default identity server <server /> to validate an email address or phone number, but the server does not have any terms of service.": "Dit vergt validatie van een e-mailadres of telefoonnummer middels de standaardidentiteitsserver <server />, maar die server heeft geen gebruiksvoorwaarden.",
"Trust": "Vertrouwen",
"Custom (%(level)s)": "Aangepast (%(level)s)",
"Error upgrading room": "Bijwerken van gesprek mislukt",
"Error upgrading room": "Upgraden van gesprek mislukt",
"Double check that your server supports the room version chosen and try again.": "Ga nogmaals na dat de server de gekozen gespreksversie ondersteunt, en probeer het dan opnieuw.",
"Verifies a user, session, and pubkey tuple": "Verifieert een combinatie van gebruiker+sessie+publieke sleutel",
"Unknown (user, session) pair:": "Onbekende combinatie gebruiker+sessie:",
@ -1618,7 +1618,7 @@
"Lock": "Hangslot",
"Verify yourself & others to keep your chats safe": "Verifieer uzelf en anderen om uw gesprekken veilig te houden",
"Other users may not trust it": "Mogelijk wantrouwen anderen het",
"Upgrade": "Bijwerken",
"Upgrade": "Upgraden",
"Verify": "Verifiëren",
"Later": "Later",
"Review": "Controle",
@ -1636,12 +1636,12 @@
"Unable to load session list": "Kan sessielijst niet laden",
"Delete %(count)s sessions|other": "%(count)s sessies verwijderen",
"Delete %(count)s sessions|one": "%(count)s sessie verwijderen",
"Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Of u %(brand)s op een apparaat gebruikt waarop een aanraakscherm de voornaamste invoermethode is",
"Whether you're using %(brand)s as an installed Progressive Web App": "Of u %(brand)s gebruikt als een geïnstalleerde Progressive-Web-App",
"Your user agent": "Uw gebruikersagent",
"Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Of je %(brand)s op een apparaat gebruikt waarop een aanraakscherm de voornaamste invoermethode is",
"Whether you're using %(brand)s as an installed Progressive Web App": "Of je %(brand)s gebruikt als een geïnstalleerde Progressive-Web-App",
"Your user agent": "Jouw gebruikersagent",
"If you cancel now, you won't complete verifying the other user.": "Als u nu annuleert zult u de andere gebruiker niet verifiëren.",
"If you cancel now, you won't complete verifying your other session.": "Als u nu annuleert zult u uw andere sessie niet verifiëren.",
"Cancel entering passphrase?": "Wachtwoordinvoer annuleren?",
"Cancel entering passphrase?": "Wachtwoord annuleren?",
"Show typing notifications": "Typmeldingen weergeven",
"Verify this session by completing one of the following:": "Verifieer deze sessie door een van het volgende te doen:",
"Scan this unique code": "Scan deze unieke code",
@ -1973,16 +1973,16 @@
"Where youre logged in": "Waar u ingelogd bent",
"Manage the names of and sign out of your sessions below or <a>verify them in your User Profile</a>.": "Beheer hieronder de namen van uw sessies en meld ze af. <a>Of verifieer ze in uw gebruikersprofiel</a>.",
"Use Single Sign On to continue": "Ga verder met eenmalige aanmelding",
"Confirm adding this email address by using Single Sign On to prove your identity.": "Bevestig uw identiteit met uw eenmalige aanmelding om dit e-mailadres toe te voegen.",
"Confirm adding this email address by using Single Sign On to prove your identity.": "Bevestig je identiteit met je eenmalige aanmelding om dit e-mailadres toe te voegen.",
"Single Sign On": "Eenmalige aanmelding",
"Confirm adding email": "Bevestig toevoegen van het e-mailadres",
"Click the button below to confirm adding this email address.": "Klik op de knop hieronder om dit e-mailadres toe te voegen.",
"Confirm adding this phone number by using Single Sign On to prove your identity.": "Bevestig uw identiteit met uw eenmalige aanmelding om dit telefoonnummer toe te voegen.",
"Confirm adding this phone number by using Single Sign On to prove your identity.": "Bevestig je identiteit met je eenmalige aanmelding om dit telefoonnummer toe te voegen.",
"Confirm adding phone number": "Bevestig toevoegen van het telefoonnummer",
"Click the button below to confirm adding this phone number.": "Klik op de knop hieronder om het toevoegen van dit telefoonnummer te bevestigen.",
"If you cancel now, you won't complete your operation.": "Als u de operatie afbreekt kunt u haar niet voltooien.",
"Review where youre logged in": "Kijk na waar u ingelogd bent",
"New login. Was this you?": "Nieuwe login - was u dat?",
"Review where youre logged in": "Controleer waar u ingelogd bent",
"New login. Was this you?": "Nieuwe login gevonden. Was u dat?",
"%(name)s is requesting verification": "%(name)s verzoekt om verificatie",
"Sends a message as html, without interpreting it as markdown": "Stuurt een bericht als HTML, zonder markdown toe te passen",
"Failed to set topic": "Kon onderwerp niet instellen",
@ -2330,8 +2330,8 @@
"Start a conversation with someone using their name, email address or username (like <userId/>).": "Start een gesprek met iemand door hun naam, emailadres of gebruikersnaam (zoals <userId/>) te typen.",
"Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their avatar.": "Berichten hier zijn eind-tot-eind versleuteld. Verifieer %(displayName)s op hun profiel - klik op hun avatar.",
"%(creator)s created this DM.": "%(creator)s maakte deze DM.",
"Switch to dark mode": "Wissel naar donkere modus",
"Switch to light mode": "Wissel naar lichte modus",
"Switch to dark mode": "Naar donkere modus wisselen",
"Switch to light mode": "Naar lichte modus wisselen",
"Appearance": "Weergave",
"All settings": "Alle instellingen",
"Error removing address": "Fout bij verwijderen van adres",
@ -2377,7 +2377,7 @@
"Use between %(min)s pt and %(max)s pt": "Gebruik een getal tussen %(min)s pt en %(max)s pt",
"Custom font size can only be between %(min)s pt and %(max)s pt": "Aangepaste lettergrootte kan alleen een getal tussen %(min)s pt en %(max)s pt zijn",
"Size must be a number": "Grootte moet een getal zijn",
"New version available. <a>Update now.</a>": "Nieuwe versie beschikbaar. <a>Nu bijwerken.</a>",
"New version available. <a>Update now.</a>": "Nieuwe versie beschikbaar. <a>Nu updaten.</a>",
"not ready": "Niet gereed",
"ready": "Gereed",
"unexpected type": "Onverwacht type",
@ -2445,7 +2445,7 @@
"The person who invited you already left the room, or their server is offline.": "De persoon door wie u ben uitgenodigd heeft het gesprek al verlaten, of hun server is offline.",
"The person who invited you already left the room.": "De persoon door wie u ben uitgenodigd, heeft het gesprek reeds verlaten.",
"New version of %(brand)s is available": "Nieuwe versie van %(brand)s is beschikbaar",
"Update %(brand)s": "%(brand)s bijwerken",
"Update %(brand)s": "%(brand)s updaten",
"%(senderName)s has updated the widget layout": "%(senderName)s heeft de widget-indeling bijgewerkt",
"%(senderName)s declined the call.": "%(senderName)s heeft de oproep afgewezen.",
"(an error occurred)": "(een fout is opgetreden)",
@ -2696,7 +2696,7 @@
"Calls": "Oproepen",
"Navigation": "Navigatie",
"Currently indexing: %(currentRoom)s": "Momenteel indexeren: %(currentRoom)s",
"Enter your recovery passphrase a second time to confirm it.": "Voer uw herstel wachtwoord een tweede keer in om te bevestigen.",
"Enter your recovery passphrase a second time to confirm it.": "Voer uw Herstelwachtwoord een tweede keer in om te bevestigen.",
"This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Deze sessie heeft ontdekt dat uw veiligheidszin en sleutel voor versleutelde berichten zijn verwijderd.",
"A new Security Phrase and key for Secure Messages have been detected.": "Er is een nieuwe veiligheidszin en sleutel voor versleutelde berichten gedetecteerd.",
"Save your Security Key": "Uw veiligheidssleutel opslaan",
@ -2708,7 +2708,7 @@
"Secret storage:": "Sleutelopslag:",
"Unable to query secret storage status": "Kan status sleutelopslag niet opvragen",
"Store your Security Key somewhere safe, like a password manager or a safe, as its used to safeguard your encrypted data.": "Bewaar uw veiligheidssleutel op een veilige plaats, zoals in een wachtwoordmanager of een kluis, aangezien deze wordt gebruikt om uw versleutelde gegevens te beveiligen.",
"Confirm your recovery passphrase": "Bevestig uw herstel wachtwoord",
"Confirm your recovery passphrase": "Bevestig uw Herstelwachtwoord",
"Use a different passphrase?": "Gebruik een ander wachtwoord?",
"Enter a security phrase only you know, as its used to safeguard your data. To be secure, you shouldnt re-use your account password.": "Voer een veiligheidszin in die alleen u kent, aangezien deze wordt gebruikt om uw gegevens te versleutelen. Om veilig te zijn, moet u het wachtwoord van uw account niet opnieuw gebruiken.",
"Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Bescherm uw server tegen toegangsverlies tot versleutelde berichten en gegevens door een back-up te maken van de versleutelingssleutels.",
@ -2797,7 +2797,7 @@
"Not a valid Security Key": "Geen geldige veiligheidssleutel",
"This looks like a valid Security Key!": "Dit lijkt op een geldige veiligheidssleutel!",
"Enter Security Key": "Veiligheidssleutel invoeren",
"If you've forgotten your Security Phrase you can <button1>use your Security Key</button1> or <button2>set up new recovery options</button2>": "Als u uw veiligheidszin bent vergeten, kunt u <button1>uw veiligheidssleutel gebruiken</button1> of <button2>nieuwe herstelopties instellen</button2>",
"If you've forgotten your Security Phrase you can <button1>use your Security Key</button1> or <button2>set up new recovery options</button2>": "Als u uw Herstelwachtwoord bent vergeten, kunt u <button1>uw Herstelsleutel gebruiken</button1> of <button2>nieuwe herstelopties instellen</button2>",
"Access your secure message history and set up secure messaging by entering your Security Phrase.": "Ga naar uw veilige berichtengeschiedenis en stel veilige berichten in door uw veiligheidszin in te voeren.",
"Enter Security Phrase": "Voer veiligheidszin in",
"Successfully restored %(sessionCount)s keys": "Succesvol %(sessionCount)s sleutels hersteld",
@ -2950,5 +2950,27 @@
"Create a Group Chat": "Maak een groepsgesprek aan",
"Send a Direct Message": "Start een direct gesprek",
"Welcome to %(appName)s": "Welkom bij %(appName)s",
"<a>Add a topic</a> to help people know what it is about.": "<a>Stel een gespreksonderwerp in</a> zodat mensen weten waar het over gaat."
"<a>Add a topic</a> to help people know what it is about.": "<a>Stel een gespreksonderwerp in</a> zodat mensen weten waar het over gaat.",
"Upgrade to %(hostSignupBrand)s": "Upgrade naar %(hostSignupBrand)s",
"Edit Values": "Waarde wijzigen",
"Values at explicit levels in this room:": "Waarde op expliciete niveaus in dit gesprek:",
"Values at explicit levels:": "Waardes op expliciete niveaus:",
"Value in this room:": "Waarde in dit gesprek:",
"Value:": "Waarde:",
"Save setting values": "Instelling waardes opslaan",
"Values at explicit levels in this room": "Waardes op expliciete niveaus in dit gesprek",
"Values at explicit levels": "Waardes op expliciete niveaus",
"Settable at room": "Instelbaar op gesprek",
"Settable at global": "Instelbaar op globaal",
"Level": "Niveau",
"Setting definition:": "Instelling definitie:",
"This UI does NOT check the types of the values. Use at your own risk.": "De UI heeft GEEN controle op het type van de waardes. Gebruik op eigen risico.",
"Caution:": "Opgelet:",
"Setting:": "Instelling:",
"Value in this room": "Waarde van dit gesprek",
"Value": "Waarde",
"Setting ID": "Instellingen-ID",
"Failed to save settings": "Kan geen instellingen opslaan",
"Settings Explorer": "Instellingen Ontdekken",
"Show chat effects (animations when receiving e.g. confetti)": "Effecten tonen (animaties bij ontvangst bijv. confetti)"
}

View file

@ -2983,5 +2983,41 @@
"Converts the DM to a room": "Converte a conversa para uma sala",
"Converts the room to a DM": "Converte a sala para uma conversa",
"Try again": "Tente novamente",
"We couldn't log you in": "Não foi possível fazer login"
"We couldn't log you in": "Não foi possível fazer login",
"%(hostSignupBrand)s Setup": "Configuração do %(hostSignupBrand)s",
"Continuing temporarily allows the %(hostSignupBrand)s setup process to access your account to fetch verified email addresses. This data is not stored.": "Ao continuar, você permite que o processo de configuração do %(hostSignupBrand)s acesse a sua conta para obter endereços de e-mail verificados, temporariamente. Esses dados não são armazenados.",
"Settable at room": "Definido em cada sala",
"Settable at global": "Definido globalmente",
"Settings Explorer": "Explorador de configurações",
"Level": "Nível",
"Setting definition:": "Definição da configuração:",
"Setting ID": "ID da configuração",
"Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.": "Seu servidor local recusou a sua tentativa de login. Isso pode ocorrer quando a conexão de internet estiver demorando muito. Por favor, tente novamente. Se o problema continuar, entre em contato com o administrador do seu servidor local.",
"Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.": "O seu servidor local está inacessível e não foi possível fazer o seu login. Tente novamente. Se o problema continuar, entre em contato com o administrador do seu servidor local.",
"We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.": "Anteriormente, pedimos ao seu navegador para lembrar qual servidor local você usa para fazer login, mas infelizmente o navegador se esqueceu disso. Vá para a página de login e tente novamente.",
"Upgrade to %(hostSignupBrand)s": "Atualizar para %(hostSignupBrand)s",
"Minimize dialog": "Minimizar a janela",
"Maximize dialog": "Maximizar a janela",
"You should know": "Você deveria saber",
"Cookie Policy": "Política de cookies",
"Failed to connect to your homeserver. Please close this dialog and try again.": "Falha ao se conectar ao seu servidor local. Feche esta caixa de diálogo e tente novamente.",
"Abort": "Cancelar",
"Are you sure you wish to abort creation of the host? The process cannot be continued.": "Tem certeza de que deseja cancelar a criação do host? O processo não pode ser continuado.",
"Confirm abort of host creation": "Confirmar o cancelamento da criação do host",
"Edit Values": "Editar valores",
"Values at explicit levels in this room:": "Valores em níveis explícitos nessa sala:",
"Values at explicit levels:": "Valores em níveis explícitos:",
"Value in this room:": "Valor nessa sala:",
"Value:": "Valor:",
"Save setting values": "Salvar valores de configuração",
"Values at explicit levels in this room": "Valores em níveis explícitos nessa sala",
"Values at explicit levels": "Valores em níveis explícitos",
"This UI does NOT check the types of the values. Use at your own risk.": "Esta interface de usuário NÃO verifica os tipos de valores. Use por sua conta e risco.",
"Caution:": "Atenção:",
"Setting:": "Configuração:",
"Value in this room": "Valor nessa sala",
"Value": "Valor",
"Failed to save settings": "Falha ao salvar as configurações",
"Show chat effects (animations when receiving e.g. confetti)": "Mostrar efeitos na conversa (por exemplo: animações ao receber confetes)",
"Element Web is experimental on mobile. For a better experience and the latest features, use our free native app.": "O Element Web é experimental para dispositivos móveis. Para uma melhor experiência e os recursos mais recentes, use nosso aplicativo gratuito."
}

View file

@ -1591,7 +1591,7 @@
"Error upgrading room": "Ошибка обновления комнаты",
"Match system theme": "Тема системы",
"Show tray icon and minimize window to it on close": "Показать иконку в трее и сворачивать окно при закрытии",
"Show typing notifications": "Показывать уведомления о наборе",
"Show typing notifications": "Показывать уведомления о наборе текста",
"Delete %(count)s sessions|other": "Удалить %(count)s сессий",
"Enable desktop notifications for this session": "Включить уведомления для рабочего стола для этой сессии",
"Enable audible notifications for this session": "Включить звуковые уведомления для этой сессии",
@ -3031,7 +3031,7 @@
"Privacy Policy": "Политика конфиденциальности",
"Cookie Policy": "Политика использования файлов cookie",
"Learn more in our <privacyPolicyLink />, <termsOfServiceLink /> and <cookiePolicyLink />.": "Дополнительную информацию можно найти на страницах <privacyPolicyLink />,<termsOfServiceLink /> и <cookiePolicyLink />.",
"Continuing temporarily allows the %(hostSignupBrand)s setup process to access your account to fetch verified email addresses. This data is not stored.": "Продолжая процесс настройки %(hostSignupBrand)s, вы предоставите доступ к вашей учётной записи для получения проверенных адресов электронной почты. Эти данные не сохраняются.",
"Continuing temporarily allows the %(hostSignupBrand)s setup process to access your account to fetch verified email addresses. This data is not stored.": "Продолжая процесс настройки %(hostSignupBrand)s, вы предоставите временный доступ к вашей учётной записи для получения проверенных адресов электронной почты. Эти данные не сохраняются.",
"Failed to connect to your homeserver. Please close this dialog and try again.": "Не удалось подключиться к домашнему серверу. Закройте это диалоговое окно и попробуйте ещё раз.",
"Abort": "Отмена",
"Are you sure you wish to abort creation of the host? The process cannot be continued.": "Вы уверены, что хотите прервать создание хоста? Процесс не может быть продолжен.",
@ -3057,5 +3057,22 @@
"Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.": "Ваш домашний сервер был недоступен, и мы не смогли войти в систему. Пожалуйста, попробуйте снова через пару минут. Если ситуация по-прежнему не меняется, обратитесь к администратору домашнего сервера за дополнительной информацией.",
"Try again": "Попробовать ещё раз",
"We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.": "Мы попросили браузер запомнить, какой домашний сервер вы используете для входа в систему, но, к сожалению, ваш браузер забыл об этом. Перейдите на страницу входа и попробуйте ещё раз.",
"We couldn't log you in": "Нам не удалось войти в систему"
"We couldn't log you in": "Нам не удалось войти в систему",
"Upgrade to %(hostSignupBrand)s": "Перейти на %(hostSignupBrand)s",
"Edit Values": "Изменить значения",
"Value in this room:": "Значение в этой комнате:",
"Value:": "Значение:",
"Setting:": "Настройки:",
"Setting ID": "ID настроек",
"Save setting values": "Сохранить значения настроек",
"Settable at room": "Устанавливается для комнаты",
"Settable at global": "Устанавливается на глобальном уровне",
"Level": "Уровень",
"This UI does NOT check the types of the values. Use at your own risk.": "Этот пользовательский интерфейс НЕ проверяет типы значений. Используйте на свой страх и риск.",
"Value in this room": "Значение в этой комнате",
"Value": "Значение",
"Failed to save settings": "Не удалось сохранить настройки",
"Show chat effects (animations when receiving e.g. confetti)": "Показать эффекты чата (анимация при получении, например, конфетти)",
"Caution:": "Предупреждение:",
"Settings Explorer": "Обзор настроек"
}

View file

@ -4,5 +4,6 @@
"Use Single Sign On to continue": "ඉදිරියට යාමට තනි පුරනය වීම භාවිතා කරන්න",
"Confirm adding this email address by using Single Sign On to prove your identity.": "ඔබගේ අනන්‍යතාවය සනාථ කිරීම සඳහා තනි පුරනය භාවිතා කිරීමෙන් මෙම විද්‍යුත් තැපැල් ලිපිනය එක් කිරීම තහවුරු කරන්න.",
"Confirm": "තහවුරු කරන්න",
"Add Email Address": "විද්‍යුත් තැපැල් ලිපිනය එක් කරන්න"
"Add Email Address": "විද්‍යුත් තැපැල් ලිපිනය එක් කරන්න",
"Sign In": "පිවිසෙන්න"
}

View file

@ -2990,7 +2990,7 @@
"If you've forgotten your Security Key you can <button>set up new recovery options</button>": "Nëse keni harruar Kyçin tuaj të Sigurisë, mund të <button>ujdisni mundësi të reja rimarrjeje</button>.",
"Your Security Key has been <b>copied to your clipboard</b>, paste it to:": "Kyçi juaj i Sigurisë është <b>kopjuar te e papastra juaj</b>, ngjiteni te:",
"Confirm your Security Phrase": "Ripohoni Frazën tuaj të Sigurisë",
"Secure your backup with a Security Phrase": "Sigurojeni kopjeruajtjen tuaj me një Frazë Sigurie.",
"Secure your backup with a Security Phrase": "Sigurojeni kopjeruajtjen tuaj me një Frazë Sigurie",
"Repeat your Security Phrase...": "Përsëritni Frazën tuaj të Sigurisë…",
"Please enter your Security Phrase a second time to confirm.": "Ju lutemi, që të ripohohet, rijepeni Frazën tuaj të Sigurisë.",
"This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Ky sesion ka pikasur se Fraza e Sigurisë dhe kyçi juaj për Mesazhe të Sigurt janë hequr.",
@ -3056,5 +3056,25 @@
"Failed to connect to your homeserver. Please close this dialog and try again.": "Su arrit të lidhej me shërbyesin tuaj Home. Ju lutemi, mbylleni këtë dialog dhe riprovoni.",
"Abort": "Ndërprite",
"Are you sure you wish to abort creation of the host? The process cannot be continued.": "Jeni i sigurt se doni të ndërpritet krijimi i strehës? Procesi smund të vazhdohet.",
"Confirm abort of host creation": "Ripohoni ndërprerjen e krijimit të strehës"
"Confirm abort of host creation": "Ripohoni ndërprerjen e krijimit të strehës",
"Upgrade to %(hostSignupBrand)s": "Përmirësojeni me %(hostSignupBrand)s",
"Edit Values": "Përpunoni Vlera",
"Values at explicit levels in this room:": "Vlera në nivele shprehimisht në këtë dhomë:",
"Values at explicit levels:": "Vlera në nivele shprehimisht:",
"Value in this room:": "Vlerë në këtë dhomë:",
"Value:": "Vlerë:",
"Save setting values": "Ruaj vlera rregullimi",
"Values at explicit levels in this room": "Vlera në nivele shprehimisht në këtë dhomë",
"Values at explicit levels": "Vlera në nivele shprehimisht",
"Settable at room": "I caktueshëm për dhomën",
"Settable at global": "I caktueshëm te të përgjithshmet",
"Level": "Nivel",
"Setting definition:": "Përkufizim rregullimi:",
"This UI does NOT check the types of the values. Use at your own risk.": "Kjo UI NUK kontrollon llojet e vlerave. Përdorini me përgjegjësinë tuaj.",
"Setting:": "Rregullim:",
"Value in this room": "Vlerë në këtë dhomë",
"Value": "Vlerë",
"Failed to save settings": "Su arrit të ruhen rregullimet",
"Settings Explorer": "Eksplorues Rregullimesh",
"Show chat effects (animations when receiving e.g. confetti)": "Shfaq efekte fjalosjeje (animacione kur merren bonbone, për shembull)"
}

View file

@ -2996,5 +2996,27 @@
"Failed to connect to your homeserver. Please close this dialog and try again.": "Misslyckades att ansluta till din hemserver. Vänligen stäng den här dialogrutan och försök igen.",
"Abort": "Avbryt",
"Are you sure you wish to abort creation of the host? The process cannot be continued.": "Är du säker på att du vill avbryta skapande av värden? Processen kan inte fortsättas.",
"Confirm abort of host creation": "Bekräfta avbrytning av värdskapande"
"Confirm abort of host creation": "Bekräfta avbrytning av värdskapande",
"Upgrade to %(hostSignupBrand)s": "Uppgradera till %(hostSignupBrand)s",
"Edit Values": "Redigera värden",
"Values at explicit levels in this room:": "Värden vid explicita nivåer i det här rummet:",
"Values at explicit levels:": "Värden vid explicita nivåer:",
"Value in this room:": "Värde i det här rummet:",
"Value:": "Värde:",
"Save setting values": "Spara inställningsvärden",
"Values at explicit levels in this room": "Värden vid explicita nivåer i det här rummet",
"Values at explicit levels": "Värden vid explicita nivåer",
"Settable at room": "Inställningsbar per rum",
"Settable at global": "Inställningsbar globalt",
"Level": "Nivå",
"Setting definition:": "Inställningsdefinition:",
"This UI does NOT check the types of the values. Use at your own risk.": "Det här UI:t kontrollerar inte typer för värden. Använd på egen risk.",
"Caution:": "Varning:",
"Setting:": "Inställning:",
"Value in this room": "Värde i det här rummet",
"Value": "Värde",
"Setting ID": "Inställnings-ID",
"Failed to save settings": "Misslyckades att spara inställningar",
"Settings Explorer": "Inställningsutforskare",
"Show chat effects (animations when receiving e.g. confetti)": "Visa chatteffekter (animeringar när du tar emot t.ex. konfetti)"
}

View file

@ -325,7 +325,7 @@
"Displays action": "Відбиває дію",
"Reason": "Причина",
"%(senderName)s requested a VoIP conference.": "%(senderName)s бажає розпочати дзвінок-конференцію.",
"%(senderName)s invited %(targetName)s.": "%(senderName)s запросив/ла %(targetName)s.",
"%(senderName)s invited %(targetName)s.": "%(senderName)s запрошує %(targetName)s.",
"%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s змінює своє видиме ім'я на %(displayName)s.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s зазначив(-ла) своє видиме ім'я: %(displayName)s.",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s видалив(-ла) своє видиме ім'я (%(oldDisplayName)s).",
@ -1164,7 +1164,7 @@
"Show hidden events in timeline": "Показувати приховані події у часоряді",
"Show previews/thumbnails for images": "Показувати попередній перегляд зображень",
"Compare a unique set of emoji if you don't have a camera on either device": "Порівняйте унікальну низку емодзі якщо ви не маєте камери на жодному пристрої",
"Confirm the emoji below are displayed on both sessions, in the same order:": "Підтвердьте, що нижчевказані емодзі відбиваються в обох сеансах в однаковому порядку:",
"Confirm the emoji below are displayed on both sessions, in the same order:": "Підтвердьте, що емодзі внизу показано в обох сеансах в однаковому порядку:",
"Verify this user by confirming the following emoji appear on their screen.": "Звірте цього користувача підтвердженням того, що наступні емодзі з'являються на його екрані.",
"Emoji picker": "Обирач емодзі",
"The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "Сеанс, який ви намагаєтесь звірити, не підтримує сканування QR-коду або звіряння за допомогою емодзі, що є підтримувані %(brand)s. Спробуйте використати інший клієнт.",
@ -1597,5 +1597,8 @@
"Enable encryption?": "Увімкнути шифрування?",
"Enable room encryption": "Увімкнути шифрування кімнати",
"Encryption": "Шифрування",
"Try again": "Спробувати ще раз"
"Try again": "Спробувати ще раз",
"%(creator)s created this DM.": "%(creator)s створює цю приватну розмову.",
"Share Link to User": "Поділитися посиланням на користувача",
"Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their avatar.": "Повідомлення тут захищено наскрізним шифруванням. Підтвердьте %(displayName)s у їхньому профілі — натиснувши на їх аватар."
}

View file

@ -2409,5 +2409,78 @@
"The call was answered on another device.": "在另一台设备上应答了该通话。",
"The call could not be established": "无法建立通话",
"The other party declined the call.": "对方拒绝了通话。",
"Call Declined": "通话被拒绝"
"Call Declined": "通话被拒绝",
"(connection failed)": "(连接失败)",
"🎉 All servers are banned from participating! This room can no longer be used.": "🎉 所有服务器都已禁止参与!此聊天室不再可用。",
"%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s 为此聊天室更改了服务器 ACL。",
"%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s 为此聊天室设置了服务器 ACL。",
"Hong Kong": "香港",
"Cook Islands": "库克群岛",
"Congo - Kinshasa": "刚果金",
"Congo - Brazzaville": "刚果布拉柴维尔",
"Comoros": "科摩罗",
"Colombia": "哥伦比亚",
"Cocos (Keeling) Islands": "科科斯基林群岛",
"Christmas Island": "圣诞岛",
"China": "中国",
"Chile": "智利",
"Chad": "乍得",
"Central African Republic": "中非共和国",
"Cayman Islands": "开曼群岛(英)",
"Caribbean Netherlands": "荷兰加勒比区",
"Cape Verde": "佛得角",
"Canada": "加拿大",
"Cameroon": "喀麦隆",
"Cambodia": "柬埔寨",
"Burundi": "布隆迪",
"Burkina Faso": "布基纳法索",
"Bulgaria": "保加利亚",
"Brunei": "文莱",
"British Virgin Islands": "英属维尔京群岛",
"British Indian Ocean Territory": "英属印度洋领地",
"Brazil": "巴西",
"Bouvet Island": "布维岛",
"Botswana": "博茨瓦纳",
"Bosnia": "波斯尼亚",
"Bolivia": "玻利维亚",
"Armenia": "亚美尼亚",
"Bhutan": "不丹",
"Bermuda": "百慕大群岛",
"Benin": "贝宁",
"Belize": "伯利兹",
"Belgium": "比利时",
"Belarus": "白俄罗斯",
"Barbados": "巴巴多斯",
"Bangladesh": "孟加拉国",
"Bahrain": "巴林",
"Bahamas": "巴哈马",
"Azerbaijan": "阿塞拜疆",
"Austria": "奥地利",
"Australia": "澳大利亚",
"Aruba": "阿鲁巴岛",
"Argentina": "阿根廷",
"Antigua & Barbuda": "安提瓜和巴布达",
"Antarctica": "南极洲",
"Anguilla": "安圭拉",
"Angola": "安哥拉",
"Andorra": "安道尔",
"American Samoa": "美属萨摩亚",
"Algeria": "阿尔及利亚",
"Albania": "阿尔巴尼亚",
"Åland Islands": "奥兰群岛",
"Afghanistan": "阿富汗",
"United States": "美国",
"United Kingdom": "英国",
"Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.": "您的主服务器已拒绝您的登入尝试。请重试。如果此情况持续发生,请联系您的主服务器管理员。",
"Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.": "您的主服务器不可达,无法使您登入。请重试。如果此情况持续发生,请联系您的主服务器管理员。",
"Try again": "重试",
"We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.": "我们已要求浏览器记住您使用的主服务器,但不幸的是您的浏览器已忘记。请前往登录页面重试。",
"We couldn't log you in": "我们无法使您登入",
"This will end the conference for everyone. Continue?": "这将结束所有人的会议。是否继续?",
"End conference": "结束会议",
"You've reached the maximum number of simultaneous calls.": "您已达到并行呼叫最大数量。",
"Too Many Calls": "太多呼叫",
"Call failed because webcam or microphone could not be accessed. Check that:": "通话失败,因为无法访问网络摄像头或麦克风。请检查:",
"Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "呼叫失败,因为无法访问任何麦克风。 检查是否已插入麦克风并正确设置。",
"Answered Elsewhere": "在其他地方已回答"
}

View file

@ -3068,5 +3068,27 @@
"Failed to connect to your homeserver. Please close this dialog and try again.": "無法連線到您的家伺服器。請關閉對話框並再試一次。",
"Abort": "中止",
"Are you sure you wish to abort creation of the host? The process cannot be continued.": "您確定您想要中止主機建立嗎?流程將無法繼續。",
"Confirm abort of host creation": "確認中止主機建立"
"Confirm abort of host creation": "確認中止主機建立",
"Upgrade to %(hostSignupBrand)s": "升級至 %(hostSignupBrand)s",
"Edit Values": "編輯值",
"Values at explicit levels in this room:": "此聊天室中明確等級的值:",
"Values at explicit levels:": "明確等級的值:",
"Value in this room:": "此聊天室中的值:",
"Value:": "值:",
"Save setting values": "儲存設定值",
"Values at explicit levels in this room": "此聊天室中明確等級的值",
"Values at explicit levels": "明確等級的值",
"Settable at room": "聊天室設定",
"Settable at global": "全域設定",
"Level": "等級",
"Setting definition:": "設定定義:",
"This UI does NOT check the types of the values. Use at your own risk.": "此使用者介面不會檢查值的類型。使用風險自負。",
"Caution:": "警告:",
"Setting:": "設定:",
"Value in this room": "此聊天室中的值",
"Value": "值",
"Setting ID": "設定 ID",
"Failed to save settings": "儲存設定失敗",
"Settings Explorer": "設定瀏覽程式",
"Show chat effects (animations when receiving e.g. confetti)": "顯示聊天效果(當收到如五彩紙屑時顯示動畫)"
}

View file

@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import {throttle, sortBy} from "lodash";
import {EventType} from "matrix-js-sdk/src/@types/event";
import {sortBy, throttle} from "lodash";
import {EventType, RoomType} from "matrix-js-sdk/src/@types/event";
import {Room} from "matrix-js-sdk/src/models/room";
import {MatrixEvent} from "matrix-js-sdk/src/models/event";
@ -33,6 +33,7 @@ import {EnhancedMap, mapDiff} from "../utils/maps";
import {setHasDiff} from "../utils/sets";
import {objectDiff} from "../utils/objects";
import {arrayHasDiff} from "../utils/arrays";
import {ISpaceSummaryEvent, ISpaceSummaryRoom} from "../components/structures/SpaceRoomDirectory";
type SpaceKey = string | symbol;
@ -41,11 +42,14 @@ interface IState {}
const ACTIVE_SPACE_LS_KEY = "mx_active_space";
export const HOME_SPACE = Symbol("home-space");
export const SUGGESTED_ROOMS = Symbol("suggested-rooms");
export const UPDATE_TOP_LEVEL_SPACES = Symbol("top-level-spaces");
export const UPDATE_SELECTED_SPACE = Symbol("selected-space");
// Space Room ID/HOME_SPACE will be emitted when a Space's children change
const MAX_SUGGESTED_ROOMS = 20;
const partitionSpacesAndRooms = (arr: Room[]): [Room[], Room[]] => { // [spaces, rooms]
return arr.reduce((result, room: Room) => {
result[room.isSpaceRoom() ? 0 : 1].push(room);
@ -85,6 +89,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
private spaceFilteredRooms = new Map<string | symbol, Set<string>>();
// The space currently selected in the Space Panel - if null then `Home` is selected
private _activeSpace?: Room = null;
private _suggestedRooms: ISpaceSummaryRoom[] = [];
public get spacePanelSpaces(): Room[] {
return this.rootSpaces;
@ -94,11 +99,16 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
return this._activeSpace || null;
}
public setActiveSpace(space: Room | null) {
public get suggestedRooms(): ISpaceSummaryRoom[] {
return this._suggestedRooms;
}
public async setActiveSpace(space: Room | null) {
if (space === this.activeSpace) return;
this._activeSpace = space;
this.emit(UPDATE_SELECTED_SPACE, this.activeSpace);
this.emit(SUGGESTED_ROOMS, this._suggestedRooms = []);
// persist space selected
if (space) {
@ -106,11 +116,29 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
} else {
window.localStorage.removeItem(ACTIVE_SPACE_LS_KEY);
}
if (space) {
try {
const data: {
rooms: ISpaceSummaryRoom[];
events: ISpaceSummaryEvent[];
} = await this.matrixClient.getSpaceSummary(space.roomId, 0, true, false, MAX_SUGGESTED_ROOMS);
if (this._activeSpace === space) {
this._suggestedRooms = data.rooms.filter(roomInfo => {
return roomInfo.room_type !== RoomType.Space && !this.matrixClient.getRoom(roomInfo.room_id);
});
this.emit(SUGGESTED_ROOMS, this._suggestedRooms);
}
} catch (e) {
console.error(e);
}
}
}
public addRoomToSpace(space: Room, roomId: string, via: string[], autoJoin = false) {
public addRoomToSpace(space: Room, roomId: string, via: string[], suggested = false, autoJoin = false) {
return this.matrixClient.sendStateEvent(space.roomId, EventType.SpaceChild, {
via,
suggested,
auto_join: autoJoin,
}, roomId);
}
@ -327,6 +355,12 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
// this.onRoomUpdate(room);
this.onRoomsUpdate();
}
const numSuggestedRooms = this._suggestedRooms.length;
this._suggestedRooms = this._suggestedRooms.filter(r => r.room_id !== room.roomId);
if (numSuggestedRooms !== this._suggestedRooms.length) {
this.emit(SUGGESTED_ROOMS, this._suggestedRooms);
}
};
private onRoomState = (ev: MatrixEvent) => {
@ -408,6 +442,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
}
protected async onAction(payload: ActionPayload) {
if (!SettingsStore.getValue("feature_spaces")) return;
switch (payload.action) {
case "view_room": {
const room = this.matrixClient?.getRoom(payload.room_id);

View file

@ -302,6 +302,9 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
} else if (payload.action === 'MatrixActions.Event.decrypted') {
const eventPayload = (<any>payload); // TODO: Type out the dispatcher types
const roomId = eventPayload.event.getRoomId();
if (!roomId) {
return;
}
const room = this.matrixClient.getRoom(roomId);
if (!room) {
console.warn(`Event ${eventPayload.event.getId()} was decrypted in an unknown room ${roomId}`);
@ -409,7 +412,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
}
private async handleRoomUpdate(room: Room, cause: RoomUpdateCause): Promise<any> {
if (cause === RoomUpdateCause.NewRoom) {
if (cause === RoomUpdateCause.NewRoom && room.getMyMembership() === "invite") {
// Let the visibility provider know that there is a new invited room. It would be nice
// if this could just be an event that things listen for but the point of this is that
// we delay doing anything about this room until the VoipUserMapper had had a chance

View file

@ -24,6 +24,7 @@ export enum DefaultTagID {
Favourite = "m.favourite",
DM = "im.vector.fake.direct",
ServerNotice = "m.server_notice",
Suggested = "im.vector.fake.suggested",
}
export const OrderedDefaultTagIDs = [
@ -33,6 +34,7 @@ export const OrderedDefaultTagIDs = [
DefaultTagID.Untagged,
DefaultTagID.LowPriority,
DefaultTagID.ServerNotice,
DefaultTagID.Suggested,
DefaultTagID.Archived,
];