From c1880d907257ab336c50e2ce5c796c241484fd25 Mon Sep 17 00:00:00 2001 From: Ole Wieners Date: Thu, 24 Nov 2022 15:18:03 +0100 Subject: [PATCH 1/7] clarify error message for unfederated room invites --- src/i18n/strings/en_EN.json | 13 +++++-------- src/utils/MultiInviter.ts | 31 ++++++++++++------------------- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index af1cab69dcb..6028e8e5350 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -706,17 +706,14 @@ "Not a valid %(brand)s keyfile": "Not a valid %(brand)s keyfile", "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", "Unrecognised address": "Unrecognised address", - "You do not have permission to invite people to this space.": "You do not have permission to invite people to this space.", - "You do not have permission to invite people to this room.": "You do not have permission to invite people to this room.", - "User is already invited to the space": "User is already invited to the space", - "User is already invited to the room": "User is already invited to the room", - "User is already in the space": "User is already in the space", - "User is already in the room": "User is already in the room", + "This %(type)s is unfederated. You cannot invite people from external servers.": "This %(type)s is unfederated. You cannot invite people from external servers.", + "You do not have permission to invite people to this %(type)s.": "You do not have permission to invite people to this %(type)s.", + "User is already invited to the %(type)s": "User is already invited to the %(type)s", + "User is already in the %(type)s": "User is already in the %(type)s", "User does not exist": "User does not exist", "User may or may not exist": "User may or may not exist", "The user must be unbanned before they can be invited.": "The user must be unbanned before they can be invited.", - "The user's homeserver does not support the version of the space.": "The user's homeserver does not support the version of the space.", - "The user's homeserver does not support the version of the room.": "The user's homeserver does not support the version of the room.", + "The user's homeserver does not support the version of the %(type)s.": "The user's homeserver does not support the version of the %(type)s.", "Unknown server error": "Unknown server error", "Use a few words, avoid common phrases": "Use a few words, avoid common phrases", "No need for symbols, digits, or uppercase letters": "No need for symbols, digits, or uppercase letters", diff --git a/src/utils/MultiInviter.ts b/src/utils/MultiInviter.ts index 3c539f7bf0c..078aec41aec 100644 --- a/src/utils/MultiInviter.ts +++ b/src/utils/MultiInviter.ts @@ -212,32 +212,29 @@ export default class MultiInviter { logger.error(err); - const isSpace = this.roomId && this.matrixClient.getRoom(this.roomId)?.isSpaceRoom(); + const room = this.roomId && this.matrixClient.getRoom(this.roomId); + const isSpace = room?.isSpaceRoom(); + const isFederated = room?.currentState.getStateEvents(EventType.RoomCreate, '') + ?.getContent()['m.federate']; + const type = isSpace ? 'space' : 'room'; let errorText: string; let fatal = false; switch (err.errcode) { case "M_FORBIDDEN": - if (isSpace) { - errorText = _t('You do not have permission to invite people to this space.'); + if (isFederated === false) { + errorText = _t("This %(type)s is unfederated. " + + "You cannot invite people from external servers.", { type }); } else { - errorText = _t('You do not have permission to invite people to this room.'); + errorText = _t("You do not have permission to invite people to this %(type)s.", { type }); } fatal = true; break; case USER_ALREADY_INVITED: - if (isSpace) { - errorText = _t("User is already invited to the space"); - } else { - errorText = _t("User is already invited to the room"); - } + errorText = _t("User is already invited to the %(type)s", { type }); break; case USER_ALREADY_JOINED: - if (isSpace) { - errorText = _t("User is already in the space"); - } else { - errorText = _t("User is already in the room"); - } + errorText = _t("User is already in the %(type)s", { type }); break; case "M_LIMIT_EXCEEDED": // we're being throttled so wait a bit & try again @@ -264,11 +261,7 @@ export default class MultiInviter { errorText = _t("The user must be unbanned before they can be invited."); break; case "M_UNSUPPORTED_ROOM_VERSION": - if (isSpace) { - errorText = _t("The user's homeserver does not support the version of the space."); - } else { - errorText = _t("The user's homeserver does not support the version of the room."); - } + errorText = _t("The user's homeserver does not support the version of the %(type)s.", { type }); break; } From e708b4726404bf62573cf0bbe85357f117661faf Mon Sep 17 00:00:00 2001 From: Ole Wieners Date: Thu, 24 Nov 2022 15:20:48 +0100 Subject: [PATCH 2/7] hide external user suggesetions --- src/components/views/dialogs/InviteDialog.tsx | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/components/views/dialogs/InviteDialog.tsx b/src/components/views/dialogs/InviteDialog.tsx index 30c1f4d1544..90f332684e2 100644 --- a/src/components/views/dialogs/InviteDialog.tsx +++ b/src/components/views/dialogs/InviteDialog.tsx @@ -20,6 +20,7 @@ import { RoomMember } from "matrix-js-sdk/src/models/room-member"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixCall } from 'matrix-js-sdk/src/webrtc/call'; import { logger } from "matrix-js-sdk/src/logger"; +import { EventType } from 'matrix-js-sdk/src/@types/event'; import { Icon as InfoIcon } from "../../../../res/img/element-icons/info.svg"; import { Icon as EmailPillAvatarIcon } from "../../../../res/img/icon-email-pill-avatar.svg"; @@ -319,22 +320,29 @@ export default class InviteDialog extends React.PureComponent alreadyInvited.add(m.userId)); - room.getMembersWithMembership('join').forEach(m => alreadyInvited.add(m.userId)); + room.getMembersWithMembership('invite').forEach(m => excludedIds.add(m.userId)); + room.getMembersWithMembership('join').forEach(m => excludedIds.add(m.userId)); // add banned users, so we don't try to invite them - room.getMembersWithMembership('ban').forEach(m => alreadyInvited.add(m.userId)); + room.getMembersWithMembership('ban').forEach(m => excludedIds.add(m.userId)); + if (isFederated === false) { + // exclude users from external servers + const homeserver = props.roomId.split(":")[1]; + this.excludeExternals(homeserver, excludedIds); + } } this.state = { targets: [], // array of Member objects (see interface above) filterText: this.props.initialText || "", - recents: InviteDialog.buildRecents(alreadyInvited), + recents: InviteDialog.buildRecents(excludedIds), numRecentsShown: INITIAL_ROOMS_SHOWN, - suggestions: this.buildSuggestions(alreadyInvited), + suggestions: this.buildSuggestions(excludedIds), numSuggestionsShown: INITIAL_ROOMS_SHOWN, serverResultsMixin: [], threepidResultsMixin: [], @@ -364,6 +372,18 @@ export default class InviteDialog extends React.PureComponent): void { + const client = MatrixClientPeg.get(); + // users with room membership + const members = Object.values(buildMemberScores(client)).map(({ member }) => member.userId); + // users with dm membership + const roomMembers = Object.keys(DMRoomMap.shared().getUniqueRoomsWithIndividuals()); + roomMembers.forEach(user => members.push(user)); + // filter duplicates and user IDs from external servers + const externals = new Set(members.filter(id => !id.includes(homeserver))); + externals.forEach(user => excludedTargetIds.add(user)); + } + public static buildRecents(excludedTargetIds: Set): IRecentUser[] { const rooms = DMRoomMap.shared().getUniqueRoomsWithIndividuals(); // map of userId => js-sdk Room From ec9295af4e43e1350b02a78d4d60128fe0a757dd Mon Sep 17 00:00:00 2001 From: Ole Wieners Date: Thu, 24 Nov 2022 15:46:46 +0100 Subject: [PATCH 3/7] rename some descriptors --- src/components/views/dialogs/InviteDialog.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/dialogs/InviteDialog.tsx b/src/components/views/dialogs/InviteDialog.tsx index 90f332684e2..9e845e7ced2 100644 --- a/src/components/views/dialogs/InviteDialog.tsx +++ b/src/components/views/dialogs/InviteDialog.tsx @@ -378,10 +378,10 @@ export default class InviteDialog extends React.PureComponent member.userId); // users with dm membership const roomMembers = Object.keys(DMRoomMap.shared().getUniqueRoomsWithIndividuals()); - roomMembers.forEach(user => members.push(user)); + roomMembers.forEach(id => members.push(id)); // filter duplicates and user IDs from external servers const externals = new Set(members.filter(id => !id.includes(homeserver))); - externals.forEach(user => excludedTargetIds.add(user)); + externals.forEach(id => excludedTargetIds.add(id)); } public static buildRecents(excludedTargetIds: Set): IRecentUser[] { From acfc4ba0f0e616d91b6c7f93888bfa5fd6bf13c0 Mon Sep 17 00:00:00 2001 From: Ole Wieners Date: Fri, 25 Nov 2022 10:00:43 +0100 Subject: [PATCH 4/7] fix i18n --- src/i18n/strings/en_EN.json | 14 +++++++++----- src/utils/MultiInviter.ts | 29 +++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 6028e8e5350..20706759b7b 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -706,14 +706,18 @@ "Not a valid %(brand)s keyfile": "Not a valid %(brand)s keyfile", "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", "Unrecognised address": "Unrecognised address", - "This %(type)s is unfederated. You cannot invite people from external servers.": "This %(type)s is unfederated. You cannot invite people from external servers.", - "You do not have permission to invite people to this %(type)s.": "You do not have permission to invite people to this %(type)s.", - "User is already invited to the %(type)s": "User is already invited to the %(type)s", - "User is already in the %(type)s": "User is already in the %(type)s", + "You do not have permission to invite people to this space.": "You do not have permission to invite people to this space.", + "This room is unfederated. You cannot invite people from external servers.": "This room is unfederated. You cannot invite people from external servers.", + "You do not have permission to invite people to this room.": "You do not have permission to invite people to this room.", + "User is already invited to the space": "User is already invited to the space", + "User is already invited to the room": "User is already invited to the room", + "User is already in the space": "User is already in the space", + "User is already in the room": "User is already in the room", "User does not exist": "User does not exist", "User may or may not exist": "User may or may not exist", "The user must be unbanned before they can be invited.": "The user must be unbanned before they can be invited.", - "The user's homeserver does not support the version of the %(type)s.": "The user's homeserver does not support the version of the %(type)s.", + "The user's homeserver does not support the version of the space.": "The user's homeserver does not support the version of the space.", + "The user's homeserver does not support the version of the room.": "The user's homeserver does not support the version of the room.", "Unknown server error": "Unknown server error", "Use a few words, avoid common phrases": "Use a few words, avoid common phrases", "No need for symbols, digits, or uppercase letters": "No need for symbols, digits, or uppercase letters", diff --git a/src/utils/MultiInviter.ts b/src/utils/MultiInviter.ts index 078aec41aec..2d87a383851 100644 --- a/src/utils/MultiInviter.ts +++ b/src/utils/MultiInviter.ts @@ -217,24 +217,33 @@ export default class MultiInviter { const isFederated = room?.currentState.getStateEvents(EventType.RoomCreate, '') ?.getContent()['m.federate']; - const type = isSpace ? 'space' : 'room'; let errorText: string; let fatal = false; switch (err.errcode) { case "M_FORBIDDEN": - if (isFederated === false) { - errorText = _t("This %(type)s is unfederated. " + - "You cannot invite people from external servers.", { type }); + if (isSpace) { + errorText = _t('You do not have permission to invite people to this space.'); + } else if (isFederated === false) { + errorText = _t("This room is unfederated. " + + "You cannot invite people from external servers."); } else { - errorText = _t("You do not have permission to invite people to this %(type)s.", { type }); + errorText = _t('You do not have permission to invite people to this room.'); } fatal = true; break; case USER_ALREADY_INVITED: - errorText = _t("User is already invited to the %(type)s", { type }); + if (isSpace) { + errorText = _t("User is already invited to the space"); + } else { + errorText = _t("User is already invited to the room"); + } break; case USER_ALREADY_JOINED: - errorText = _t("User is already in the %(type)s", { type }); + if (isSpace) { + errorText = _t("User is already in the space"); + } else { + errorText = _t("User is already in the room"); + } break; case "M_LIMIT_EXCEEDED": // we're being throttled so wait a bit & try again @@ -261,7 +270,11 @@ export default class MultiInviter { errorText = _t("The user must be unbanned before they can be invited."); break; case "M_UNSUPPORTED_ROOM_VERSION": - errorText = _t("The user's homeserver does not support the version of the %(type)s.", { type }); + if (isSpace) { + errorText = _t("The user's homeserver does not support the version of the space."); + } else { + errorText = _t("The user's homeserver does not support the version of the room."); + } break; } From 455bad49494387b8c12c7ce78080bc90c5e89616 Mon Sep 17 00:00:00 2001 From: Ole Wieners Date: Fri, 25 Nov 2022 11:25:07 +0100 Subject: [PATCH 5/7] add warning for unfederated spaces --- src/i18n/strings/en_EN.json | 1 + src/utils/MultiInviter.ts | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 20706759b7b..519222591a0 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -706,6 +706,7 @@ "Not a valid %(brand)s keyfile": "Not a valid %(brand)s keyfile", "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", "Unrecognised address": "Unrecognised address", + "This space is unfederated. You cannot invite people from external servers.": "This space is unfederated. You cannot invite people from external servers.", "You do not have permission to invite people to this space.": "You do not have permission to invite people to this space.", "This room is unfederated. You cannot invite people from external servers.": "This room is unfederated. You cannot invite people from external servers.", "You do not have permission to invite people to this room.": "You do not have permission to invite people to this room.", diff --git a/src/utils/MultiInviter.ts b/src/utils/MultiInviter.ts index 2d87a383851..ad2dbb6c380 100644 --- a/src/utils/MultiInviter.ts +++ b/src/utils/MultiInviter.ts @@ -222,12 +222,15 @@ export default class MultiInviter { switch (err.errcode) { case "M_FORBIDDEN": if (isSpace) { - errorText = _t('You do not have permission to invite people to this space.'); - } else if (isFederated === false) { - errorText = _t("This room is unfederated. " + - "You cannot invite people from external servers."); + errorText = isFederated === false + ? _t("This space is unfederated. " + + "You cannot invite people from external servers.") + : _t('You do not have permission to invite people to this space.'); } else { - errorText = _t('You do not have permission to invite people to this room.'); + errorText = isFederated === false + ? _t("This room is unfederated. " + + "You cannot invite people from external servers.") + : _t('You do not have permission to invite people to this room.'); } fatal = true; break; From 48819ee7ff28a03203f3518472c12ef6be9ba164 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 18 Oct 2023 09:47:42 +0100 Subject: [PATCH 6/7] i18n Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/i18n/strings/en_EN.json | 7654 +++++++++++++++++------------------ src/utils/MultiInviter.ts | 8 +- 2 files changed, 3829 insertions(+), 3833 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 67491ed3237..4c391c9d939 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,2575 +1,1376 @@ { - "zxcvbn": { - "suggestions": { - "allUppercase": "All-uppercase is almost as easy to guess as all-lowercase", - "anotherWord": "Add another word or two. Uncommon words are better.", - "associatedYears": "Avoid years that are associated with you", - "capitalization": "Capitalization doesn't help very much", - "dates": "Avoid dates and years that are associated with you", - "l33t": "Predictable substitutions like '@' instead of 'a' don't help very much", - "longerKeyboardPattern": "Use a longer keyboard pattern with more turns", - "noNeed": "No need for symbols, digits, or uppercase letters", - "pwned": "If you use this password elsewhere, you should change it.", - "recentYears": "Avoid recent years", - "repeated": "Avoid repeated words and characters", - "reverseWords": "Reversed words aren't much harder to guess", - "sequences": "Avoid sequences", - "useWords": "Use a few words, avoid common phrases" - }, - "warnings": { - "common": "This is a very common password", - "commonNames": "Common names and surnames are easy to guess", - "dates": "Dates are often easy to guess", - "extendedRepeat": "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"", - "keyPattern": "Short keyboard patterns are easy to guess", - "namesByThemselves": "Names and surnames by themselves are easy to guess", - "pwned": "Your password was exposed by a data breach on the Internet.", - "recentYears": "Recent years are easy to guess", - "sequences": "Sequences like abc or 6543 are easy to guess", - "similarToCommon": "This is similar to a commonly used password", - "simpleRepeat": "Repeats like \"aaa\" are easy to guess", - "straightRow": "Straight rows of keys are easy to guess", - "topHundred": "This is a top-100 common password", - "topTen": "This is a top-10 common password", - "userInputs": "There should not be any personal or page related data.", - "wordByItself": "A word by itself is easy to guess" - } - }, - "widget": { - "added_by": "Widget added by", - "capabilities_dialog": { - "content_starting_text": "This widget would like to:", - "decline_all_permission": "Decline All", - "remember_Selection": "Remember my selection for this widget", - "title": "Approve widget permissions" - }, - "capability": { - "always_on_screen_generic": "Remain on your screen while running", - "always_on_screen_viewing_another_room": "Remain on your screen when viewing another room, when running", - "any_room": "The above, but in any room you are joined or invited to as well", - "byline_empty_state_key": "with an empty state key", - "byline_state_key": "with state key %(stateKey)s", - "capability": "The %(capability)s capability", - "change_avatar_active_room": "Change the avatar of your active room", - "change_avatar_this_room": "Change the avatar of this room", - "change_name_active_room": "Change the name of your active room", - "change_name_this_room": "Change the name of this room", - "change_topic_active_room": "Change the topic of your active room", - "change_topic_this_room": "Change the topic of this room", - "receive_membership_active_room": "See when people join, leave, or are invited to your active room", - "receive_membership_this_room": "See when people join, leave, or are invited to this room", - "remove_ban_invite_leave_active_room": "Remove, ban, or invite people to your active room, and make you leave", - "remove_ban_invite_leave_this_room": "Remove, ban, or invite people to this room, and make you leave", - "see_avatar_change_active_room": "See when the avatar changes in your active room", - "see_avatar_change_this_room": "See when the avatar changes in this room", - "see_event_type_sent_active_room": "See %(eventType)s events posted to your active room", - "see_event_type_sent_this_room": "See %(eventType)s events posted to this room", - "see_images_sent_active_room": "See images posted to your active room", - "see_images_sent_this_room": "See images posted to this room", - "see_messages_sent_active_room": "See messages posted to your active room", - "see_messages_sent_this_room": "See messages posted to this room", - "see_msgtype_sent_active_room": "See %(msgtype)s messages posted to your active room", - "see_msgtype_sent_this_room": "See %(msgtype)s messages posted to this room", - "see_name_change_active_room": "See when the name changes in your active room", - "see_name_change_this_room": "See when the name changes in this room", - "see_sent_emotes_active_room": "See emotes posted to your active room", - "see_sent_emotes_this_room": "See emotes posted to this room", - "see_sent_files_active_room": "See general files posted to your active room", - "see_sent_files_this_room": "See general files posted to this room", - "see_sticker_posted_active_room": "See when anyone posts a sticker to your active room", - "see_sticker_posted_this_room": "See when a sticker is posted in this room", - "see_text_messages_sent_active_room": "See text messages posted to your active room", - "see_text_messages_sent_this_room": "See text messages posted to this room", - "see_topic_change_active_room": "See when the topic changes in your active room", - "see_topic_change_this_room": "See when the topic changes in this room", - "see_videos_sent_active_room": "See videos posted to your active room", - "see_videos_sent_this_room": "See videos posted to this room", - "send_emotes_active_room": "Send emotes as you in your active room", - "send_emotes_this_room": "Send emotes as you in this room", - "send_event_type_active_room": "Send %(eventType)s events as you in your active room", - "send_event_type_this_room": "Send %(eventType)s events as you in this room", - "send_files_active_room": "Send general files as you in your active room", - "send_files_this_room": "Send general files as you in this room", - "send_images_active_room": "Send images as you in your active room", - "send_images_this_room": "Send images as you in this room", - "send_messages_active_room": "Send messages as you in your active room", - "send_messages_this_room": "Send messages as you in this room", - "send_msgtype_active_room": "Send %(msgtype)s messages as you in your active room", - "send_msgtype_this_room": "Send %(msgtype)s messages as you in this room", - "send_stickers_active_room": "Send stickers into your active room", - "send_stickers_active_room_as_you": "Send stickers to your active room as you", - "send_stickers_this_room": "Send stickers into this room", - "send_stickers_this_room_as_you": "Send stickers to this room as you", - "send_text_messages_active_room": "Send text messages as you in your active room", - "send_text_messages_this_room": "Send text messages as you in this room", - "send_videos_active_room": "Send videos as you in your active room", - "send_videos_this_room": "Send videos as you in this room", - "specific_room": "The above, but in as well", - "switch_room": "Change which room you're viewing", - "switch_room_message_user": "Change which room, message, or user you're viewing" - }, - "close_to_view_right_panel": "Close this widget to view it in this panel", - "context_menu": { - "delete": "Delete widget", - "delete_warning": "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?", - "move_left": "Move left", - "move_right": "Move right", - "remove": "Remove for everyone", - "revoke": "Revoke permissions", - "screenshot": "Take a picture", - "start_audio_stream": "Start audio stream" + "a11y": { + "jump_first_invite": "Jump to first invite.", + "n_unread_messages": { + "one": "1 unread message.", + "other": "%(count)s unread messages." }, - "cookie_warning": "This widget may use cookies.", - "error_hangup_description": "You were disconnected from the call. (Error: %(message)s)", - "error_hangup_title": "Connection lost", - "error_loading": "Error loading Widget", - "error_mixed_content": "Error - Mixed content", - "error_need_invite_permission": "You need to be able to invite users to do that.", - "error_need_kick_permission": "You need to be able to kick users to do that.", - "error_need_to_be_logged_in": "You need to be logged in.", - "error_unable_start_audio_stream_description": "Unable to start audio streaming.", - "error_unable_start_audio_stream_title": "Failed to start livestream", - "modal_data_warning": "Data on this screen is shared with %(widgetDomain)s", - "modal_title_default": "Modal Widget", - "no_name": "Unknown App", - "open_id_permissions_dialog": { - "remember_selection": "Remember this", - "starting_text": "The widget will verify your user ID, but won't be able to perform actions for you:", - "title": "Allow this widget to verify your identity" + "n_unread_messages_mentions": { + "one": "1 unread mention.", + "other": "%(count)s unread messages including mentions." }, - "popout": "Popout widget", - "set_room_layout": "Set my room layout for everyone", - "shared_data_avatar": "Your profile picture URL", - "shared_data_device_id": "Your device ID", - "shared_data_lang": "Your language", - "shared_data_mxid": "Your user ID", - "shared_data_name": "Your display name", - "shared_data_room_id": "Room ID", - "shared_data_theme": "Your theme", - "shared_data_url": "%(brand)s URL", - "shared_data_warning": "Using this widget may share data with %(widgetDomain)s.", - "shared_data_warning_im": "Using this widget may share data with %(widgetDomain)s & your integration manager.", - "shared_data_widget_id": "Widget ID", - "unencrypted_warning": "Widgets do not use message encryption.", - "unmaximise": "Un-maximise", - "unpin_to_view_right_panel": "Unpin this widget to view it in this panel" + "room_name": "Room %(name)s", + "unread_messages": "Unread messages.", + "user_menu": "User menu" }, - "voip": { - "already_in_call": "Already in call", - "already_in_call_person": "You're already in a call with this person.", - "answered_elsewhere": "Answered Elsewhere", - "answered_elsewhere_description": "The call was answered on another device.", - "audio_devices": "Audio devices", - "call_failed": "Call Failed", - "call_failed_description": "The call could not be established", - "call_failed_media": "Call failed because webcam or microphone could not be accessed. Check that:", - "call_failed_media_applications": "No other application is using the webcam", - "call_failed_media_connected": "A microphone and webcam are plugged in and set up correctly", - "call_failed_media_permissions": "Permission is granted to use the webcam", - "call_failed_microphone": "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.", - "call_held": "%(peerName)s held the call", - "call_held_resume": "You held the call Resume", - "call_held_switch": "You held the call Switch", - "call_toast_unknown_room": "Unknown room", - "camera_disabled": "Your camera is turned off", - "camera_enabled": "Your camera is still enabled", - "cannot_call_yourself_description": "You cannot place a call with yourself.", - "change_input_device": "Change input device", - "connecting": "Connecting", - "connection_lost": "Connectivity to the server has been lost", - "connection_lost_description": "You cannot place calls without a connection to the server.", - "consulting": "Consulting with %(transferTarget)s. Transfer to %(transferee)s", - "default_device": "Default Device", - "dial": "Dial", - "dialpad": "Dialpad", - "disable_camera": "Turn off camera", - "disable_microphone": "Mute microphone", - "disabled_no_one_here": "There's no one here to call", - "disabled_no_perms_start_video_call": "You do not have permission to start video calls", - "disabled_no_perms_start_voice_call": "You do not have permission to start voice calls", - "disabled_ongoing_call": "Ongoing call", - "enable_camera": "Turn on camera", - "enable_microphone": "Unmute microphone", - "expand": "Return to call", - "failed_call_live_broadcast_description": "You can’t start a call as you are currently recording a live broadcast. Please end your live broadcast in order to start a call.", - "failed_call_live_broadcast_title": "Can’t start a call", - "hangup": "Hangup", - "hide_sidebar_button": "Hide sidebar", - "input_devices": "Input devices", - "join_button_tooltip_call_full": "Sorry — this call is currently full", - "join_button_tooltip_connecting": "Connecting", - "maximise": "Fill screen", - "misconfigured_server": "Call failed due to misconfigured server", - "misconfigured_server_description": "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.", - "misconfigured_server_fallback": "Alternatively, you can try to use the public server at , but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.", - "misconfigured_server_fallback_accept": "Try using %(server)s", - "more_button": "More", - "msisdn_lookup_failed": "Unable to look up phone number", - "msisdn_lookup_failed_description": "There was an error looking up the phone number", - "msisdn_transfer_failed": "Unable to transfer call", - "n_people_joined": { - "one": "%(count)s person joined", - "other": "%(count)s people joined" - }, - "no_audio_input_description": "We didn't find a microphone on your device. Please check your settings and try again.", - "no_audio_input_title": "No microphone found", - "no_media_perms_description": "You may need to manually permit %(brand)s to access your microphone/webcam", - "no_media_perms_title": "No media permissions", - "no_permission_conference": "Permission Required", - "no_permission_conference_description": "You do not have permission to start a conference call in this room", - "on_hold": "%(name)s on hold", - "output_devices": "Output devices", - "screenshare_monitor": "Share entire screen", - "screenshare_title": "Share content", - "screenshare_window": "Application window", - "show_sidebar_button": "Show sidebar", - "silence": "Silence call", - "silenced": "Notifications silenced", - "start_screenshare": "Start sharing your screen", - "stop_screenshare": "Stop sharing your screen", - "too_many_calls": "Too Many Calls", - "too_many_calls_description": "You've reached the maximum number of simultaneous calls.", - "transfer_consult_first_label": "Consult first", - "transfer_failed": "Transfer Failed", - "transfer_failed_description": "Failed to transfer call", - "unable_to_access_audio_input_description": "We were unable to access your microphone. Please check your browser settings and try again.", - "unable_to_access_audio_input_title": "Unable to access your microphone", - "unable_to_access_media": "Unable to access webcam / microphone", - "unable_to_access_microphone": "Unable to access microphone", - "unknown_caller": "Unknown caller", - "unknown_person": "unknown person", - "unsilence": "Sound on", - "unsupported": "Calls are unsupported", - "unsupported_browser": "You cannot place calls in this browser.", - "user_busy": "User Busy", - "user_busy_description": "The user you called is busy.", - "user_is_presenting": "%(sharerName)s is presenting", - "video_call": "Video call", - "video_call_started": "Video call started", - "video_devices": "Video devices", - "voice_call": "Voice call", - "you_are_presenting": "You are presenting" - }, - "voice_message": { - "cant_start_broadcast_description": "You can't start a voice message as you are currently recording a live broadcast. Please end your live broadcast in order to start recording a voice message.", - "cant_start_broadcast_title": "Can't start voice message" - }, - "voice_broadcast": { - "30s_backward": "30s backward", - "30s_forward": "30s forward", - "action": "Voice broadcast", - "buffering": "Buffering…", - "confirm_listen_affirm": "Yes, end my recording", - "confirm_listen_description": "If you start listening to this live broadcast, your current live broadcast recording will be ended.", - "confirm_listen_title": "Listen to live broadcast?", - "confirm_stop_affirm": "Yes, stop broadcast", - "confirm_stop_description": "Are you sure you want to stop your live broadcast? This will end the broadcast and the full recording will be available in the room.", - "confirm_stop_title": "Stop live broadcasting?", - "connection_error": "Connection error - Recording paused", - "failed_already_recording_description": "You are already recording a voice broadcast. Please end your current voice broadcast to start a new one.", - "failed_already_recording_title": "Can't start a new voice broadcast", - "failed_decrypt": "Unable to decrypt voice broadcast", - "failed_generic": "Unable to play this voice broadcast", - "failed_insufficient_permission_description": "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.", - "failed_insufficient_permission_title": "Can't start a new voice broadcast", - "failed_no_connection_description": "Unfortunately we're unable to start a recording right now. Please try again later.", - "failed_no_connection_title": "Connection error", - "failed_others_already_recording_description": "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.", - "failed_others_already_recording_title": "Can't start a new voice broadcast", - "go_live": "Go live", - "live": "Live", - "pause": "pause voice broadcast", - "play": "play voice broadcast", - "resume": "resume voice broadcast" + "a11y_jump_first_unread_room": "Jump to first unread room.", + "action": { + "accept": "Accept", + "add": "Add", + "add_existing_room": "Add existing room", + "add_people": "Add people", + "apply": "Apply", + "approve": "Approve", + "ask_to_join": "Ask to join", + "back": "Back", + "call": "Call", + "cancel": "Cancel", + "change": "Change", + "clear": "Clear", + "click": "Click", + "click_to_copy": "Click to copy", + "close": "Close", + "collapse": "Collapse", + "complete": "Complete", + "confirm": "Confirm", + "continue": "Continue", + "copy": "Copy", + "copy_link": "Copy link", + "create": "Create", + "create_a_room": "Create a room", + "decline": "Decline", + "delete": "Delete", + "deny": "Deny", + "disable": "Disable", + "disconnect": "Disconnect", + "dismiss": "Dismiss", + "done": "Done", + "download": "Download", + "edit": "Edit", + "enable": "Enable", + "enter_fullscreen": "Enter fullscreen", + "exit_fullscreeen": "Exit fullscreen", + "expand": "Expand", + "explore_public_rooms": "Explore public rooms", + "explore_rooms": "Explore rooms", + "export": "Export", + "forward": "Forward", + "go": "Go", + "go_back": "Go back", + "got_it": "Got it", + "hide_advanced": "Hide advanced", + "hold": "Hold", + "ignore": "Ignore", + "import": "Import", + "invite": "Invite", + "invite_to_space": "Invite to space", + "invites_list": "Invites", + "join": "Join", + "learn_more": "Learn more", + "leave": "Leave", + "leave_room": "Leave room", + "logout": "Logout", + "manage": "Manage", + "maximise": "Maximise", + "mention": "Mention", + "minimise": "Minimise", + "new_room": "New room", + "new_video_room": "New video room", + "next": "Next", + "no": "No", + "ok": "OK", + "pause": "Pause", + "pin": "Pin", + "play": "Play", + "proceed": "Proceed", + "quote": "Quote", + "react": "React", + "refresh": "Refresh", + "register": "Register", + "reject": "Reject", + "reload": "Reload", + "remove": "Remove", + "rename": "Rename", + "reply": "Reply", + "reply_in_thread": "Reply in thread", + "report_content": "Report Content", + "resend": "Resend", + "reset": "Reset", + "restore": "Restore", + "resume": "Resume", + "retry": "Retry", + "review": "Review", + "revoke": "Revoke", + "save": "Save", + "search": "Search", + "send_report": "Send report", + "share": "Share", + "show": "Show", + "show_advanced": "Show advanced", + "show_all": "Show all", + "sign_in": "Sign in", + "sign_out": "Sign out", + "skip": "Skip", + "start": "Start", + "start_chat": "Start chat", + "start_new_chat": "Start new chat", + "stop": "Stop", + "submit": "Submit", + "subscribe": "Subscribe", + "transfer": "Transfer", + "trust": "Trust", + "try_again": "Try again", + "unban": "Unban", + "unignore": "Unignore", + "unpin": "Unpin", + "unsubscribe": "Unsubscribe", + "update": "Update", + "upgrade": "Upgrade", + "upload": "Upload", + "verify": "Verify", + "view": "View", + "view_all": "View all", + "view_list": "View list", + "view_message": "View message", + "view_source": "View Source", + "yes": "Yes", + "zoom_in": "Zoom in", + "zoom_out": "Zoom out" }, - "user_menu": { - "settings": "All settings", - "switch_theme_dark": "Switch to dark mode", - "switch_theme_light": "Switch to light mode" + "analytics": { + "accept_button": "That's fine", + "bullet_1": "We don't record or profile any account data", + "bullet_2": "We don't share information with third parties", + "consent_migration": "You previously consented to share anonymous usage data with us. We're updating how that works.", + "disable_prompt": "You can turn this off anytime in settings", + "enable_prompt": "Help improve %(analyticsOwner)s", + "learn_more": "Share anonymous data to help us identify issues. Nothing personal. No third parties. Learn More", + "privacy_policy": "You can read all our terms here", + "pseudonymous_usage_data": "Help us identify issues and improve %(analyticsOwner)s by sharing anonymous usage data. To understand how people use multiple devices, we'll generate a random identifier, shared by your devices.", + "shared_data_heading": "Any of the following data may be shared:" }, - "user_info": { - "admin_tools_section": "Admin Tools", - "ban_button_room": "Ban from room", - "ban_button_space": "Ban from space", - "ban_room_confirm_title": "Ban from %(roomName)s", - "ban_space_everything": "Ban them from everything I'm able to", - "ban_space_specific": "Ban them from specific things I'm able to", - "count_of_sessions": { - "one": "%(count)s session", - "other": "%(count)s sessions" - }, - "count_of_verified_sessions": { - "one": "1 verified session", - "other": "%(count)s verified sessions" + "auth": { + "3pid_in_use": "That e-mail address or phone number is already in use.", + "account_clash": "Your new account (%(newAccountId)s) is registered, but you're already logged into a different account (%(loggedInUserId)s).", + "account_clash_previous_account": "Continue with previous account", + "account_deactivated": "This account has been deactivated.", + "autodiscovery_generic_failure": "Failed to get autodiscovery configuration from server", + "autodiscovery_hs_incompatible": "Your homeserver is too old and does not support the minimum API version required. Please contact your server owner, or upgrade your server.", + "autodiscovery_invalid": "Invalid homeserver discovery response", + "autodiscovery_invalid_hs": "Homeserver URL does not appear to be a valid Matrix homeserver", + "autodiscovery_invalid_hs_base_url": "Invalid base_url for m.homeserver", + "autodiscovery_invalid_is": "Identity server URL does not appear to be a valid identity server", + "autodiscovery_invalid_is_base_url": "Invalid base_url for m.identity_server", + "autodiscovery_invalid_is_response": "Invalid identity server discovery response", + "autodiscovery_invalid_json": "Invalid JSON", + "autodiscovery_no_well_known": "No .well-known JSON file found", + "autodiscovery_unexpected_error_hs": "Unexpected error resolving homeserver configuration", + "autodiscovery_unexpected_error_is": "Unexpected error resolving identity server configuration", + "captcha_description": "This homeserver would like to make sure you are not a robot.", + "change_password_action": "Change Password", + "change_password_confirm_invalid": "Passwords don't match", + "change_password_confirm_label": "Confirm password", + "change_password_current_label": "Current password", + "change_password_empty": "Passwords can't be empty", + "change_password_error": "Error while changing password: %(error)s", + "change_password_mismatch": "New passwords don't match", + "change_password_new_label": "New Password", + "check_email_explainer": "Follow the instructions sent to %(email)s", + "check_email_resend_prompt": "Did not receive it?", + "check_email_resend_tooltip": "Verification link email resent!", + "check_email_wrong_email_button": "Re-enter email address", + "check_email_wrong_email_prompt": "Wrong email address?", + "continue_with_idp": "Continue with %(provider)s", + "continue_with_sso": "Continue with %(ssoButtons)s", + "country_dropdown": "Country Dropdown", + "create_account_prompt": "New here? Create an account", + "create_account_title": "Create account", + "email_discovery_text": "Use email to optionally be discoverable by existing contacts.", + "email_field_label": "Email", + "email_field_label_invalid": "Doesn't look like a valid email address", + "email_field_label_required": "Enter email address", + "email_help_text": "Add an email to be able to reset your password.", + "email_phone_discovery_text": "Use email or phone to optionally be discoverable by existing contacts.", + "enter_email_explainer": "%(homeserver)s will send you a verification link to let you reset your password.", + "enter_email_heading": "Enter your email to reset password", + "failed_connect_identity_server": "Cannot reach identity server", + "failed_connect_identity_server_other": "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.", + "failed_connect_identity_server_register": "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.", + "failed_connect_identity_server_reset_password": "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.", + "failed_homeserver_discovery": "Failed to perform homeserver discovery", + "failed_query_registration_methods": "Unable to query for supported registration methods.", + "failed_soft_logout_auth": "Failed to re-authenticate", + "failed_soft_logout_homeserver": "Failed to re-authenticate due to a homeserver problem", + "footer_powered_by_matrix": "powered by Matrix", + "forgot_password_email_invalid": "The email address doesn't appear to be valid.", + "forgot_password_email_required": "The email address linked to your account must be entered.", + "forgot_password_prompt": "Forgotten your password?", + "forgot_password_send_email": "Send email", + "identifier_label": "Sign in with", + "incorrect_credentials": "Incorrect username and/or password.", + "incorrect_credentials_detail": "Please note you are logging into the %(hs)s server, not matrix.org.", + "incorrect_password": "Incorrect password", + "log_in_new_account": "Log in to your new account.", + "logout_dialog": { + "description": "Are you sure you want to sign out?", + "megolm_export": "Manually export keys", + "setup_key_backup_title": "You'll lose access to your encrypted messages", + "setup_secure_backup_description_1": "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.", + "setup_secure_backup_description_2": "When you sign out, these keys will be deleted from this device, which means you won't be able to read encrypted messages unless you have the keys for them on your other devices, or backed them up to the server.", + "skip_key_backup": "I don't want my encrypted messages", + "use_key_backup": "Start using Key Backup" }, - "deactivate_confirm_action": "Deactivate user", - "deactivate_confirm_description": "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?", - "deactivate_confirm_title": "Deactivate user?", - "demote_button": "Demote", - "demote_self_confirm_description_space": "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.", - "demote_self_confirm_room": "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.", - "demote_self_confirm_title": "Demote yourself?", - "disinvite_button_room": "Disinvite from room", - "disinvite_button_room_name": "Disinvite from %(roomName)s", - "disinvite_button_space": "Disinvite from space", - "edit_own_devices": "Edit devices", - "error_ban_user": "Failed to ban user", - "error_deactivate": "Failed to deactivate user", - "error_kicking_user": "Failed to remove user", - "error_mute_user": "Failed to mute user", - "error_revoke_3pid_invite_description": "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.", - "error_revoke_3pid_invite_title": "Failed to revoke invite", - "hide_sessions": "Hide sessions", - "hide_verified_sessions": "Hide verified sessions", - "ignore_confirm_description": "All messages and invites from this user will be hidden. Are you sure you want to ignore them?", - "ignore_confirm_title": "Ignore %(user)s", - "invited_by": "Invited by %(sender)s", - "jump_to_rr_button": "Jump to read receipt", - "kick_button_room": "Remove from room", - "kick_button_room_name": "Remove from %(roomName)s", - "kick_button_space": "Remove from space", - "kick_button_space_everything": "Remove them from everything I'm able to", - "kick_space_specific": "Remove them from specific things I'm able to", - "kick_space_warning": "They'll still be able to access whatever you're not an admin of.", - "promote_warning": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", - "redact": { - "confirm_button": { - "one": "Remove 1 message", - "other": "Remove %(count)s messages" - }, - "confirm_description_1": { - "one": "You are about to remove %(count)s message by %(user)s. This will remove them permanently for everyone in the conversation. Do you wish to continue?", - "other": "You are about to remove %(count)s messages by %(user)s. This will remove them permanently for everyone in the conversation. Do you wish to continue?" - }, - "confirm_description_2": "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.", - "confirm_keep_state_explainer": "Uncheck if you also want to remove system messages on this user (e.g. membership change, profile change…)", - "confirm_keep_state_label": "Preserve system messages", - "confirm_title": "Remove recent messages by %(user)s", - "no_recent_messages_description": "Try scrolling up in the timeline to see if there are any earlier ones.", - "no_recent_messages_title": "No recent messages by %(user)s found" - }, - "redact_button": "Remove recent messages", - "revoke_invite": "Revoke invite", - "role_label": "Role in ", - "room_encrypted": "Messages in this room are end-to-end encrypted.", - "room_encrypted_detail": "Your messages are secured and only you and the recipient have the unique keys to unlock them.", - "room_unencrypted": "Messages in this room are not end-to-end encrypted.", - "room_unencrypted_detail": "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.", - "share_button": "Share Link to User", - "unban_button_room": "Unban from room", - "unban_button_space": "Unban from space", - "unban_room_confirm_title": "Unban from %(roomName)s", - "unban_space_everything": "Unban them from everything I'm able to", - "unban_space_specific": "Unban them from specific things I'm able to", - "unban_space_warning": "They won't be able to access whatever you're not an admin of.", - "verify_button": "Verify User", - "verify_explainer": "For extra security, verify this user by checking a one-time code on both of your devices." - }, - "upload_file": { - "cancel_all_button": "Cancel All", - "error_file_too_large": "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.", - "error_files_too_large": "These files are too large to upload. The file size limit is %(limit)s.", - "error_some_files_too_large": "Some files are too large to be uploaded. The file size limit is %(limit)s.", - "error_title": "Upload Error", - "title": "Upload files", - "title_progress": "Upload files (%(current)s of %(total)s)", - "upload_all_button": "Upload all", - "upload_n_others_button": { - "one": "Upload %(count)s other file", - "other": "Upload %(count)s other files" - } - }, - "upload_failed_title": "Upload Failed", - "upload_failed_size": "The file '%(fileName)s' exceeds this homeserver's size limit for uploads", - "upload_failed_generic": "The file '%(fileName)s' failed to upload.", - "update": { - "changelog": "Changelog", - "check_action": "Check for update", - "checking": "Checking for an update…", - "downloading": "Downloading update…", - "error_encountered": "Error encountered (%(errorDetail)s).", - "error_unable_load_commit": "Unable to load commit detail: %(msg)s", - "new_version_available": "New version available. Update now.", - "no_update": "No update available.", - "release_notes_toast_title": "What's New", - "see_changes_button": "What's new?", - "toast_description": "New version of %(brand)s is available", - "toast_title": "Update %(brand)s", - "unavailable": "Unavailable" - }, - "unsupported_server_title": "Your server is unsupported", - "unsupported_server_description": "This server is using an older version of Matrix. Upgrade to Matrix %(version)s to use %(brand)s without errors.", - "truncated_list_n_more": { - "other": "And %(count)s more..." - }, - "timeline": { - "context_menu": { - "collapse_reply_thread": "Collapse reply thread", - "external_url": "Source URL", - "open_in_osm": "Open in OpenStreetMap", - "report": "Report", - "resent_unsent_reactions": "Resend %(unsentCount)s reaction(s)", - "show_url_preview": "Show preview", - "view_related_event": "View related event", - "view_source": "View source" - }, - "creation_summary_dm": "%(creator)s created this DM.", - "creation_summary_room": "%(creator)s created and configured the room.", - "decryption_failure_blocked": "The sender has blocked you from receiving this message", - "disambiguated_profile": "%(displayName)s (%(matrixId)s)", - "download_action_decrypting": "Decrypting", - "download_action_downloading": "Downloading", - "edits": { - "tooltip_label": "Edited at %(date)s. Click to view edits.", - "tooltip_sub": "Click to view edits", - "tooltip_title": "Edited at %(date)s" - }, - "encrypted_historical_messages_unavailable": "Encrypted messages before this point are unavailable.", - "error_no_renderer": "This event could not be displayed", - "error_rendering_message": "Can't load this message", - "historical_messages_unavailable": "You can't see earlier messages", - "in_room_name": " in %(room)s", - "io.element.voice_broadcast_info": { - "user": "%(senderName)s ended a voice broadcast", - "you": "You ended a voice broadcast" + "misconfigured_body": "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.", + "misconfigured_title": "Your %(brand)s is misconfigured", + "msisdn_field_description": "Other users can invite you to rooms using your contact details", + "msisdn_field_label": "Phone", + "msisdn_field_number_invalid": "That phone number doesn't look quite right, please check and try again", + "msisdn_field_required_invalid": "Enter phone number", + "no_hs_url_provided": "No homeserver URL provided", + "oidc": { + "error_generic": "Something went wrong.", + "error_title": "We couldn't log you in", + "logout_redirect_warning": "You will be redirected to your server's authentication provider to complete sign out." }, - "io.element.widgets.layout": "%(senderName)s has updated the room layout", - "late_event_separator": "Originally sent %(dateTime)s", - "load_error": { - "no_permission": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", - "title": "Failed to load timeline position", - "unable_to_find": "Tried to load a specific point in this room's timeline, but was unable to find it." + "password_field_keep_going_prompt": "Keep going…", + "password_field_label": "Enter password", + "password_field_strong_label": "Nice, strong password!", + "password_field_weak_label": "Password is allowed, but unsafe", + "phone_label": "Phone", + "phone_optional_label": "Phone (optional)", + "qr_code_login": { + "approve_access_warning": "By approving access for this device, it will have full access to your account.", + "completing_setup": "Completing set up of your new device", + "confirm_code_match": "Check that the code below matches with your other device:", + "connecting": "Connecting…", + "devices_connected": "Devices connected", + "error_device_already_signed_in": "The other device is already signed in.", + "error_device_not_signed_in": "The other device isn't signed in.", + "error_device_unsupported": "Linking with this device is not supported.", + "error_homeserver_lacks_support": "The homeserver doesn't support signing in another device.", + "error_invalid_scanned_code": "The scanned code is invalid.", + "error_linking_incomplete": "The linking wasn't completed in the required time.", + "error_request_cancelled": "The request was cancelled.", + "error_request_declined": "The request was declined on the other device.", + "error_unexpected": "An unexpected error occurred.", + "review_and_approve": "Review and approve the sign in", + "scan_code_instruction": "Scan the QR code below with your device that's signed out.", + "scan_qr_code": "Scan QR code", + "select_qr_code": "Select '%(scanQRCode)s'", + "sign_in_new_device": "Sign in new device", + "start_at_sign_in_screen": "Start at the sign in screen", + "waiting_for_device": "Waiting for device to sign in" }, - "m.audio": { - "error_downloading_audio": "Error downloading audio", - "error_processing_audio": "Error processing audio message", - "error_processing_voice_message": "Error processing voice message", - "unnamed_audio": "Unnamed audio" + "register_action": "Create Account", + "registration": { + "continue_without_email_description": "Just a heads up, if you don't add an email and forget your password, you could permanently lose access to your account.", + "continue_without_email_field_label": "Email (optional)", + "continue_without_email_title": "Continuing without email" }, - "m.beacon_info": { - "view_live_location": "View live location" + "registration_disabled": "Registration has been disabled on this homeserver.", + "registration_msisdn_field_required_invalid": "Enter phone number (required on this homeserver)", + "registration_successful": "Registration Successful", + "registration_username_in_use": "Someone already has that username. Try another or if it is you, sign in below.", + "registration_username_unable_check": "Unable to check if username has been taken. Try again later.", + "registration_username_validation": "Use lowercase letters, numbers, dashes and underscores only", + "reset_password": { + "confirm_new_password": "Confirm new password", + "devices_logout_success": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device.", + "other_devices_logout_warning_1": "Signing out your devices will delete the message encryption keys stored on them, making encrypted chat history unreadable.", + "other_devices_logout_warning_2": "If you want to retain access to your chat history in encrypted rooms, set up Key Backup or export your message keys from one of your other devices before proceeding.", + "password_not_entered": "A new password must be entered.", + "passwords_mismatch": "New passwords must match each other.", + "rate_limit_error": "Too many attempts in a short time. Wait some time before trying again.", + "rate_limit_error_with_time": "Too many attempts in a short time. Retry after %(timeout)s.", + "reset_successful": "Your password has been reset.", + "return_to_login": "Return to login screen", + "sign_out_other_devices": "Sign out of all devices" }, - "m.call": { - "video_call_ended": "Video call ended", - "video_call_started": "Video call started in %(roomName)s.", - "video_call_started_text": "%(name)s started a video call", - "video_call_started_unsupported": "Video call started in %(roomName)s. (not supported by this browser)" + "reset_password_action": "Reset password", + "reset_password_button": "Forgot password?", + "reset_password_email_field_description": "Use an email address to recover your account", + "reset_password_email_field_required_invalid": "Enter email address (required on this homeserver)", + "reset_password_email_not_associated": "Your email address does not appear to be associated with a Matrix ID on this homeserver.", + "reset_password_email_not_found_title": "This email address was not found", + "reset_password_title": "Reset your password", + "server_picker_custom": "Other homeserver", + "server_picker_description": "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.", + "server_picker_description_matrix.org": "Join millions for free on the largest public server", + "server_picker_dialog_title": "Decide where your account is hosted", + "server_picker_explainer": "Use your preferred Matrix homeserver if you have one, or host your own.", + "server_picker_failed_validate_homeserver": "Unable to validate homeserver", + "server_picker_intro": "We call the places where you can host your account 'homeservers'.", + "server_picker_invalid_url": "Invalid URL", + "server_picker_learn_more": "About homeservers", + "server_picker_matrix.org": "Matrix.org is the biggest public homeserver in the world, so it's a good place for many.", + "server_picker_required": "Specify a homeserver", + "server_picker_title": "Sign into your homeserver", + "server_picker_title_default": "Server Options", + "server_picker_title_registration": "Host account on", + "session_logged_out_description": "For security, this session has been signed out. Please sign in again.", + "session_logged_out_title": "Signed Out", + "set_email": { + "description": "This will allow you to reset your password and receive notifications.", + "verification_pending_description": "Please check your email and click on the link it contains. Once this is done, click continue.", + "verification_pending_title": "Verification Pending" }, - "m.call.hangup": { - "dm": "Call ended" + "set_email_prompt": "Do you want to set an email address?", + "sign_in_description": "Use your account to continue.", + "sign_in_instead": "Sign in instead", + "sign_in_instead_prompt": "Already have an account? Sign in here", + "sign_in_or_register": "Sign In or Create Account", + "sign_in_or_register_description": "Use your account or create a new one to continue.", + "sign_in_prompt": "Got an account? Sign in", + "sign_in_with_sso": "Sign in with single sign-on", + "signing_in": "Signing In…", + "soft_logout": { + "clear_data_button": "Clear all data", + "clear_data_description": "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.", + "clear_data_title": "Clear all data in this session?" }, - "m.call.invite": { - "answered_elsewhere": "Answered elsewhere", - "call_back_prompt": "Call back", - "declined": "Call declined", - "failed_connect_media": "Could not connect media", - "failed_connection": "Connection failed", - "failed_opponent_media": "Their device couldn't start the camera or microphone", - "missed_call": "Missed call", - "no_answer": "No answer", - "unknown_error": "An unknown error occurred", - "unknown_failure": "Unknown failure: %(reason)s", - "unknown_state": "The call is in an unknown state!", - "video_call": "%(senderName)s placed a video call.", - "video_call_unsupported": "%(senderName)s placed a video call. (not supported by this browser)", - "voice_call": "%(senderName)s placed a voice call.", - "voice_call_unsupported": "%(senderName)s placed a voice call. (not supported by this browser)" - }, - "m.file": { - "decrypt_label": "Decrypt %(text)s", - "download_label": "Download %(text)s", - "error_decrypting": "Error decrypting attachment", - "error_invalid": "Invalid file%(extra)s" - }, - "m.image": { - "error": "Unable to show image due to error", - "error_decrypting": "Error decrypting image", - "error_downloading": "Error downloading image", - "sent": "%(senderDisplayName)s sent an image.", - "show_image": "Show image" - }, - "m.key.verification.cancel": { - "user_cancelled": "%(name)s cancelled verifying", - "you_cancelled": "You cancelled verifying %(name)s" - }, - "m.key.verification.done": "You verified %(name)s", - "m.key.verification.request": { - "declining": "Declining…", - "user_accepted": "%(name)s accepted", - "user_cancelled": "%(name)s cancelled", - "user_declined": "%(name)s declined", - "user_wants_to_verify": "%(name)s wants to verify", - "you_accepted": "You accepted", - "you_cancelled": "You cancelled", - "you_declined": "You declined", - "you_started": "You sent a verification request" - }, - "m.location": { - "full": "%(senderName)s has shared their location", - "location": "Shared a location: ", - "self_location": "Shared their location: " - }, - "m.poll": { - "count_of_votes": { - "one": "%(count)s vote", - "other": "%(count)s votes" - } - }, - "m.poll.end": { - "ended": "Ended a poll", - "sender_ended": "%(senderName)s has ended a poll" - }, - "m.poll.start": "%(senderName)s has started a poll - %(pollQuestion)s", - "m.room.avatar": { - "changed": "%(senderDisplayName)s changed the room avatar.", - "changed_img": "%(senderDisplayName)s changed the room avatar to ", - "lightbox_title": "%(senderDisplayName)s changed the avatar for %(roomName)s", - "removed": "%(senderDisplayName)s removed the room avatar." + "soft_logout_heading": "You're signed out", + "soft_logout_intro_password": "Enter your password to sign in and regain access to your account.", + "soft_logout_intro_sso": "Sign in and regain access to your account.", + "soft_logout_intro_unsupported_auth": "You cannot sign in to your account. Please contact your homeserver admin for more information.", + "soft_logout_subheading": "Clear personal data", + "soft_logout_warning": "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.", + "sso": "Single Sign On", + "sso_failed_missing_storage": "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.", + "sso_or_username_password": "%(ssoButtons)s Or %(usernamePassword)s", + "sync_footer_subtitle": "If you've joined lots of rooms, this might take a while", + "syncing": "Syncing…", + "uia": { + "code": "Code", + "email": "To create your account, open the link in the email we just sent to %(emailAddress)s.", + "email_auth_header": "Check your email to continue", + "email_resend_prompt": "Did not receive it? Resend it", + "email_resent": "Resent!", + "fallback_button": "Start authentication", + "msisdn": "A text message has been sent to %(msisdn)s", + "msisdn_token_incorrect": "Token incorrect", + "msisdn_token_prompt": "Please enter the code it contains:", + "password_prompt": "Confirm your identity by entering your account password below.", + "recaptcha_missing_params": "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.", + "registration_token_label": "Registration token", + "registration_token_prompt": "Enter a registration token provided by the homeserver administrator.", + "sso_body": "Confirm adding this email address by using Single Sign On to prove your identity.", + "sso_failed": "Something went wrong in confirming your identity. Cancel and try again.", + "sso_postauth_body": "Click the button below to confirm your identity.", + "sso_postauth_title": "Confirm to continue", + "sso_preauth_body": "To continue, use Single Sign On to prove your identity.", + "sso_title": "Use Single Sign On to continue", + "terms": "Please review and accept the policies of this homeserver:", + "terms_invalid": "Please review and accept all of the homeserver's policies" }, - "m.room.canonical_alias": { - "alt_added": { - "one": "%(senderName)s added alternative address %(addresses)s for this room.", - "other": "%(senderName)s added the alternative addresses %(addresses)s for this room." - }, - "alt_removed": { - "one": "%(senderName)s removed alternative address %(addresses)s for this room.", - "other": "%(senderName)s removed the alternative addresses %(addresses)s for this room." - }, - "changed": "%(senderName)s changed the addresses for this room.", - "changed_alternative": "%(senderName)s changed the alternative addresses for this room.", - "changed_main_and_alternative": "%(senderName)s changed the main and alternative addresses for this room.", - "removed": "%(senderName)s removed the main address for this room.", - "set": "%(senderName)s set the main address for this room to %(address)s." + "unsupported_auth": "This homeserver doesn't offer any login flows that are supported by this client.", + "unsupported_auth_email": "This homeserver does not support login using email address.", + "unsupported_auth_msisdn": "This server does not support authentication with a phone number.", + "username_field_required_invalid": "Enter username", + "username_in_use": "Someone already has that username, please try another.", + "verify_email_explainer": "We need to know it’s you before resetting your password. Click the link in the email we just sent to %(email)s", + "verify_email_heading": "Verify your email to continue" + }, + "bug_reporting": { + "additional_context": "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.", + "before_submitting": "Before submitting logs, you must create a GitHub issue to describe your problem.", + "collecting_information": "Collecting app version information", + "collecting_logs": "Collecting logs", + "create_new_issue": "Please create a new issue on GitHub so that we can investigate this bug.", + "description": "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.", + "download_logs": "Download logs", + "downloading_logs": "Downloading logs", + "error_empty": "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.", + "failed_send_logs": "Failed to send logs: ", + "github_issue": "GitHub issue", + "introduction": "If you've submitted a bug via GitHub, debug logs can help us track down the problem. ", + "log_request": "To help us prevent this in future, please send us logs.", + "logs_sent": "Logs sent", + "matrix_security_issue": "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.", + "preparing_download": "Preparing to download logs", + "preparing_logs": "Preparing to send logs", + "send_logs": "Send logs", + "submit_debug_logs": "Submit debug logs", + "textarea_label": "Notes", + "thank_you": "Thank you!", + "title": "Bug reporting", + "unsupported_browser": "Reminder: Your browser is unsupported, so your experience may be unpredictable.", + "uploading_logs": "Uploading logs", + "waiting_for_server": "Waiting for response from server" + }, + "cannot_invite_without_identity_server": "Cannot invite user by email without an identity server. You can connect to one under \"Settings\".", + "cannot_reach_homeserver": "Cannot reach homeserver", + "cannot_reach_homeserver_detail": "Ensure you have a stable internet connection, or get in touch with the server admin", + "cant_load_page": "Couldn't load page", + "chat_card_back_action_label": "Back to chat", + "chat_effects": { + "confetti_description": "Sends the given message with confetti", + "confetti_message": "sends confetti", + "fireworks_description": "Sends the given message with fireworks", + "fireworks_message": "sends fireworks", + "hearts_description": "Sends the given message with hearts", + "hearts_message": "sends hearts", + "rainfall_description": "Sends the given message with rainfall", + "rainfall_message": "sends rainfall", + "snowfall_description": "Sends the given message with snowfall", + "snowfall_message": "sends snowfall", + "spaceinvaders_description": "Sends the given message with a space themed effect", + "spaceinvaders_message": "sends space invaders" + }, + "common": { + "about": "About", + "access_token": "Access Token", + "accessibility": "Accessibility", + "advanced": "Advanced", + "all_rooms": "All rooms", + "analytics": "Analytics", + "and_n_others": { + "one": "and one other...", + "other": "and %(count)s others..." }, - "m.room.create": { - "continuation": "This room is a continuation of another conversation.", - "see_older_messages": "Click here to see older messages.", - "unknown_predecessor": "Can't find the old version of this room (room ID: %(roomId)s), and we have not been provided with 'via_servers' to look for it.", - "unknown_predecessor_guess_server": "Can't find the old version of this room (room ID: %(roomId)s), and we have not been provided with 'via_servers' to look for it. It's possible that guessing the server from the room ID will work. If you want to try, click this link:" + "android": "Android", + "appearance": "Appearance", + "application": "Application", + "are_you_sure": "Are you sure?", + "attachment": "Attachment", + "authentication": "Authentication", + "avatar": "Avatar", + "beta": "Beta", + "camera": "Camera", + "cameras": "Cameras", + "capabilities": "Capabilities", + "copied": "Copied!", + "credits": "Credits", + "cross_signing": "Cross-signing", + "dark": "Dark", + "description": "Description", + "deselect_all": "Deselect all", + "device": "Device", + "display_name": "Display Name", + "edited": "edited", + "email_address": "Email address", + "emoji": "Emoji", + "encrypted": "Encrypted", + "encryption_enabled": "Encryption enabled", + "error": "Error", + "faq": "FAQ", + "favourites": "Favourites", + "feedback": "Feedback", + "filter_results": "Filter results", + "forward_message": "Forward message", + "general": "General", + "go_to_settings": "Go to Settings", + "guest": "Guest", + "help": "Help", + "historical": "Historical", + "home": "Home", + "homeserver": "Homeserver", + "identity_server": "Identity server", + "image": "Image", + "integration_manager": "Integration manager", + "ios": "iOS", + "joined": "Joined", + "labs": "Labs", + "legal": "Legal", + "light": "Light", + "loading": "Loading…", + "location": "Location", + "low_priority": "Low priority", + "matrix": "Matrix", + "message": "Message", + "message_layout": "Message layout", + "microphone": "Microphone", + "model": "Model", + "modern": "Modern", + "mute": "Mute", + "n_members": { + "one": "%(count)s member", + "other": "%(count)s members" }, - "m.room.encryption": { - "disable_attempt": "Ignored attempt to disable encryption", - "disabled": "Encryption not enabled", - "enabled": "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their profile picture.", - "enabled_dm": "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their profile picture.", - "enabled_local": "Messages in this chat will be end-to-end encrypted.", - "parameters_changed": "Some encryption parameters have been changed.", - "unsupported": "The encryption used by this room isn't supported." + "n_participants": { + "one": "1 participant", + "other": "%(count)s participants" }, - "m.room.guest_access": { - "can_join": "%(senderDisplayName)s has allowed guests to join the room.", - "forbidden": "%(senderDisplayName)s has prevented guests from joining the room.", - "unknown": "%(senderDisplayName)s changed guest access to %(rule)s" + "n_rooms": { + "one": "%(count)s room", + "other": "%(count)s rooms" }, - "m.room.history_visibility": { - "invited": "%(senderName)s made future room history visible to all room members, from the point they are invited.", - "joined": "%(senderName)s made future room history visible to all room members, from the point they joined.", - "shared": "%(senderName)s made future room history visible to all room members.", - "unknown": "%(senderName)s made future room history visible to unknown (%(visibility)s).", - "world_readable": "%(senderName)s made future room history visible to anyone." - }, - "m.room.join_rules": { - "invite": "%(senderDisplayName)s made the room invite only.", - "knock": "%(senderDisplayName)s changed the join rule to ask to join.", - "public": "%(senderDisplayName)s made the room public to whoever knows the link.", - "restricted": "%(senderDisplayName)s changed who can join this room.", - "restricted_settings": "%(senderDisplayName)s changed who can join this room. View settings.", - "unknown": "%(senderDisplayName)s changed the join rule to %(rule)s" - }, - "m.room.member": { - "accepted_3pid_invite": "%(targetName)s accepted the invitation for %(displayName)s", - "accepted_invite": "%(targetName)s accepted an invitation", - "ban": "%(senderName)s banned %(targetName)s", - "ban_reason": "%(senderName)s banned %(targetName)s: %(reason)s", - "change_avatar": "%(senderName)s changed their profile picture", - "change_name": "%(oldDisplayName)s changed their display name to %(displayName)s", - "change_name_avatar": "%(oldDisplayName)s changed their display name and profile picture", - "invite": "%(senderName)s invited %(targetName)s", - "join": "%(targetName)s joined the room", - "kick": "%(senderName)s removed %(targetName)s", - "kick_reason": "%(senderName)s removed %(targetName)s: %(reason)s", - "left": "%(targetName)s left the room", - "left_reason": "%(targetName)s left the room: %(reason)s", - "no_change": "%(senderName)s made no change", - "reject_invite": "%(targetName)s rejected the invitation", - "remove_avatar": "%(senderName)s removed their profile picture", - "remove_name": "%(senderName)s removed their display name (%(oldDisplayName)s)", - "set_avatar": "%(senderName)s set a profile picture", - "set_name": "%(senderName)s set their display name to %(displayName)s", - "unban": "%(senderName)s unbanned %(targetName)s", - "withdrew_invite": "%(senderName)s withdrew %(targetName)s's invitation", - "withdrew_invite_reason": "%(senderName)s withdrew %(targetName)s's invitation: %(reason)s" - }, - "m.room.name": { - "change": "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.", - "remove": "%(senderDisplayName)s removed the room name.", - "set": "%(senderDisplayName)s changed the room name to %(roomName)s." - }, - "m.room.pinned_events": { - "changed": "%(senderName)s changed the pinned messages for the room.", - "changed_link": "%(senderName)s changed the pinned messages for the room.", - "pinned": "%(senderName)s pinned a message to this room. See all pinned messages.", - "pinned_link": "%(senderName)s pinned a message to this room. See all pinned messages.", - "unpinned": "%(senderName)s unpinned a message from this room. See all pinned messages.", - "unpinned_link": "%(senderName)s unpinned a message from this room. See all pinned messages." - }, - "m.room.power_levels": { - "changed": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", - "user_from_to": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s" - }, - "m.room.server_acl": { - "all_servers_banned": "🎉 All servers are banned from participating! This room can no longer be used.", - "changed": "%(senderDisplayName)s changed the server ACLs for this room.", - "set": "%(senderDisplayName)s set the server ACLs for this room." - }, - "m.room.third_party_invite": { - "revoked": "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.", - "sent": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room." - }, - "m.room.tombstone": "%(senderDisplayName)s upgraded this room.", - "m.room.topic": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", - "m.sticker": "%(senderDisplayName)s sent a sticker.", - "m.video": { - "error_decrypting": "Error decrypting video" - }, - "m.widget": { - "added": "%(widgetName)s widget added by %(senderName)s", - "jitsi_ended": "Video conference ended by %(senderName)s", - "jitsi_join_right_prompt": "Join the conference from the room information card on the right", - "jitsi_join_top_prompt": "Join the conference at the top of this room", - "jitsi_started": "Video conference started by %(senderName)s", - "jitsi_updated": "Video conference updated by %(senderName)s", - "modified": "%(widgetName)s widget modified by %(senderName)s", - "removed": "%(widgetName)s widget removed by %(senderName)s" - }, - "mab": { - "collapse_reply_chain": "Collapse quotes", - "copy_link_thread": "Copy link to thread", - "expand_reply_chain": "Expand quotes", - "label": "Message Actions", - "view_in_room": "View in room" - }, - "message_timestamp_received_at": "Received at: %(dateTime)s", - "message_timestamp_sent_at": "Sent at: %(dateTime)s", - "mjolnir": { - "changed_rule_glob": "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", - "changed_rule_rooms": "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", - "changed_rule_servers": "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", - "changed_rule_users": "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", - "created_rule": "%(senderName)s created a ban rule matching %(glob)s for %(reason)s", - "created_rule_rooms": "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s", - "created_rule_servers": "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s", - "created_rule_users": "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s", - "message_hidden": "You have ignored this user, so their message is hidden. Show anyways.", - "removed_rule": "%(senderName)s removed a ban rule matching %(glob)s", - "removed_rule_rooms": "%(senderName)s removed the rule banning rooms matching %(glob)s", - "removed_rule_servers": "%(senderName)s removed the rule banning servers matching %(glob)s", - "removed_rule_users": "%(senderName)s removed the rule banning users matching %(glob)s", - "updated_invalid_rule": "%(senderName)s updated an invalid ban rule", - "updated_rule": "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s", - "updated_rule_rooms": "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s", - "updated_rule_servers": "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s", - "updated_rule_users": "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s" - }, - "no_permission_messages_before_invite": "You don't have permission to view messages from before you were invited.", - "no_permission_messages_before_join": "You don't have permission to view messages from before you joined.", - "pending_moderation": "Message pending moderation", - "pending_moderation_reason": "Message pending moderation: %(reason)s", - "reactions": { - "add_reaction_prompt": "Add reaction", - "custom_reaction_fallback_label": "Custom reaction", - "label": "%(reactors)s reacted with %(content)s", - "tooltip": "reacted with %(shortName)s" - }, - "read_receipt_title": { - "one": "Seen by %(count)s person", - "other": "Seen by %(count)s people" - }, - "read_receipts_label": "Read receipts", - "redacted": { - "tooltip": "Message deleted on %(date)s" - }, - "redaction": "Message deleted by %(name)s", - "reply": { - "error_loading": "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.", - "in_reply_to": "In reply to ", - "in_reply_to_for_export": "In reply to this message" + "name": "Name", + "no_results": "No results", + "no_results_found": "No results found", + "not_trusted": "Not trusted", + "off": "Off", + "offline": "Offline", + "on": "On", + "options": "Options", + "orphan_rooms": "Other rooms", + "password": "Password", + "people": "People", + "preferences": "Preferences", + "presence": "Presence", + "preview_message": "Hey you. You're the best!", + "privacy": "Privacy", + "private": "Private", + "private_room": "Private room", + "private_space": "Private space", + "profile": "Profile", + "public": "Public", + "public_room": "Public room", + "public_space": "Public space", + "qr_code": "QR Code", + "random": "Random", + "reactions": "Reactions", + "report_a_bug": "Report a bug", + "room": "Room", + "room_name": "Room name", + "rooms": "Rooms", + "saving": "Saving…", + "secure_backup": "Secure Backup", + "security": "Security", + "select_all": "Select all", + "server": "Server", + "settings": "Settings", + "setup_secure_messages": "Set up Secure Messages", + "show_more": "Show more", + "someone": "Someone", + "space": "Space", + "spaces": "Spaces", + "sticker": "Sticker", + "stickerpack": "Stickerpack", + "success": "Success", + "suggestions": "Suggestions", + "support": "Support", + "system_alerts": "System Alerts", + "theme": "Theme", + "thread": "Thread", + "threads": "Threads", + "timeline": "Timeline", + "trusted": "Trusted", + "unavailable": "unavailable", + "unencrypted": "Not encrypted", + "unmute": "Unmute", + "unnamed_room": "Unnamed Room", + "unnamed_space": "Unnamed Space", + "unsent": "Unsent", + "unverified": "Unverified", + "user": "User", + "user_avatar": "Profile picture", + "username": "Username", + "verification_cancelled": "Verification cancelled", + "verified": "Verified", + "version": "Version", + "video": "Video", + "video_room": "Video room", + "view_message": "View message", + "warning": "Warning", + "welcome": "Welcome" + }, + "composer": { + "autocomplete": { + "@room_description": "Notify the whole room", + "command_a11y": "Command Autocomplete", + "command_description": "Commands", + "emoji_a11y": "Emoji Autocomplete", + "notification_a11y": "Notification Autocomplete", + "notification_description": "Room Notification", + "room_a11y": "Room Autocomplete", + "space_a11y": "Space Autocomplete", + "user_a11y": "User Autocomplete", + "user_description": "Users" }, - "scalar_starter_link": { - "dialog_description": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?", - "dialog_title": "Add an Integration" + "close_sticker_picker": "Hide stickers", + "edit_composer_label": "Edit message", + "format_bold": "Bold", + "format_code_block": "Code block", + "format_decrease_indent": "Indent decrease", + "format_increase_indent": "Indent increase", + "format_inline_code": "Code", + "format_insert_link": "Insert link", + "format_italic": "Italic", + "format_italics": "Italics", + "format_link": "Link", + "format_ordered_list": "Numbered list", + "format_strikethrough": "Strikethrough", + "format_underline": "Underline", + "format_unordered_list": "Bulleted list", + "formatting_toolbar_label": "Formatting", + "link_modal": { + "link_field_label": "Link", + "text_field_label": "Text", + "title_create": "Create a link", + "title_edit": "Edit link" }, - "self_redaction": "Message deleted", - "send_state_encrypting": "Encrypting your message…", - "send_state_failed": "Failed to send", - "send_state_sending": "Sending your message…", - "send_state_sent": "Your message was sent", - "summary": { - "banned": { - "one": "was banned", - "other": "was banned %(count)s times" - }, - "banned_multiple": { - "one": "were banned", - "other": "were banned %(count)s times" - }, - "changed_avatar": { - "one": "%(oneUser)schanged their profile picture", - "other": "%(oneUser)schanged their profile picture %(count)s times" - }, - "changed_avatar_multiple": { - "one": "%(severalUsers)schanged their profile picture", - "other": "%(severalUsers)schanged their profile picture %(count)s times" - }, - "changed_name": { - "one": "%(oneUser)schanged their name", - "other": "%(oneUser)schanged their name %(count)s times" - }, - "changed_name_multiple": { - "one": "%(severalUsers)schanged their name", - "other": "%(severalUsers)schanged their name %(count)s times" - }, - "format": "%(nameList)s %(transitionList)s", - "hidden_event": { - "one": "%(oneUser)ssent a hidden message", - "other": "%(oneUser)ssent %(count)s hidden messages" - }, - "hidden_event_multiple": { - "one": "%(severalUsers)ssent a hidden message", - "other": "%(severalUsers)ssent %(count)s hidden messages" - }, - "invite_withdrawn": { - "one": "%(oneUser)shad their invitation withdrawn", - "other": "%(oneUser)shad their invitation withdrawn %(count)s times" - }, - "invite_withdrawn_multiple": { - "one": "%(severalUsers)shad their invitations withdrawn", - "other": "%(severalUsers)shad their invitations withdrawn %(count)s times" - }, - "invited": { - "one": "was invited", - "other": "was invited %(count)s times" - }, - "invited_multiple": { - "one": "were invited", - "other": "were invited %(count)s times" - }, - "joined": { - "one": "%(oneUser)sjoined", - "other": "%(oneUser)sjoined %(count)s times" - }, - "joined_and_left": { - "one": "%(oneUser)sjoined and left", - "other": "%(oneUser)sjoined and left %(count)s times" - }, - "joined_and_left_multiple": { - "one": "%(severalUsers)sjoined and left", - "other": "%(severalUsers)sjoined and left %(count)s times" - }, - "joined_multiple": { - "one": "%(severalUsers)sjoined", - "other": "%(severalUsers)sjoined %(count)s times" - }, - "kicked": { - "one": "was removed", - "other": "was removed %(count)s times" - }, - "kicked_multiple": { - "one": "were removed", - "other": "were removed %(count)s times" - }, - "left": { - "one": "%(oneUser)sleft", - "other": "%(oneUser)sleft %(count)s times" - }, - "left_multiple": { - "one": "%(severalUsers)sleft", - "other": "%(severalUsers)sleft %(count)s times" - }, - "no_change": { - "one": "%(oneUser)smade no changes", - "other": "%(oneUser)smade no changes %(count)s times" - }, - "no_change_multiple": { - "one": "%(severalUsers)smade no changes", - "other": "%(severalUsers)smade no changes %(count)s times" - }, - "pinned_events": { - "one": "%(oneUser)schanged the pinned messages for the room", - "other": "%(oneUser)schanged the pinned messages for the room %(count)s times" - }, - "pinned_events_multiple": { - "one": "%(severalUsers)schanged the pinned messages for the room", - "other": "%(severalUsers)schanged the pinned messages for the room %(count)s times" - }, - "redacted": { - "one": "%(oneUser)sremoved a message", - "other": "%(oneUser)sremoved %(count)s messages" - }, - "redacted_multiple": { - "one": "%(severalUsers)sremoved a message", - "other": "%(severalUsers)sremoved %(count)s messages" - }, - "rejected_invite": { - "one": "%(oneUser)srejected their invitation", - "other": "%(oneUser)srejected their invitation %(count)s times" - }, - "rejected_invite_multiple": { - "one": "%(severalUsers)srejected their invitations", - "other": "%(severalUsers)srejected their invitations %(count)s times" - }, - "rejoined": { - "one": "%(oneUser)sleft and rejoined", - "other": "%(oneUser)sleft and rejoined %(count)s times" - }, - "rejoined_multiple": { - "one": "%(severalUsers)sleft and rejoined", - "other": "%(severalUsers)sleft and rejoined %(count)s times" - }, - "server_acls": { - "one": "%(oneUser)schanged the server ACLs", - "other": "%(oneUser)schanged the server ACLs %(count)s times" - }, - "server_acls_multiple": { - "one": "%(severalUsers)schanged the server ACLs", - "other": "%(severalUsers)schanged the server ACLs %(count)s times" - }, - "unbanned": { - "one": "was unbanned", - "other": "was unbanned %(count)s times" - }, - "unbanned_multiple": { - "one": "were unbanned", - "other": "were unbanned %(count)s times" - } - }, - "thread_info_basic": "From a thread", - "typing_indicator": { - "more_users": { - "one": "%(names)s and one other is typing …", - "other": "%(names)s and %(count)s others are typing …" - }, - "one_user": "%(displayName)s is typing …", - "two_users": "%(names)s and %(lastPerson)s are typing …" - }, - "undecryptable_tooltip": "This message could not be decrypted", - "url_preview": { - "close": "Close preview", - "show_n_more": { - "one": "Show %(count)s other preview", - "other": "Show %(count)s other previews" - } - } - }, - "time": { - "about_day_ago": "about a day ago", - "about_hour_ago": "about an hour ago", - "about_minute_ago": "about a minute ago", - "date_at_time": "%(date)s at %(time)s", - "few_seconds_ago": "a few seconds ago", - "hours_minutes_seconds_left": "%(hours)sh %(minutes)sm %(seconds)ss left", - "in_about_day": "about a day from now", - "in_about_hour": "about an hour from now", - "in_about_minute": "about a minute from now", - "in_few_seconds": "a few seconds from now", - "in_n_days": "%(num)s days from now", - "in_n_hours": "%(num)s hours from now", - "in_n_minutes": "%(num)s minutes from now", - "left": "%(timeRemaining)s left", - "minutes_seconds_left": "%(minutes)sm %(seconds)ss left", - "n_days_ago": "%(num)s days ago", - "n_hours_ago": "%(num)s hours ago", - "n_minutes_ago": "%(num)s minutes ago", - "seconds_left": "%(seconds)ss left", - "short_days": "%(value)sd", - "short_days_hours_minutes_seconds": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", - "short_hours": "%(value)sh", - "short_hours_minutes_seconds": "%(hours)sh %(minutes)sm %(seconds)ss", - "short_minutes": "%(value)sm", - "short_minutes_seconds": "%(minutes)sm %(seconds)ss", - "short_seconds": "%(value)ss" - }, - "threads": { - "all_threads": "All threads", - "all_threads_description": "Shows all threads from current room", - "count_of_reply": { - "one": "%(count)s reply", - "other": "%(count)s replies" - }, - "empty_explainer": "Threads help keep your conversations on-topic and easy to track.", - "empty_has_threads_tip": "Reply to an ongoing thread or use “%(replyInThread)s” when hovering over a message to start a new one.", - "empty_heading": "Keep discussions organised with threads", - "empty_tip": "Tip: Use “%(replyInThread)s” when hovering over a message.", - "error_start_thread_existing_relation": "Can't create a thread from an event with an existing relation", - "my_threads": "My threads", - "my_threads_description": "Shows all threads you've participated in", - "open_thread": "Open thread", - "show_all_threads": "Show all threads", - "show_thread_filter": "Show:", - "unable_to_decrypt": "Unable to decrypt message" + "mode_plain": "Hide formatting", + "mode_rich_text": "Show formatting", + "no_perms_notice": "You do not have permission to post to this room", + "placeholder": "Send a message…", + "placeholder_encrypted": "Send an encrypted message…", + "placeholder_reply": "Send a reply…", + "placeholder_reply_encrypted": "Send an encrypted reply…", + "placeholder_thread": "Reply to thread…", + "placeholder_thread_encrypted": "Reply to encrypted thread…", + "poll_button": "Poll", + "poll_button_no_perms_description": "You do not have permission to start polls in this room.", + "poll_button_no_perms_title": "Permission Required", + "replying_title": "Replying", + "room_upgraded_link": "The conversation continues here.", + "room_upgraded_notice": "This room has been replaced and is no longer active.", + "send_button_title": "Send message", + "send_button_voice_message": "Send voice message", + "send_voice_message": "Send voice message", + "stop_voice_message": "Stop recording", + "voice_message_button": "Voice Message" }, - "thread_view_back_action_label": "Back to thread", - "theme": { - "light_high_contrast": "Light high contrast", - "match_system": "Match system" + "console_dev_note": "If you know what you're doing, Element is open-source, be sure to check out our GitHub (https://github.com/vector-im/element-web/) and contribute!", + "console_scam_warning": "If someone told you to copy/paste something here, there is a high likelihood you're being scammed!", + "console_wait": "Wait!", + "create_room": { + "action_create_room": "Create room", + "action_create_video_room": "Create video room", + "encrypted_video_room_warning": "You can't disable this later. The room will be encrypted but the embedded call will not.", + "encrypted_warning": "You can't disable this later. Bridges & most bots won't work yet.", + "encryption_forced": "Your server requires encryption to be enabled in private rooms.", + "encryption_label": "Enable end-to-end encryption", + "error_title": "Failure to create room", + "generic_error": "Server may be unavailable, overloaded, or you hit a bug.", + "join_rule_change_notice": "You can change this at any time from room settings.", + "join_rule_invite": "Private room (invite only)", + "join_rule_invite_label": "Only people invited will be able to find and join this room.", + "join_rule_knock_label": "Anyone can request to join, but admins or moderators need to grant access. You can change this later.", + "join_rule_public_label": "Anyone will be able to find and join this room.", + "join_rule_public_parent_space_label": "Anyone will be able to find and join this room, not just members of .", + "join_rule_restricted": "Visible to space members", + "join_rule_restricted_label": "Everyone in will be able to find and join this room.", + "name_validation_required": "Please enter a name for the room", + "room_visibility_label": "Room visibility", + "title_private_room": "Create a private room", + "title_public_room": "Create a public room", + "title_video_room": "Create a video room", + "topic_label": "Topic (optional)", + "unfederated": "Block anyone not part of %(serverName)s from ever joining this room.", + "unfederated_label_default_off": "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.", + "unfederated_label_default_on": "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.", + "unsupported_version": "The server does not support the room version specified." }, - "terms": { - "column_document": "Document", - "column_service": "Service", - "column_summary": "Summary", - "identity_server_no_terms_description_1": "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.", - "identity_server_no_terms_description_2": "Only continue if you trust the owner of the server.", - "identity_server_no_terms_title": "Identity server has no terms of service", - "inline_intro_text": "Accept to continue:", - "integration_manager": "Use bots, bridges, widgets and sticker packs", - "intro": "To continue you need to accept the terms of this service.", - "summary_identity_server_1": "Find others by phone or email", - "summary_identity_server_2": "Be found by phone or email", - "tac_button": "Review terms and conditions", - "tac_description": "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.", - "tac_title": "Terms and Conditions", - "tos": "Terms of Service" + "create_space": { + "add_details_prompt": "Add some details to help people recognise it.", + "add_details_prompt_2": "You can change these anytime.", + "add_existing_rooms_description": "Pick rooms or conversations to add. This is just a space for you, no one will be informed. You can add more later.", + "add_existing_rooms_heading": "What do you want to organise?", + "address_label": "Address", + "address_placeholder": "e.g. my-space", + "creating": "Creating…", + "creating_rooms": "Creating rooms…", + "done_action": "Go to my space", + "done_action_first_room": "Go to my first room", + "explainer": "Spaces are a new way to group rooms and people. What kind of Space do you want to create? You can change this later.", + "failed_create_initial_rooms": "Failed to create initial space rooms", + "failed_invite_users": "Failed to invite the following users to your space: %(csvUsers)s", + "invite_teammates_by_username": "Invite by username", + "invite_teammates_description": "Make sure the right people have access. You can invite more later.", + "invite_teammates_heading": "Invite your teammates", + "inviting_users": "Inviting…", + "label": "Create a space", + "name_required": "Please enter a name for the space", + "personal_space": "Just me", + "personal_space_description": "A private space to organise your rooms", + "private_description": "Invite only, best for yourself or teams", + "private_heading": "Your private space", + "private_personal_description": "Make sure the right people have access to %(name)s", + "private_personal_heading": "Who are you working with?", + "private_space": "Me and my teammates", + "private_space_description": "A private space for you and your teammates", + "public_description": "Open space for anyone, best for communities", + "public_heading": "Your public space", + "search_public_button": "Search for public spaces", + "setup_rooms_community_description": "Let's create a room for each of them.", + "setup_rooms_community_heading": "What are some things you want to discuss in %(spaceName)s?", + "setup_rooms_description": "You can add more later too, including already existing ones.", + "setup_rooms_private_description": "We'll create rooms for each of them.", + "setup_rooms_private_heading": "What projects are your team working on?", + "share_description": "It's just you at the moment, it will be even better with others.", + "share_heading": "Share %(name)s", + "skip_action": "Skip for now", + "subspace_adding": "Adding…", + "subspace_beta_notice": "Add a space to a space you manage.", + "subspace_dropdown_title": "Create a space", + "subspace_existing_space_prompt": "Want to add an existing space instead?", + "subspace_join_rule_invite_description": "Only people invited will be able to find and join this space.", + "subspace_join_rule_invite_only": "Private space (invite only)", + "subspace_join_rule_label": "Space visibility", + "subspace_join_rule_public_description": "Anyone will be able to find and join this space, not just members of .", + "subspace_join_rule_restricted_description": "Anyone in will be able to find and join." }, - "stickers": { - "empty": "You don't currently have any stickerpacks enabled", - "empty_add_prompt": "Add some now" + "credits": { + "default_cover_photo": "The default cover photo is © Jesús Roncero used under the terms of CC-BY-SA 4.0.", + "twemoji": "The Twemoji emoji art is © Twitter, Inc and other contributors used under the terms of CC-BY 4.0.", + "twemoji_colr": "The twemoji-colr font is © Mozilla Foundation used under the terms of Apache 2.0." }, - "spotlight_dialog": { - "cant_find_person_helpful_hint": "If you can't see who you're looking for, send them your invite link.", - "cant_find_room_helpful_hint": "If you can't find the room you're looking for, ask for an invite or create a new room.", - "copy_link_text": "Copy invite link", - "count_of_members": { - "one": "%(count)s Member", - "other": "%(count)s Members" + "devtools": { + "active_widgets": "Active Widgets", + "category_other": "Other", + "category_room": "Room", + "caution_colon": "Caution:", + "client_versions": "Client Versions", + "developer_mode": "Developer mode", + "developer_tools": "Developer Tools", + "edit_setting": "Edit setting", + "edit_values": "Edit values", + "empty_string": "", + "event_content": "Event Content", + "event_id": "Event ID: %(eventId)s", + "event_sent": "Event sent!", + "event_type": "Event Type", + "explore_account_data": "Explore account data", + "explore_room_account_data": "Explore room account data", + "explore_room_state": "Explore room state", + "failed_to_find_widget": "There was an error finding this widget.", + "failed_to_load": "Failed to load.", + "failed_to_save": "Failed to save settings.", + "failed_to_send": "Failed to send event!", + "id": "ID: ", + "invalid_json": "Doesn't look like valid JSON.", + "level": "Level", + "low_bandwidth_mode": "Low bandwidth mode", + "low_bandwidth_mode_description": "Requires compatible homeserver.", + "main_timeline": "Main timeline", + "methods": "Methods", + "no_receipt_found": "No receipt found", + "no_verification_requests_found": "No verification requests found", + "notification_state": "Notification state is %(notificationState)s", + "notifications_debug": "Notifications debug", + "number_of_users": "Number of users", + "observe_only": "Observe only", + "original_event_source": "Original event source", + "phase": "Phase", + "phase_cancelled": "Cancelled", + "phase_ready": "Ready", + "phase_requested": "Requested", + "phase_started": "Started", + "phase_transaction": "Transaction", + "requester": "Requester", + "room_encrypted": "Room is encrypted ✅", + "room_id": "Room ID: %(roomId)s", + "room_not_encrypted": "Room is not encrypted 🚨", + "room_notifications_dot": "Dot: ", + "room_notifications_highlight": "Highlight: ", + "room_notifications_last_event": "Last event:", + "room_notifications_sender": "Sender: ", + "room_notifications_thread_id": "Thread Id: ", + "room_notifications_total": "Total: ", + "room_notifications_type": "Type: ", + "room_status": "Room status", + "room_unread_status": "Room unread status: %(status)s", + "room_unread_status_count": { + "other": "Room unread status: %(status)s, count: %(count)s" }, - "create_new_room_button": "Create new room", - "failed_querying_public_rooms": "Failed to query public rooms", - "failed_querying_public_spaces": "Failed to query public spaces", - "group_chat_section_title": "Other options", - "heading_with_query": "Use \"%(query)s\" to search", - "heading_without_query": "Search for", - "join_button_text": "Join %(roomAddress)s", - "keyboard_scroll_hint": "Use to scroll", - "message_search_section_title": "Other searches", - "other_rooms_in_space": "Other rooms in %(spaceName)s", - "public_rooms_label": "Public rooms", - "public_spaces_label": "Public spaces", - "recent_searches_section_title": "Recent searches", - "recently_viewed_section_title": "Recently viewed", - "remove_filter": "Remove search filter for %(filter)s", - "result_may_be_hidden_privacy_warning": "Some results may be hidden for privacy", - "result_may_be_hidden_warning": "Some results may be hidden", - "search_dialog": "Search Dialog", - "search_messages_hint": "To search messages, look for this icon at the top of a room ", - "spaces_title": "Spaces you're in", - "start_group_chat_button": "Start a group chat" - }, - "spotlight": { - "public_rooms": { - "network_dropdown_add_dialog_description": "Enter the name of a new server you want to explore.", - "network_dropdown_add_dialog_placeholder": "Server name", - "network_dropdown_add_dialog_title": "Add a new server", - "network_dropdown_add_server_option": "Add new server…", - "network_dropdown_available_invalid": "Can't find this server or its room list", - "network_dropdown_available_invalid_forbidden": "You are not allowed to view this server's rooms list", - "network_dropdown_available_valid": "Looks good", - "network_dropdown_remove_server_adornment": "Remove server “%(roomServer)s”", - "network_dropdown_required_invalid": "Enter a server name", - "network_dropdown_selected_label": "Show: Matrix rooms", - "network_dropdown_selected_label_instance": "Show: %(instance)s rooms (%(server)s)", - "network_dropdown_your_server_description": "Your server" - } + "save_setting_values": "Save setting values", + "see_history": "See history", + "send_custom_account_data_event": "Send custom account data event", + "send_custom_room_account_data_event": "Send custom room account data event", + "send_custom_state_event": "Send custom state event", + "send_custom_timeline_event": "Send custom timeline event", + "server_info": "Server info", + "server_versions": "Server Versions", + "settable_global": "Settable at global", + "settable_room": "Settable at room", + "setting_colon": "Setting:", + "setting_definition": "Setting definition:", + "setting_id": "Setting ID", + "settings_explorer": "Settings explorer", + "show_hidden_events": "Show hidden events in timeline", + "spaces": { + "one": "", + "other": "<%(count)s spaces>" + }, + "state_key": "State Key", + "thread_root_id": "Thread Root ID: %(threadRootId)s", + "threads_timeline": "Threads timeline", + "timeout": "Timeout", + "title": "Developer tools", + "toggle_event": "toggle event", + "toolbox": "Toolbox", + "use_at_own_risk": "This UI does NOT check the types of the values. Use at your own risk.", + "user_read_up_to": "User read up to: ", + "user_read_up_to_ignore_synthetic": "User read up to (ignoreSynthetic): ", + "user_read_up_to_private": "User read up to (m.read.private): ", + "user_read_up_to_private_ignore_synthetic": "User read up to (m.read.private;ignoreSynthetic): ", + "value": "Value", + "value_colon": "Value:", + "value_in_this_room": "Value in this room", + "value_this_room_colon": "Value in this room:", + "values_explicit": "Values at explicit levels", + "values_explicit_colon": "Values at explicit levels:", + "values_explicit_room": "Values at explicit levels in this room", + "values_explicit_this_room_colon": "Values at explicit levels in this room:", + "verification_explorer": "Verification explorer", + "view_servers_in_room": "View servers in room", + "view_source_decrypted_event_source": "Decrypted event source", + "view_source_decrypted_event_source_unavailable": "Decrypted source unavailable", + "widget_screenshots": "Enable widget screenshots on supported widgets" }, - "spaces": { - "error_no_permission_add_room": "You do not have permissions to add rooms to this space", - "error_no_permission_add_space": "You do not have permissions to add spaces to this space", - "error_no_permission_create_room": "You do not have permissions to create new rooms in this space", - "error_no_permission_invite": "You do not have permissions to invite people to this space" + "dialog_close_label": "Close dialog", + "emoji": { + "categories": "Categories", + "category_activities": "Activities", + "category_animals_nature": "Animals & Nature", + "category_flags": "Flags", + "category_food_drink": "Food & Drink", + "category_frequently_used": "Frequently Used", + "category_objects": "Objects", + "category_smileys_people": "Smileys & People", + "category_symbols": "Symbols", + "category_travel_places": "Travel & Places", + "quick_reactions": "Quick Reactions" }, - "space_settings": { - "title": "Settings - %(spaceName)s" + "emoji_picker": { + "cancel_search_label": "Cancel search" }, - "space": { - "add_existing_room_space": { - "create": "Want to add a new room instead?", - "create_prompt": "Create a new room", - "dm_heading": "Direct Messages", - "error_heading": "Not all selected were added", - "progress_text": { - "one": "Adding room...", - "other": "Adding rooms... (%(progress)s out of %(count)s)" + "empty_room": "Empty room", + "empty_room_was_name": "Empty room (was %(oldName)s)", + "encryption": { + "access_secret_storage_dialog": { + "enter_phrase_or_key_prompt": "Enter your Security Phrase or to continue.", + "key_validation_text": { + "invalid_security_key": "Invalid Security Key", + "recovery_key_is_correct": "Looks good!", + "wrong_file_type": "Wrong file type", + "wrong_security_key": "Wrong Security Key" }, - "space_dropdown_label": "Space selection", - "space_dropdown_title": "Add existing rooms", - "subspace_moved_note": "Adding spaces has moved." - }, - "add_existing_subspace": { - "create_button": "Create a new space", - "create_prompt": "Want to add a new space instead?", - "filter_placeholder": "Search for spaces", - "space_dropdown_title": "Add existing space" - }, - "context_menu": { - "devtools_open_timeline": "See room timeline (devtools)", - "explore": "Explore rooms", - "home": "Space home", - "manage_and_explore": "Manage & explore rooms", - "options": "Space options" + "reset_title": "Reset everything", + "reset_warning_1": "Only do this if you have no other device to complete verification with.", + "reset_warning_2": "If you reset everything, you will restart with no trusted sessions, no trusted users, and might not be able to see past messages.", + "restoring": "Restoring keys from backup", + "security_key_title": "Security Key", + "security_phrase_incorrect_error": "Unable to access secret storage. Please verify that you entered the correct Security Phrase.", + "security_phrase_title": "Security Phrase", + "separator": "%(securityKey)s or %(recoveryFile)s", + "use_security_key_prompt": "Use your Security Key to continue." }, - "failed_load_rooms": "Failed to load list of rooms.", - "failed_remove_rooms": "Failed to remove some rooms. Try again later", - "incompatible_server_hierarchy": "Your server does not support showing space hierarchies.", - "invite": "Invite people", - "invite_description": "Invite with email or username", - "invite_link": "Share invite link", - "invite_this_space": "Invite to this space", - "joining_space": "Joining", - "landing_welcome": "Welcome to ", - "leave_dialog_action": "Leave space", - "leave_dialog_description": "You are about to leave .", - "leave_dialog_only_admin_room_warning": "You're the only admin of some of the rooms or spaces you wish to leave. Leaving them will leave them without any admins.", - "leave_dialog_only_admin_warning": "You're the only admin of this space. Leaving it will mean no one has control over it.", - "leave_dialog_option_all": "Leave all rooms", - "leave_dialog_option_intro": "Would you like to leave the rooms in this space?", - "leave_dialog_option_none": "Don't leave any rooms", - "leave_dialog_option_specific": "Leave some rooms", - "leave_dialog_public_rejoin_warning": "You won't be able to rejoin unless you are re-invited.", - "leave_dialog_title": "Leave %(spaceName)s", - "mark_suggested": "Mark as suggested", - "no_search_result_hint": "You may want to try a different search or check for typos.", - "preferences": { - "sections_section": "Sections to show", - "show_people_in_space": "This groups your chats with members of this space. Turning this off will hide those chats from your view of %(spaceName)s." + "bootstrap_title": "Setting up keys", + "cancel_entering_passphrase_description": "Are you sure you want to cancel entering passphrase?", + "cancel_entering_passphrase_title": "Cancel entering passphrase?", + "confirm_encryption_setup_body": "Click the button below to confirm setting up encryption.", + "confirm_encryption_setup_title": "Confirm encryption setup", + "cross_signing_not_ready": "Cross-signing is not set up.", + "cross_signing_ready": "Cross-signing is ready for use.", + "cross_signing_ready_no_backup": "Cross-signing is ready but keys are not backed up.", + "cross_signing_room_normal": "This room is end-to-end encrypted", + "cross_signing_room_verified": "Everyone in this room is verified", + "cross_signing_room_warning": "Someone is using an unknown session", + "cross_signing_unsupported": "Your homeserver does not support cross-signing.", + "cross_signing_untrusted": "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.", + "cross_signing_user_normal": "You have not verified this user.", + "cross_signing_user_verified": "You have verified this user. This user has verified all of their sessions.", + "cross_signing_user_warning": "This user has not verified all of their sessions.", + "destroy_cross_signing_dialog": { + "primary_button_text": "Clear cross-signing keys", + "title": "Destroy cross-signing keys?", + "warning": "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from." }, - "room_filter_placeholder": "Search for rooms", - "search_children": "Search %(spaceName)s", - "search_placeholder": "Search names and descriptions", - "select_room_below": "Select a room below first", - "share_public": "Share your public space", - "suggested": "Suggested", - "suggested_tooltip": "This room is suggested as a good one to join", - "title_when_query_available": "Results", - "title_when_query_unavailable": "Rooms and spaces", - "unmark_suggested": "Mark as not suggested", - "user_lacks_permission": "You don't have permission" - }, - "slash_command": { - "addwidget": "Adds a custom widget by URL to the room", - "addwidget_iframe_missing_src": "iframe has no src attribute", - "addwidget_invalid_protocol": "Please supply a https:// or http:// widget URL", - "addwidget_missing_url": "Please supply a widget URL or embed code", - "addwidget_no_permissions": "You cannot modify widgets in this room.", - "ban": "Bans user with given id", - "category_actions": "Actions", - "category_admin": "Admin", - "category_advanced": "Advanced", - "category_effects": "Effects", - "category_messages": "Messages", - "category_other": "Other", - "command_error": "Command error", - "converttodm": "Converts the room to a DM", - "converttoroom": "Converts the DM to a room", - "could_not_find_room": "Could not find room", - "deop": "Deops user with given id", - "devtools": "Opens the Developer Tools dialog", - "discardsession": "Forces the current outbound group session in an encrypted room to be discarded", - "error_invalid_rendering_type": "Command error: Unable to find rendering type (%(renderingType)s)", - "error_invalid_room": "Command failed: Unable to find room (%(roomId)s", - "error_invalid_runfn": "Command error: Unable to handle slash command.", - "error_invalid_user_in_room": "Could not find user in room", - "help": "Displays list of commands with usages and descriptions", - "help_dialog_title": "Command Help", - "holdcall": "Places the call in the current room on hold", - "html": "Sends a message as html, without interpreting it as markdown", - "ignore": "Ignores a user, hiding their messages from you", - "ignore_dialog_description": "You are now ignoring %(userId)s", - "ignore_dialog_title": "Ignored user", - "invite": "Invites user with given id to current room", - "invite_3pid_needs_is_error": "Use an identity server to invite by email. Manage in Settings.", - "invite_3pid_use_default_is_title": "Use an identity server", - "invite_3pid_use_default_is_title_description": "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.", - "invite_failed": "User (%(user)s) did not end up as invited to %(roomId)s but no error was given from the inviter utility", - "join": "Joins room with given address", - "jumptodate": "Jump to the given date in the timeline", - "jumptodate_invalid_input": "We were unable to understand the given date (%(inputDate)s). Try using the format YYYY-MM-DD.", - "lenny": "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message", - "me": "Displays action", - "msg": "Sends a message to the given user", - "myavatar": "Changes your profile picture in all rooms", - "myroomavatar": "Changes your profile picture in this current room only", - "myroomnick": "Changes your display nickname in the current room only", - "nick": "Changes your display nickname", - "no_active_call": "No active call in this room", - "op": "Define the power level of a user", - "part_unknown_alias": "Unrecognised room address: %(roomAlias)s", - "plain": "Sends a message as plain text, without interpreting it as markdown", - "query": "Opens chat with the given user", - "query_not_found_phone_number": "Unable to find Matrix ID for phone number", - "rageshake": "Send a bug report with logs", - "rainbow": "Sends the given message coloured as a rainbow", - "rainbowme": "Sends the given emote coloured as a rainbow", - "remakeolm": "Developer command: Discards the current outbound group session and sets up new Olm sessions", - "remove": "Removes user with given id from this room", - "roomavatar": "Changes the avatar of the current room", - "roomname": "Sets the room name", - "server_error": "Server error", - "server_error_detail": "Server unavailable, overloaded, or something else went wrong.", - "shrug": "Prepends ¯\\_(ツ)_/¯ to a plain-text message", - "spoiler": "Sends the given message as a spoiler", - "tableflip": "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message", - "topic": "Gets or sets the room topic", - "topic_none": "This room has no topic.", - "topic_room_error": "Failed to get room topic: Unable to find room (%(roomId)s", - "tovirtual": "Switches to this room's virtual room, if it has one", - "tovirtual_not_found": "No virtual room for this room", - "unban": "Unbans user with given ID", - "unflip": "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message", - "unholdcall": "Takes the call in the current room off hold", - "unignore": "Stops ignoring a user, showing their messages going forward", - "unignore_dialog_description": "You are no longer ignoring %(userId)s", - "unignore_dialog_title": "Unignored user", - "unknown_command": "Unknown Command", - "unknown_command_button": "Send as message", - "unknown_command_detail": "Unrecognised command: %(commandText)s", - "unknown_command_help": "You can use /help to list available commands. Did you mean to send this as a message?", - "unknown_command_hint": "Hint: Begin your message with // to start it with a slash.", - "upgraderoom": "Upgrades a room to a new version", - "upgraderoom_permission_error": "You do not have the required permissions to use this command.", - "usage": "Usage", - "verify": "Verifies a user, session, and pubkey tuple", - "verify_mismatch": "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!", - "verify_nop": "Session already verified!", - "verify_nop_warning_mismatch": "WARNING: session already verified, but keys do NOT MATCH!", - "verify_success_description": "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.", - "verify_success_title": "Verified key", - "verify_unknown_pair": "Unknown (user, session) pair: (%(userId)s, %(deviceId)s)", - "view": "Views room with given address", - "whois": "Displays information about a user" - }, - "share": { - "link_title": "Link to room", - "permalink_message": "Link to selected message", - "permalink_most_recent": "Link to most recent message", - "title_message": "Share Room Message", - "title_room": "Share Room", - "title_user": "Share User" - }, - "settings": { - "all_rooms_home": "Show all rooms in Home", - "all_rooms_home_description": "All rooms you're in will appear in Home.", - "always_show_message_timestamps": "Always show message timestamps", - "appearance": { - "custom_font": "Use a system font", - "custom_font_description": "Set the name of a font installed on your system & %(brand)s will attempt to use it.", - "custom_font_name": "System font name", - "custom_font_size": "Use custom size", - "custom_theme_add_button": "Add theme", - "custom_theme_error_downloading": "Error downloading theme information.", - "custom_theme_invalid": "Invalid theme schema.", - "custom_theme_success": "Theme added!", - "custom_theme_url": "Custom theme URL", - "font_size": "Font size", - "font_size_limit": "Custom font size can only be between %(min)s pt and %(max)s pt", - "font_size_nan": "Size must be a number", - "font_size_valid": "Use between %(min)s pt and %(max)s pt", - "heading": "Customise your appearance", - "image_size_default": "Default", - "image_size_large": "Large", - "layout_bubbles": "Message bubbles", - "layout_irc": "IRC (Experimental)", - "match_system_theme": "Match system theme", - "subheading": "Appearance Settings only affect this %(brand)s session.", - "timeline_image_size": "Image size in the timeline", - "use_high_contrast": "Use high contrast" + "event_shield_reason_authenticity_not_guaranteed": "The authenticity of this encrypted message can't be guaranteed on this device.", + "event_shield_reason_mismatched_sender_key": "Encrypted by an unverified session", + "event_shield_reason_unknown_device": "Encrypted by an unknown or deleted device.", + "event_shield_reason_unsigned_device": "Encrypted by a device not verified by its owner.", + "event_shield_reason_unverified_identity": "Encrypted by an unverified user.", + "export_unsupported": "Your browser does not support the required cryptography extensions", + "import_invalid_keyfile": "Not a valid %(brand)s keyfile", + "import_invalid_passphrase": "Authentication check failed: incorrect password?", + "incompatible_database_description": "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.", + "incompatible_database_disable": "Continue With Encryption Disabled", + "incompatible_database_sign_out_description": "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this", + "incompatible_database_title": "Incompatible Database", + "key_signature_upload_cancelled": "Cancelled signature upload", + "key_signature_upload_completed": "Upload completed", + "key_signature_upload_failed": "Unable to upload", + "key_signature_upload_failed_body": "%(brand)s encountered an error during upload of:", + "key_signature_upload_failed_cross_signing_key_signature": "a new cross-signing key signature", + "key_signature_upload_failed_device_cross_signing_key_signature": "a device cross-signing signature", + "key_signature_upload_failed_key_signature": "a key signature", + "key_signature_upload_failed_master_key_signature": "a new master key signature", + "key_signature_upload_failed_title": "Signature upload failed", + "key_signature_upload_success_title": "Signature upload success", + "messages_not_secure": { + "cause_1": "Your homeserver", + "cause_2": "The homeserver the user you're verifying is connected to", + "cause_3": "Yours, or the other users' internet connection", + "cause_4": "Yours, or the other users' session", + "heading": "One of the following may be compromised:", + "title": "Your messages are not secure" }, - "automatic_language_detection_syntax_highlight": "Enable automatic language detection for syntax highlighting", - "autoplay_gifs": "Autoplay GIFs", - "autoplay_videos": "Autoplay videos", - "big_emoji": "Enable big emoji in chat", - "code_block_expand_default": "Expand code blocks by default", - "code_block_line_numbers": "Show line numbers in code blocks", - "disable_historical_profile": "Show current profile picture and name for users in message history", - "emoji_autocomplete": "Enable Emoji suggestions while typing", - "enable_markdown": "Enable Markdown", - "enable_markdown_description": "Start messages with /plain to send without markdown.", - "general": { - "account_management_section": "Account management", - "account_section": "Account", - "add_email_dialog_title": "Add Email Address", - "add_email_failed_verification": "Failed to verify email address: make sure you clicked the link in the email", - "add_email_instructions": "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.", - "add_msisdn_confirm_body": "Click the button below to confirm adding this phone number.", - "add_msisdn_confirm_button": "Confirm adding phone number", - "add_msisdn_confirm_sso_button": "Confirm adding this phone number by using Single Sign On to prove your identity.", - "add_msisdn_dialog_title": "Add Phone Number", - "add_msisdn_instructions": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.", - "add_msisdn_misconfigured": "The add / bind with MSISDN flow is misconfigured", - "confirm_adding_email_body": "Click the button below to confirm adding this email address.", - "confirm_adding_email_title": "Confirm adding email", - "deactivate_confirm_body": "Are you sure you want to deactivate your account? This is irreversible.", - "deactivate_confirm_body_password": "To continue, please enter your account password:", - "deactivate_confirm_body_sso": "Confirm your account deactivation by using Single Sign On to prove your identity.", - "deactivate_confirm_content": "Confirm that you would like to deactivate your account. If you proceed:", - "deactivate_confirm_content_1": "You will not be able to reactivate your account", - "deactivate_confirm_content_2": "You will no longer be able to log in", - "deactivate_confirm_content_3": "No one will be able to reuse your username (MXID), including you: this username will remain unavailable", - "deactivate_confirm_content_4": "You will leave all rooms and DMs that you are in", - "deactivate_confirm_content_5": "You will be removed from the identity server: your friends will no longer be able to find you with your email or phone number", - "deactivate_confirm_content_6": "Your old messages will still be visible to people who received them, just like emails you sent in the past. Would you like to hide your sent messages from people who join rooms in the future?", - "deactivate_confirm_continue": "Confirm account deactivation", - "deactivate_confirm_erase_label": "Hide my messages from new joiners", - "deactivate_section": "Deactivate Account", - "deactivate_warning": "Deactivating your account is a permanent action — be careful!", - "discovery_email_empty": "Discovery options will appear once you have added an email above.", - "discovery_email_verification_instructions": "Verify the link in your inbox", - "discovery_msisdn_empty": "Discovery options will appear once you have added a phone number above.", - "discovery_needs_terms": "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.", - "discovery_section": "Discovery", - "email_address_in_use": "This email address is already in use", - "email_address_label": "Email Address", - "email_not_verified": "Your email address hasn't been verified yet", - "email_verification_instructions": "Click the link in the email you received to verify and then click continue again.", - "emails_heading": "Email addresses", - "error_add_email": "Unable to add email address", - "error_deactivate_communication": "There was a problem communicating with the server. Please try again.", - "error_deactivate_invalid_auth": "Server did not return valid authentication information.", - "error_deactivate_no_auth": "Server did not require any authentication", - "error_email_verification": "Unable to verify email address.", - "error_invalid_email": "Invalid Email Address", - "error_invalid_email_detail": "This doesn't appear to be a valid email address", - "error_msisdn_verification": "Unable to verify phone number.", - "error_password_change_403": "Failed to change password. Is your password correct?", - "error_password_change_http": "%(errorMessage)s (HTTP status %(httpStatus)s)", - "error_password_change_title": "Error changing password", - "error_password_change_unknown": "Unknown password change error (%(stringifiedError)s)", - "error_remove_3pid": "Unable to remove contact information", - "error_revoke_email_discovery": "Unable to revoke sharing for email address", - "error_revoke_msisdn_discovery": "Unable to revoke sharing for phone number", - "error_saving_profile": "The operation could not be completed", - "error_saving_profile_title": "Failed to save your profile", - "error_share_email_discovery": "Unable to share email address", - "error_share_msisdn_discovery": "Unable to share phone number", - "external_account_management": "Your account details are managed separately at %(hostname)s.", - "identity_server_no_token": "No identity access token found", - "identity_server_not_set": "Identity server not set", - "incorrect_msisdn_verification": "Incorrect verification code", - "language_section": "Language and region", - "msisdn_in_use": "This phone number is already in use", - "msisdn_label": "Phone Number", - "msisdn_verification_field_label": "Verification code", - "msisdn_verification_instructions": "Please enter verification code sent via text.", - "msisdns_heading": "Phone numbers", - "name_placeholder": "No display name", - "oidc_manage_button": "Manage account", - "password_change_section": "Set a new account password…", - "password_change_success": "Your password was successfully changed.", - "remove_email_prompt": "Remove %(email)s?", - "remove_msisdn_prompt": "Remove %(phone)s?", - "spell_check_locale_placeholder": "Choose a locale", - "spell_check_section": "Spell check" - }, - "image_thumbnails": "Show previews/thumbnails for images", - "inline_url_previews_default": "Enable inline URL previews by default", - "inline_url_previews_room": "Enable URL previews by default for participants in this room", - "inline_url_previews_room_account": "Enable URL previews for this room (only affects you)", - "insert_trailing_colon_mentions": "Insert a trailing colon after user mentions at the start of a message", - "jump_to_bottom_on_send": "Jump to the bottom of the timeline when you send a message", - "key_backup": { - "backup_in_progress": "Your keys are being backed up (the first backup could take a few minutes).", - "backup_starting": "Starting backup…", - "backup_success": "Success!", - "cannot_create_backup": "Unable to create key backup", - "create_title": "Create key backup", - "setup_secure_backup": { - "backup_setup_success_description": "Your keys are now being backed up from this device.", - "backup_setup_success_title": "Secure Backup successful", - "cancel_warning": "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.", - "confirm_security_phrase": "Confirm your Security Phrase", - "description": "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.", - "download_or_copy": "%(downloadButton)s or %(copyButton)s", - "enter_phrase_description": "Enter a Security Phrase only you know, as it's used to safeguard your data. To be secure, you shouldn't re-use your account password.", - "enter_phrase_title": "Enter a Security Phrase", - "enter_phrase_to_confirm": "Enter your Security Phrase a second time to confirm it.", - "generate_security_key_description": "We'll generate a Security Key for you to store somewhere safe, like a password manager or a safe.", - "generate_security_key_title": "Generate a Security Key", - "pass_phrase_match_failed": "That doesn't match.", - "pass_phrase_match_success": "That matches!", - "phrase_strong_enough": "Great! This Security Phrase looks strong enough.", - "requires_key_restore": "Restore your key backup to upgrade your encryption", - "requires_password_confirmation": "Enter your account password to confirm the upgrade:", - "requires_server_authentication": "You'll need to authenticate with the server to confirm the upgrade.", - "secret_storage_query_failure": "Unable to query secret storage status", - "security_key_safety_reminder": "Store your Security Key somewhere safe, like a password manager or a safe, as it's used to safeguard your encrypted data.", - "session_upgrade_description": "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.", - "set_phrase_again": "Go back to set it again.", - "settings_reminder": "You can also set up Secure Backup & manage your keys in Settings.", - "title_confirm_phrase": "Confirm Security Phrase", - "title_save_key": "Save your Security Key", - "title_set_phrase": "Set a Security Phrase", - "title_upgrade_encryption": "Upgrade your encryption", - "unable_to_setup": "Unable to set up secret storage", - "use_different_passphrase": "Use a different passphrase?", - "use_phrase_only_you_know": "Use a secret phrase only you know, and optionally save a Security Key to use for backup." - } - }, - "key_export_import": { - "confirm_passphrase": "Confirm passphrase", - "enter_passphrase": "Enter passphrase", - "export_description_1": "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.", - "export_description_2": "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 unique passphrase below, which will only be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", - "export_title": "Export room keys", - "file_to_import": "File to import", - "import_description_1": "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.", - "import_description_2": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", - "import_title": "Import room keys", - "phrase_cannot_be_empty": "Passphrase must not be empty", - "phrase_must_match": "Passphrases must match", - "phrase_strong_enough": "Great! This passphrase looks strong enough" + "new_recovery_method_detected": { + "description_1": "A new Security Phrase and key for Secure Messages have been detected.", + "description_2": "This session is encrypting history using the new recovery method.", + "title": "New Recovery Method", + "warning": "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings." }, - "keyboard": { - "title": "Keyboard" + "not_supported": "", + "old_version_detected_description": "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.", + "old_version_detected_title": "Old cryptography data detected", + "recovery_method_removed": { + "description_1": "This session has detected that your Security Phrase and key for Secure Messages have been removed.", + "description_2": "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.", + "title": "Recovery Method Removed", + "warning": "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings." }, - "notifications": { - "default_setting_description": "This setting will be applied by default to all your rooms.", - "default_setting_section": "I want to be notified for (Default Setting)", - "desktop_notification_message_preview": "Show message preview in desktop notification", - "email_description": "Receive an email summary of missed notifications", - "email_section": "Email summary", - "email_select": "Select which emails you want to send summaries to. Manage your emails in .", - "enable_audible_notifications_session": "Enable audible notifications for this session", - "enable_desktop_notifications_session": "Enable desktop notifications for this session", - "enable_email_notifications": "Enable email notifications for %(email)s", - "enable_notifications_account": "Enable notifications for this account", - "enable_notifications_account_detail": "Turn off to disable notifications on all your devices and sessions", - "enable_notifications_device": "Enable notifications for this device", - "error_loading": "There was an error loading your notification settings.", - "error_permissions_denied": "%(brand)s does not have permission to send you notifications - please check your browser settings", - "error_permissions_missing": "%(brand)s was not given permission to send notifications - please try again", - "error_saving": "Error saving notification preferences", - "error_saving_detail": "An error occurred whilst saving your notification preferences.", - "error_title": "Unable to enable Notifications", - "error_updating": "An error occurred when updating your notification preferences. Please try to toggle your option again.", - "invites": "Invited to a room", - "keywords": "Show a badge when keywords are used in a room.", - "keywords_prompt": "Enter keywords here, or use for spelling variations or nicknames", - "labs_notice_prompt": "Update:We’ve simplified Notifications Settings to make options easier to find. Some custom settings you’ve chosen in the past are not shown here, but they’re still active. If you proceed, some of your settings may change. Learn more", - "mentions_keywords": "Mentions and Keywords", - "mentions_keywords_only": "Mentions and Keywords only", - "messages_containing_keywords": "Messages containing keywords", - "noisy": "Noisy", - "notices": "Messages sent by bots", - "notify_at_room": "Notify when someone mentions using @room", - "notify_keyword": "Notify when someone uses a keyword", - "notify_mention": "Notify when someone mentions using @displayname or %(mxid)s", - "other_section": "Other things we think you might be interested in:", - "people_mentions_keywords": "People, Mentions and Keywords", - "play_sound_for_description": "Applied by default to all rooms on all devices.", - "play_sound_for_section": "Play a sound for", - "push_targets": "Notification targets", - "quick_actions_mark_all_read": "Mark all messages as read", - "quick_actions_reset": "Reset to default settings", - "quick_actions_section": "Quick Actions", - "room_activity": "New room activity, upgrades and status messages occur", - "rule_call": "Call invitation", - "rule_contains_display_name": "Messages containing my display name", - "rule_contains_user_name": "Messages containing my username", - "rule_encrypted": "Encrypted messages in group chats", - "rule_encrypted_room_one_to_one": "Encrypted messages in one-to-one chats", - "rule_invite_for_me": "When I'm invited to a room", - "rule_message": "Messages in group chats", - "rule_room_one_to_one": "Messages in one-to-one chats", - "rule_roomnotif": "Messages containing @room", - "rule_suppress_notices": "Messages sent by bot", - "rule_tombstone": "When rooms are upgraded", - "show_message_desktop_notification": "Show message in desktop notification", - "voip": "Audio and Video calls" + "reset_all_button": "Forgotten or lost all recovery methods? Reset all", + "set_up_toast_description": "Safeguard against losing access to encrypted messages & data", + "set_up_toast_title": "Set up Secure Backup", + "setup_secure_backup": { + "explainer": "Back up your keys before signing out to avoid losing them.", + "title": "Set up" }, - "preferences": { - "Electron.enableHardwareAcceleration": "Enable hardware acceleration (restart %(appName)s to take effect)", - "always_show_menu_bar": "Always show the window menu bar", - "autocomplete_delay": "Autocomplete delay (ms)", - "code_blocks_heading": "Code blocks", - "compact_modern": "Use a more compact 'Modern' layout", - "composer_heading": "Composer", - "enable_hardware_acceleration": "Enable hardware acceleration", - "enable_tray_icon": "Show tray icon and minimise window to it on close", - "keyboard_heading": "Keyboard shortcuts", - "keyboard_view_shortcuts_button": "To view all keyboard shortcuts, click here.", - "media_heading": "Images, GIFs and videos", - "presence_description": "Share your activity and status with others.", - "rm_lifetime": "Read Marker lifetime (ms)", - "rm_lifetime_offscreen": "Read Marker off-screen lifetime (ms)", - "room_directory_heading": "Room directory", - "room_list_heading": "Room list", - "show_avatars_pills": "Show avatars in user, room and event mentions", - "show_checklist_shortcuts": "Show shortcut to welcome checklist above the room list", - "show_polls_button": "Show polls button", - "surround_text": "Surround selected text when typing special characters", - "time_heading": "Displaying time" + "udd": { + "interactive_verification_button": "Interactively verify by emoji", + "manual_verification_button": "Manually verify by text", + "other_ask_verify_text": "Ask this user to verify their session, or manually verify it below.", + "other_new_session_text": "%(name)s (%(userId)s) signed in to a new session without verifying it:", + "own_ask_verify_text": "Verify your other session using one of the options below.", + "own_new_session_text": "You signed in to a new session without verifying it:", + "title": "Not Trusted" }, - "prompt_invite": "Prompt before sending invites to potentially invalid matrix IDs", - "replace_plain_emoji": "Automatically replace plain text Emoji", - "security": { - "4s_public_key_in_account_data": "in account data", - "4s_public_key_status": "Secret storage public key:", - "analytics_description": "Share anonymous data to help us identify issues. Nothing personal. No third parties.", - "backup_key_cached_status": "Backup key cached:", - "backup_key_stored_status": "Backup key stored:", - "backup_key_unexpected_type": "unexpected type", - "backup_key_well_formed": "well formed", - "backup_keys_description": "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.", - "bulk_options_accept_all_invites": "Accept all %(invitedRooms)s invites", - "bulk_options_reject_all_invites": "Reject all %(invitedRooms)s invites", - "bulk_options_section": "Bulk options", - "cross_signing_cached": "cached locally", - "cross_signing_homeserver_support": "Homeserver feature support:", - "cross_signing_homeserver_support_exists": "exists", - "cross_signing_in_4s": "in secret storage", - "cross_signing_in_memory": "in memory", - "cross_signing_master_private_Key": "Master private key:", - "cross_signing_not_cached": "not found locally", - "cross_signing_not_found": "not found", - "cross_signing_not_in_4s": "not found in storage", - "cross_signing_not_stored": "not stored", - "cross_signing_private_keys": "Cross-signing private keys:", - "cross_signing_public_keys": "Cross-signing public keys:", - "cross_signing_self_signing_private_key": "Self signing private key:", - "cross_signing_user_signing_private_key": "User signing private key:", - "cryptography_section": "Cryptography", - "delete_backup": "Delete Backup", - "delete_backup_confirm_description": "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.", - "e2ee_default_disabled_warning": "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.", - "enable_message_search": "Enable message search in encrypted rooms", - "encryption_individual_verification_mode": "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.", - "encryption_section": "Encryption", - "error_loading_key_backup_status": "Unable to load key backup status", - "export_megolm_keys": "Export E2E room keys", - "ignore_users_empty": "You have no ignored users.", - "ignore_users_section": "Ignored users", - "import_megolm_keys": "Import E2E room keys", - "key_backup_active": "This session is backing up your keys.", - "key_backup_active_version": "Active backup version:", - "key_backup_active_version_none": "None", - "key_backup_algorithm": "Algorithm:", - "key_backup_can_be_restored": "This backup can be restored on this session", - "key_backup_complete": "All keys backed up", - "key_backup_connect": "Connect this session to Key Backup", - "key_backup_connect_prompt": "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.", - "key_backup_in_progress": "Backing up %(sessionsRemaining)s keys…", - "key_backup_inactive": "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.", - "key_backup_inactive_warning": "Your keys are not being backed up from this session.", - "key_backup_latest_version": "Latest backup version on server:", - "manually_verify_all_sessions": "Manually verify all remote sessions", - "message_search_disable_warning": "If disabled, messages from encrypted rooms won't appear in search results.", - "message_search_disabled": "Securely cache encrypted messages locally for them to appear in search results.", - "message_search_enabled": { - "one": "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s room.", - "other": "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s rooms." + "unable_to_setup_keys_error": "Unable to set up keys", + "unsupported": "This client does not support end-to-end encryption.", + "upgrade_toast_title": "Encryption upgrade available", + "verification": { + "accepting": "Accepting…", + "after_new_login": { + "device_verified": "Device verified", + "reset_confirmation": "Really reset verification keys?", + "skip_verification": "Skip verification for now", + "unable_to_verify": "Unable to verify this device", + "verify_this_device": "Verify this device" }, - "message_search_failed": "Message search initialisation failed", - "message_search_indexed_messages": "Indexed messages:", - "message_search_indexed_rooms": "Indexed rooms:", - "message_search_indexing": "Currently indexing: %(currentRoom)s", - "message_search_indexing_idle": "Not currently indexing messages for any room.", - "message_search_intro": "%(brand)s is securely caching encrypted messages locally for them to appear in search results:", - "message_search_room_progress": "%(doneRooms)s out of %(totalRooms)s", - "message_search_section": "Message search", - "message_search_sleep_time": "How fast should messages be downloaded.", - "message_search_space_used": "Space used:", - "message_search_unsupported": "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.", - "message_search_unsupported_web": "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.", - "record_session_details": "Record the client name, version, and url to recognise sessions more easily in session manager", - "restore_key_backup": "Restore from Backup", - "secret_storage_not_ready": "not ready", - "secret_storage_ready": "ready", - "secret_storage_status": "Secret storage:", - "send_analytics": "Send analytics data", - "session_id": "Session ID:", - "session_key": "Session key:", - "strict_encryption": "Never send encrypted messages to unverified sessions from this session" + "cancelled": "You cancelled verification.", + "cancelled_self": "You cancelled verification on your other device.", + "cancelled_user": "%(displayName)s cancelled verification.", + "cancelling": "Cancelling…", + "complete_action": "Got It", + "complete_description": "You've successfully verified this user.", + "complete_title": "Verified!", + "error_starting_description": "We were unable to start a chat with the other user.", + "error_starting_title": "Error starting verification", + "explainer": "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.", + "in_person": "To be secure, do this in person or use a trusted way to communicate.", + "incoming_sas_device_dialog_text_1": "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.", + "incoming_sas_device_dialog_text_2": "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.", + "incoming_sas_dialog_title": "Incoming Verification Request", + "incoming_sas_dialog_waiting": "Waiting for partner to confirm…", + "incoming_sas_user_dialog_text_1": "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.", + "incoming_sas_user_dialog_text_2": "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.", + "manual_device_verification_device_id_label": "Session ID", + "manual_device_verification_device_key_label": "Session key", + "manual_device_verification_device_name_label": "Session name", + "manual_device_verification_footer": "If they don't match, the security of your communication may be compromised.", + "manual_device_verification_self_text": "Confirm by comparing the following with the User Settings in your other session:", + "manual_device_verification_user_text": "Confirm this user's session by comparing the following with their User Settings:", + "no_key_or_device": "It looks like you don't have a Security Key or any other devices you can verify against. This device will not be able to access old encrypted messages. In order to verify your identity on this device, you'll need to reset your verification keys.", + "no_support_qr_emoji": "The device 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.", + "other_party_cancelled": "The other party cancelled the verification.", + "prompt_encrypted": "Verify all users in a room to ensure it's secure.", + "prompt_self": "Start verification again from the notification.", + "prompt_unencrypted": "In encrypted rooms, verify all users to ensure it's secure.", + "prompt_user": "Start verification again from their profile.", + "qr_or_sas": "%(qrCode)s or %(emojiCompare)s", + "qr_or_sas_header": "Verify this device by completing one of the following:", + "qr_prompt": "Scan this unique code", + "qr_reciprocate_same_shield_device": "Almost there! Is your other device showing the same shield?", + "qr_reciprocate_same_shield_user": "Almost there! Is %(displayName)s showing the same shield?", + "request_toast_accept": "Verify Session", + "request_toast_decline_counter": "Ignore (%(counter)s)", + "request_toast_detail": "%(deviceId)s from %(ip)s", + "reset_proceed_prompt": "Proceed with reset", + "sas_caption_self": "Verify this device by confirming the following number appears on its screen.", + "sas_caption_user": "Verify this user by confirming the following number appears on their screen.", + "sas_description": "Compare a unique set of emoji if you don't have a camera on either device", + "sas_emoji_caption_self": "Confirm the emoji below are displayed on both devices, in the same order:", + "sas_emoji_caption_user": "Verify this user by confirming the following emoji appear on their screen.", + "sas_match": "They match", + "sas_no_match": "They don't match", + "sas_prompt": "Compare unique emoji", + "scan_qr": "Verify by scanning", + "scan_qr_explainer": "Ask %(displayName)s to scan your code:", + "self_verification_hint": "To proceed, please accept the verification request on your other device.", + "start_button": "Start Verification", + "successful_device": "You've successfully verified %(deviceName)s (%(deviceId)s)!", + "successful_own_device": "You've successfully verified your device!", + "successful_user": "You've successfully verified %(displayName)s!", + "timed_out": "Verification timed out.", + "unsupported_method": "Unable to find a supported verification method.", + "unverified_session_toast_accept": "Yes, it was me", + "unverified_session_toast_title": "New login. Was this you?", + "unverified_sessions_toast_description": "Review to ensure your account is safe", + "unverified_sessions_toast_reject": "Later", + "unverified_sessions_toast_title": "You have unverified sessions", + "verification_description": "Verify your identity to access encrypted messages and prove your identity to others.", + "verification_dialog_title_device": "Verify other device", + "verification_dialog_title_user": "Verification Request", + "verification_skip_warning": "Without verifying, you won't have access to all your messages and may appear as untrusted to others.", + "verification_success_with_backup": "Your new device is now verified. It has access to your encrypted messages, and other users will see it as trusted.", + "verification_success_without_backup": "Your new device is now verified. Other users will see it as trusted.", + "verify_emoji": "Verify by emoji", + "verify_emoji_prompt": "Verify by comparing unique emoji.", + "verify_emoji_prompt_qr": "If you can't scan the code above, verify by comparing unique emoji.", + "verify_later": "I'll verify later", + "verify_reset_warning_1": "Resetting your verification keys cannot be undone. After resetting, you won't have access to old encrypted messages, and any friends who have previously verified you will see security warnings until you re-verify with them.", + "verify_reset_warning_2": "Please only proceed if you're sure you've lost all of your other devices and your Security Key.", + "verify_using_device": "Verify with another device", + "verify_using_key": "Verify with Security Key", + "verify_using_key_or_phrase": "Verify with Security Key or Phrase", + "waiting_for_user_accept": "Waiting for %(displayName)s to accept…", + "waiting_other_device": "Waiting for you to verify on your other device…", + "waiting_other_device_details": "Waiting for you to verify on your other device, %(deviceName)s (%(deviceId)s)…", + "waiting_other_user": "Waiting for %(displayName)s to verify…" }, - "send_read_receipts": "Send read receipts", - "send_read_receipts_unsupported": "Your server doesn't support disabling sending read receipts.", - "send_typing_notifications": "Send typing notifications", - "sessions": { - "best_security_note": "For best security, verify your sessions and sign out from any session that you don't recognize or use anymore.", - "browser": "Browser", - "confirm_sign_out": { - "one": "Confirm signing out this device", - "other": "Confirm signing out these devices" - }, - "confirm_sign_out_body": { - "one": "Click the button below to confirm signing out this device.", - "other": "Click the button below to confirm signing out these devices." - }, - "confirm_sign_out_continue": { - "one": "Sign out device", - "other": "Sign out devices" - }, - "confirm_sign_out_sso": { - "one": "Confirm logging out this device by using Single Sign On to prove your identity.", - "other": "Confirm logging out these devices by using Single Sign On to prove your identity." - }, - "current_session": "Current session", - "desktop_session": "Desktop session", - "details_heading": "Session details", - "device_unverified_description": "Verify or sign out from this session for best security and reliability.", - "device_unverified_description_current": "Verify your current session for enhanced secure messaging.", - "device_verified_description": "This session is ready for secure messaging.", - "device_verified_description_current": "Your current session is ready for secure messaging.", - "error_pusher_state": "Failed to set pusher state", - "error_set_name": "Failed to set session name", - "filter_all": "All", - "filter_inactive": "Inactive", - "filter_inactive_description": "Inactive for %(inactiveAgeDays)s days or longer", - "filter_label": "Filter devices", - "filter_unverified_description": "Not ready for secure messaging", - "filter_verified_description": "Ready for secure messaging", - "hide_details": "Hide details", - "inactive_days": "Inactive for %(inactiveAgeDays)s+ days", - "inactive_sessions": "Inactive sessions", - "inactive_sessions_explainer_1": "Inactive sessions are sessions you have not used in some time, but they continue to receive encryption keys.", - "inactive_sessions_explainer_2": "Removing inactive sessions improves security and performance, and makes it easier for you to identify if a new session is suspicious.", - "inactive_sessions_list_description": "Consider signing out from old sessions (%(inactiveAgeDays)s days or older) you don't use anymore.", - "ip": "IP address", - "last_activity": "Last activity", - "mobile_session": "Mobile session", - "n_sessions_selected": { - "one": "%(count)s session selected", - "other": "%(count)s sessions selected" - }, - "no_inactive_sessions": "No inactive sessions found.", - "no_sessions": "No sessions found.", - "no_unverified_sessions": "No unverified sessions found.", - "no_verified_sessions": "No verified sessions found.", - "os": "Operating system", - "other_sessions_heading": "Other sessions", - "push_heading": "Push notifications", - "push_subheading": "Receive push notifications on this session.", - "push_toggle": "Toggle push notifications on this session.", - "rename_form_caption": "Please be aware that session names are also visible to people you communicate with.", - "rename_form_heading": "Rename session", - "rename_form_learn_more": "Renaming sessions", - "rename_form_learn_more_description_1": "Other users in direct messages and rooms that you join are able to view a full list of your sessions.", - "rename_form_learn_more_description_2": "This provides them with confidence that they are really speaking to you, but it also means they can see the session name you enter here.", - "security_recommendations": "Security recommendations", - "security_recommendations_description": "Improve your account security by following these recommendations.", - "session_id": "Session ID", - "show_details": "Show details", - "sign_in_with_qr": "Sign in with QR code", - "sign_in_with_qr_button": "Show QR code", - "sign_in_with_qr_description": "You can use this device to sign in a new device with a QR code. You will need to scan the QR code shown on this device with your device that's signed out.", - "sign_out": "Sign out of this session", - "sign_out_all_other_sessions": "Sign out of all other sessions (%(otherSessionsCount)s)", - "sign_out_confirm_description": { - "one": "Are you sure you want to sign out of %(count)s session?", - "other": "Are you sure you want to sign out of %(count)s sessions?" - }, - "sign_out_n_sessions": { - "one": "Sign out of %(count)s session", - "other": "Sign out of %(count)s sessions" - }, - "title": "Sessions", - "unknown_session": "Unknown session type", - "unverified_session": "Unverified session", - "unverified_session_explainer_1": "This session doesn't support encryption and thus can't be verified.", - "unverified_session_explainer_2": "You won't be able to participate in rooms where encryption is enabled when using this session.", - "unverified_session_explainer_3": "For best security and privacy, it is recommended to use Matrix clients that support encryption.", - "unverified_sessions": "Unverified sessions", - "unverified_sessions_explainer_1": "Unverified sessions are sessions that have logged in with your credentials but have not been cross-verified.", - "unverified_sessions_explainer_2": "You should make especially certain that you recognise these sessions as they could represent an unauthorised use of your account.", - "unverified_sessions_list_description": "Verify your sessions for enhanced secure messaging or sign out from those you don't recognize or use anymore.", - "url": "URL", - "verified_session": "Verified session", - "verified_sessions": "Verified sessions", - "verified_sessions_explainer_1": "Verified sessions are anywhere you are using this account after entering your passphrase or confirming your identity with another verified session.", - "verified_sessions_explainer_2": "This means that you have all the keys needed to unlock your encrypted messages and confirm to other users that you trust this session.", - "verified_sessions_list_description": "For best security, sign out from any session that you don't recognize or use anymore.", - "verify_session": "Verify session", - "web_session": "Web session" + "verification_requested_toast_title": "Verification requested", + "verify_toast_description": "Other users may not trust it", + "verify_toast_title": "Verify this session" + }, + "error": { + "admin_contact": "Please contact your service administrator to continue using this service.", + "admin_contact_short": "Contact your server admin.", + "connection": "There was a problem communicating with the homeserver, please try again later.", + "dialog_description_default": "An error has occurred.", + "download_media": "Failed to download source media, no source url was found", + "edit_history_unsupported": "Your homeserver doesn't seem to support this feature.", + "failed_copy": "Failed to copy", + "hs_blocked": "This homeserver has been blocked by its administrator.", + "mau": "This homeserver has hit its Monthly Active User limit.", + "mixed_content": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", + "non_urgent_echo_failure_toast": "Your server isn't responding to some requests.", + "resource_limits": "This homeserver has exceeded one of its resource limits.", + "session_restore": { + "clear_storage_button": "Clear Storage and Sign Out", + "clear_storage_description": "Sign out and remove encryption keys?", + "description_1": "We encountered an error trying to restore your previous session.", + "description_2": "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.", + "description_3": "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.", + "title": "Unable to restore session" }, - "show_avatar_changes": "Show profile picture changes", - "show_breadcrumbs": "Show shortcuts to recently viewed rooms above the room list", - "show_chat_effects": "Show chat effects (animations when receiving e.g. confetti)", - "show_displayname_changes": "Show display name changes", - "show_join_leave": "Show join/leave messages (invites/removes/bans unaffected)", - "show_nsfw_content": "Show NSFW content", - "show_read_receipts": "Show read receipts sent by other users", - "show_redaction_placeholder": "Show a placeholder for removed messages", - "show_stickers_button": "Show stickers button", - "show_typing_notifications": "Show typing notifications", - "sidebar": { - "metaspaces_favourites_description": "Group all your favourite rooms and people in one place.", - "metaspaces_home_all_rooms": "Show all rooms", - "metaspaces_home_all_rooms_description": "Show all your rooms in Home, even if they're in a space.", - "metaspaces_home_description": "Home is useful for getting an overview of everything.", - "metaspaces_orphans": "Rooms outside of a space", - "metaspaces_orphans_description": "Group all your rooms that aren't part of a space in one place.", - "metaspaces_people_description": "Group all your people in one place.", - "metaspaces_subsection": "Spaces to show", - "spaces_explainer": "Spaces are ways to group rooms and people. Alongside the spaces you're in, you can use some pre-built ones too.", - "title": "Sidebar" - }, - "start_automatically": "Start automatically after system login", - "use_12_hour_format": "Show timestamps in 12 hour format (e.g. 2:30pm)", - "use_command_enter_send_message": "Use Command + Enter to send a message", - "use_command_f_search": "Use Command + F to search timeline", - "use_control_enter_send_message": "Use Ctrl + Enter to send a message", - "use_control_f_search": "Use Ctrl + F to search timeline", - "voip": { - "allow_p2p": "Allow Peer-to-Peer for 1:1 calls", - "allow_p2p_description": "When enabled, the other party might be able to see your IP address", - "audio_input_empty": "No Microphones detected", - "audio_output": "Audio Output", - "audio_output_empty": "No Audio Outputs detected", - "auto_gain_control": "Automatic gain control", - "connection_section": "Connection", - "echo_cancellation": "Echo cancellation", - "enable_fallback_ice_server": "Allow fallback call assist server (%(server)s)", - "enable_fallback_ice_server_description": "Only applies if your homeserver does not offer one. Your IP address would be shared during a call.", - "mirror_local_feed": "Mirror local video feed", - "missing_permissions_prompt": "Missing media permissions, click the button below to request.", - "noise_suppression": "Noise suppression", - "request_permissions": "Request media permissions", - "title": "Voice & Video", - "video_input_empty": "No Webcams detected", - "video_section": "Video settings", - "voice_agc": "Automatically adjust the microphone volume", - "voice_processing": "Voice processing", - "voice_section": "Voice settings" - }, - "warn_quit": "Warn before quitting", - "warning": "WARNING: " + "something_went_wrong": "Something went wrong!", + "storage_evicted_description_1": "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.", + "storage_evicted_description_2": "Your browser likely removed this data when running low on disk space.", + "storage_evicted_title": "Missing session data", + "sync": "Unable to connect to Homeserver. Retrying…", + "tls": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.", + "unknown": "Unknown error", + "unknown_error_code": "unknown error code", + "update_power_level": "Failed to change power level" }, - "setting": { - "help_about": { - "access_token_detail": "Your access token gives full access to your account. Do not share it with anyone.", - "brand_version": "%(brand)s version:", - "chat_bot": "Chat with %(brand)s Bot", - "clear_cache_reload": "Clear cache and reload", - "help_link": "For help with using %(brand)s, click here.", - "help_link_chat_bot": "For help with using %(brand)s, click here or start a chat with our bot using the button below.", - "homeserver": "Homeserver is %(homeserverUrl)s", - "identity_server": "Identity server is %(identityServerUrl)s", - "olm_version": "Olm version:", - "title": "Help & About", - "versions": "Versions" + "error_app_open_in_another_tab": "%(brand)s has been opened in another tab.", + "error_app_opened_in_another_window": "%(brand)s is open in another window. Click \"%(label)s\" to use %(brand)s here and disconnect the other window.", + "error_database_closed_description": "This may be caused by having the app open in multiple tabs or due to clearing browser data.", + "error_database_closed_title": "Database unexpectedly closed", + "error_dialog": { + "copy_room_link_failed": { + "description": "Unable to copy a link to the room to the clipboard.", + "title": "Unable to copy room link" + }, + "error_loading_user_profile": "Could not load user profile", + "forget_room_failed": "Failed to forget room %(errCode)s", + "search_failed": { + "server_unavailable": "Server may be unavailable, overloaded, or search timed out :(", + "title": "Search failed" } }, - "seshat": { - "error_initialising": "Message search initialisation failed, check your settings for more information", - "reset_button": "Reset event store", - "reset_description": "You most likely do not want to reset your event index store", - "reset_explainer": "If you do, please note that none of your messages will be deleted, but the search experience might be degraded for a few moments whilst the index is recreated", - "reset_title": "Reset event store?", - "warning_kind_files": "This version of %(brand)s does not support viewing some encrypted files", - "warning_kind_files_app": "Use the Desktop app to see all encrypted files", - "warning_kind_search": "This version of %(brand)s does not support searching encrypted messages", - "warning_kind_search_app": "Use the Desktop app to search encrypted messages" - }, - "server_offline": { - "description": "Your server isn't responding to some of your requests. Below are some of the most likely reasons.", - "description_1": "The server (%(serverName)s) took too long to respond.", - "description_2": "Your firewall or anti-virus is blocking the request.", - "description_3": "A browser extension is preventing the request.", - "description_4": "The server is offline.", - "description_5": "The server has denied your request.", - "description_6": "Your area is experiencing difficulties connecting to the internet.", - "description_7": "A connection error occurred while trying to contact the server.", - "description_8": "The server is not configured to indicate what the problem is (CORS).", - "empty_timeline": "You're all caught up.", - "recent_changes_heading": "Recent changes that have not yet been received", - "title": "Server isn't responding" - }, - "scalar": { - "error_create": "Unable to create widget.", - "error_membership": "You are not in this room.", - "error_missing_room_id": "Missing roomId.", - "error_missing_room_id_request": "Missing room_id in request", - "error_missing_user_id_request": "Missing user_id in request", - "error_permission": "You do not have permission to do that in this room.", - "error_power_level_invalid": "Power level must be positive integer.", - "error_room_not_visible": "Room %(roomId)s not visible", - "error_room_unknown": "This room is not recognised.", - "error_send_request": "Failed to send request.", - "failed_read_event": "Failed to read events", - "failed_send_event": "Failed to send event" - }, - "room_summary_card_back_action_label": "Room information", - "room_settings": { - "access": { - "description_space": "Decide who can view and join %(spaceName)s.", - "title": "Access" - }, - "advanced": { - "error_upgrade_description": "The room upgrade could not be completed", - "error_upgrade_title": "Failed to upgrade room", - "information_section_room": "Room information", - "information_section_space": "Space information", - "room_id": "Internal room ID", - "room_predecessor": "View older messages in %(roomName)s.", - "room_upgrade_button": "Upgrade this room to the recommended room version", - "room_upgrade_warning": "Warning: upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.", - "room_version": "Room version:", - "room_version_section": "Room version", - "space_predecessor": "View older version of %(spaceName)s.", - "space_upgrade_button": "Upgrade this space to the recommended room version", - "unfederated": "This room is not accessible by remote Matrix servers", - "upgrade_button": "Upgrade this room to version %(version)s", - "upgrade_dialog_description": "Upgrading this room requires closing down the current instance of the room and creating a new room in its place. To give room members the best possible experience, we will:", - "upgrade_dialog_description_1": "Create a new room with the same name, description and avatar", - "upgrade_dialog_description_2": "Update any local room aliases to point to the new room", - "upgrade_dialog_description_3": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room", - "upgrade_dialog_description_4": "Put a link back to the old room at the start of the new room so people can see old messages", - "upgrade_dialog_title": "Upgrade Room Version", - "upgrade_dwarning_ialog_title_public": "Upgrade public room", - "upgrade_warning_dialog_description": "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.", - "upgrade_warning_dialog_explainer": "Please note upgrading will make a new version of the room. All current messages will stay in this archived room.", - "upgrade_warning_dialog_footer": "You'll upgrade this room from to .", - "upgrade_warning_dialog_invite_label": "Automatically invite members from this room to the new one", - "upgrade_warning_dialog_report_bug_prompt": "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.", - "upgrade_warning_dialog_report_bug_prompt_link": "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.", - "upgrade_warning_dialog_title": "Upgrade room", - "upgrade_warning_dialog_title_private": "Upgrade private room" + "error_user_not_logged_in": "User is not logged in", + "event_preview": { + "io.element.voice_broadcast_info": { + "user": "%(senderName)s ended a voice broadcast", + "you": "You ended a voice broadcast" }, - "alias_not_specified": "not specified", - "bridges": { - "description": "This room is bridging messages to the following platforms. Learn more.", - "empty": "This room isn't bridging messages to any platforms. Learn more.", - "title": "Bridges" + "m.call.answer": { + "dm": "Call in progress", + "user": "%(senderName)s joined the call", + "you": "You joined the call" }, - "delete_avatar_label": "Delete avatar", - "general": { - "alias_field_has_domain_invalid": "Missing domain separator e.g. (:domain.org)", - "alias_field_has_localpart_invalid": "Missing room name or separator e.g. (my-room:domain.org)", - "alias_field_matches_invalid": "This address does not point at this room", - "alias_field_placeholder_default": "e.g. my-room", - "alias_field_required_invalid": "Please provide an address", - "alias_field_safe_localpart_invalid": "Some characters not allowed", - "alias_field_taken_invalid": "This address had invalid server or is already in use", - "alias_field_taken_invalid_domain": "This address is already in use", - "alias_field_taken_valid": "This address is available to use", - "alias_heading": "Room address", - "aliases_items_label": "Other published addresses:", - "aliases_no_items_label": "No other published addresses yet, add one below", - "aliases_section": "Room Addresses", - "avatar_field_label": "Room avatar", - "canonical_alias_field_label": "Main address", - "default_url_previews_off": "URL previews are disabled by default for participants in this room.", - "default_url_previews_on": "URL previews are enabled by default for participants in this room.", - "description_space": "Edit settings relating to your space.", - "error_creating_alias_description": "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.", - "error_creating_alias_title": "Error creating address", - "error_deleting_alias_description": "There was an error removing that address. It may no longer exist or a temporary error occurred.", - "error_deleting_alias_description_forbidden": "You don't have permission to delete the address.", - "error_deleting_alias_title": "Error removing address", - "error_save_space_settings": "Failed to save space settings.", - "error_updating_alias_description": "There was an error updating the room's alternative addresses. It may not be allowed by the server or a temporary failure occurred.", - "error_updating_canonical_alias_description": "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_canonical_alias_title": "Error updating main address", - "leave_space": "Leave Space", - "local_alias_field_label": "Local address", - "local_aliases_explainer_room": "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)", - "local_aliases_explainer_space": "Set addresses for this space so users can find this space through your homeserver (%(localDomain)s)", - "local_aliases_section": "Local Addresses", - "name_field_label": "Room Name", - "new_alias_placeholder": "New published address (e.g. #alias:server)", - "no_aliases_room": "This room has no local addresses", - "no_aliases_space": "This space has no local addresses", - "other_section": "Other", - "publish_toggle": "Publish this room to the public in %(domain)s's room directory?", - "published_aliases_description": "To publish an address, it needs to be set as a local address first.", - "published_aliases_explainer_room": "Published addresses can be used by anyone on any server to join your room.", - "published_aliases_explainer_space": "Published addresses can be used by anyone on any server to join your space.", - "published_aliases_section": "Published Addresses", - "save": "Save Changes", - "topic_field_label": "Room Topic", - "url_preview_encryption_warning": "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.", - "url_preview_explainer": "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.", - "url_previews_section": "URL Previews", - "user_url_previews_default_off": "You have disabled URL previews by default.", - "user_url_previews_default_on": "You have enabled URL previews by default." + "m.call.hangup": { + "user": "%(senderName)s ended the call", + "you": "You ended the call" }, - "notifications": { - "browse_button": "Browse", - "custom_sound_prompt": "Set a new custom sound", - "notification_sound": "Notification sound", - "settings_link": "Get notifications as set up in your settings", - "sounds_section": "Sounds", - "upload_sound_label": "Upload custom sound", - "uploaded_sound": "Uploaded sound" + "m.call.invite": { + "dm_receive": "%(senderName)s is calling", + "dm_send": "Waiting for answer", + "user": "%(senderName)s started a call", + "you": "You started a call" }, - "people": { - "knock_empty": "No requests", - "knock_section": "Asking to join", - "see_less": "See less", - "see_more": "See more" + "m.emote": "* %(senderName)s %(emote)s", + "m.reaction": { + "user": "%(sender)s reacted %(reaction)s to %(message)s", + "you": "You reacted %(reaction)s to %(message)s" }, - "permissions": { - "add_privileged_user_description": "Give one or multiple users in this room more privileges", - "add_privileged_user_filter_placeholder": "Search users in this room…", - "add_privileged_user_heading": "Add privileged users", - "ban": "Ban users", - "ban_reason": "Reason", - "banned_by": "Banned by %(displayName)s", - "banned_users_section": "Banned users", - "error_changing_pl_description": "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.", - "error_changing_pl_reqs_description": "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.", - "error_changing_pl_reqs_title": "Error changing power level requirement", - "error_changing_pl_title": "Error changing power level", - "error_unbanning": "Failed to unban", - "events_default": "Send messages", - "invite": "Invite users", - "io.element.voice_broadcast_info": "Voice broadcasts", - "kick": "Remove users", - "m.call": "Start %(brand)s calls", - "m.call.member": "Join %(brand)s calls", - "m.reaction": "Send reactions", - "m.room.avatar": "Change room avatar", - "m.room.avatar_space": "Change space avatar", - "m.room.canonical_alias": "Change main address for the room", - "m.room.canonical_alias_space": "Change main address for the space", - "m.room.encryption": "Enable room encryption", - "m.room.history_visibility": "Change history visibility", - "m.room.name": "Change room name", - "m.room.name_space": "Change space name", - "m.room.pinned_events": "Manage pinned events", - "m.room.power_levels": "Change permissions", - "m.room.redaction": "Remove messages sent by me", - "m.room.server_acl": "Change server ACLs", - "m.room.tombstone": "Upgrade the room", - "m.room.topic": "Change topic", - "m.room.topic_space": "Change description", - "m.space.child": "Manage rooms in this space", - "m.widget": "Modify widgets", - "muted_users_section": "Muted Users", - "no_privileged_users": "No users have specific privileges in this room", - "notifications.room": "Notify everyone", - "permissions_section": "Permissions", - "permissions_section_description_room": "Select the roles required to change various parts of the room", - "permissions_section_description_space": "Select the roles required to change various parts of the space", - "privileged_users_section": "Privileged Users", - "redact": "Remove messages sent by others", - "send_event_type": "Send %(eventType)s events", - "state_default": "Change settings", - "title": "Roles & Permissions", - "users_default": "Default role" - }, - "security": { - "enable_encryption_confirm_description": "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.", - "enable_encryption_confirm_title": "Enable encryption?", - "enable_encryption_public_room_confirm_description_1": "It's not recommended to add encryption to public rooms. Anyone can find and join public rooms, so anyone can read messages in them. You'll get none of the benefits of encryption, and you won't be able to turn it off later. Encrypting messages in a public room will make receiving and sending messages slower.", - "enable_encryption_public_room_confirm_description_2": "To avoid these issues, create a new encrypted room for the conversation you plan to have.", - "enable_encryption_public_room_confirm_title": "Are you sure you want to add encryption to this public room?", - "encrypted_room_public_confirm_description_1": "It's not recommended to make encrypted rooms public. It will mean anyone can find and join the room, so anyone can read messages. You'll get none of the benefits of encryption. Encrypting messages in a public room will make receiving and sending messages slower.", - "encrypted_room_public_confirm_description_2": "To avoid these issues, create a new public room for the conversation you plan to have.", - "encrypted_room_public_confirm_title": "Are you sure you want to make this encrypted room public?", - "encryption_forced": "Your server requires encryption to be disabled.", - "encryption_permanent": "Once enabled, encryption cannot be disabled.", - "error_join_rule_change_title": "Failed to update the join rules", - "error_join_rule_change_unknown": "Unknown failure", - "guest_access_warning": "People with supported clients will be able to join the room without having a registered account.", - "history_visibility_invited": "Members only (since they were invited)", - "history_visibility_joined": "Members only (since they joined)", - "history_visibility_legend": "Who can read history?", - "history_visibility_shared": "Members only (since the point in time of selecting this option)", - "history_visibility_warning": "Changes to who can read history will only apply to future messages in this room. The visibility of existing history will be unchanged.", - "history_visibility_world_readable": "Anyone", - "join_rule_description": "Decide who can join %(roomName)s.", - "join_rule_invite": "Private (invite only)", - "join_rule_invite_description": "Only invited people can join.", - "join_rule_knock": "Ask to join", - "join_rule_knock_description": "People cannot join unless access is granted.", - "join_rule_public_description": "Anyone can find and join.", - "join_rule_restricted": "Space members", - "join_rule_restricted_description": "Anyone in a space can find and join. Edit which spaces can access here.", - "join_rule_restricted_description_active_space": "Anyone in can find and join. You can select other spaces too.", - "join_rule_restricted_description_prompt": "Anyone in a space can find and join. You can select multiple spaces.", - "join_rule_restricted_description_spaces": "Spaces with access", - "join_rule_restricted_dialog_description": "Decide which spaces can access this room. If a space is selected, its members can find and join .", - "join_rule_restricted_dialog_empty_warning": "You're removing all spaces. Access will default to invite only", - "join_rule_restricted_dialog_filter_placeholder": "Search spaces", - "join_rule_restricted_dialog_heading_known": "Other spaces you know", - "join_rule_restricted_dialog_heading_other": "Other spaces or rooms you might not know", - "join_rule_restricted_dialog_heading_room": "Spaces you know that contain this room", - "join_rule_restricted_dialog_heading_space": "Spaces you know that contain this space", - "join_rule_restricted_dialog_heading_unknown": "These are likely ones other room admins are a part of.", - "join_rule_restricted_dialog_title": "Select spaces", - "join_rule_restricted_n_more": { - "one": "& %(count)s more", - "other": "& %(count)s more" - }, - "join_rule_restricted_summary": { - "one": "Currently, a space has access", - "other": "Currently, %(count)s spaces have access" - }, - "join_rule_restricted_upgrade_description": "This upgrade will allow members of selected spaces access to this room without an invite.", - "join_rule_restricted_upgrade_warning": "This room is in some spaces you're not an admin of. In those spaces, the old room will still be shown, but people will be prompted to join the new one.", - "join_rule_upgrade_awaiting_room": "Loading new room", - "join_rule_upgrade_required": "Upgrade required", - "join_rule_upgrade_sending_invites": { - "one": "Sending invite...", - "other": "Sending invites... (%(progress)s out of %(count)s)" - }, - "join_rule_upgrade_updating_spaces": { - "one": "Updating space...", - "other": "Updating spaces... (%(progress)s out of %(count)s)" - }, - "join_rule_upgrade_upgrading_room": "Upgrading room", - "public_without_alias_warning": "To link to this room, please add an address.", - "publish_room": "Make this room visible in the public room directory.", - "publish_space": "Make this space visible in the public room directory.", - "strict_encryption": "Never send encrypted messages to unverified sessions in this room from this session", - "title": "Security & Privacy" - }, - "title": "Room Settings - %(roomName)s", - "upload_avatar_label": "Upload avatar", - "visibility": { - "alias_section": "Address", - "error_failed_save": "Failed to update the visibility of this space", - "error_update_guest_access": "Failed to update the guest access of this space", - "error_update_history_visibility": "Failed to update the history visibility of this space", - "guest_access_explainer": "Guests can join a space without having an account.", - "guest_access_explainer_public_space": "This may be useful for public spaces.", - "guest_access_label": "Enable guest access", - "history_visibility_anyone_space": "Preview Space", - "history_visibility_anyone_space_description": "Allow people to preview your space before they join.", - "history_visibility_anyone_space_recommendation": "Recommended for public spaces.", - "title": "Visibility" - }, - "voip": { - "call_type_section": "Call type", - "enable_element_call_caption": "%(brand)s is end-to-end encrypted, but is currently limited to smaller numbers of users.", - "enable_element_call_label": "Enable %(brand)s as an additional calling option in this room", - "enable_element_call_no_permissions_tooltip": "You do not have sufficient permissions to change this." - } + "m.sticker": "%(senderName)s: %(stickerName)s", + "m.text": "%(senderName)s: %(message)s" }, - "room_list": { - "add_room_label": "Add room", - "add_space_label": "Add space", - "breadcrumbs_empty": "No recently visited rooms", - "breadcrumbs_label": "Recently visited rooms", - "failed_add_tag": "Failed to add tag %(tagName)s to room", - "failed_remove_tag": "Failed to remove tag %(tagName)s from room", - "failed_set_dm_tag": "Failed to set direct message tag", - "home_menu_label": "Home options", - "join_public_room_label": "Join public room", - "joining_rooms_status": { - "one": "Currently joining %(count)s room", - "other": "Currently joining %(count)s rooms" - }, - "notification_options": "Notification options", - "redacting_messages_status": { - "one": "Currently removing messages in %(count)s room", - "other": "Currently removing messages in %(count)s rooms" - }, - "show_less": "Show less", - "show_n_more": { - "one": "Show %(count)s more", - "other": "Show %(count)s more" + "export_chat": { + "cancelled": "Export Cancelled", + "cancelled_detail": "The export was cancelled successfully", + "confirm_stop": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", + "creating_html": "Creating HTML…", + "creating_output": "Creating output…", + "creator_summary": "%(creatorName)s created this room.", + "current_timeline": "Current Timeline", + "enter_number_between_min_max": "Enter a number between %(min)s and %(max)s", + "error_fetching_file": "Error fetching file", + "export_info": "This is the start of export of . Exported by at %(exportDate)s.", + "export_successful": "Export successful!", + "exported_n_events_in_time": { + "one": "Exported %(count)s event in %(seconds)s seconds", + "other": "Exported %(count)s events in %(seconds)s seconds" }, - "show_previews": "Show previews of messages", - "sort_by": "Sort by", - "sort_by_activity": "Activity", - "sort_by_alphabet": "A-Z", - "sort_unread_first": "Show rooms with unread messages first", - "space_menu_label": "%(spaceName)s menu", - "sublist_options": "List options", - "suggested_rooms_heading": "Suggested Rooms" - }, - "room": { - "3pid_invite_email_not_found_account": "This invite was sent to %(email)s which is not associated with your account", - "3pid_invite_email_not_found_account_room": "This invite to %(roomName)s was sent to %(email)s which is not associated with your account", - "3pid_invite_error_description": "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to the person who invited you.", - "3pid_invite_error_invite_action": "Try to join anyway", - "3pid_invite_error_invite_subtitle": "You can only join it with a working invite.", - "3pid_invite_error_public_subtitle": "You can still join here.", - "3pid_invite_error_title": "Something went wrong with your invite.", - "3pid_invite_error_title_room": "Something went wrong with your invite to %(roomName)s", - "3pid_invite_no_is_subtitle": "Use an identity server in Settings to receive invites directly in %(brand)s.", - "banned_by": "You were banned by %(memberName)s", - "banned_from_room_by": "You were banned from %(roomName)s by %(memberName)s", - "context_menu": { - "copy_link": "Copy room link", - "favourite": "Favourite", - "forget": "Forget Room", - "low_priority": "Low Priority", - "mark_read": "Mark as read", - "mentions_only": "Mentions only", - "notifications_default": "Match default setting", - "notifications_mute": "Mute room", - "title": "Room options", - "unfavourite": "Favourited" + "exporting_your_data": "Exporting your data", + "fetched_n_events": { + "one": "Fetched %(count)s event so far", + "other": "Fetched %(count)s events so far" }, - "creating_room_text": "We're creating a room with %(names)s", - "dm_invite_action": "Start chatting", - "dm_invite_subtitle": " wants to chat", - "dm_invite_title": "Do you want to chat with %(user)s?", - "drop_file_prompt": "Drop file here to upload", - "edit_topic": "Edit topic", - "error_3pid_invite_email_lookup": "Unable to find user by email", - "error_cancel_knock_title": "Failed to cancel", - "error_join_403": "You need an invite to access this room.", - "error_join_404_1": "You attempted to join using a room ID without providing a list of servers to join through. Room IDs are internal identifiers and cannot be used to join a room without additional information.", - "error_join_404_2": "If you know a room address, try joining through that instead.", - "error_join_404_invite": "The person who invited you has already left, or their server is offline.", - "error_join_404_invite_same_hs": "The person who invited you has already left.", - "error_join_connection": "There was an error joining.", - "error_join_incompatible_version_1": "Sorry, your homeserver is too old to participate here.", - "error_join_incompatible_version_2": "Please contact your homeserver administrator.", - "error_join_title": "Failed to join", - "error_jump_to_date": "Server returned %(statusCode)s with error code %(errorCode)s", - "error_jump_to_date_connection": "A network error occurred while trying to find and jump to the given date. Your homeserver might be down or there was just a temporary problem with your internet connection. Please try again. If this continues, please contact your homeserver administrator.", - "error_jump_to_date_details": "Error details", - "error_jump_to_date_not_found": "We were unable to find an event looking forwards from %(dateString)s. Try choosing an earlier date.", - "error_jump_to_date_send_logs_prompt": "Please submit debug logs to help us track down the problem.", - "error_jump_to_date_title": "Unable to find event at that date", - "face_pile_summary": { - "one": "%(count)s person you know has already joined", - "other": "%(count)s people you know have already joined" + "fetched_n_events_in_time": { + "one": "Fetched %(count)s event in %(seconds)ss", + "other": "Fetched %(count)s events in %(seconds)ss" }, - "face_pile_tooltip_label": { - "one": "View 1 member", - "other": "View all %(count)s members" + "fetched_n_events_with_total": { + "one": "Fetched %(count)s event out of %(total)s", + "other": "Fetched %(count)s events out of %(total)s" }, - "face_pile_tooltip_shortcut": "Including %(commaSeparatedMembers)s", - "face_pile_tooltip_shortcut_joined": "Including you, %(commaSeparatedMembers)s", - "failed_reject_invite": "Failed to reject invite", - "forget_room": "Forget this room", - "forget_space": "Forget this space", - "header": { - "close_call_button": "Close call", - "forget_room_button": "Forget room", - "hide_widgets_button": "Hide Widgets", - "n_people_asking_to_join": { - "one": "Asking to join", - "other": "%(count)s people asking to join" - }, - "room_is_public": "This room is public", - "show_widgets_button": "Show Widgets", - "video_call_button_ec": "Video call (%(brand)s)", - "video_call_button_jitsi": "Video call (Jitsi)", - "video_call_ec_change_layout": "Change layout", - "video_call_ec_layout_freedom": "Freedom", - "video_call_ec_layout_spotlight": "Spotlight", - "video_room_view_chat_button": "View chat timeline" - }, - "header_untrusted_label": "Untrusted", - "inaccessible": "This room or space is not accessible at this time.", - "inaccessible_name": "%(roomName)s is not accessible at this time.", - "inaccessible_subtitle_1": "Try again later, or ask a room or space admin to check if you have access.", - "inaccessible_subtitle_2": "%(errcode)s was returned while trying to access the room or space. If you think you're seeing this message in error, please submit a bug report.", - "intro": { - "dm_caption": "Only the two of you are in this conversation, unless either of you invites anyone to join.", - "enable_encryption_prompt": "Enable encryption in settings.", - "encrypted_3pid_dm_pending_join": "Once everyone has joined, you’ll be able to chat", - "no_avatar_label": "Add a photo, so people can easily spot your room.", - "no_topic": "Add a topic to help people know what it is about.", - "private_unencrypted_warning": "Your private messages are normally encrypted, but this room isn't. Usually this is due to an unsupported device or method being used, like email invites.", - "room_invite": "Invite to just this room", - "send_message_start_dm": "Send your first message to invite to chat", - "start_of_dm_history": "This is the beginning of your direct message history with .", - "start_of_room": "This is the start of .", - "topic": "Topic: %(topic)s ", - "topic_edit": "Topic: %(topic)s (edit)", - "unencrypted_warning": "End-to-end encryption isn't enabled", - "user_created": "%(displayName)s created this room.", - "you_created": "You created this room." - }, - "invite_email_mismatch_suggestion": "Share this email in Settings to receive invites directly in %(brand)s.", - "invite_reject_ignore": "Reject & Ignore user", - "invite_sent_to_email": "This invite was sent to %(email)s", - "invite_sent_to_email_room": "This invite to %(roomName)s was sent to %(email)s", - "invite_subtitle": " invited you", - "invite_this_room": "Invite to this room", - "invite_title": "Do you want to join %(roomName)s?", - "inviter_unknown": "Unknown", - "invites_you_text": " invites you", - "join_button_account": "Sign Up", - "join_failed_enable_video_rooms": "To join, please enable video rooms in Labs first", - "join_failed_needs_invite": "To view %(roomName)s, you need an invite", - "join_the_discussion": "Join the discussion", - "join_title": "Join the room to participate", - "join_title_account": "Join the conversation with an account", - "joining": "Joining…", - "joining_room": "Joining room…", - "joining_space": "Joining space…", - "jump_read_marker": "Jump to first unread message.", - "jump_to_bottom_button": "Scroll to most recent messages", - "jump_to_date": "Jump to date", - "jump_to_date_beginning": "The beginning of the room", - "jump_to_date_prompt": "Pick a date to jump to", - "kick_reason": "Reason: %(reason)s", - "kicked_by": "You were removed by %(memberName)s", - "kicked_from_room_by": "You were removed from %(roomName)s by %(memberName)s", - "knock_cancel_action": "Cancel request", - "knock_denied_subtitle": "As you have been denied access, you cannot rejoin unless you are invited by the admin or moderator of the group.", - "knock_denied_title": "You have been denied access", - "knock_message_field_placeholder": "Message (optional)", - "knock_prompt": "Ask to join?", - "knock_prompt_name": "Ask to join %(roomName)s?", - "knock_send_action": "Request access", - "knock_sent": "Request to join sent", - "knock_sent_subtitle": "Your request to join is pending.", - "knock_subtitle": "You need to be granted access to this room in order to view or participate in the conversation. You can send a request to join below.", - "leave_error_title": "Error leaving room", - "leave_server_notices_description": "This room is used for important messages from the Homeserver, so you cannot leave it.", - "leave_server_notices_title": "Can't leave Server Notices room", - "leave_unexpected_error": "Unexpected server error trying to leave the room", - "link_email_to_receive_3pid_invite": "Link this email with your account in Settings to receive invites directly in %(brand)s.", - "loading_preview": "Loading preview", - "no_peek_join_prompt": "%(roomName)s can't be previewed. Do you want to join it?", - "no_peek_no_name_join_prompt": "There's no preview, would you like to join?", - "not_found_subtitle": "Are you sure you're at the right place?", - "not_found_title": "This room or space does not exist.", - "not_found_title_name": "%(roomName)s does not exist.", - "peek_join_prompt": "You're previewing %(roomName)s. Want to join it?", - "read_topic": "Click to read topic", - "rejecting": "Rejecting invite…", - "rejoin_button": "Re-join", - "search": { - "all_rooms": "All Rooms", - "all_rooms_button": "Search all rooms", - "field_placeholder": "Search…", - "result_count": { - "one": "(~%(count)s result)", - "other": "(~%(count)s results)" - }, - "this_room": "This Room", - "this_room_button": "Search this room" - }, - "show_labs_settings": "Show Labs settings", - "status_bar": { - "delete_all": "Delete all", - "exceeded_resource_limit": "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.", - "homeserver_blocked": "Your message wasn't sent because this homeserver has been blocked by its administrator. Please contact your service administrator to continue using the service.", - "monthly_user_limit_reached": "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.", - "requires_consent_agreement": "You can't send any messages until you review and agree to our terms and conditions.", - "retry_all": "Retry all", - "select_messages_to_retry": "You can select all or individual messages to retry or delete", - "server_connectivity_lost_description": "Sent messages will be stored until your connection has returned.", - "server_connectivity_lost_title": "Connectivity to the server has been lost.", - "some_messages_not_sent": "Some of your messages have not been sent" - }, - "unknown_status_code_for_timeline_jump": "unknown status code", - "unread_notifications_predecessor": { - "one": "You have %(count)s unread notification in a prior version of this room.", - "other": "You have %(count)s unread notifications in a prior version of this room." - }, - "upgrade_error_description": "Double check that your server supports the room version chosen and try again.", - "upgrade_error_title": "Error upgrading room", - "upgrade_warning_bar": "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.", - "upgrade_warning_bar_admins": "Only room administrators will see this warning", - "upgrade_warning_bar_unstable": "This room is running room version , which this homeserver has marked as unstable.", - "upgrade_warning_bar_upgraded": "This room has already been upgraded.", - "upload": { - "uploading_multiple_file": { - "one": "Uploading %(filename)s and %(count)s other", - "other": "Uploading %(filename)s and %(count)s others" - }, - "uploading_single_file": "Uploading %(filename)s" - }, - "view_failed_enable_video_rooms": "To view, please enable video rooms in Labs first", - "waiting_for_join_subtitle": "Once invited users have joined %(brand)s, you will be able to chat and the room will be end-to-end encrypted", - "waiting_for_join_title": "Waiting for users to join %(brand)s" + "fetching_events": "Fetching events…", + "file_attached": "File Attached", + "format": "Format", + "from_the_beginning": "From the beginning", + "generating_zip": "Generating a ZIP", + "html": "HTML", + "html_title": "Exported Data", + "include_attachments": "Include Attachments", + "json": "JSON", + "media_omitted": "Media omitted", + "media_omitted_file_size": "Media omitted - file size limit exceeded", + "messages": "Messages", + "next_page": "Next group of messages", + "num_messages": "Number of messages", + "num_messages_min_max": "Number of messages can only be a number between %(min)s and %(max)s", + "number_of_messages": "Specify a number of messages", + "previous_page": "Previous group of messages", + "processing": "Processing…", + "processing_event_n": "Processing event %(number)s out of %(total)s", + "select_option": "Select from the options below to export chats from your timeline", + "size_limit": "Size Limit", + "size_limit_min_max": "Size can only be a number between %(min)s MB and %(max)s MB", + "size_limit_postfix": "MB", + "starting_export": "Starting export…", + "successful": "Export Successful", + "successful_detail": "Your export was successful. Find it in your Downloads folder.", + "text": "Plain Text", + "title": "Export Chat", + "topic": "Topic: %(topic)s", + "unload_confirm": "Are you sure you want to exit during this export?" }, - "right_panel": { - "add_integrations": "Add widgets, bridges & bots", - "edit_integrations": "Edit widgets, bridges & bots", - "export_chat_button": "Export chat", - "files_button": "Files", - "pinned_messages": { - "empty": "Nothing pinned, yet", - "explainer": "If you have permissions, open the menu on any message and select Pin to stick them here.", - "limits": { - "other": "You can only pin up to %(count)s widgets" - }, - "title": "Pinned messages" - }, - "pinned_messages_button": "Pinned", - "poll": { - "active_heading": "Active polls", - "empty_active": "There are no active polls in this room", - "empty_active_load_more": "There are no active polls. Load more polls to view polls for previous months", - "empty_active_load_more_n_days": { - "one": "There are no active polls for the past day. Load more polls to view polls for previous months", - "other": "There are no active polls for the past %(count)s days. Load more polls to view polls for previous months" - }, - "empty_past": "There are no past polls in this room", - "empty_past_load_more": "There are no past polls. Load more polls to view polls for previous months", - "empty_past_load_more_n_days": { - "one": "There are no past polls for the past day. Load more polls to view polls for previous months", - "other": "There are no past polls for the past %(count)s days. Load more polls to view polls for previous months" - }, - "final_result": { - "one": "Final result based on %(count)s vote", - "other": "Final result based on %(count)s votes" - }, - "load_more": "Load more polls", - "loading": "Loading polls", - "past_heading": "Past polls", - "view_in_timeline": "View poll in timeline", - "view_poll": "View poll" - }, - "polls_button": "Poll history", - "room_summary_card": { - "title": "Room info" - }, - "search_button": "Search", - "settings_button": "Room settings", - "share_button": "Share room", - "thread_list": { - "context_menu_label": "Thread options" - }, - "video_room_chat": { - "title": "Chat" - }, - "widgets_section": "Widgets" + "failed_load_async_component": "Unable to load! Check your network connectivity and try again.", + "feedback": { + "can_contact_label": "You may contact me if you have any follow up questions", + "comment_label": "Comment", + "existing_issue_link": "Please view existing bugs on Github first. No match? Start a new one.", + "may_contact_label": "You may contact me if you want to follow up or to let me test out upcoming ideas", + "platform_username": "Your platform and username will be noted to help us use your feedback as much as we can.", + "pro_type": "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.", + "send_feedback_action": "Send feedback", + "sent": "Feedback sent! Thanks, we appreciate it!" }, - "restore_key_backup_dialog": { - "count_of_decryption_failures": "Failed to decrypt %(failedCount)s sessions!", - "count_of_successfully_restored_keys": "Successfully restored %(sessionCount)s keys", - "enter_key_description": "Access your secure message history and set up secure messaging by entering your Security Key.", - "enter_key_title": "Enter Security Key", - "enter_phrase_description": "Access your secure message history and set up secure messaging by entering your Security Phrase.", - "enter_phrase_title": "Enter Security Phrase", - "incorrect_security_phrase_dialog": "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.", - "incorrect_security_phrase_title": "Incorrect Security Phrase", - "key_backup_warning": "Warning: you should only set up key backup from a trusted computer.", - "key_fetch_in_progress": "Fetching keys from server…", - "key_forgotten_text": "If you've forgotten your Security Key you can ", - "key_is_invalid": "Not a valid Security Key", - "key_is_valid": "This looks like a valid Security Key!", - "keys_restored_title": "Keys restored", - "load_error_content": "Unable to load backup status", - "load_keys_progress": "%(completed)s of %(total)s keys restored", - "no_backup_error": "No backup found!", - "phrase_forgotten_text": "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options", - "recovery_key_mismatch_description": "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.", - "recovery_key_mismatch_title": "Security Key mismatch", - "restore_failed_error": "Unable to restore backup" + "file_panel": { + "empty_description": "Attach files from chat or just drag and drop them anywhere in a room.", + "empty_heading": "No files visible in this room", + "guest_note": "You must register to use this functionality", + "peek_note": "You must join the room to see its files" }, - "report_content": { - "description": "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.", - "disagree": "Disagree", - "error_create_room_moderation_bot": "Unable to create room with moderation bot", - "hide_messages_from_user": "Check if you want to hide all current and future messages from this user.", - "ignore_user": "Ignore user", - "illegal_content": "Illegal Content", - "missing_reason": "Please fill why you're reporting.", - "nature": "Please pick a nature and describe what makes this message abusive.", - "nature_disagreement": "What this user is writing is wrong.\nThis will be reported to the room moderators.", - "nature_illegal": "This user is displaying illegal behaviour, for instance by doxing people or threatening violence.\nThis will be reported to the room moderators who may escalate this to legal authorities.", - "nature_nonstandard_admin": "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s.", - "nature_nonstandard_admin_encrypted": "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s. The administrators will NOT be able to read the encrypted content of this room.", - "nature_other": "Any other reason. Please describe the problem.\nThis will be reported to the room moderators.", - "nature_spam": "This user is spamming the room with ads, links to ads or to propaganda.\nThis will be reported to the room moderators.", - "nature_toxic": "This user is displaying toxic behaviour, for instance by insulting other users or sharing adult-only content in a family-friendly room or otherwise violating the rules of this room.\nThis will be reported to the room moderators.", - "other_label": "Other", - "report_content_to_homeserver": "Report Content to Your Homeserver Administrator", - "report_entire_room": "Report the entire room", - "spam_or_propaganda": "Spam or propaganda", - "toxic_behaviour": "Toxic Behaviour" - }, - "reject_invitation_dialog": { - "confirmation": "Are you sure you want to reject the invitation?", - "failed": "Failed to reject invitation", - "title": "Reject invitation" + "forward": { + "filter_placeholder": "Search for rooms or people", + "message_preview_heading": "Message preview", + "no_perms_title": "You don't have permission to do this", + "open_room": "Open room", + "send_label": "Send", + "sending": "Sending", + "sent": "Sent" }, - "redact": { - "confirm_button": "Confirm Removal", - "confirm_description": "Are you sure you wish to remove (delete) this event?", - "confirm_description_state": "Note that removing room changes like this could undo the change.", - "error": "You cannot delete this message. (%(code)s)", - "ongoing": "Removing…", - "reason_label": "Reason (optional)" + "identity_server": { + "change": "Change identity server", + "change_prompt": "Disconnect from the identity server and connect to instead?", + "change_server_prompt": "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.", + "checking": "Checking server", + "description_connected": "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.", + "description_disconnected": "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.", + "description_optional": "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.", + "disconnect": "Disconnect identity server", + "disconnect_anyway": "Disconnect anyway", + "disconnect_offline_warning": "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.", + "disconnect_personal_data_warning_1": "You are still sharing your personal data on the identity server .", + "disconnect_personal_data_warning_2": "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.", + "disconnect_server": "Disconnect from the identity server ?", + "disconnect_warning": "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.", + "do_not_use": "Do not use an identity server", + "error_connection": "Could not connect to identity server", + "error_invalid": "Not a valid identity server (status code %(code)s)", + "error_invalid_or_terms": "Terms of service not accepted or the identity server is invalid.", + "no_terms": "The identity server you have chosen does not have any terms of service.", + "suggestions": "You should:", + "suggestions_1": "check your browser plugins for anything that might block the identity server (such as Privacy Badger)", + "suggestions_2": "contact the administrators of identity server ", + "suggestions_3": "wait and try again later", + "url": "Identity server (%(server)s)", + "url_field_label": "Enter a new identity server", + "url_not_https": "Identity server URL must be HTTPS" }, - "quit_warning": { - "call_in_progress": "You seem to be in a call, are you sure you want to quit?", - "file_upload_in_progress": "You seem to be uploading files, are you sure you want to quit?" + "in_space": "In %(spaceName)s.", + "in_space1_and_space2": "In spaces %(space1Name)s and %(space2Name)s.", + "in_space_and_n_other_spaces": { + "one": "In %(spaceName)s and one other space.", + "other": "In %(spaceName)s and %(count)s other spaces." }, - "quick_settings": { - "all_settings": "All settings", - "metaspace_section": "Pin to sidebar", - "sidebar_settings": "More options", - "title": "Quick settings" + "info_tooltip_title": "Information", + "integration_manager": { + "connecting": "Connecting to integration manager…", + "error_connecting": "The integration manager is offline or it cannot reach your homeserver.", + "error_connecting_heading": "Cannot connect to integration manager", + "explainer": "Integration managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.", + "manage_title": "Manage integrations", + "use_im": "Use an integration manager to manage bots, widgets, and sticker packs.", + "use_im_default": "Use an integration manager (%(serverName)s) to manage bots, widgets, and sticker packs." }, - "presence": { - "away": "Away", - "busy": "Busy", - "idle": "Idle", - "idle_for": "Idle for %(duration)s", - "offline": "Offline", - "offline_for": "Offline for %(duration)s", - "online": "Online", - "online_for": "Online for %(duration)s", - "unknown": "Unknown", - "unknown_for": "Unknown for %(duration)s" + "integrations": { + "disabled_dialog_description": "Enable '%(manageIntegrations)s' in Settings to do this.", + "disabled_dialog_title": "Integrations are disabled", + "impossible_dialog_description": "Your %(brand)s doesn't allow you to use an integration manager to do this. Please contact an admin.", + "impossible_dialog_title": "Integrations not allowed" }, - "power_level": { - "admin": "Admin", - "custom": "Custom (%(level)s)", - "custom_level": "Custom level", - "default": "Default", - "label": "Power level", - "mod": "Mod", - "moderator": "Moderator", - "restricted": "Restricted" + "invite": { + "ask_anyway_description": "Unable to find profiles for the Matrix IDs listed below - would you like to start a DM anyway?", + "ask_anyway_label": "Start DM anyway", + "ask_anyway_never_warn_label": "Start DM anyway and never warn me again", + "email_caption": "Invite by email", + "email_limit_one": "Invites by email can only be sent one at a time", + "email_use_default_is": "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.", + "email_use_is": "Use an identity server to invite by email. Manage in Settings.", + "error_already_invited_room": "User is already invited to the room", + "error_already_invited_space": "User is already invited to the space", + "error_already_joined_room": "User is already in the room", + "error_already_joined_space": "User is already in the space", + "error_bad_state": "The user must be unbanned before they can be invited.", + "error_dm": "We couldn't create your DM.", + "error_find_room": "Something went wrong trying to invite the users.", + "error_find_user_description": "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s", + "error_find_user_title": "Failed to find the following users", + "error_invite": "We couldn't invite those users. Please check the users you want to invite and try again.", + "error_permissions_room": "You do not have permission to invite people to this room.", + "error_permissions_space": "You do not have permission to invite people to this space.", + "error_profile_undisclosed": "User may or may not exist", + "error_transfer_multiple_target": "A call can only be transferred to a single user.", + "error_unfederated_room": "This room is unfederated. You cannot invite people from external servers.", + "error_unfederated_space": "This space is unfederated. You cannot invite people from external servers.", + "error_unknown": "Unknown server error", + "error_user_not_found": "User does not exist", + "error_version_unsupported_room": "The user's homeserver does not support the version of the room.", + "error_version_unsupported_space": "The user's homeserver does not support the version of the space.", + "failed_generic": "Operation failed", + "failed_title": "Failed to invite", + "invalid_address": "Unrecognised address", + "key_share_warning": "Invited people will be able to read old messages.", + "name_email_mxid_share_room": "Invite someone using their name, email address, username (like ) or share this room.", + "name_email_mxid_share_space": "Invite someone using their name, email address, username (like ) or share this space.", + "name_mxid_share_room": "Invite someone using their name, username (like ) or share this room.", + "name_mxid_share_space": "Invite someone using their name, username (like ) or share this space.", + "recents_section": "Recent Conversations", + "room_failed_partial": "We sent the others, but the below people couldn't be invited to ", + "room_failed_partial_title": "Some invites couldn't be sent", + "room_failed_title": "Failed to invite users to %(roomName)s", + "send_link_prompt": "Or send invite link", + "start_conversation_name_email_mxid_prompt": "Start a conversation with someone using their name, email address or username (like ).", + "start_conversation_name_mxid_prompt": "Start a conversation with someone using their name or username (like ).", + "suggestions_disclaimer": "Some suggestions may be hidden for privacy.", + "suggestions_disclaimer_prompt": "If you can't see who you're looking for, send them your invite link below.", + "suggestions_section": "Recently Direct Messaged", + "to_room": "Invite to %(roomName)s", + "to_space": "Invite to %(spaceName)s", + "transfer_dial_pad_tab": "Dial pad", + "transfer_user_directory_tab": "User Directory", + "unable_find_profiles_description_default": "Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?", + "unable_find_profiles_invite_label_default": "Invite anyway", + "unable_find_profiles_invite_never_warn_label_default": "Invite anyway and never warn me again", + "unable_find_profiles_title": "The following users may not exist", + "unban_first_title": "User cannot be invited until they are unbanned" }, - "poll": { - "create_poll_action": "Create Poll", - "create_poll_title": "Create poll", - "disclosed_notes": "Voters see results as soon as they have voted", - "edit_poll_title": "Edit poll", - "end_description": "Are you sure you want to end this poll? This will show the final results of the poll and stop people from being able to vote.", - "end_message": "The poll has ended. Top answer: %(topAnswer)s", - "end_message_no_votes": "The poll has ended. No votes were cast.", - "end_title": "End Poll", - "error_ending_description": "Sorry, the poll did not end. Please try again.", - "error_ending_title": "Failed to end poll", - "error_voting_description": "Sorry, your vote was not registered. Please try again.", - "error_voting_title": "Vote not registered", - "failed_send_poll_description": "Sorry, the poll you tried to create was not posted.", - "failed_send_poll_title": "Failed to post poll", - "notes": "Results are only revealed when you end the poll", - "options_add_button": "Add option", - "options_heading": "Create options", - "options_label": "Option %(number)s", - "options_placeholder": "Write an option", - "topic_heading": "What is your poll question or topic?", - "topic_label": "Question or topic", - "topic_placeholder": "Write something…", - "total_decryption_errors": "Due to decryption errors, some votes may not be counted", - "total_n_votes": { - "one": "%(count)s vote cast. Vote to see the results", - "other": "%(count)s votes cast. Vote to see the results" - }, - "total_n_votes_voted": { - "one": "Based on %(count)s vote", - "other": "Based on %(count)s votes" - }, - "total_no_votes": "No votes cast", - "total_not_ended": "Results will be visible when the poll is ended", - "type_closed": "Closed poll", - "type_heading": "Poll type", - "type_open": "Open poll", - "unable_edit_description": "Sorry, you can't edit a poll after votes have been cast.", - "unable_edit_title": "Can't edit poll" + "inviting_user1_and_user2": "Inviting %(user1)s and %(user2)s", + "inviting_user_and_n_others": { + "one": "Inviting %(user)s and one other", + "other": "Inviting %(user)s and %(count)s others" }, - "pill": { - "permalink_other_room": "Message in %(room)s", - "permalink_this_room": "Message from %(user)s" + "items_and_n_others": { + "one": " and one other", + "other": " and %(count)s others" }, - "onboarding": { - "apple_trademarks": "App Store® and the Apple logo® are trademarks of Apple Inc.", - "community_messaging_action": "Find your people", - "community_messaging_description": "Keep ownership and control of community discussion.\nScale to support millions, with powerful moderation and interoperability.", - "community_messaging_title": "Community ownership", - "complete_these": "Complete these to get the most out of %(brand)s", - "create_room": "Create a Group Chat", - "download_app": "Download %(brand)s", - "download_app_action": "Download apps", - "download_app_description": "Don’t miss a thing by taking %(brand)s with you", - "download_app_store": "Download on the App Store", - "download_brand": "Download %(brand)s", - "download_brand_desktop": "Download %(brand)s Desktop", - "download_f_droid": "Get it on F-Droid", - "download_google_play": "Get it on Google Play", - "enable_notifications": "Turn on notifications", - "enable_notifications_action": "Enable notifications", - "enable_notifications_description": "Don’t miss a reply or important message", - "explore_rooms": "Explore Public Rooms", - "find_community_members": "Find and invite your community members", - "find_coworkers": "Find and invite your co-workers", - "find_friends": "Find and invite your friends", - "find_friends_action": "Find friends", - "find_friends_description": "It’s what you’re here for, so lets get to it", - "find_people": "Find people", - "free_e2ee_messaging_unlimited_voip": "With free end-to-end encrypted messaging, and unlimited voice and video calls, %(brand)s is a great way to stay in touch.", - "get_stuff_done": "Get stuff done by finding your teammates", - "google_trademarks": "Google Play and the Google Play logo are trademarks of Google LLC.", - "has_avatar_label": "Great, that'll help people know it's you", - "intro_byline": "Own your conversations.", - "intro_welcome": "Welcome to %(appName)s", - "no_avatar_label": "Add a photo so people know it's you.", - "only_n_steps_to_go": { - "one": "Only %(count)s step to go", - "other": "Only %(count)s steps to go" - }, - "personal_messaging_action": "Start your first chat", - "personal_messaging_title": "Secure messaging for friends and family", - "qr_or_app_links": "%(qrCode)s or %(appLinks)s", - "send_dm": "Send a Direct Message", - "set_up_profile": "Set up your profile", - "set_up_profile_action": "Your profile", - "set_up_profile_description": "Make sure people know it’s really you", - "use_case_community_messaging": "Online community members", - "use_case_heading1": "You're in", - "use_case_heading2": "Who will you chat to the most?", - "use_case_heading3": "We'll help you get connected.", - "use_case_personal_messaging": "Friends and family", - "use_case_work_messaging": "Coworkers and teams", - "welcome_detail": "Now, let's help you get started", - "welcome_to_brand": "Welcome to %(brand)s", - "welcome_user": "Welcome %(name)s", - "work_messaging_action": "Find your co-workers", - "work_messaging_title": "Secure messaging for work", - "you_did_it": "You did it!", - "you_made_it": "You made it!" - }, - "notifier": { - "io.element.voice_broadcast_chunk": "%(senderName)s started a voice broadcast", - "m.key.verification.request": "%(name)s is requesting verification" - }, - "notifications": { - "all_messages": "All messages", - "all_messages_description": "Get notified for every message", - "class_global": "Global", - "class_other": "Other", - "colour_bold": "Bold", - "colour_grey": "Grey", - "colour_muted": "Muted", - "colour_none": "None", - "colour_red": "Red", - "colour_unsent": "Unsent", - "default": "Default", - "email_pusher_app_display_name": "Email Notifications", - "enable_prompt_toast_description": "Enable desktop notifications", - "enable_prompt_toast_title": "Notifications", - "enable_prompt_toast_title_from_message_send": "Don't miss a reply", - "error_change_title": "Change notification settings", - "keyword": "Keyword", - "keyword_new": "New keyword", - "mark_all_read": "Mark all as read", - "mentions_and_keywords": "@mentions & keywords", - "mentions_and_keywords_description": "Get notified only with mentions and keywords as set up in your settings", - "mentions_keywords": "Mentions & keywords", - "message_didnt_send": "Message didn't send. Click for info.", - "mute_description": "You won't get any notifications" - }, - "notif_panel": { - "empty_description": "You have no visible notifications.", - "empty_heading": "You're all caught up" - }, - "no_more_results": "No more results", - "name_and_id": "%(name)s (%(userId)s)", - "mobile_guide": { - "toast_accept": "Use app", - "toast_description": "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.", - "toast_title": "Use app for a better experience" - }, - "message_edit_dialog_title": "Message edits", - "member_list_back_action_label": "Room members", - "member_list": { - "filter_placeholder": "Filter room members", - "invite_button_no_perms_tooltip": "You do not have permission to invite users", - "invited_list_heading": "Invited", - "power_label": "%(userName)s (power %(powerLevelNumber)s)" - }, - "location_sharing": { - "MapStyleUrlNotConfigured": "This homeserver is not configured to display maps.", - "MapStyleUrlNotReachable": "This homeserver is not configured correctly to display maps, or the configured map server may be unreachable.", - "WebGLNotEnabled": "WebGL is required to display maps, please enable it in your browser settings.", - "click_drop_pin": "Click to drop a pin", - "click_move_pin": "Click to move the pin", - "close_sidebar": "Close sidebar", - "error_fetch_location": "Could not fetch location", - "error_no_perms_description": "You need to have the right permissions in order to share locations in this room.", - "error_no_perms_title": "You don't have permission to share locations", - "error_send_description": "%(brand)s could not send your location. Please try again later.", - "error_send_title": "We couldn't send your location", - "error_sharing_live_location": "An error occurred whilst sharing your live location", - "error_sharing_live_location_try_again": "An error occurred whilst sharing your live location, please try again", - "error_stopping_live_location": "An error occurred while stopping your live location", - "error_stopping_live_location_try_again": "An error occurred while stopping your live location, please try again", - "expand_map": "Expand map", - "failed_generic": "Failed to fetch your location. Please try again later.", - "failed_load_map": "Unable to load map", - "failed_permission": "%(brand)s was denied permission to fetch your location. Please allow location access in your browser settings.", - "failed_timeout": "Timed out trying to fetch your location. Please try again later.", - "failed_unknown": "Unknown error fetching location. Please try again later.", - "find_my_location": "Find my location", - "live_description": "%(displayName)s's live location", - "live_enable_description": "Please note: this is a labs feature using a temporary implementation. This means you will not be able to delete your location history, and advanced users will be able to see your location history even after you stop sharing your live location with this room.", - "live_enable_heading": "Live location sharing", - "live_location_active": "You are sharing your live location", - "live_location_enabled": "Live location enabled", - "live_location_ended": "Live location ended", - "live_location_error": "Live location error", - "live_locations_empty": "No live locations", - "live_share_button": "Share for %(duration)s", - "live_toggle_label": "Enable live location sharing", - "live_until": "Live until %(expiryTime)s", - "live_update_time": "Updated %(humanizedUpdateTime)s", - "loading_live_location": "Loading live location…", - "location_not_available": "Location not available", - "map_feedback": "Map feedback", - "mapbox_logo": "Mapbox logo", - "reset_bearing": "Reset bearing to north", - "share_button": "Share location", - "share_type_live": "My live location", - "share_type_own": "My current location", - "share_type_pin": "Drop a Pin", - "share_type_prompt": "What location type do you want to share?", - "stop_and_close": "Stop and close", - "toggle_attribution": "Toggle attribution" - }, - "lightbox": { - "rotate_left": "Rotate Left", - "rotate_right": "Rotate Right", - "title": "Image view" - }, - "left_panel": { - "open_dial_pad": "Open dial pad" - }, - "leave_room_dialog": { - "last_person_warning": "You are the only person here. If you leave, no one will be able to join in the future, including you.", - "leave_room_question": "Are you sure you want to leave the room '%(roomName)s'?", - "leave_space_question": "Are you sure you want to leave the space '%(spaceName)s'?", - "room_rejoin_warning": "This room is not public. You will not be able to rejoin without an invite.", - "space_rejoin_warning": "This space is not public. You will not be able to rejoin without an invite." - }, - "lazy_loading": { - "disabled_action": "Clear cache and resync", - "disabled_description1": "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.", - "disabled_description2": "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.", - "disabled_title": "Incompatible local cache", - "resync_description": "%(brand)s now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!", - "resync_title": "Updating %(brand)s" - }, - "language_dropdown_label": "Language Dropdown", - "labs_mjolnir": { - "advanced_warning": "⚠ These settings are meant for advanced users.", - "ban_reason": "Ignored/Blocked", - "error_adding_ignore": "Error adding ignored user/server", - "error_adding_list_description": "Please verify the room ID or address and try again.", - "error_adding_list_title": "Error subscribing to list", - "error_removing_ignore": "Error removing ignored user/server", - "error_removing_list_description": "Please try again or view your console for hints.", - "error_removing_list_title": "Error unsubscribing from list", - "explainer_1": "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.", - "explainer_2": "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.", - "lists": "You are currently subscribed to:", - "lists_description_1": "Subscribing to a ban list will cause you to join it!", - "lists_description_2": "If this isn't what you want, please use a different tool to ignore users.", - "lists_heading": "Subscribed lists", - "lists_new_label": "Room ID or address of ban list", - "no_lists": "You are not subscribed to any lists", - "personal_description": "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 '%(myBanList)s' - stay in this room to keep the ban list in effect.", - "personal_empty": "You have not ignored anyone.", - "personal_heading": "Personal ban list", - "personal_new_label": "Server or user ID to ignore", - "personal_new_placeholder": "eg: @bot:* or example.org", - "personal_section": "You are currently ignoring:", - "room_name": "My Ban List", - "room_topic": "This is your list of users/servers you have blocked - don't leave the room!", - "rules_empty": "None", - "rules_server": "Server rules", - "rules_title": "Ban list rules - %(roomName)s", - "rules_user": "User rules", - "something_went_wrong": "Something went wrong. Please try again or view your console for hints.", - "title": "Ignored users", - "view_rules": "View rules" + "keyboard": { + "activate_button": "Activate selected button", + "alt": "Alt", + "autocomplete_cancel": "Cancel autocomplete", + "autocomplete_force": "Force complete", + "autocomplete_navigate_next": "Next autocomplete suggestion", + "autocomplete_navigate_prev": "Previous autocomplete suggestion", + "backspace": "Backspace", + "cancel_reply": "Cancel replying to a message", + "category_autocomplete": "Autocomplete", + "category_calls": "Calls", + "category_navigation": "Navigation", + "category_room_list": "Room List", + "close_dialog_menu": "Close dialog or context menu", + "composer_jump_end": "Jump to end of the composer", + "composer_jump_start": "Jump to start of the composer", + "composer_navigate_next_history": "Navigate to next message in composer history", + "composer_navigate_prev_history": "Navigate to previous message in composer history", + "composer_new_line": "New line", + "composer_redo": "Redo edit", + "composer_toggle_bold": "Toggle Bold", + "composer_toggle_code_block": "Toggle Code Block", + "composer_toggle_italics": "Toggle Italics", + "composer_toggle_link": "Toggle Link", + "composer_toggle_quote": "Toggle Quote", + "composer_undo": "Undo edit", + "control": "Ctrl", + "dismiss_read_marker_and_jump_bottom": "Dismiss read marker and jump to bottom", + "end": "End", + "enter": "Enter", + "escape": "Esc", + "go_home_view": "Go to Home View", + "home": "Home", + "jump_first_message": "Jump to first message", + "jump_last_message": "Jump to last message", + "jump_room_search": "Jump to room search", + "jump_to_read_marker": "Jump to oldest unread message", + "keyboard_shortcuts_tab": "Open this settings tab", + "navigate_next_history": "Next recently visited room or space", + "navigate_next_message_edit": "Navigate to next message to edit", + "navigate_prev_history": "Previous recently visited room or space", + "navigate_prev_message_edit": "Navigate to previous message to edit", + "next_room": "Next room or DM", + "next_unread_room": "Next unread room or DM", + "number": "[number]", + "open_user_settings": "Open user settings", + "page_down": "Page Down", + "page_up": "Page Up", + "prev_room": "Previous room or DM", + "prev_unread_room": "Previous unread room or DM", + "room_list_collapse_section": "Collapse room list section", + "room_list_expand_section": "Expand room list section", + "room_list_navigate_down": "Navigate down in the room list", + "room_list_navigate_up": "Navigate up in the room list", + "room_list_select_room": "Select room from the room list", + "scroll_down_timeline": "Scroll down in the timeline", + "scroll_up_timeline": "Scroll up in the timeline", + "search": "Search (must be enabled)", + "send_sticker": "Send a sticker", + "shift": "Shift", + "space": "Space", + "switch_to_space": "Switch to space by number", + "toggle_hidden_events": "Toggle hidden event visibility", + "toggle_microphone_mute": "Toggle microphone mute", + "toggle_right_panel": "Toggle right panel", + "toggle_space_panel": "Toggle space panel", + "toggle_top_left_menu": "Toggle the top left menu", + "toggle_webcam_mute": "Toggle webcam on/off", + "upload_file": "Upload a file" }, "labs": { "allow_screen_share_only_mode": "Allow screen share only mode", @@ -2662,1377 +1463,2576 @@ "voice_broadcast_force_small_chunks": "Force 15s voice broadcast chunk length", "wysiwyg_composer": "Rich text editor" }, - "keyboard": { - "activate_button": "Activate selected button", - "alt": "Alt", - "autocomplete_cancel": "Cancel autocomplete", - "autocomplete_force": "Force complete", - "autocomplete_navigate_next": "Next autocomplete suggestion", - "autocomplete_navigate_prev": "Previous autocomplete suggestion", - "backspace": "Backspace", - "cancel_reply": "Cancel replying to a message", - "category_autocomplete": "Autocomplete", - "category_calls": "Calls", - "category_navigation": "Navigation", - "category_room_list": "Room List", - "close_dialog_menu": "Close dialog or context menu", - "composer_jump_end": "Jump to end of the composer", - "composer_jump_start": "Jump to start of the composer", - "composer_navigate_next_history": "Navigate to next message in composer history", - "composer_navigate_prev_history": "Navigate to previous message in composer history", - "composer_new_line": "New line", - "composer_redo": "Redo edit", - "composer_toggle_bold": "Toggle Bold", - "composer_toggle_code_block": "Toggle Code Block", - "composer_toggle_italics": "Toggle Italics", - "composer_toggle_link": "Toggle Link", - "composer_toggle_quote": "Toggle Quote", - "composer_undo": "Undo edit", - "control": "Ctrl", - "dismiss_read_marker_and_jump_bottom": "Dismiss read marker and jump to bottom", - "end": "End", - "enter": "Enter", - "escape": "Esc", - "go_home_view": "Go to Home View", - "home": "Home", - "jump_first_message": "Jump to first message", - "jump_last_message": "Jump to last message", - "jump_room_search": "Jump to room search", - "jump_to_read_marker": "Jump to oldest unread message", - "keyboard_shortcuts_tab": "Open this settings tab", - "navigate_next_history": "Next recently visited room or space", - "navigate_next_message_edit": "Navigate to next message to edit", - "navigate_prev_history": "Previous recently visited room or space", - "navigate_prev_message_edit": "Navigate to previous message to edit", - "next_room": "Next room or DM", - "next_unread_room": "Next unread room or DM", - "number": "[number]", - "open_user_settings": "Open user settings", - "page_down": "Page Down", - "page_up": "Page Up", - "prev_room": "Previous room or DM", - "prev_unread_room": "Previous unread room or DM", - "room_list_collapse_section": "Collapse room list section", - "room_list_expand_section": "Expand room list section", - "room_list_navigate_down": "Navigate down in the room list", - "room_list_navigate_up": "Navigate up in the room list", - "room_list_select_room": "Select room from the room list", - "scroll_down_timeline": "Scroll down in the timeline", - "scroll_up_timeline": "Scroll up in the timeline", - "search": "Search (must be enabled)", - "send_sticker": "Send a sticker", - "shift": "Shift", - "space": "Space", - "switch_to_space": "Switch to space by number", - "toggle_hidden_events": "Toggle hidden event visibility", - "toggle_microphone_mute": "Toggle microphone mute", - "toggle_right_panel": "Toggle right panel", - "toggle_space_panel": "Toggle space panel", - "toggle_top_left_menu": "Toggle the top left menu", - "toggle_webcam_mute": "Toggle webcam on/off", - "upload_file": "Upload a file" + "labs_mjolnir": { + "advanced_warning": "⚠ These settings are meant for advanced users.", + "ban_reason": "Ignored/Blocked", + "error_adding_ignore": "Error adding ignored user/server", + "error_adding_list_description": "Please verify the room ID or address and try again.", + "error_adding_list_title": "Error subscribing to list", + "error_removing_ignore": "Error removing ignored user/server", + "error_removing_list_description": "Please try again or view your console for hints.", + "error_removing_list_title": "Error unsubscribing from list", + "explainer_1": "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.", + "explainer_2": "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.", + "lists": "You are currently subscribed to:", + "lists_description_1": "Subscribing to a ban list will cause you to join it!", + "lists_description_2": "If this isn't what you want, please use a different tool to ignore users.", + "lists_heading": "Subscribed lists", + "lists_new_label": "Room ID or address of ban list", + "no_lists": "You are not subscribed to any lists", + "personal_description": "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 '%(myBanList)s' - stay in this room to keep the ban list in effect.", + "personal_empty": "You have not ignored anyone.", + "personal_heading": "Personal ban list", + "personal_new_label": "Server or user ID to ignore", + "personal_new_placeholder": "eg: @bot:* or example.org", + "personal_section": "You are currently ignoring:", + "room_name": "My Ban List", + "room_topic": "This is your list of users/servers you have blocked - don't leave the room!", + "rules_empty": "None", + "rules_server": "Server rules", + "rules_title": "Ban list rules - %(roomName)s", + "rules_user": "User rules", + "something_went_wrong": "Something went wrong. Please try again or view your console for hints.", + "title": "Ignored users", + "view_rules": "View rules" }, - "items_and_n_others": { - "one": " and one other", - "other": " and %(count)s others" + "language_dropdown_label": "Language Dropdown", + "lazy_loading": { + "disabled_action": "Clear cache and resync", + "disabled_description1": "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.", + "disabled_description2": "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.", + "disabled_title": "Incompatible local cache", + "resync_description": "%(brand)s now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!", + "resync_title": "Updating %(brand)s" }, - "inviting_user_and_n_others": { - "one": "Inviting %(user)s and one other", - "other": "Inviting %(user)s and %(count)s others" + "leave_room_dialog": { + "last_person_warning": "You are the only person here. If you leave, no one will be able to join in the future, including you.", + "leave_room_question": "Are you sure you want to leave the room '%(roomName)s'?", + "leave_space_question": "Are you sure you want to leave the space '%(spaceName)s'?", + "room_rejoin_warning": "This room is not public. You will not be able to rejoin without an invite.", + "space_rejoin_warning": "This space is not public. You will not be able to rejoin without an invite." }, - "inviting_user1_and_user2": "Inviting %(user1)s and %(user2)s", - "invite": { - "ask_anyway_description": "Unable to find profiles for the Matrix IDs listed below - would you like to start a DM anyway?", - "ask_anyway_label": "Start DM anyway", - "ask_anyway_never_warn_label": "Start DM anyway and never warn me again", - "email_caption": "Invite by email", - "email_limit_one": "Invites by email can only be sent one at a time", - "email_use_default_is": "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.", - "email_use_is": "Use an identity server to invite by email. Manage in Settings.", - "error_already_invited_room": "User is already invited to the room", - "error_already_invited_space": "User is already invited to the space", - "error_already_joined_room": "User is already in the room", - "error_already_joined_space": "User is already in the space", - "error_bad_state": "The user must be unbanned before they can be invited.", - "error_dm": "We couldn't create your DM.", - "error_find_room": "Something went wrong trying to invite the users.", - "error_find_user_description": "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s", - "error_find_user_title": "Failed to find the following users", - "error_invite": "We couldn't invite those users. Please check the users you want to invite and try again.", - "error_permissions_room": "You do not have permission to invite people to this room.", - "error_permissions_space": "You do not have permission to invite people to this space.", - "error_profile_undisclosed": "User may or may not exist", - "error_transfer_multiple_target": "A call can only be transferred to a single user.", - "error_unknown": "Unknown server error", - "error_user_not_found": "User does not exist", - "error_version_unsupported_room": "The user's homeserver does not support the version of the room.", - "error_version_unsupported_space": "The user's homeserver does not support the version of the space.", - "failed_generic": "Operation failed", - "failed_title": "Failed to invite", - "invalid_address": "Unrecognised address", - "key_share_warning": "Invited people will be able to read old messages.", - "name_email_mxid_share_room": "Invite someone using their name, email address, username (like ) or share this room.", - "name_email_mxid_share_space": "Invite someone using their name, email address, username (like ) or share this space.", - "name_mxid_share_room": "Invite someone using their name, username (like ) or share this room.", - "name_mxid_share_space": "Invite someone using their name, username (like ) or share this space.", - "recents_section": "Recent Conversations", - "room_failed_partial": "We sent the others, but the below people couldn't be invited to ", - "room_failed_partial_title": "Some invites couldn't be sent", - "room_failed_title": "Failed to invite users to %(roomName)s", - "send_link_prompt": "Or send invite link", - "start_conversation_name_email_mxid_prompt": "Start a conversation with someone using their name, email address or username (like ).", - "start_conversation_name_mxid_prompt": "Start a conversation with someone using their name or username (like ).", - "suggestions_disclaimer": "Some suggestions may be hidden for privacy.", - "suggestions_disclaimer_prompt": "If you can't see who you're looking for, send them your invite link below.", - "suggestions_section": "Recently Direct Messaged", - "to_room": "Invite to %(roomName)s", - "to_space": "Invite to %(spaceName)s", - "transfer_dial_pad_tab": "Dial pad", - "transfer_user_directory_tab": "User Directory", - "unable_find_profiles_description_default": "Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?", - "unable_find_profiles_invite_label_default": "Invite anyway", - "unable_find_profiles_invite_never_warn_label_default": "Invite anyway and never warn me again", - "unable_find_profiles_title": "The following users may not exist", - "unban_first_title": "User cannot be invited until they are unbanned" + "left_panel": { + "open_dial_pad": "Open dial pad" }, - "integrations": { - "disabled_dialog_description": "Enable '%(manageIntegrations)s' in Settings to do this.", - "disabled_dialog_title": "Integrations are disabled", - "impossible_dialog_description": "Your %(brand)s doesn't allow you to use an integration manager to do this. Please contact an admin.", - "impossible_dialog_title": "Integrations not allowed" + "lightbox": { + "rotate_left": "Rotate Left", + "rotate_right": "Rotate Right", + "title": "Image view" }, - "integration_manager": { - "connecting": "Connecting to integration manager…", - "error_connecting": "The integration manager is offline or it cannot reach your homeserver.", - "error_connecting_heading": "Cannot connect to integration manager", - "explainer": "Integration managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.", - "manage_title": "Manage integrations", - "use_im": "Use an integration manager to manage bots, widgets, and sticker packs.", - "use_im_default": "Use an integration manager (%(serverName)s) to manage bots, widgets, and sticker packs." + "location_sharing": { + "MapStyleUrlNotConfigured": "This homeserver is not configured to display maps.", + "MapStyleUrlNotReachable": "This homeserver is not configured correctly to display maps, or the configured map server may be unreachable.", + "WebGLNotEnabled": "WebGL is required to display maps, please enable it in your browser settings.", + "click_drop_pin": "Click to drop a pin", + "click_move_pin": "Click to move the pin", + "close_sidebar": "Close sidebar", + "error_fetch_location": "Could not fetch location", + "error_no_perms_description": "You need to have the right permissions in order to share locations in this room.", + "error_no_perms_title": "You don't have permission to share locations", + "error_send_description": "%(brand)s could not send your location. Please try again later.", + "error_send_title": "We couldn't send your location", + "error_sharing_live_location": "An error occurred whilst sharing your live location", + "error_sharing_live_location_try_again": "An error occurred whilst sharing your live location, please try again", + "error_stopping_live_location": "An error occurred while stopping your live location", + "error_stopping_live_location_try_again": "An error occurred while stopping your live location, please try again", + "expand_map": "Expand map", + "failed_generic": "Failed to fetch your location. Please try again later.", + "failed_load_map": "Unable to load map", + "failed_permission": "%(brand)s was denied permission to fetch your location. Please allow location access in your browser settings.", + "failed_timeout": "Timed out trying to fetch your location. Please try again later.", + "failed_unknown": "Unknown error fetching location. Please try again later.", + "find_my_location": "Find my location", + "live_description": "%(displayName)s's live location", + "live_enable_description": "Please note: this is a labs feature using a temporary implementation. This means you will not be able to delete your location history, and advanced users will be able to see your location history even after you stop sharing your live location with this room.", + "live_enable_heading": "Live location sharing", + "live_location_active": "You are sharing your live location", + "live_location_enabled": "Live location enabled", + "live_location_ended": "Live location ended", + "live_location_error": "Live location error", + "live_locations_empty": "No live locations", + "live_share_button": "Share for %(duration)s", + "live_toggle_label": "Enable live location sharing", + "live_until": "Live until %(expiryTime)s", + "live_update_time": "Updated %(humanizedUpdateTime)s", + "loading_live_location": "Loading live location…", + "location_not_available": "Location not available", + "map_feedback": "Map feedback", + "mapbox_logo": "Mapbox logo", + "reset_bearing": "Reset bearing to north", + "share_button": "Share location", + "share_type_live": "My live location", + "share_type_own": "My current location", + "share_type_pin": "Drop a Pin", + "share_type_prompt": "What location type do you want to share?", + "stop_and_close": "Stop and close", + "toggle_attribution": "Toggle attribution" }, - "info_tooltip_title": "Information", - "in_space_and_n_other_spaces": { - "one": "In %(spaceName)s and one other space.", - "other": "In %(spaceName)s and %(count)s other spaces." + "member_list": { + "filter_placeholder": "Filter room members", + "invite_button_no_perms_tooltip": "You do not have permission to invite users", + "invited_list_heading": "Invited", + "power_label": "%(userName)s (power %(powerLevelNumber)s)" + }, + "member_list_back_action_label": "Room members", + "message_edit_dialog_title": "Message edits", + "mobile_guide": { + "toast_accept": "Use app", + "toast_description": "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.", + "toast_title": "Use app for a better experience" + }, + "name_and_id": "%(name)s (%(userId)s)", + "no_more_results": "No more results", + "notif_panel": { + "empty_description": "You have no visible notifications.", + "empty_heading": "You're all caught up" + }, + "notifications": { + "all_messages": "All messages", + "all_messages_description": "Get notified for every message", + "class_global": "Global", + "class_other": "Other", + "colour_bold": "Bold", + "colour_grey": "Grey", + "colour_muted": "Muted", + "colour_none": "None", + "colour_red": "Red", + "colour_unsent": "Unsent", + "default": "Default", + "email_pusher_app_display_name": "Email Notifications", + "enable_prompt_toast_description": "Enable desktop notifications", + "enable_prompt_toast_title": "Notifications", + "enable_prompt_toast_title_from_message_send": "Don't miss a reply", + "error_change_title": "Change notification settings", + "keyword": "Keyword", + "keyword_new": "New keyword", + "mark_all_read": "Mark all as read", + "mentions_and_keywords": "@mentions & keywords", + "mentions_and_keywords_description": "Get notified only with mentions and keywords as set up in your settings", + "mentions_keywords": "Mentions & keywords", + "message_didnt_send": "Message didn't send. Click for info.", + "mute_description": "You won't get any notifications" + }, + "notifier": { + "io.element.voice_broadcast_chunk": "%(senderName)s started a voice broadcast", + "m.key.verification.request": "%(name)s is requesting verification" + }, + "onboarding": { + "apple_trademarks": "App Store® and the Apple logo® are trademarks of Apple Inc.", + "community_messaging_action": "Find your people", + "community_messaging_description": "Keep ownership and control of community discussion.\nScale to support millions, with powerful moderation and interoperability.", + "community_messaging_title": "Community ownership", + "complete_these": "Complete these to get the most out of %(brand)s", + "create_room": "Create a Group Chat", + "download_app": "Download %(brand)s", + "download_app_action": "Download apps", + "download_app_description": "Don’t miss a thing by taking %(brand)s with you", + "download_app_store": "Download on the App Store", + "download_brand": "Download %(brand)s", + "download_brand_desktop": "Download %(brand)s Desktop", + "download_f_droid": "Get it on F-Droid", + "download_google_play": "Get it on Google Play", + "enable_notifications": "Turn on notifications", + "enable_notifications_action": "Enable notifications", + "enable_notifications_description": "Don’t miss a reply or important message", + "explore_rooms": "Explore Public Rooms", + "find_community_members": "Find and invite your community members", + "find_coworkers": "Find and invite your co-workers", + "find_friends": "Find and invite your friends", + "find_friends_action": "Find friends", + "find_friends_description": "It’s what you’re here for, so lets get to it", + "find_people": "Find people", + "free_e2ee_messaging_unlimited_voip": "With free end-to-end encrypted messaging, and unlimited voice and video calls, %(brand)s is a great way to stay in touch.", + "get_stuff_done": "Get stuff done by finding your teammates", + "google_trademarks": "Google Play and the Google Play logo are trademarks of Google LLC.", + "has_avatar_label": "Great, that'll help people know it's you", + "intro_byline": "Own your conversations.", + "intro_welcome": "Welcome to %(appName)s", + "no_avatar_label": "Add a photo so people know it's you.", + "only_n_steps_to_go": { + "one": "Only %(count)s step to go", + "other": "Only %(count)s steps to go" + }, + "personal_messaging_action": "Start your first chat", + "personal_messaging_title": "Secure messaging for friends and family", + "qr_or_app_links": "%(qrCode)s or %(appLinks)s", + "send_dm": "Send a Direct Message", + "set_up_profile": "Set up your profile", + "set_up_profile_action": "Your profile", + "set_up_profile_description": "Make sure people know it’s really you", + "use_case_community_messaging": "Online community members", + "use_case_heading1": "You're in", + "use_case_heading2": "Who will you chat to the most?", + "use_case_heading3": "We'll help you get connected.", + "use_case_personal_messaging": "Friends and family", + "use_case_work_messaging": "Coworkers and teams", + "welcome_detail": "Now, let's help you get started", + "welcome_to_brand": "Welcome to %(brand)s", + "welcome_user": "Welcome %(name)s", + "work_messaging_action": "Find your co-workers", + "work_messaging_title": "Secure messaging for work", + "you_did_it": "You did it!", + "you_made_it": "You made it!" + }, + "pill": { + "permalink_other_room": "Message in %(room)s", + "permalink_this_room": "Message from %(user)s" + }, + "poll": { + "create_poll_action": "Create Poll", + "create_poll_title": "Create poll", + "disclosed_notes": "Voters see results as soon as they have voted", + "edit_poll_title": "Edit poll", + "end_description": "Are you sure you want to end this poll? This will show the final results of the poll and stop people from being able to vote.", + "end_message": "The poll has ended. Top answer: %(topAnswer)s", + "end_message_no_votes": "The poll has ended. No votes were cast.", + "end_title": "End Poll", + "error_ending_description": "Sorry, the poll did not end. Please try again.", + "error_ending_title": "Failed to end poll", + "error_voting_description": "Sorry, your vote was not registered. Please try again.", + "error_voting_title": "Vote not registered", + "failed_send_poll_description": "Sorry, the poll you tried to create was not posted.", + "failed_send_poll_title": "Failed to post poll", + "notes": "Results are only revealed when you end the poll", + "options_add_button": "Add option", + "options_heading": "Create options", + "options_label": "Option %(number)s", + "options_placeholder": "Write an option", + "topic_heading": "What is your poll question or topic?", + "topic_label": "Question or topic", + "topic_placeholder": "Write something…", + "total_decryption_errors": "Due to decryption errors, some votes may not be counted", + "total_n_votes": { + "one": "%(count)s vote cast. Vote to see the results", + "other": "%(count)s votes cast. Vote to see the results" + }, + "total_n_votes_voted": { + "one": "Based on %(count)s vote", + "other": "Based on %(count)s votes" + }, + "total_no_votes": "No votes cast", + "total_not_ended": "Results will be visible when the poll is ended", + "type_closed": "Closed poll", + "type_heading": "Poll type", + "type_open": "Open poll", + "unable_edit_description": "Sorry, you can't edit a poll after votes have been cast.", + "unable_edit_title": "Can't edit poll" + }, + "power_level": { + "admin": "Admin", + "custom": "Custom (%(level)s)", + "custom_level": "Custom level", + "default": "Default", + "label": "Power level", + "mod": "Mod", + "moderator": "Moderator", + "restricted": "Restricted" + }, + "presence": { + "away": "Away", + "busy": "Busy", + "idle": "Idle", + "idle_for": "Idle for %(duration)s", + "offline": "Offline", + "offline_for": "Offline for %(duration)s", + "online": "Online", + "online_for": "Online for %(duration)s", + "unknown": "Unknown", + "unknown_for": "Unknown for %(duration)s" + }, + "quick_settings": { + "all_settings": "All settings", + "metaspace_section": "Pin to sidebar", + "sidebar_settings": "More options", + "title": "Quick settings" + }, + "quit_warning": { + "call_in_progress": "You seem to be in a call, are you sure you want to quit?", + "file_upload_in_progress": "You seem to be uploading files, are you sure you want to quit?" + }, + "redact": { + "confirm_button": "Confirm Removal", + "confirm_description": "Are you sure you wish to remove (delete) this event?", + "confirm_description_state": "Note that removing room changes like this could undo the change.", + "error": "You cannot delete this message. (%(code)s)", + "ongoing": "Removing…", + "reason_label": "Reason (optional)" + }, + "reject_invitation_dialog": { + "confirmation": "Are you sure you want to reject the invitation?", + "failed": "Failed to reject invitation", + "title": "Reject invitation" + }, + "report_content": { + "description": "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.", + "disagree": "Disagree", + "error_create_room_moderation_bot": "Unable to create room with moderation bot", + "hide_messages_from_user": "Check if you want to hide all current and future messages from this user.", + "ignore_user": "Ignore user", + "illegal_content": "Illegal Content", + "missing_reason": "Please fill why you're reporting.", + "nature": "Please pick a nature and describe what makes this message abusive.", + "nature_disagreement": "What this user is writing is wrong.\nThis will be reported to the room moderators.", + "nature_illegal": "This user is displaying illegal behaviour, for instance by doxing people or threatening violence.\nThis will be reported to the room moderators who may escalate this to legal authorities.", + "nature_nonstandard_admin": "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s.", + "nature_nonstandard_admin_encrypted": "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s. The administrators will NOT be able to read the encrypted content of this room.", + "nature_other": "Any other reason. Please describe the problem.\nThis will be reported to the room moderators.", + "nature_spam": "This user is spamming the room with ads, links to ads or to propaganda.\nThis will be reported to the room moderators.", + "nature_toxic": "This user is displaying toxic behaviour, for instance by insulting other users or sharing adult-only content in a family-friendly room or otherwise violating the rules of this room.\nThis will be reported to the room moderators.", + "other_label": "Other", + "report_content_to_homeserver": "Report Content to Your Homeserver Administrator", + "report_entire_room": "Report the entire room", + "spam_or_propaganda": "Spam or propaganda", + "toxic_behaviour": "Toxic Behaviour" + }, + "restore_key_backup_dialog": { + "count_of_decryption_failures": "Failed to decrypt %(failedCount)s sessions!", + "count_of_successfully_restored_keys": "Successfully restored %(sessionCount)s keys", + "enter_key_description": "Access your secure message history and set up secure messaging by entering your Security Key.", + "enter_key_title": "Enter Security Key", + "enter_phrase_description": "Access your secure message history and set up secure messaging by entering your Security Phrase.", + "enter_phrase_title": "Enter Security Phrase", + "incorrect_security_phrase_dialog": "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.", + "incorrect_security_phrase_title": "Incorrect Security Phrase", + "key_backup_warning": "Warning: you should only set up key backup from a trusted computer.", + "key_fetch_in_progress": "Fetching keys from server…", + "key_forgotten_text": "If you've forgotten your Security Key you can ", + "key_is_invalid": "Not a valid Security Key", + "key_is_valid": "This looks like a valid Security Key!", + "keys_restored_title": "Keys restored", + "load_error_content": "Unable to load backup status", + "load_keys_progress": "%(completed)s of %(total)s keys restored", + "no_backup_error": "No backup found!", + "phrase_forgotten_text": "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options", + "recovery_key_mismatch_description": "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.", + "recovery_key_mismatch_title": "Security Key mismatch", + "restore_failed_error": "Unable to restore backup" + }, + "right_panel": { + "add_integrations": "Add widgets, bridges & bots", + "edit_integrations": "Edit widgets, bridges & bots", + "export_chat_button": "Export chat", + "files_button": "Files", + "pinned_messages": { + "empty": "Nothing pinned, yet", + "explainer": "If you have permissions, open the menu on any message and select Pin to stick them here.", + "limits": { + "other": "You can only pin up to %(count)s widgets" + }, + "title": "Pinned messages" + }, + "pinned_messages_button": "Pinned", + "poll": { + "active_heading": "Active polls", + "empty_active": "There are no active polls in this room", + "empty_active_load_more": "There are no active polls. Load more polls to view polls for previous months", + "empty_active_load_more_n_days": { + "one": "There are no active polls for the past day. Load more polls to view polls for previous months", + "other": "There are no active polls for the past %(count)s days. Load more polls to view polls for previous months" + }, + "empty_past": "There are no past polls in this room", + "empty_past_load_more": "There are no past polls. Load more polls to view polls for previous months", + "empty_past_load_more_n_days": { + "one": "There are no past polls for the past day. Load more polls to view polls for previous months", + "other": "There are no past polls for the past %(count)s days. Load more polls to view polls for previous months" + }, + "final_result": { + "one": "Final result based on %(count)s vote", + "other": "Final result based on %(count)s votes" + }, + "load_more": "Load more polls", + "loading": "Loading polls", + "past_heading": "Past polls", + "view_in_timeline": "View poll in timeline", + "view_poll": "View poll" + }, + "polls_button": "Poll history", + "room_summary_card": { + "title": "Room info" + }, + "search_button": "Search", + "settings_button": "Room settings", + "share_button": "Share room", + "thread_list": { + "context_menu_label": "Thread options" + }, + "video_room_chat": { + "title": "Chat" + }, + "widgets_section": "Widgets" + }, + "room": { + "3pid_invite_email_not_found_account": "This invite was sent to %(email)s which is not associated with your account", + "3pid_invite_email_not_found_account_room": "This invite to %(roomName)s was sent to %(email)s which is not associated with your account", + "3pid_invite_error_description": "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to the person who invited you.", + "3pid_invite_error_invite_action": "Try to join anyway", + "3pid_invite_error_invite_subtitle": "You can only join it with a working invite.", + "3pid_invite_error_public_subtitle": "You can still join here.", + "3pid_invite_error_title": "Something went wrong with your invite.", + "3pid_invite_error_title_room": "Something went wrong with your invite to %(roomName)s", + "3pid_invite_no_is_subtitle": "Use an identity server in Settings to receive invites directly in %(brand)s.", + "banned_by": "You were banned by %(memberName)s", + "banned_from_room_by": "You were banned from %(roomName)s by %(memberName)s", + "context_menu": { + "copy_link": "Copy room link", + "favourite": "Favourite", + "forget": "Forget Room", + "low_priority": "Low Priority", + "mark_read": "Mark as read", + "mentions_only": "Mentions only", + "notifications_default": "Match default setting", + "notifications_mute": "Mute room", + "title": "Room options", + "unfavourite": "Favourited" + }, + "creating_room_text": "We're creating a room with %(names)s", + "dm_invite_action": "Start chatting", + "dm_invite_subtitle": " wants to chat", + "dm_invite_title": "Do you want to chat with %(user)s?", + "drop_file_prompt": "Drop file here to upload", + "edit_topic": "Edit topic", + "error_3pid_invite_email_lookup": "Unable to find user by email", + "error_cancel_knock_title": "Failed to cancel", + "error_join_403": "You need an invite to access this room.", + "error_join_404_1": "You attempted to join using a room ID without providing a list of servers to join through. Room IDs are internal identifiers and cannot be used to join a room without additional information.", + "error_join_404_2": "If you know a room address, try joining through that instead.", + "error_join_404_invite": "The person who invited you has already left, or their server is offline.", + "error_join_404_invite_same_hs": "The person who invited you has already left.", + "error_join_connection": "There was an error joining.", + "error_join_incompatible_version_1": "Sorry, your homeserver is too old to participate here.", + "error_join_incompatible_version_2": "Please contact your homeserver administrator.", + "error_join_title": "Failed to join", + "error_jump_to_date": "Server returned %(statusCode)s with error code %(errorCode)s", + "error_jump_to_date_connection": "A network error occurred while trying to find and jump to the given date. Your homeserver might be down or there was just a temporary problem with your internet connection. Please try again. If this continues, please contact your homeserver administrator.", + "error_jump_to_date_details": "Error details", + "error_jump_to_date_not_found": "We were unable to find an event looking forwards from %(dateString)s. Try choosing an earlier date.", + "error_jump_to_date_send_logs_prompt": "Please submit debug logs to help us track down the problem.", + "error_jump_to_date_title": "Unable to find event at that date", + "face_pile_summary": { + "one": "%(count)s person you know has already joined", + "other": "%(count)s people you know have already joined" + }, + "face_pile_tooltip_label": { + "one": "View 1 member", + "other": "View all %(count)s members" + }, + "face_pile_tooltip_shortcut": "Including %(commaSeparatedMembers)s", + "face_pile_tooltip_shortcut_joined": "Including you, %(commaSeparatedMembers)s", + "failed_reject_invite": "Failed to reject invite", + "forget_room": "Forget this room", + "forget_space": "Forget this space", + "header": { + "close_call_button": "Close call", + "forget_room_button": "Forget room", + "hide_widgets_button": "Hide Widgets", + "n_people_asking_to_join": { + "one": "Asking to join", + "other": "%(count)s people asking to join" + }, + "room_is_public": "This room is public", + "show_widgets_button": "Show Widgets", + "video_call_button_ec": "Video call (%(brand)s)", + "video_call_button_jitsi": "Video call (Jitsi)", + "video_call_ec_change_layout": "Change layout", + "video_call_ec_layout_freedom": "Freedom", + "video_call_ec_layout_spotlight": "Spotlight", + "video_room_view_chat_button": "View chat timeline" + }, + "header_untrusted_label": "Untrusted", + "inaccessible": "This room or space is not accessible at this time.", + "inaccessible_name": "%(roomName)s is not accessible at this time.", + "inaccessible_subtitle_1": "Try again later, or ask a room or space admin to check if you have access.", + "inaccessible_subtitle_2": "%(errcode)s was returned while trying to access the room or space. If you think you're seeing this message in error, please submit a bug report.", + "intro": { + "dm_caption": "Only the two of you are in this conversation, unless either of you invites anyone to join.", + "enable_encryption_prompt": "Enable encryption in settings.", + "encrypted_3pid_dm_pending_join": "Once everyone has joined, you’ll be able to chat", + "no_avatar_label": "Add a photo, so people can easily spot your room.", + "no_topic": "Add a topic to help people know what it is about.", + "private_unencrypted_warning": "Your private messages are normally encrypted, but this room isn't. Usually this is due to an unsupported device or method being used, like email invites.", + "room_invite": "Invite to just this room", + "send_message_start_dm": "Send your first message to invite to chat", + "start_of_dm_history": "This is the beginning of your direct message history with .", + "start_of_room": "This is the start of .", + "topic": "Topic: %(topic)s ", + "topic_edit": "Topic: %(topic)s (edit)", + "unencrypted_warning": "End-to-end encryption isn't enabled", + "user_created": "%(displayName)s created this room.", + "you_created": "You created this room." + }, + "invite_email_mismatch_suggestion": "Share this email in Settings to receive invites directly in %(brand)s.", + "invite_reject_ignore": "Reject & Ignore user", + "invite_sent_to_email": "This invite was sent to %(email)s", + "invite_sent_to_email_room": "This invite to %(roomName)s was sent to %(email)s", + "invite_subtitle": " invited you", + "invite_this_room": "Invite to this room", + "invite_title": "Do you want to join %(roomName)s?", + "inviter_unknown": "Unknown", + "invites_you_text": " invites you", + "join_button_account": "Sign Up", + "join_failed_enable_video_rooms": "To join, please enable video rooms in Labs first", + "join_failed_needs_invite": "To view %(roomName)s, you need an invite", + "join_the_discussion": "Join the discussion", + "join_title": "Join the room to participate", + "join_title_account": "Join the conversation with an account", + "joining": "Joining…", + "joining_room": "Joining room…", + "joining_space": "Joining space…", + "jump_read_marker": "Jump to first unread message.", + "jump_to_bottom_button": "Scroll to most recent messages", + "jump_to_date": "Jump to date", + "jump_to_date_beginning": "The beginning of the room", + "jump_to_date_prompt": "Pick a date to jump to", + "kick_reason": "Reason: %(reason)s", + "kicked_by": "You were removed by %(memberName)s", + "kicked_from_room_by": "You were removed from %(roomName)s by %(memberName)s", + "knock_cancel_action": "Cancel request", + "knock_denied_subtitle": "As you have been denied access, you cannot rejoin unless you are invited by the admin or moderator of the group.", + "knock_denied_title": "You have been denied access", + "knock_message_field_placeholder": "Message (optional)", + "knock_prompt": "Ask to join?", + "knock_prompt_name": "Ask to join %(roomName)s?", + "knock_send_action": "Request access", + "knock_sent": "Request to join sent", + "knock_sent_subtitle": "Your request to join is pending.", + "knock_subtitle": "You need to be granted access to this room in order to view or participate in the conversation. You can send a request to join below.", + "leave_error_title": "Error leaving room", + "leave_server_notices_description": "This room is used for important messages from the Homeserver, so you cannot leave it.", + "leave_server_notices_title": "Can't leave Server Notices room", + "leave_unexpected_error": "Unexpected server error trying to leave the room", + "link_email_to_receive_3pid_invite": "Link this email with your account in Settings to receive invites directly in %(brand)s.", + "loading_preview": "Loading preview", + "no_peek_join_prompt": "%(roomName)s can't be previewed. Do you want to join it?", + "no_peek_no_name_join_prompt": "There's no preview, would you like to join?", + "not_found_subtitle": "Are you sure you're at the right place?", + "not_found_title": "This room or space does not exist.", + "not_found_title_name": "%(roomName)s does not exist.", + "peek_join_prompt": "You're previewing %(roomName)s. Want to join it?", + "read_topic": "Click to read topic", + "rejecting": "Rejecting invite…", + "rejoin_button": "Re-join", + "search": { + "all_rooms": "All Rooms", + "all_rooms_button": "Search all rooms", + "field_placeholder": "Search…", + "result_count": { + "one": "(~%(count)s result)", + "other": "(~%(count)s results)" + }, + "this_room": "This Room", + "this_room_button": "Search this room" + }, + "show_labs_settings": "Show Labs settings", + "status_bar": { + "delete_all": "Delete all", + "exceeded_resource_limit": "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.", + "homeserver_blocked": "Your message wasn't sent because this homeserver has been blocked by its administrator. Please contact your service administrator to continue using the service.", + "monthly_user_limit_reached": "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.", + "requires_consent_agreement": "You can't send any messages until you review and agree to our terms and conditions.", + "retry_all": "Retry all", + "select_messages_to_retry": "You can select all or individual messages to retry or delete", + "server_connectivity_lost_description": "Sent messages will be stored until your connection has returned.", + "server_connectivity_lost_title": "Connectivity to the server has been lost.", + "some_messages_not_sent": "Some of your messages have not been sent" + }, + "unknown_status_code_for_timeline_jump": "unknown status code", + "unread_notifications_predecessor": { + "one": "You have %(count)s unread notification in a prior version of this room.", + "other": "You have %(count)s unread notifications in a prior version of this room." + }, + "upgrade_error_description": "Double check that your server supports the room version chosen and try again.", + "upgrade_error_title": "Error upgrading room", + "upgrade_warning_bar": "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.", + "upgrade_warning_bar_admins": "Only room administrators will see this warning", + "upgrade_warning_bar_unstable": "This room is running room version , which this homeserver has marked as unstable.", + "upgrade_warning_bar_upgraded": "This room has already been upgraded.", + "upload": { + "uploading_multiple_file": { + "one": "Uploading %(filename)s and %(count)s other", + "other": "Uploading %(filename)s and %(count)s others" + }, + "uploading_single_file": "Uploading %(filename)s" + }, + "view_failed_enable_video_rooms": "To view, please enable video rooms in Labs first", + "waiting_for_join_subtitle": "Once invited users have joined %(brand)s, you will be able to chat and the room will be end-to-end encrypted", + "waiting_for_join_title": "Waiting for users to join %(brand)s" + }, + "room_list": { + "add_room_label": "Add room", + "add_space_label": "Add space", + "breadcrumbs_empty": "No recently visited rooms", + "breadcrumbs_label": "Recently visited rooms", + "failed_add_tag": "Failed to add tag %(tagName)s to room", + "failed_remove_tag": "Failed to remove tag %(tagName)s from room", + "failed_set_dm_tag": "Failed to set direct message tag", + "home_menu_label": "Home options", + "join_public_room_label": "Join public room", + "joining_rooms_status": { + "one": "Currently joining %(count)s room", + "other": "Currently joining %(count)s rooms" + }, + "notification_options": "Notification options", + "redacting_messages_status": { + "one": "Currently removing messages in %(count)s room", + "other": "Currently removing messages in %(count)s rooms" + }, + "show_less": "Show less", + "show_n_more": { + "one": "Show %(count)s more", + "other": "Show %(count)s more" + }, + "show_previews": "Show previews of messages", + "sort_by": "Sort by", + "sort_by_activity": "Activity", + "sort_by_alphabet": "A-Z", + "sort_unread_first": "Show rooms with unread messages first", + "space_menu_label": "%(spaceName)s menu", + "sublist_options": "List options", + "suggested_rooms_heading": "Suggested Rooms" + }, + "room_settings": { + "access": { + "description_space": "Decide who can view and join %(spaceName)s.", + "title": "Access" + }, + "advanced": { + "error_upgrade_description": "The room upgrade could not be completed", + "error_upgrade_title": "Failed to upgrade room", + "information_section_room": "Room information", + "information_section_space": "Space information", + "room_id": "Internal room ID", + "room_predecessor": "View older messages in %(roomName)s.", + "room_upgrade_button": "Upgrade this room to the recommended room version", + "room_upgrade_warning": "Warning: upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.", + "room_version": "Room version:", + "room_version_section": "Room version", + "space_predecessor": "View older version of %(spaceName)s.", + "space_upgrade_button": "Upgrade this space to the recommended room version", + "unfederated": "This room is not accessible by remote Matrix servers", + "upgrade_button": "Upgrade this room to version %(version)s", + "upgrade_dialog_description": "Upgrading this room requires closing down the current instance of the room and creating a new room in its place. To give room members the best possible experience, we will:", + "upgrade_dialog_description_1": "Create a new room with the same name, description and avatar", + "upgrade_dialog_description_2": "Update any local room aliases to point to the new room", + "upgrade_dialog_description_3": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room", + "upgrade_dialog_description_4": "Put a link back to the old room at the start of the new room so people can see old messages", + "upgrade_dialog_title": "Upgrade Room Version", + "upgrade_dwarning_ialog_title_public": "Upgrade public room", + "upgrade_warning_dialog_description": "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.", + "upgrade_warning_dialog_explainer": "Please note upgrading will make a new version of the room. All current messages will stay in this archived room.", + "upgrade_warning_dialog_footer": "You'll upgrade this room from to .", + "upgrade_warning_dialog_invite_label": "Automatically invite members from this room to the new one", + "upgrade_warning_dialog_report_bug_prompt": "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.", + "upgrade_warning_dialog_report_bug_prompt_link": "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.", + "upgrade_warning_dialog_title": "Upgrade room", + "upgrade_warning_dialog_title_private": "Upgrade private room" + }, + "alias_not_specified": "not specified", + "bridges": { + "description": "This room is bridging messages to the following platforms. Learn more.", + "empty": "This room isn't bridging messages to any platforms. Learn more.", + "title": "Bridges" + }, + "delete_avatar_label": "Delete avatar", + "general": { + "alias_field_has_domain_invalid": "Missing domain separator e.g. (:domain.org)", + "alias_field_has_localpart_invalid": "Missing room name or separator e.g. (my-room:domain.org)", + "alias_field_matches_invalid": "This address does not point at this room", + "alias_field_placeholder_default": "e.g. my-room", + "alias_field_required_invalid": "Please provide an address", + "alias_field_safe_localpart_invalid": "Some characters not allowed", + "alias_field_taken_invalid": "This address had invalid server or is already in use", + "alias_field_taken_invalid_domain": "This address is already in use", + "alias_field_taken_valid": "This address is available to use", + "alias_heading": "Room address", + "aliases_items_label": "Other published addresses:", + "aliases_no_items_label": "No other published addresses yet, add one below", + "aliases_section": "Room Addresses", + "avatar_field_label": "Room avatar", + "canonical_alias_field_label": "Main address", + "default_url_previews_off": "URL previews are disabled by default for participants in this room.", + "default_url_previews_on": "URL previews are enabled by default for participants in this room.", + "description_space": "Edit settings relating to your space.", + "error_creating_alias_description": "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.", + "error_creating_alias_title": "Error creating address", + "error_deleting_alias_description": "There was an error removing that address. It may no longer exist or a temporary error occurred.", + "error_deleting_alias_description_forbidden": "You don't have permission to delete the address.", + "error_deleting_alias_title": "Error removing address", + "error_save_space_settings": "Failed to save space settings.", + "error_updating_alias_description": "There was an error updating the room's alternative addresses. It may not be allowed by the server or a temporary failure occurred.", + "error_updating_canonical_alias_description": "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_canonical_alias_title": "Error updating main address", + "leave_space": "Leave Space", + "local_alias_field_label": "Local address", + "local_aliases_explainer_room": "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)", + "local_aliases_explainer_space": "Set addresses for this space so users can find this space through your homeserver (%(localDomain)s)", + "local_aliases_section": "Local Addresses", + "name_field_label": "Room Name", + "new_alias_placeholder": "New published address (e.g. #alias:server)", + "no_aliases_room": "This room has no local addresses", + "no_aliases_space": "This space has no local addresses", + "other_section": "Other", + "publish_toggle": "Publish this room to the public in %(domain)s's room directory?", + "published_aliases_description": "To publish an address, it needs to be set as a local address first.", + "published_aliases_explainer_room": "Published addresses can be used by anyone on any server to join your room.", + "published_aliases_explainer_space": "Published addresses can be used by anyone on any server to join your space.", + "published_aliases_section": "Published Addresses", + "save": "Save Changes", + "topic_field_label": "Room Topic", + "url_preview_encryption_warning": "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.", + "url_preview_explainer": "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.", + "url_previews_section": "URL Previews", + "user_url_previews_default_off": "You have disabled URL previews by default.", + "user_url_previews_default_on": "You have enabled URL previews by default." + }, + "notifications": { + "browse_button": "Browse", + "custom_sound_prompt": "Set a new custom sound", + "notification_sound": "Notification sound", + "settings_link": "Get notifications as set up in your settings", + "sounds_section": "Sounds", + "upload_sound_label": "Upload custom sound", + "uploaded_sound": "Uploaded sound" + }, + "people": { + "knock_empty": "No requests", + "knock_section": "Asking to join", + "see_less": "See less", + "see_more": "See more" + }, + "permissions": { + "add_privileged_user_description": "Give one or multiple users in this room more privileges", + "add_privileged_user_filter_placeholder": "Search users in this room…", + "add_privileged_user_heading": "Add privileged users", + "ban": "Ban users", + "ban_reason": "Reason", + "banned_by": "Banned by %(displayName)s", + "banned_users_section": "Banned users", + "error_changing_pl_description": "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.", + "error_changing_pl_reqs_description": "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.", + "error_changing_pl_reqs_title": "Error changing power level requirement", + "error_changing_pl_title": "Error changing power level", + "error_unbanning": "Failed to unban", + "events_default": "Send messages", + "invite": "Invite users", + "io.element.voice_broadcast_info": "Voice broadcasts", + "kick": "Remove users", + "m.call": "Start %(brand)s calls", + "m.call.member": "Join %(brand)s calls", + "m.reaction": "Send reactions", + "m.room.avatar": "Change room avatar", + "m.room.avatar_space": "Change space avatar", + "m.room.canonical_alias": "Change main address for the room", + "m.room.canonical_alias_space": "Change main address for the space", + "m.room.encryption": "Enable room encryption", + "m.room.history_visibility": "Change history visibility", + "m.room.name": "Change room name", + "m.room.name_space": "Change space name", + "m.room.pinned_events": "Manage pinned events", + "m.room.power_levels": "Change permissions", + "m.room.redaction": "Remove messages sent by me", + "m.room.server_acl": "Change server ACLs", + "m.room.tombstone": "Upgrade the room", + "m.room.topic": "Change topic", + "m.room.topic_space": "Change description", + "m.space.child": "Manage rooms in this space", + "m.widget": "Modify widgets", + "muted_users_section": "Muted Users", + "no_privileged_users": "No users have specific privileges in this room", + "notifications.room": "Notify everyone", + "permissions_section": "Permissions", + "permissions_section_description_room": "Select the roles required to change various parts of the room", + "permissions_section_description_space": "Select the roles required to change various parts of the space", + "privileged_users_section": "Privileged Users", + "redact": "Remove messages sent by others", + "send_event_type": "Send %(eventType)s events", + "state_default": "Change settings", + "title": "Roles & Permissions", + "users_default": "Default role" + }, + "security": { + "enable_encryption_confirm_description": "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.", + "enable_encryption_confirm_title": "Enable encryption?", + "enable_encryption_public_room_confirm_description_1": "It's not recommended to add encryption to public rooms. Anyone can find and join public rooms, so anyone can read messages in them. You'll get none of the benefits of encryption, and you won't be able to turn it off later. Encrypting messages in a public room will make receiving and sending messages slower.", + "enable_encryption_public_room_confirm_description_2": "To avoid these issues, create a new encrypted room for the conversation you plan to have.", + "enable_encryption_public_room_confirm_title": "Are you sure you want to add encryption to this public room?", + "encrypted_room_public_confirm_description_1": "It's not recommended to make encrypted rooms public. It will mean anyone can find and join the room, so anyone can read messages. You'll get none of the benefits of encryption. Encrypting messages in a public room will make receiving and sending messages slower.", + "encrypted_room_public_confirm_description_2": "To avoid these issues, create a new public room for the conversation you plan to have.", + "encrypted_room_public_confirm_title": "Are you sure you want to make this encrypted room public?", + "encryption_forced": "Your server requires encryption to be disabled.", + "encryption_permanent": "Once enabled, encryption cannot be disabled.", + "error_join_rule_change_title": "Failed to update the join rules", + "error_join_rule_change_unknown": "Unknown failure", + "guest_access_warning": "People with supported clients will be able to join the room without having a registered account.", + "history_visibility_invited": "Members only (since they were invited)", + "history_visibility_joined": "Members only (since they joined)", + "history_visibility_legend": "Who can read history?", + "history_visibility_shared": "Members only (since the point in time of selecting this option)", + "history_visibility_warning": "Changes to who can read history will only apply to future messages in this room. The visibility of existing history will be unchanged.", + "history_visibility_world_readable": "Anyone", + "join_rule_description": "Decide who can join %(roomName)s.", + "join_rule_invite": "Private (invite only)", + "join_rule_invite_description": "Only invited people can join.", + "join_rule_knock": "Ask to join", + "join_rule_knock_description": "People cannot join unless access is granted.", + "join_rule_public_description": "Anyone can find and join.", + "join_rule_restricted": "Space members", + "join_rule_restricted_description": "Anyone in a space can find and join. Edit which spaces can access here.", + "join_rule_restricted_description_active_space": "Anyone in can find and join. You can select other spaces too.", + "join_rule_restricted_description_prompt": "Anyone in a space can find and join. You can select multiple spaces.", + "join_rule_restricted_description_spaces": "Spaces with access", + "join_rule_restricted_dialog_description": "Decide which spaces can access this room. If a space is selected, its members can find and join .", + "join_rule_restricted_dialog_empty_warning": "You're removing all spaces. Access will default to invite only", + "join_rule_restricted_dialog_filter_placeholder": "Search spaces", + "join_rule_restricted_dialog_heading_known": "Other spaces you know", + "join_rule_restricted_dialog_heading_other": "Other spaces or rooms you might not know", + "join_rule_restricted_dialog_heading_room": "Spaces you know that contain this room", + "join_rule_restricted_dialog_heading_space": "Spaces you know that contain this space", + "join_rule_restricted_dialog_heading_unknown": "These are likely ones other room admins are a part of.", + "join_rule_restricted_dialog_title": "Select spaces", + "join_rule_restricted_n_more": { + "one": "& %(count)s more", + "other": "& %(count)s more" + }, + "join_rule_restricted_summary": { + "one": "Currently, a space has access", + "other": "Currently, %(count)s spaces have access" + }, + "join_rule_restricted_upgrade_description": "This upgrade will allow members of selected spaces access to this room without an invite.", + "join_rule_restricted_upgrade_warning": "This room is in some spaces you're not an admin of. In those spaces, the old room will still be shown, but people will be prompted to join the new one.", + "join_rule_upgrade_awaiting_room": "Loading new room", + "join_rule_upgrade_required": "Upgrade required", + "join_rule_upgrade_sending_invites": { + "one": "Sending invite...", + "other": "Sending invites... (%(progress)s out of %(count)s)" + }, + "join_rule_upgrade_updating_spaces": { + "one": "Updating space...", + "other": "Updating spaces... (%(progress)s out of %(count)s)" + }, + "join_rule_upgrade_upgrading_room": "Upgrading room", + "public_without_alias_warning": "To link to this room, please add an address.", + "publish_room": "Make this room visible in the public room directory.", + "publish_space": "Make this space visible in the public room directory.", + "strict_encryption": "Never send encrypted messages to unverified sessions in this room from this session", + "title": "Security & Privacy" + }, + "title": "Room Settings - %(roomName)s", + "upload_avatar_label": "Upload avatar", + "visibility": { + "alias_section": "Address", + "error_failed_save": "Failed to update the visibility of this space", + "error_update_guest_access": "Failed to update the guest access of this space", + "error_update_history_visibility": "Failed to update the history visibility of this space", + "guest_access_explainer": "Guests can join a space without having an account.", + "guest_access_explainer_public_space": "This may be useful for public spaces.", + "guest_access_label": "Enable guest access", + "history_visibility_anyone_space": "Preview Space", + "history_visibility_anyone_space_description": "Allow people to preview your space before they join.", + "history_visibility_anyone_space_recommendation": "Recommended for public spaces.", + "title": "Visibility" + }, + "voip": { + "call_type_section": "Call type", + "enable_element_call_caption": "%(brand)s is end-to-end encrypted, but is currently limited to smaller numbers of users.", + "enable_element_call_label": "Enable %(brand)s as an additional calling option in this room", + "enable_element_call_no_permissions_tooltip": "You do not have sufficient permissions to change this." + } }, - "in_space1_and_space2": "In spaces %(space1Name)s and %(space2Name)s.", - "in_space": "In %(spaceName)s.", - "identity_server": { - "change": "Change identity server", - "change_prompt": "Disconnect from the identity server and connect to instead?", - "change_server_prompt": "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.", - "checking": "Checking server", - "description_connected": "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.", - "description_disconnected": "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.", - "description_optional": "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.", - "disconnect": "Disconnect identity server", - "disconnect_anyway": "Disconnect anyway", - "disconnect_offline_warning": "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.", - "disconnect_personal_data_warning_1": "You are still sharing your personal data on the identity server .", - "disconnect_personal_data_warning_2": "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.", - "disconnect_server": "Disconnect from the identity server ?", - "disconnect_warning": "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.", - "do_not_use": "Do not use an identity server", - "error_connection": "Could not connect to identity server", - "error_invalid": "Not a valid identity server (status code %(code)s)", - "error_invalid_or_terms": "Terms of service not accepted or the identity server is invalid.", - "no_terms": "The identity server you have chosen does not have any terms of service.", - "suggestions": "You should:", - "suggestions_1": "check your browser plugins for anything that might block the identity server (such as Privacy Badger)", - "suggestions_2": "contact the administrators of identity server ", - "suggestions_3": "wait and try again later", - "url": "Identity server (%(server)s)", - "url_field_label": "Enter a new identity server", - "url_not_https": "Identity server URL must be HTTPS" + "room_summary_card_back_action_label": "Room information", + "scalar": { + "error_create": "Unable to create widget.", + "error_membership": "You are not in this room.", + "error_missing_room_id": "Missing roomId.", + "error_missing_room_id_request": "Missing room_id in request", + "error_missing_user_id_request": "Missing user_id in request", + "error_permission": "You do not have permission to do that in this room.", + "error_power_level_invalid": "Power level must be positive integer.", + "error_room_not_visible": "Room %(roomId)s not visible", + "error_room_unknown": "This room is not recognised.", + "error_send_request": "Failed to send request.", + "failed_read_event": "Failed to read events", + "failed_send_event": "Failed to send event" }, - "forward": { - "filter_placeholder": "Search for rooms or people", - "message_preview_heading": "Message preview", - "no_perms_title": "You don't have permission to do this", - "open_room": "Open room", - "send_label": "Send", - "sending": "Sending", - "sent": "Sent" + "server_offline": { + "description": "Your server isn't responding to some of your requests. Below are some of the most likely reasons.", + "description_1": "The server (%(serverName)s) took too long to respond.", + "description_2": "Your firewall or anti-virus is blocking the request.", + "description_3": "A browser extension is preventing the request.", + "description_4": "The server is offline.", + "description_5": "The server has denied your request.", + "description_6": "Your area is experiencing difficulties connecting to the internet.", + "description_7": "A connection error occurred while trying to contact the server.", + "description_8": "The server is not configured to indicate what the problem is (CORS).", + "empty_timeline": "You're all caught up.", + "recent_changes_heading": "Recent changes that have not yet been received", + "title": "Server isn't responding" }, - "file_panel": { - "empty_description": "Attach files from chat or just drag and drop them anywhere in a room.", - "empty_heading": "No files visible in this room", - "guest_note": "You must register to use this functionality", - "peek_note": "You must join the room to see its files" + "seshat": { + "error_initialising": "Message search initialisation failed, check your settings for more information", + "reset_button": "Reset event store", + "reset_description": "You most likely do not want to reset your event index store", + "reset_explainer": "If you do, please note that none of your messages will be deleted, but the search experience might be degraded for a few moments whilst the index is recreated", + "reset_title": "Reset event store?", + "warning_kind_files": "This version of %(brand)s does not support viewing some encrypted files", + "warning_kind_files_app": "Use the Desktop app to see all encrypted files", + "warning_kind_search": "This version of %(brand)s does not support searching encrypted messages", + "warning_kind_search_app": "Use the Desktop app to search encrypted messages" }, - "feedback": { - "can_contact_label": "You may contact me if you have any follow up questions", - "comment_label": "Comment", - "existing_issue_link": "Please view existing bugs on Github first. No match? Start a new one.", - "may_contact_label": "You may contact me if you want to follow up or to let me test out upcoming ideas", - "platform_username": "Your platform and username will be noted to help us use your feedback as much as we can.", - "pro_type": "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.", - "send_feedback_action": "Send feedback", - "sent": "Feedback sent! Thanks, we appreciate it!" + "setting": { + "help_about": { + "access_token_detail": "Your access token gives full access to your account. Do not share it with anyone.", + "brand_version": "%(brand)s version:", + "chat_bot": "Chat with %(brand)s Bot", + "clear_cache_reload": "Clear cache and reload", + "help_link": "For help with using %(brand)s, click here.", + "help_link_chat_bot": "For help with using %(brand)s, click here or start a chat with our bot using the button below.", + "homeserver": "Homeserver is %(homeserverUrl)s", + "identity_server": "Identity server is %(identityServerUrl)s", + "olm_version": "Olm version:", + "title": "Help & About", + "versions": "Versions" + } }, - "failed_load_async_component": "Unable to load! Check your network connectivity and try again.", - "export_chat": { - "cancelled": "Export Cancelled", - "cancelled_detail": "The export was cancelled successfully", - "confirm_stop": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", - "creating_html": "Creating HTML…", - "creating_output": "Creating output…", - "creator_summary": "%(creatorName)s created this room.", - "current_timeline": "Current Timeline", - "enter_number_between_min_max": "Enter a number between %(min)s and %(max)s", - "error_fetching_file": "Error fetching file", - "export_info": "This is the start of export of . Exported by at %(exportDate)s.", - "export_successful": "Export successful!", - "exported_n_events_in_time": { - "one": "Exported %(count)s event in %(seconds)s seconds", - "other": "Exported %(count)s events in %(seconds)s seconds" + "settings": { + "all_rooms_home": "Show all rooms in Home", + "all_rooms_home_description": "All rooms you're in will appear in Home.", + "always_show_message_timestamps": "Always show message timestamps", + "appearance": { + "custom_font": "Use a system font", + "custom_font_description": "Set the name of a font installed on your system & %(brand)s will attempt to use it.", + "custom_font_name": "System font name", + "custom_font_size": "Use custom size", + "custom_theme_add_button": "Add theme", + "custom_theme_error_downloading": "Error downloading theme information.", + "custom_theme_invalid": "Invalid theme schema.", + "custom_theme_success": "Theme added!", + "custom_theme_url": "Custom theme URL", + "font_size": "Font size", + "font_size_limit": "Custom font size can only be between %(min)s pt and %(max)s pt", + "font_size_nan": "Size must be a number", + "font_size_valid": "Use between %(min)s pt and %(max)s pt", + "heading": "Customise your appearance", + "image_size_default": "Default", + "image_size_large": "Large", + "layout_bubbles": "Message bubbles", + "layout_irc": "IRC (Experimental)", + "match_system_theme": "Match system theme", + "subheading": "Appearance Settings only affect this %(brand)s session.", + "timeline_image_size": "Image size in the timeline", + "use_high_contrast": "Use high contrast" + }, + "automatic_language_detection_syntax_highlight": "Enable automatic language detection for syntax highlighting", + "autoplay_gifs": "Autoplay GIFs", + "autoplay_videos": "Autoplay videos", + "big_emoji": "Enable big emoji in chat", + "code_block_expand_default": "Expand code blocks by default", + "code_block_line_numbers": "Show line numbers in code blocks", + "disable_historical_profile": "Show current profile picture and name for users in message history", + "emoji_autocomplete": "Enable Emoji suggestions while typing", + "enable_markdown": "Enable Markdown", + "enable_markdown_description": "Start messages with /plain to send without markdown.", + "general": { + "account_management_section": "Account management", + "account_section": "Account", + "add_email_dialog_title": "Add Email Address", + "add_email_failed_verification": "Failed to verify email address: make sure you clicked the link in the email", + "add_email_instructions": "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.", + "add_msisdn_confirm_body": "Click the button below to confirm adding this phone number.", + "add_msisdn_confirm_button": "Confirm adding phone number", + "add_msisdn_confirm_sso_button": "Confirm adding this phone number by using Single Sign On to prove your identity.", + "add_msisdn_dialog_title": "Add Phone Number", + "add_msisdn_instructions": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.", + "add_msisdn_misconfigured": "The add / bind with MSISDN flow is misconfigured", + "confirm_adding_email_body": "Click the button below to confirm adding this email address.", + "confirm_adding_email_title": "Confirm adding email", + "deactivate_confirm_body": "Are you sure you want to deactivate your account? This is irreversible.", + "deactivate_confirm_body_password": "To continue, please enter your account password:", + "deactivate_confirm_body_sso": "Confirm your account deactivation by using Single Sign On to prove your identity.", + "deactivate_confirm_content": "Confirm that you would like to deactivate your account. If you proceed:", + "deactivate_confirm_content_1": "You will not be able to reactivate your account", + "deactivate_confirm_content_2": "You will no longer be able to log in", + "deactivate_confirm_content_3": "No one will be able to reuse your username (MXID), including you: this username will remain unavailable", + "deactivate_confirm_content_4": "You will leave all rooms and DMs that you are in", + "deactivate_confirm_content_5": "You will be removed from the identity server: your friends will no longer be able to find you with your email or phone number", + "deactivate_confirm_content_6": "Your old messages will still be visible to people who received them, just like emails you sent in the past. Would you like to hide your sent messages from people who join rooms in the future?", + "deactivate_confirm_continue": "Confirm account deactivation", + "deactivate_confirm_erase_label": "Hide my messages from new joiners", + "deactivate_section": "Deactivate Account", + "deactivate_warning": "Deactivating your account is a permanent action — be careful!", + "discovery_email_empty": "Discovery options will appear once you have added an email above.", + "discovery_email_verification_instructions": "Verify the link in your inbox", + "discovery_msisdn_empty": "Discovery options will appear once you have added a phone number above.", + "discovery_needs_terms": "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.", + "discovery_section": "Discovery", + "email_address_in_use": "This email address is already in use", + "email_address_label": "Email Address", + "email_not_verified": "Your email address hasn't been verified yet", + "email_verification_instructions": "Click the link in the email you received to verify and then click continue again.", + "emails_heading": "Email addresses", + "error_add_email": "Unable to add email address", + "error_deactivate_communication": "There was a problem communicating with the server. Please try again.", + "error_deactivate_invalid_auth": "Server did not return valid authentication information.", + "error_deactivate_no_auth": "Server did not require any authentication", + "error_email_verification": "Unable to verify email address.", + "error_invalid_email": "Invalid Email Address", + "error_invalid_email_detail": "This doesn't appear to be a valid email address", + "error_msisdn_verification": "Unable to verify phone number.", + "error_password_change_403": "Failed to change password. Is your password correct?", + "error_password_change_http": "%(errorMessage)s (HTTP status %(httpStatus)s)", + "error_password_change_title": "Error changing password", + "error_password_change_unknown": "Unknown password change error (%(stringifiedError)s)", + "error_remove_3pid": "Unable to remove contact information", + "error_revoke_email_discovery": "Unable to revoke sharing for email address", + "error_revoke_msisdn_discovery": "Unable to revoke sharing for phone number", + "error_saving_profile": "The operation could not be completed", + "error_saving_profile_title": "Failed to save your profile", + "error_share_email_discovery": "Unable to share email address", + "error_share_msisdn_discovery": "Unable to share phone number", + "external_account_management": "Your account details are managed separately at %(hostname)s.", + "identity_server_no_token": "No identity access token found", + "identity_server_not_set": "Identity server not set", + "incorrect_msisdn_verification": "Incorrect verification code", + "language_section": "Language and region", + "msisdn_in_use": "This phone number is already in use", + "msisdn_label": "Phone Number", + "msisdn_verification_field_label": "Verification code", + "msisdn_verification_instructions": "Please enter verification code sent via text.", + "msisdns_heading": "Phone numbers", + "name_placeholder": "No display name", + "oidc_manage_button": "Manage account", + "password_change_section": "Set a new account password…", + "password_change_success": "Your password was successfully changed.", + "remove_email_prompt": "Remove %(email)s?", + "remove_msisdn_prompt": "Remove %(phone)s?", + "spell_check_locale_placeholder": "Choose a locale", + "spell_check_section": "Spell check" + }, + "image_thumbnails": "Show previews/thumbnails for images", + "inline_url_previews_default": "Enable inline URL previews by default", + "inline_url_previews_room": "Enable URL previews by default for participants in this room", + "inline_url_previews_room_account": "Enable URL previews for this room (only affects you)", + "insert_trailing_colon_mentions": "Insert a trailing colon after user mentions at the start of a message", + "jump_to_bottom_on_send": "Jump to the bottom of the timeline when you send a message", + "key_backup": { + "backup_in_progress": "Your keys are being backed up (the first backup could take a few minutes).", + "backup_starting": "Starting backup…", + "backup_success": "Success!", + "cannot_create_backup": "Unable to create key backup", + "create_title": "Create key backup", + "setup_secure_backup": { + "backup_setup_success_description": "Your keys are now being backed up from this device.", + "backup_setup_success_title": "Secure Backup successful", + "cancel_warning": "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.", + "confirm_security_phrase": "Confirm your Security Phrase", + "description": "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.", + "download_or_copy": "%(downloadButton)s or %(copyButton)s", + "enter_phrase_description": "Enter a Security Phrase only you know, as it's used to safeguard your data. To be secure, you shouldn't re-use your account password.", + "enter_phrase_title": "Enter a Security Phrase", + "enter_phrase_to_confirm": "Enter your Security Phrase a second time to confirm it.", + "generate_security_key_description": "We'll generate a Security Key for you to store somewhere safe, like a password manager or a safe.", + "generate_security_key_title": "Generate a Security Key", + "pass_phrase_match_failed": "That doesn't match.", + "pass_phrase_match_success": "That matches!", + "phrase_strong_enough": "Great! This Security Phrase looks strong enough.", + "requires_key_restore": "Restore your key backup to upgrade your encryption", + "requires_password_confirmation": "Enter your account password to confirm the upgrade:", + "requires_server_authentication": "You'll need to authenticate with the server to confirm the upgrade.", + "secret_storage_query_failure": "Unable to query secret storage status", + "security_key_safety_reminder": "Store your Security Key somewhere safe, like a password manager or a safe, as it's used to safeguard your encrypted data.", + "session_upgrade_description": "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.", + "set_phrase_again": "Go back to set it again.", + "settings_reminder": "You can also set up Secure Backup & manage your keys in Settings.", + "title_confirm_phrase": "Confirm Security Phrase", + "title_save_key": "Save your Security Key", + "title_set_phrase": "Set a Security Phrase", + "title_upgrade_encryption": "Upgrade your encryption", + "unable_to_setup": "Unable to set up secret storage", + "use_different_passphrase": "Use a different passphrase?", + "use_phrase_only_you_know": "Use a secret phrase only you know, and optionally save a Security Key to use for backup." + } }, - "exporting_your_data": "Exporting your data", - "fetched_n_events": { - "one": "Fetched %(count)s event so far", - "other": "Fetched %(count)s events so far" + "key_export_import": { + "confirm_passphrase": "Confirm passphrase", + "enter_passphrase": "Enter passphrase", + "export_description_1": "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.", + "export_description_2": "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 unique passphrase below, which will only be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", + "export_title": "Export room keys", + "file_to_import": "File to import", + "import_description_1": "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.", + "import_description_2": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", + "import_title": "Import room keys", + "phrase_cannot_be_empty": "Passphrase must not be empty", + "phrase_must_match": "Passphrases must match", + "phrase_strong_enough": "Great! This passphrase looks strong enough" }, - "fetched_n_events_in_time": { - "one": "Fetched %(count)s event in %(seconds)ss", - "other": "Fetched %(count)s events in %(seconds)ss" + "keyboard": { + "title": "Keyboard" }, - "fetched_n_events_with_total": { - "one": "Fetched %(count)s event out of %(total)s", - "other": "Fetched %(count)s events out of %(total)s" + "notifications": { + "default_setting_description": "This setting will be applied by default to all your rooms.", + "default_setting_section": "I want to be notified for (Default Setting)", + "desktop_notification_message_preview": "Show message preview in desktop notification", + "email_description": "Receive an email summary of missed notifications", + "email_section": "Email summary", + "email_select": "Select which emails you want to send summaries to. Manage your emails in .", + "enable_audible_notifications_session": "Enable audible notifications for this session", + "enable_desktop_notifications_session": "Enable desktop notifications for this session", + "enable_email_notifications": "Enable email notifications for %(email)s", + "enable_notifications_account": "Enable notifications for this account", + "enable_notifications_account_detail": "Turn off to disable notifications on all your devices and sessions", + "enable_notifications_device": "Enable notifications for this device", + "error_loading": "There was an error loading your notification settings.", + "error_permissions_denied": "%(brand)s does not have permission to send you notifications - please check your browser settings", + "error_permissions_missing": "%(brand)s was not given permission to send notifications - please try again", + "error_saving": "Error saving notification preferences", + "error_saving_detail": "An error occurred whilst saving your notification preferences.", + "error_title": "Unable to enable Notifications", + "error_updating": "An error occurred when updating your notification preferences. Please try to toggle your option again.", + "invites": "Invited to a room", + "keywords": "Show a badge when keywords are used in a room.", + "keywords_prompt": "Enter keywords here, or use for spelling variations or nicknames", + "labs_notice_prompt": "Update:We’ve simplified Notifications Settings to make options easier to find. Some custom settings you’ve chosen in the past are not shown here, but they’re still active. If you proceed, some of your settings may change. Learn more", + "mentions_keywords": "Mentions and Keywords", + "mentions_keywords_only": "Mentions and Keywords only", + "messages_containing_keywords": "Messages containing keywords", + "noisy": "Noisy", + "notices": "Messages sent by bots", + "notify_at_room": "Notify when someone mentions using @room", + "notify_keyword": "Notify when someone uses a keyword", + "notify_mention": "Notify when someone mentions using @displayname or %(mxid)s", + "other_section": "Other things we think you might be interested in:", + "people_mentions_keywords": "People, Mentions and Keywords", + "play_sound_for_description": "Applied by default to all rooms on all devices.", + "play_sound_for_section": "Play a sound for", + "push_targets": "Notification targets", + "quick_actions_mark_all_read": "Mark all messages as read", + "quick_actions_reset": "Reset to default settings", + "quick_actions_section": "Quick Actions", + "room_activity": "New room activity, upgrades and status messages occur", + "rule_call": "Call invitation", + "rule_contains_display_name": "Messages containing my display name", + "rule_contains_user_name": "Messages containing my username", + "rule_encrypted": "Encrypted messages in group chats", + "rule_encrypted_room_one_to_one": "Encrypted messages in one-to-one chats", + "rule_invite_for_me": "When I'm invited to a room", + "rule_message": "Messages in group chats", + "rule_room_one_to_one": "Messages in one-to-one chats", + "rule_roomnotif": "Messages containing @room", + "rule_suppress_notices": "Messages sent by bot", + "rule_tombstone": "When rooms are upgraded", + "show_message_desktop_notification": "Show message in desktop notification", + "voip": "Audio and Video calls" }, - "fetching_events": "Fetching events…", - "file_attached": "File Attached", - "format": "Format", - "from_the_beginning": "From the beginning", - "generating_zip": "Generating a ZIP", - "html": "HTML", - "html_title": "Exported Data", - "include_attachments": "Include Attachments", - "json": "JSON", - "media_omitted": "Media omitted", - "media_omitted_file_size": "Media omitted - file size limit exceeded", - "messages": "Messages", - "next_page": "Next group of messages", - "num_messages": "Number of messages", - "num_messages_min_max": "Number of messages can only be a number between %(min)s and %(max)s", - "number_of_messages": "Specify a number of messages", - "previous_page": "Previous group of messages", - "processing": "Processing…", - "processing_event_n": "Processing event %(number)s out of %(total)s", - "select_option": "Select from the options below to export chats from your timeline", - "size_limit": "Size Limit", - "size_limit_min_max": "Size can only be a number between %(min)s MB and %(max)s MB", - "size_limit_postfix": "MB", - "starting_export": "Starting export…", - "successful": "Export Successful", - "successful_detail": "Your export was successful. Find it in your Downloads folder.", - "text": "Plain Text", - "title": "Export Chat", - "topic": "Topic: %(topic)s", - "unload_confirm": "Are you sure you want to exit during this export?" - }, - "event_preview": { - "io.element.voice_broadcast_info": { - "user": "%(senderName)s ended a voice broadcast", - "you": "You ended a voice broadcast" + "preferences": { + "Electron.enableHardwareAcceleration": "Enable hardware acceleration (restart %(appName)s to take effect)", + "always_show_menu_bar": "Always show the window menu bar", + "autocomplete_delay": "Autocomplete delay (ms)", + "code_blocks_heading": "Code blocks", + "compact_modern": "Use a more compact 'Modern' layout", + "composer_heading": "Composer", + "enable_hardware_acceleration": "Enable hardware acceleration", + "enable_tray_icon": "Show tray icon and minimise window to it on close", + "keyboard_heading": "Keyboard shortcuts", + "keyboard_view_shortcuts_button": "To view all keyboard shortcuts, click here.", + "media_heading": "Images, GIFs and videos", + "presence_description": "Share your activity and status with others.", + "rm_lifetime": "Read Marker lifetime (ms)", + "rm_lifetime_offscreen": "Read Marker off-screen lifetime (ms)", + "room_directory_heading": "Room directory", + "room_list_heading": "Room list", + "show_avatars_pills": "Show avatars in user, room and event mentions", + "show_checklist_shortcuts": "Show shortcut to welcome checklist above the room list", + "show_polls_button": "Show polls button", + "surround_text": "Surround selected text when typing special characters", + "time_heading": "Displaying time" }, - "m.call.answer": { - "dm": "Call in progress", - "user": "%(senderName)s joined the call", - "you": "You joined the call" + "prompt_invite": "Prompt before sending invites to potentially invalid matrix IDs", + "replace_plain_emoji": "Automatically replace plain text Emoji", + "security": { + "4s_public_key_in_account_data": "in account data", + "4s_public_key_status": "Secret storage public key:", + "analytics_description": "Share anonymous data to help us identify issues. Nothing personal. No third parties.", + "backup_key_cached_status": "Backup key cached:", + "backup_key_stored_status": "Backup key stored:", + "backup_key_unexpected_type": "unexpected type", + "backup_key_well_formed": "well formed", + "backup_keys_description": "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.", + "bulk_options_accept_all_invites": "Accept all %(invitedRooms)s invites", + "bulk_options_reject_all_invites": "Reject all %(invitedRooms)s invites", + "bulk_options_section": "Bulk options", + "cross_signing_cached": "cached locally", + "cross_signing_homeserver_support": "Homeserver feature support:", + "cross_signing_homeserver_support_exists": "exists", + "cross_signing_in_4s": "in secret storage", + "cross_signing_in_memory": "in memory", + "cross_signing_master_private_Key": "Master private key:", + "cross_signing_not_cached": "not found locally", + "cross_signing_not_found": "not found", + "cross_signing_not_in_4s": "not found in storage", + "cross_signing_not_stored": "not stored", + "cross_signing_private_keys": "Cross-signing private keys:", + "cross_signing_public_keys": "Cross-signing public keys:", + "cross_signing_self_signing_private_key": "Self signing private key:", + "cross_signing_user_signing_private_key": "User signing private key:", + "cryptography_section": "Cryptography", + "delete_backup": "Delete Backup", + "delete_backup_confirm_description": "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.", + "e2ee_default_disabled_warning": "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.", + "enable_message_search": "Enable message search in encrypted rooms", + "encryption_individual_verification_mode": "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.", + "encryption_section": "Encryption", + "error_loading_key_backup_status": "Unable to load key backup status", + "export_megolm_keys": "Export E2E room keys", + "ignore_users_empty": "You have no ignored users.", + "ignore_users_section": "Ignored users", + "import_megolm_keys": "Import E2E room keys", + "key_backup_active": "This session is backing up your keys.", + "key_backup_active_version": "Active backup version:", + "key_backup_active_version_none": "None", + "key_backup_algorithm": "Algorithm:", + "key_backup_can_be_restored": "This backup can be restored on this session", + "key_backup_complete": "All keys backed up", + "key_backup_connect": "Connect this session to Key Backup", + "key_backup_connect_prompt": "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.", + "key_backup_in_progress": "Backing up %(sessionsRemaining)s keys…", + "key_backup_inactive": "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.", + "key_backup_inactive_warning": "Your keys are not being backed up from this session.", + "key_backup_latest_version": "Latest backup version on server:", + "manually_verify_all_sessions": "Manually verify all remote sessions", + "message_search_disable_warning": "If disabled, messages from encrypted rooms won't appear in search results.", + "message_search_disabled": "Securely cache encrypted messages locally for them to appear in search results.", + "message_search_enabled": { + "one": "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s room.", + "other": "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s rooms." + }, + "message_search_failed": "Message search initialisation failed", + "message_search_indexed_messages": "Indexed messages:", + "message_search_indexed_rooms": "Indexed rooms:", + "message_search_indexing": "Currently indexing: %(currentRoom)s", + "message_search_indexing_idle": "Not currently indexing messages for any room.", + "message_search_intro": "%(brand)s is securely caching encrypted messages locally for them to appear in search results:", + "message_search_room_progress": "%(doneRooms)s out of %(totalRooms)s", + "message_search_section": "Message search", + "message_search_sleep_time": "How fast should messages be downloaded.", + "message_search_space_used": "Space used:", + "message_search_unsupported": "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.", + "message_search_unsupported_web": "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.", + "record_session_details": "Record the client name, version, and url to recognise sessions more easily in session manager", + "restore_key_backup": "Restore from Backup", + "secret_storage_not_ready": "not ready", + "secret_storage_ready": "ready", + "secret_storage_status": "Secret storage:", + "send_analytics": "Send analytics data", + "session_id": "Session ID:", + "session_key": "Session key:", + "strict_encryption": "Never send encrypted messages to unverified sessions from this session" }, - "m.call.hangup": { - "user": "%(senderName)s ended the call", - "you": "You ended the call" + "send_read_receipts": "Send read receipts", + "send_read_receipts_unsupported": "Your server doesn't support disabling sending read receipts.", + "send_typing_notifications": "Send typing notifications", + "sessions": { + "best_security_note": "For best security, verify your sessions and sign out from any session that you don't recognize or use anymore.", + "browser": "Browser", + "confirm_sign_out": { + "one": "Confirm signing out this device", + "other": "Confirm signing out these devices" + }, + "confirm_sign_out_body": { + "one": "Click the button below to confirm signing out this device.", + "other": "Click the button below to confirm signing out these devices." + }, + "confirm_sign_out_continue": { + "one": "Sign out device", + "other": "Sign out devices" + }, + "confirm_sign_out_sso": { + "one": "Confirm logging out this device by using Single Sign On to prove your identity.", + "other": "Confirm logging out these devices by using Single Sign On to prove your identity." + }, + "current_session": "Current session", + "desktop_session": "Desktop session", + "details_heading": "Session details", + "device_unverified_description": "Verify or sign out from this session for best security and reliability.", + "device_unverified_description_current": "Verify your current session for enhanced secure messaging.", + "device_verified_description": "This session is ready for secure messaging.", + "device_verified_description_current": "Your current session is ready for secure messaging.", + "error_pusher_state": "Failed to set pusher state", + "error_set_name": "Failed to set session name", + "filter_all": "All", + "filter_inactive": "Inactive", + "filter_inactive_description": "Inactive for %(inactiveAgeDays)s days or longer", + "filter_label": "Filter devices", + "filter_unverified_description": "Not ready for secure messaging", + "filter_verified_description": "Ready for secure messaging", + "hide_details": "Hide details", + "inactive_days": "Inactive for %(inactiveAgeDays)s+ days", + "inactive_sessions": "Inactive sessions", + "inactive_sessions_explainer_1": "Inactive sessions are sessions you have not used in some time, but they continue to receive encryption keys.", + "inactive_sessions_explainer_2": "Removing inactive sessions improves security and performance, and makes it easier for you to identify if a new session is suspicious.", + "inactive_sessions_list_description": "Consider signing out from old sessions (%(inactiveAgeDays)s days or older) you don't use anymore.", + "ip": "IP address", + "last_activity": "Last activity", + "mobile_session": "Mobile session", + "n_sessions_selected": { + "one": "%(count)s session selected", + "other": "%(count)s sessions selected" + }, + "no_inactive_sessions": "No inactive sessions found.", + "no_sessions": "No sessions found.", + "no_unverified_sessions": "No unverified sessions found.", + "no_verified_sessions": "No verified sessions found.", + "os": "Operating system", + "other_sessions_heading": "Other sessions", + "push_heading": "Push notifications", + "push_subheading": "Receive push notifications on this session.", + "push_toggle": "Toggle push notifications on this session.", + "rename_form_caption": "Please be aware that session names are also visible to people you communicate with.", + "rename_form_heading": "Rename session", + "rename_form_learn_more": "Renaming sessions", + "rename_form_learn_more_description_1": "Other users in direct messages and rooms that you join are able to view a full list of your sessions.", + "rename_form_learn_more_description_2": "This provides them with confidence that they are really speaking to you, but it also means they can see the session name you enter here.", + "security_recommendations": "Security recommendations", + "security_recommendations_description": "Improve your account security by following these recommendations.", + "session_id": "Session ID", + "show_details": "Show details", + "sign_in_with_qr": "Sign in with QR code", + "sign_in_with_qr_button": "Show QR code", + "sign_in_with_qr_description": "You can use this device to sign in a new device with a QR code. You will need to scan the QR code shown on this device with your device that's signed out.", + "sign_out": "Sign out of this session", + "sign_out_all_other_sessions": "Sign out of all other sessions (%(otherSessionsCount)s)", + "sign_out_confirm_description": { + "one": "Are you sure you want to sign out of %(count)s session?", + "other": "Are you sure you want to sign out of %(count)s sessions?" + }, + "sign_out_n_sessions": { + "one": "Sign out of %(count)s session", + "other": "Sign out of %(count)s sessions" + }, + "title": "Sessions", + "unknown_session": "Unknown session type", + "unverified_session": "Unverified session", + "unverified_session_explainer_1": "This session doesn't support encryption and thus can't be verified.", + "unverified_session_explainer_2": "You won't be able to participate in rooms where encryption is enabled when using this session.", + "unverified_session_explainer_3": "For best security and privacy, it is recommended to use Matrix clients that support encryption.", + "unverified_sessions": "Unverified sessions", + "unverified_sessions_explainer_1": "Unverified sessions are sessions that have logged in with your credentials but have not been cross-verified.", + "unverified_sessions_explainer_2": "You should make especially certain that you recognise these sessions as they could represent an unauthorised use of your account.", + "unverified_sessions_list_description": "Verify your sessions for enhanced secure messaging or sign out from those you don't recognize or use anymore.", + "url": "URL", + "verified_session": "Verified session", + "verified_sessions": "Verified sessions", + "verified_sessions_explainer_1": "Verified sessions are anywhere you are using this account after entering your passphrase or confirming your identity with another verified session.", + "verified_sessions_explainer_2": "This means that you have all the keys needed to unlock your encrypted messages and confirm to other users that you trust this session.", + "verified_sessions_list_description": "For best security, sign out from any session that you don't recognize or use anymore.", + "verify_session": "Verify session", + "web_session": "Web session" }, - "m.call.invite": { - "dm_receive": "%(senderName)s is calling", - "dm_send": "Waiting for answer", - "user": "%(senderName)s started a call", - "you": "You started a call" + "show_avatar_changes": "Show profile picture changes", + "show_breadcrumbs": "Show shortcuts to recently viewed rooms above the room list", + "show_chat_effects": "Show chat effects (animations when receiving e.g. confetti)", + "show_displayname_changes": "Show display name changes", + "show_join_leave": "Show join/leave messages (invites/removes/bans unaffected)", + "show_nsfw_content": "Show NSFW content", + "show_read_receipts": "Show read receipts sent by other users", + "show_redaction_placeholder": "Show a placeholder for removed messages", + "show_stickers_button": "Show stickers button", + "show_typing_notifications": "Show typing notifications", + "sidebar": { + "metaspaces_favourites_description": "Group all your favourite rooms and people in one place.", + "metaspaces_home_all_rooms": "Show all rooms", + "metaspaces_home_all_rooms_description": "Show all your rooms in Home, even if they're in a space.", + "metaspaces_home_description": "Home is useful for getting an overview of everything.", + "metaspaces_orphans": "Rooms outside of a space", + "metaspaces_orphans_description": "Group all your rooms that aren't part of a space in one place.", + "metaspaces_people_description": "Group all your people in one place.", + "metaspaces_subsection": "Spaces to show", + "spaces_explainer": "Spaces are ways to group rooms and people. Alongside the spaces you're in, you can use some pre-built ones too.", + "title": "Sidebar" }, - "m.emote": "* %(senderName)s %(emote)s", - "m.reaction": { - "user": "%(sender)s reacted %(reaction)s to %(message)s", - "you": "You reacted %(reaction)s to %(message)s" + "start_automatically": "Start automatically after system login", + "use_12_hour_format": "Show timestamps in 12 hour format (e.g. 2:30pm)", + "use_command_enter_send_message": "Use Command + Enter to send a message", + "use_command_f_search": "Use Command + F to search timeline", + "use_control_enter_send_message": "Use Ctrl + Enter to send a message", + "use_control_f_search": "Use Ctrl + F to search timeline", + "voip": { + "allow_p2p": "Allow Peer-to-Peer for 1:1 calls", + "allow_p2p_description": "When enabled, the other party might be able to see your IP address", + "audio_input_empty": "No Microphones detected", + "audio_output": "Audio Output", + "audio_output_empty": "No Audio Outputs detected", + "auto_gain_control": "Automatic gain control", + "connection_section": "Connection", + "echo_cancellation": "Echo cancellation", + "enable_fallback_ice_server": "Allow fallback call assist server (%(server)s)", + "enable_fallback_ice_server_description": "Only applies if your homeserver does not offer one. Your IP address would be shared during a call.", + "mirror_local_feed": "Mirror local video feed", + "missing_permissions_prompt": "Missing media permissions, click the button below to request.", + "noise_suppression": "Noise suppression", + "request_permissions": "Request media permissions", + "title": "Voice & Video", + "video_input_empty": "No Webcams detected", + "video_section": "Video settings", + "voice_agc": "Automatically adjust the microphone volume", + "voice_processing": "Voice processing", + "voice_section": "Voice settings" }, - "m.sticker": "%(senderName)s: %(stickerName)s", - "m.text": "%(senderName)s: %(message)s" + "warn_quit": "Warn before quitting", + "warning": "WARNING: " }, - "error_user_not_logged_in": "User is not logged in", - "error_dialog": { - "copy_room_link_failed": { - "description": "Unable to copy a link to the room to the clipboard.", - "title": "Unable to copy room link" - }, - "error_loading_user_profile": "Could not load user profile", - "forget_room_failed": "Failed to forget room %(errCode)s", - "search_failed": { - "server_unavailable": "Server may be unavailable, overloaded, or search timed out :(", - "title": "Search failed" - } + "share": { + "link_title": "Link to room", + "permalink_message": "Link to selected message", + "permalink_most_recent": "Link to most recent message", + "title_message": "Share Room Message", + "title_room": "Share Room", + "title_user": "Share User" }, - "error_database_closed_title": "Database unexpectedly closed", - "error_database_closed_description": "This may be caused by having the app open in multiple tabs or due to clearing browser data.", - "error_app_opened_in_another_window": "%(brand)s is open in another window. Click \"%(label)s\" to use %(brand)s here and disconnect the other window.", - "error_app_open_in_another_tab": "%(brand)s has been opened in another tab.", - "error": { - "admin_contact": "Please contact your service administrator to continue using this service.", - "admin_contact_short": "Contact your server admin.", - "connection": "There was a problem communicating with the homeserver, please try again later.", - "dialog_description_default": "An error has occurred.", - "download_media": "Failed to download source media, no source url was found", - "edit_history_unsupported": "Your homeserver doesn't seem to support this feature.", - "failed_copy": "Failed to copy", - "hs_blocked": "This homeserver has been blocked by its administrator.", - "mau": "This homeserver has hit its Monthly Active User limit.", - "mixed_content": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", - "non_urgent_echo_failure_toast": "Your server isn't responding to some requests.", - "resource_limits": "This homeserver has exceeded one of its resource limits.", - "session_restore": { - "clear_storage_button": "Clear Storage and Sign Out", - "clear_storage_description": "Sign out and remove encryption keys?", - "description_1": "We encountered an error trying to restore your previous session.", - "description_2": "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.", - "description_3": "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.", - "title": "Unable to restore session" - }, - "something_went_wrong": "Something went wrong!", - "storage_evicted_description_1": "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.", - "storage_evicted_description_2": "Your browser likely removed this data when running low on disk space.", - "storage_evicted_title": "Missing session data", - "sync": "Unable to connect to Homeserver. Retrying…", - "tls": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.", - "unknown": "Unknown error", - "unknown_error_code": "unknown error code", - "update_power_level": "Failed to change power level" + "slash_command": { + "addwidget": "Adds a custom widget by URL to the room", + "addwidget_iframe_missing_src": "iframe has no src attribute", + "addwidget_invalid_protocol": "Please supply a https:// or http:// widget URL", + "addwidget_missing_url": "Please supply a widget URL or embed code", + "addwidget_no_permissions": "You cannot modify widgets in this room.", + "ban": "Bans user with given id", + "category_actions": "Actions", + "category_admin": "Admin", + "category_advanced": "Advanced", + "category_effects": "Effects", + "category_messages": "Messages", + "category_other": "Other", + "command_error": "Command error", + "converttodm": "Converts the room to a DM", + "converttoroom": "Converts the DM to a room", + "could_not_find_room": "Could not find room", + "deop": "Deops user with given id", + "devtools": "Opens the Developer Tools dialog", + "discardsession": "Forces the current outbound group session in an encrypted room to be discarded", + "error_invalid_rendering_type": "Command error: Unable to find rendering type (%(renderingType)s)", + "error_invalid_room": "Command failed: Unable to find room (%(roomId)s", + "error_invalid_runfn": "Command error: Unable to handle slash command.", + "error_invalid_user_in_room": "Could not find user in room", + "help": "Displays list of commands with usages and descriptions", + "help_dialog_title": "Command Help", + "holdcall": "Places the call in the current room on hold", + "html": "Sends a message as html, without interpreting it as markdown", + "ignore": "Ignores a user, hiding their messages from you", + "ignore_dialog_description": "You are now ignoring %(userId)s", + "ignore_dialog_title": "Ignored user", + "invite": "Invites user with given id to current room", + "invite_3pid_needs_is_error": "Use an identity server to invite by email. Manage in Settings.", + "invite_3pid_use_default_is_title": "Use an identity server", + "invite_3pid_use_default_is_title_description": "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.", + "invite_failed": "User (%(user)s) did not end up as invited to %(roomId)s but no error was given from the inviter utility", + "join": "Joins room with given address", + "jumptodate": "Jump to the given date in the timeline", + "jumptodate_invalid_input": "We were unable to understand the given date (%(inputDate)s). Try using the format YYYY-MM-DD.", + "lenny": "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message", + "me": "Displays action", + "msg": "Sends a message to the given user", + "myavatar": "Changes your profile picture in all rooms", + "myroomavatar": "Changes your profile picture in this current room only", + "myroomnick": "Changes your display nickname in the current room only", + "nick": "Changes your display nickname", + "no_active_call": "No active call in this room", + "op": "Define the power level of a user", + "part_unknown_alias": "Unrecognised room address: %(roomAlias)s", + "plain": "Sends a message as plain text, without interpreting it as markdown", + "query": "Opens chat with the given user", + "query_not_found_phone_number": "Unable to find Matrix ID for phone number", + "rageshake": "Send a bug report with logs", + "rainbow": "Sends the given message coloured as a rainbow", + "rainbowme": "Sends the given emote coloured as a rainbow", + "remakeolm": "Developer command: Discards the current outbound group session and sets up new Olm sessions", + "remove": "Removes user with given id from this room", + "roomavatar": "Changes the avatar of the current room", + "roomname": "Sets the room name", + "server_error": "Server error", + "server_error_detail": "Server unavailable, overloaded, or something else went wrong.", + "shrug": "Prepends ¯\\_(ツ)_/¯ to a plain-text message", + "spoiler": "Sends the given message as a spoiler", + "tableflip": "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message", + "topic": "Gets or sets the room topic", + "topic_none": "This room has no topic.", + "topic_room_error": "Failed to get room topic: Unable to find room (%(roomId)s", + "tovirtual": "Switches to this room's virtual room, if it has one", + "tovirtual_not_found": "No virtual room for this room", + "unban": "Unbans user with given ID", + "unflip": "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message", + "unholdcall": "Takes the call in the current room off hold", + "unignore": "Stops ignoring a user, showing their messages going forward", + "unignore_dialog_description": "You are no longer ignoring %(userId)s", + "unignore_dialog_title": "Unignored user", + "unknown_command": "Unknown Command", + "unknown_command_button": "Send as message", + "unknown_command_detail": "Unrecognised command: %(commandText)s", + "unknown_command_help": "You can use /help to list available commands. Did you mean to send this as a message?", + "unknown_command_hint": "Hint: Begin your message with // to start it with a slash.", + "upgraderoom": "Upgrades a room to a new version", + "upgraderoom_permission_error": "You do not have the required permissions to use this command.", + "usage": "Usage", + "verify": "Verifies a user, session, and pubkey tuple", + "verify_mismatch": "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!", + "verify_nop": "Session already verified!", + "verify_nop_warning_mismatch": "WARNING: session already verified, but keys do NOT MATCH!", + "verify_success_description": "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.", + "verify_success_title": "Verified key", + "verify_unknown_pair": "Unknown (user, session) pair: (%(userId)s, %(deviceId)s)", + "view": "Views room with given address", + "whois": "Displays information about a user" }, - "encryption": { - "access_secret_storage_dialog": { - "enter_phrase_or_key_prompt": "Enter your Security Phrase or to continue.", - "key_validation_text": { - "invalid_security_key": "Invalid Security Key", - "recovery_key_is_correct": "Looks good!", - "wrong_file_type": "Wrong file type", - "wrong_security_key": "Wrong Security Key" + "space": { + "add_existing_room_space": { + "create": "Want to add a new room instead?", + "create_prompt": "Create a new room", + "dm_heading": "Direct Messages", + "error_heading": "Not all selected were added", + "progress_text": { + "one": "Adding room...", + "other": "Adding rooms... (%(progress)s out of %(count)s)" }, - "reset_title": "Reset everything", - "reset_warning_1": "Only do this if you have no other device to complete verification with.", - "reset_warning_2": "If you reset everything, you will restart with no trusted sessions, no trusted users, and might not be able to see past messages.", - "restoring": "Restoring keys from backup", - "security_key_title": "Security Key", - "security_phrase_incorrect_error": "Unable to access secret storage. Please verify that you entered the correct Security Phrase.", - "security_phrase_title": "Security Phrase", - "separator": "%(securityKey)s or %(recoveryFile)s", - "use_security_key_prompt": "Use your Security Key to continue." - }, - "bootstrap_title": "Setting up keys", - "cancel_entering_passphrase_description": "Are you sure you want to cancel entering passphrase?", - "cancel_entering_passphrase_title": "Cancel entering passphrase?", - "confirm_encryption_setup_body": "Click the button below to confirm setting up encryption.", - "confirm_encryption_setup_title": "Confirm encryption setup", - "cross_signing_not_ready": "Cross-signing is not set up.", - "cross_signing_ready": "Cross-signing is ready for use.", - "cross_signing_ready_no_backup": "Cross-signing is ready but keys are not backed up.", - "cross_signing_room_normal": "This room is end-to-end encrypted", - "cross_signing_room_verified": "Everyone in this room is verified", - "cross_signing_room_warning": "Someone is using an unknown session", - "cross_signing_unsupported": "Your homeserver does not support cross-signing.", - "cross_signing_untrusted": "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.", - "cross_signing_user_normal": "You have not verified this user.", - "cross_signing_user_verified": "You have verified this user. This user has verified all of their sessions.", - "cross_signing_user_warning": "This user has not verified all of their sessions.", - "destroy_cross_signing_dialog": { - "primary_button_text": "Clear cross-signing keys", - "title": "Destroy cross-signing keys?", - "warning": "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from." - }, - "event_shield_reason_authenticity_not_guaranteed": "The authenticity of this encrypted message can't be guaranteed on this device.", - "event_shield_reason_mismatched_sender_key": "Encrypted by an unverified session", - "event_shield_reason_unknown_device": "Encrypted by an unknown or deleted device.", - "event_shield_reason_unsigned_device": "Encrypted by a device not verified by its owner.", - "event_shield_reason_unverified_identity": "Encrypted by an unverified user.", - "export_unsupported": "Your browser does not support the required cryptography extensions", - "import_invalid_keyfile": "Not a valid %(brand)s keyfile", - "import_invalid_passphrase": "Authentication check failed: incorrect password?", - "incompatible_database_description": "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.", - "incompatible_database_disable": "Continue With Encryption Disabled", - "incompatible_database_sign_out_description": "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this", - "incompatible_database_title": "Incompatible Database", - "key_signature_upload_cancelled": "Cancelled signature upload", - "key_signature_upload_completed": "Upload completed", - "key_signature_upload_failed": "Unable to upload", - "key_signature_upload_failed_body": "%(brand)s encountered an error during upload of:", - "key_signature_upload_failed_cross_signing_key_signature": "a new cross-signing key signature", - "key_signature_upload_failed_device_cross_signing_key_signature": "a device cross-signing signature", - "key_signature_upload_failed_key_signature": "a key signature", - "key_signature_upload_failed_master_key_signature": "a new master key signature", - "key_signature_upload_failed_title": "Signature upload failed", - "key_signature_upload_success_title": "Signature upload success", - "messages_not_secure": { - "cause_1": "Your homeserver", - "cause_2": "The homeserver the user you're verifying is connected to", - "cause_3": "Yours, or the other users' internet connection", - "cause_4": "Yours, or the other users' session", - "heading": "One of the following may be compromised:", - "title": "Your messages are not secure" - }, - "new_recovery_method_detected": { - "description_1": "A new Security Phrase and key for Secure Messages have been detected.", - "description_2": "This session is encrypting history using the new recovery method.", - "title": "New Recovery Method", - "warning": "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings." - }, - "not_supported": "", - "old_version_detected_description": "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.", - "old_version_detected_title": "Old cryptography data detected", - "recovery_method_removed": { - "description_1": "This session has detected that your Security Phrase and key for Secure Messages have been removed.", - "description_2": "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.", - "title": "Recovery Method Removed", - "warning": "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings." + "space_dropdown_label": "Space selection", + "space_dropdown_title": "Add existing rooms", + "subspace_moved_note": "Adding spaces has moved." }, - "reset_all_button": "Forgotten or lost all recovery methods? Reset all", - "set_up_toast_description": "Safeguard against losing access to encrypted messages & data", - "set_up_toast_title": "Set up Secure Backup", - "setup_secure_backup": { - "explainer": "Back up your keys before signing out to avoid losing them.", - "title": "Set up" + "add_existing_subspace": { + "create_button": "Create a new space", + "create_prompt": "Want to add a new space instead?", + "filter_placeholder": "Search for spaces", + "space_dropdown_title": "Add existing space" }, - "udd": { - "interactive_verification_button": "Interactively verify by emoji", - "manual_verification_button": "Manually verify by text", - "other_ask_verify_text": "Ask this user to verify their session, or manually verify it below.", - "other_new_session_text": "%(name)s (%(userId)s) signed in to a new session without verifying it:", - "own_ask_verify_text": "Verify your other session using one of the options below.", - "own_new_session_text": "You signed in to a new session without verifying it:", - "title": "Not Trusted" + "context_menu": { + "devtools_open_timeline": "See room timeline (devtools)", + "explore": "Explore rooms", + "home": "Space home", + "manage_and_explore": "Manage & explore rooms", + "options": "Space options" }, - "unable_to_setup_keys_error": "Unable to set up keys", - "unsupported": "This client does not support end-to-end encryption.", - "upgrade_toast_title": "Encryption upgrade available", - "verification": { - "accepting": "Accepting…", - "after_new_login": { - "device_verified": "Device verified", - "reset_confirmation": "Really reset verification keys?", - "skip_verification": "Skip verification for now", - "unable_to_verify": "Unable to verify this device", - "verify_this_device": "Verify this device" - }, - "cancelled": "You cancelled verification.", - "cancelled_self": "You cancelled verification on your other device.", - "cancelled_user": "%(displayName)s cancelled verification.", - "cancelling": "Cancelling…", - "complete_action": "Got It", - "complete_description": "You've successfully verified this user.", - "complete_title": "Verified!", - "error_starting_description": "We were unable to start a chat with the other user.", - "error_starting_title": "Error starting verification", - "explainer": "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.", - "in_person": "To be secure, do this in person or use a trusted way to communicate.", - "incoming_sas_device_dialog_text_1": "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.", - "incoming_sas_device_dialog_text_2": "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.", - "incoming_sas_dialog_title": "Incoming Verification Request", - "incoming_sas_dialog_waiting": "Waiting for partner to confirm…", - "incoming_sas_user_dialog_text_1": "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.", - "incoming_sas_user_dialog_text_2": "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.", - "manual_device_verification_device_id_label": "Session ID", - "manual_device_verification_device_key_label": "Session key", - "manual_device_verification_device_name_label": "Session name", - "manual_device_verification_footer": "If they don't match, the security of your communication may be compromised.", - "manual_device_verification_self_text": "Confirm by comparing the following with the User Settings in your other session:", - "manual_device_verification_user_text": "Confirm this user's session by comparing the following with their User Settings:", - "no_key_or_device": "It looks like you don't have a Security Key or any other devices you can verify against. This device will not be able to access old encrypted messages. In order to verify your identity on this device, you'll need to reset your verification keys.", - "no_support_qr_emoji": "The device 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.", - "other_party_cancelled": "The other party cancelled the verification.", - "prompt_encrypted": "Verify all users in a room to ensure it's secure.", - "prompt_self": "Start verification again from the notification.", - "prompt_unencrypted": "In encrypted rooms, verify all users to ensure it's secure.", - "prompt_user": "Start verification again from their profile.", - "qr_or_sas": "%(qrCode)s or %(emojiCompare)s", - "qr_or_sas_header": "Verify this device by completing one of the following:", - "qr_prompt": "Scan this unique code", - "qr_reciprocate_same_shield_device": "Almost there! Is your other device showing the same shield?", - "qr_reciprocate_same_shield_user": "Almost there! Is %(displayName)s showing the same shield?", - "request_toast_accept": "Verify Session", - "request_toast_decline_counter": "Ignore (%(counter)s)", - "request_toast_detail": "%(deviceId)s from %(ip)s", - "reset_proceed_prompt": "Proceed with reset", - "sas_caption_self": "Verify this device by confirming the following number appears on its screen.", - "sas_caption_user": "Verify this user by confirming the following number appears on their screen.", - "sas_description": "Compare a unique set of emoji if you don't have a camera on either device", - "sas_emoji_caption_self": "Confirm the emoji below are displayed on both devices, in the same order:", - "sas_emoji_caption_user": "Verify this user by confirming the following emoji appear on their screen.", - "sas_match": "They match", - "sas_no_match": "They don't match", - "sas_prompt": "Compare unique emoji", - "scan_qr": "Verify by scanning", - "scan_qr_explainer": "Ask %(displayName)s to scan your code:", - "self_verification_hint": "To proceed, please accept the verification request on your other device.", - "start_button": "Start Verification", - "successful_device": "You've successfully verified %(deviceName)s (%(deviceId)s)!", - "successful_own_device": "You've successfully verified your device!", - "successful_user": "You've successfully verified %(displayName)s!", - "timed_out": "Verification timed out.", - "unsupported_method": "Unable to find a supported verification method.", - "unverified_session_toast_accept": "Yes, it was me", - "unverified_session_toast_title": "New login. Was this you?", - "unverified_sessions_toast_description": "Review to ensure your account is safe", - "unverified_sessions_toast_reject": "Later", - "unverified_sessions_toast_title": "You have unverified sessions", - "verification_description": "Verify your identity to access encrypted messages and prove your identity to others.", - "verification_dialog_title_device": "Verify other device", - "verification_dialog_title_user": "Verification Request", - "verification_skip_warning": "Without verifying, you won't have access to all your messages and may appear as untrusted to others.", - "verification_success_with_backup": "Your new device is now verified. It has access to your encrypted messages, and other users will see it as trusted.", - "verification_success_without_backup": "Your new device is now verified. Other users will see it as trusted.", - "verify_emoji": "Verify by emoji", - "verify_emoji_prompt": "Verify by comparing unique emoji.", - "verify_emoji_prompt_qr": "If you can't scan the code above, verify by comparing unique emoji.", - "verify_later": "I'll verify later", - "verify_reset_warning_1": "Resetting your verification keys cannot be undone. After resetting, you won't have access to old encrypted messages, and any friends who have previously verified you will see security warnings until you re-verify with them.", - "verify_reset_warning_2": "Please only proceed if you're sure you've lost all of your other devices and your Security Key.", - "verify_using_device": "Verify with another device", - "verify_using_key": "Verify with Security Key", - "verify_using_key_or_phrase": "Verify with Security Key or Phrase", - "waiting_for_user_accept": "Waiting for %(displayName)s to accept…", - "waiting_other_device": "Waiting for you to verify on your other device…", - "waiting_other_device_details": "Waiting for you to verify on your other device, %(deviceName)s (%(deviceId)s)…", - "waiting_other_user": "Waiting for %(displayName)s to verify…" + "failed_load_rooms": "Failed to load list of rooms.", + "failed_remove_rooms": "Failed to remove some rooms. Try again later", + "incompatible_server_hierarchy": "Your server does not support showing space hierarchies.", + "invite": "Invite people", + "invite_description": "Invite with email or username", + "invite_link": "Share invite link", + "invite_this_space": "Invite to this space", + "joining_space": "Joining", + "landing_welcome": "Welcome to ", + "leave_dialog_action": "Leave space", + "leave_dialog_description": "You are about to leave .", + "leave_dialog_only_admin_room_warning": "You're the only admin of some of the rooms or spaces you wish to leave. Leaving them will leave them without any admins.", + "leave_dialog_only_admin_warning": "You're the only admin of this space. Leaving it will mean no one has control over it.", + "leave_dialog_option_all": "Leave all rooms", + "leave_dialog_option_intro": "Would you like to leave the rooms in this space?", + "leave_dialog_option_none": "Don't leave any rooms", + "leave_dialog_option_specific": "Leave some rooms", + "leave_dialog_public_rejoin_warning": "You won't be able to rejoin unless you are re-invited.", + "leave_dialog_title": "Leave %(spaceName)s", + "mark_suggested": "Mark as suggested", + "no_search_result_hint": "You may want to try a different search or check for typos.", + "preferences": { + "sections_section": "Sections to show", + "show_people_in_space": "This groups your chats with members of this space. Turning this off will hide those chats from your view of %(spaceName)s." }, - "verification_requested_toast_title": "Verification requested", - "verify_toast_description": "Other users may not trust it", - "verify_toast_title": "Verify this session" + "room_filter_placeholder": "Search for rooms", + "search_children": "Search %(spaceName)s", + "search_placeholder": "Search names and descriptions", + "select_room_below": "Select a room below first", + "share_public": "Share your public space", + "suggested": "Suggested", + "suggested_tooltip": "This room is suggested as a good one to join", + "title_when_query_available": "Results", + "title_when_query_unavailable": "Rooms and spaces", + "unmark_suggested": "Mark as not suggested", + "user_lacks_permission": "You don't have permission" }, - "empty_room_was_name": "Empty room (was %(oldName)s)", - "empty_room": "Empty room", - "emoji_picker": { - "cancel_search_label": "Cancel search" + "space_settings": { + "title": "Settings - %(spaceName)s" }, - "emoji": { - "categories": "Categories", - "category_activities": "Activities", - "category_animals_nature": "Animals & Nature", - "category_flags": "Flags", - "category_food_drink": "Food & Drink", - "category_frequently_used": "Frequently Used", - "category_objects": "Objects", - "category_smileys_people": "Smileys & People", - "category_symbols": "Symbols", - "category_travel_places": "Travel & Places", - "quick_reactions": "Quick Reactions" + "spaces": { + "error_no_permission_add_room": "You do not have permissions to add rooms to this space", + "error_no_permission_add_space": "You do not have permissions to add spaces to this space", + "error_no_permission_create_room": "You do not have permissions to create new rooms in this space", + "error_no_permission_invite": "You do not have permissions to invite people to this space" }, - "dialog_close_label": "Close dialog", - "devtools": { - "active_widgets": "Active Widgets", - "category_other": "Other", - "category_room": "Room", - "caution_colon": "Caution:", - "client_versions": "Client Versions", - "developer_mode": "Developer mode", - "developer_tools": "Developer Tools", - "edit_setting": "Edit setting", - "edit_values": "Edit values", - "empty_string": "", - "event_content": "Event Content", - "event_id": "Event ID: %(eventId)s", - "event_sent": "Event sent!", - "event_type": "Event Type", - "explore_account_data": "Explore account data", - "explore_room_account_data": "Explore room account data", - "explore_room_state": "Explore room state", - "failed_to_find_widget": "There was an error finding this widget.", - "failed_to_load": "Failed to load.", - "failed_to_save": "Failed to save settings.", - "failed_to_send": "Failed to send event!", - "id": "ID: ", - "invalid_json": "Doesn't look like valid JSON.", - "level": "Level", - "low_bandwidth_mode": "Low bandwidth mode", - "low_bandwidth_mode_description": "Requires compatible homeserver.", - "main_timeline": "Main timeline", - "methods": "Methods", - "no_receipt_found": "No receipt found", - "no_verification_requests_found": "No verification requests found", - "notification_state": "Notification state is %(notificationState)s", - "notifications_debug": "Notifications debug", - "number_of_users": "Number of users", - "observe_only": "Observe only", - "original_event_source": "Original event source", - "phase": "Phase", - "phase_cancelled": "Cancelled", - "phase_ready": "Ready", - "phase_requested": "Requested", - "phase_started": "Started", - "phase_transaction": "Transaction", - "requester": "Requester", - "room_encrypted": "Room is encrypted ✅", - "room_id": "Room ID: %(roomId)s", - "room_not_encrypted": "Room is not encrypted 🚨", - "room_notifications_dot": "Dot: ", - "room_notifications_highlight": "Highlight: ", - "room_notifications_last_event": "Last event:", - "room_notifications_sender": "Sender: ", - "room_notifications_thread_id": "Thread Id: ", - "room_notifications_total": "Total: ", - "room_notifications_type": "Type: ", - "room_status": "Room status", - "room_unread_status": "Room unread status: %(status)s", - "room_unread_status_count": { - "other": "Room unread status: %(status)s, count: %(count)s" - }, - "save_setting_values": "Save setting values", - "see_history": "See history", - "send_custom_account_data_event": "Send custom account data event", - "send_custom_room_account_data_event": "Send custom room account data event", - "send_custom_state_event": "Send custom state event", - "send_custom_timeline_event": "Send custom timeline event", - "server_info": "Server info", - "server_versions": "Server Versions", - "settable_global": "Settable at global", - "settable_room": "Settable at room", - "setting_colon": "Setting:", - "setting_definition": "Setting definition:", - "setting_id": "Setting ID", - "settings_explorer": "Settings explorer", - "show_hidden_events": "Show hidden events in timeline", - "spaces": { - "one": "", - "other": "<%(count)s spaces>" + "spotlight": { + "public_rooms": { + "network_dropdown_add_dialog_description": "Enter the name of a new server you want to explore.", + "network_dropdown_add_dialog_placeholder": "Server name", + "network_dropdown_add_dialog_title": "Add a new server", + "network_dropdown_add_server_option": "Add new server…", + "network_dropdown_available_invalid": "Can't find this server or its room list", + "network_dropdown_available_invalid_forbidden": "You are not allowed to view this server's rooms list", + "network_dropdown_available_valid": "Looks good", + "network_dropdown_remove_server_adornment": "Remove server “%(roomServer)s”", + "network_dropdown_required_invalid": "Enter a server name", + "network_dropdown_selected_label": "Show: Matrix rooms", + "network_dropdown_selected_label_instance": "Show: %(instance)s rooms (%(server)s)", + "network_dropdown_your_server_description": "Your server" + } + }, + "spotlight_dialog": { + "cant_find_person_helpful_hint": "If you can't see who you're looking for, send them your invite link.", + "cant_find_room_helpful_hint": "If you can't find the room you're looking for, ask for an invite or create a new room.", + "copy_link_text": "Copy invite link", + "count_of_members": { + "one": "%(count)s Member", + "other": "%(count)s Members" }, - "state_key": "State Key", - "thread_root_id": "Thread Root ID: %(threadRootId)s", - "threads_timeline": "Threads timeline", - "timeout": "Timeout", - "title": "Developer tools", - "toggle_event": "toggle event", - "toolbox": "Toolbox", - "use_at_own_risk": "This UI does NOT check the types of the values. Use at your own risk.", - "user_read_up_to": "User read up to: ", - "user_read_up_to_ignore_synthetic": "User read up to (ignoreSynthetic): ", - "user_read_up_to_private": "User read up to (m.read.private): ", - "user_read_up_to_private_ignore_synthetic": "User read up to (m.read.private;ignoreSynthetic): ", - "value": "Value", - "value_colon": "Value:", - "value_in_this_room": "Value in this room", - "value_this_room_colon": "Value in this room:", - "values_explicit": "Values at explicit levels", - "values_explicit_colon": "Values at explicit levels:", - "values_explicit_room": "Values at explicit levels in this room", - "values_explicit_this_room_colon": "Values at explicit levels in this room:", - "verification_explorer": "Verification explorer", - "view_servers_in_room": "View servers in room", - "view_source_decrypted_event_source": "Decrypted event source", - "view_source_decrypted_event_source_unavailable": "Decrypted source unavailable", - "widget_screenshots": "Enable widget screenshots on supported widgets" + "create_new_room_button": "Create new room", + "failed_querying_public_rooms": "Failed to query public rooms", + "failed_querying_public_spaces": "Failed to query public spaces", + "group_chat_section_title": "Other options", + "heading_with_query": "Use \"%(query)s\" to search", + "heading_without_query": "Search for", + "join_button_text": "Join %(roomAddress)s", + "keyboard_scroll_hint": "Use to scroll", + "message_search_section_title": "Other searches", + "other_rooms_in_space": "Other rooms in %(spaceName)s", + "public_rooms_label": "Public rooms", + "public_spaces_label": "Public spaces", + "recent_searches_section_title": "Recent searches", + "recently_viewed_section_title": "Recently viewed", + "remove_filter": "Remove search filter for %(filter)s", + "result_may_be_hidden_privacy_warning": "Some results may be hidden for privacy", + "result_may_be_hidden_warning": "Some results may be hidden", + "search_dialog": "Search Dialog", + "search_messages_hint": "To search messages, look for this icon at the top of a room ", + "spaces_title": "Spaces you're in", + "start_group_chat_button": "Start a group chat" }, - "credits": { - "default_cover_photo": "The default cover photo is © Jesús Roncero used under the terms of CC-BY-SA 4.0.", - "twemoji": "The Twemoji emoji art is © Twitter, Inc and other contributors used under the terms of CC-BY 4.0.", - "twemoji_colr": "The twemoji-colr font is © Mozilla Foundation used under the terms of Apache 2.0." + "stickers": { + "empty": "You don't currently have any stickerpacks enabled", + "empty_add_prompt": "Add some now" }, - "create_space": { - "add_details_prompt": "Add some details to help people recognise it.", - "add_details_prompt_2": "You can change these anytime.", - "add_existing_rooms_description": "Pick rooms or conversations to add. This is just a space for you, no one will be informed. You can add more later.", - "add_existing_rooms_heading": "What do you want to organise?", - "address_label": "Address", - "address_placeholder": "e.g. my-space", - "creating": "Creating…", - "creating_rooms": "Creating rooms…", - "done_action": "Go to my space", - "done_action_first_room": "Go to my first room", - "explainer": "Spaces are a new way to group rooms and people. What kind of Space do you want to create? You can change this later.", - "failed_create_initial_rooms": "Failed to create initial space rooms", - "failed_invite_users": "Failed to invite the following users to your space: %(csvUsers)s", - "invite_teammates_by_username": "Invite by username", - "invite_teammates_description": "Make sure the right people have access. You can invite more later.", - "invite_teammates_heading": "Invite your teammates", - "inviting_users": "Inviting…", - "label": "Create a space", - "name_required": "Please enter a name for the space", - "personal_space": "Just me", - "personal_space_description": "A private space to organise your rooms", - "private_description": "Invite only, best for yourself or teams", - "private_heading": "Your private space", - "private_personal_description": "Make sure the right people have access to %(name)s", - "private_personal_heading": "Who are you working with?", - "private_space": "Me and my teammates", - "private_space_description": "A private space for you and your teammates", - "public_description": "Open space for anyone, best for communities", - "public_heading": "Your public space", - "search_public_button": "Search for public spaces", - "setup_rooms_community_description": "Let's create a room for each of them.", - "setup_rooms_community_heading": "What are some things you want to discuss in %(spaceName)s?", - "setup_rooms_description": "You can add more later too, including already existing ones.", - "setup_rooms_private_description": "We'll create rooms for each of them.", - "setup_rooms_private_heading": "What projects are your team working on?", - "share_description": "It's just you at the moment, it will be even better with others.", - "share_heading": "Share %(name)s", - "skip_action": "Skip for now", - "subspace_adding": "Adding…", - "subspace_beta_notice": "Add a space to a space you manage.", - "subspace_dropdown_title": "Create a space", - "subspace_existing_space_prompt": "Want to add an existing space instead?", - "subspace_join_rule_invite_description": "Only people invited will be able to find and join this space.", - "subspace_join_rule_invite_only": "Private space (invite only)", - "subspace_join_rule_label": "Space visibility", - "subspace_join_rule_public_description": "Anyone will be able to find and join this space, not just members of .", - "subspace_join_rule_restricted_description": "Anyone in will be able to find and join." + "terms": { + "column_document": "Document", + "column_service": "Service", + "column_summary": "Summary", + "identity_server_no_terms_description_1": "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.", + "identity_server_no_terms_description_2": "Only continue if you trust the owner of the server.", + "identity_server_no_terms_title": "Identity server has no terms of service", + "inline_intro_text": "Accept to continue:", + "integration_manager": "Use bots, bridges, widgets and sticker packs", + "intro": "To continue you need to accept the terms of this service.", + "summary_identity_server_1": "Find others by phone or email", + "summary_identity_server_2": "Be found by phone or email", + "tac_button": "Review terms and conditions", + "tac_description": "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.", + "tac_title": "Terms and Conditions", + "tos": "Terms of Service" }, - "create_room": { - "action_create_room": "Create room", - "action_create_video_room": "Create video room", - "encrypted_video_room_warning": "You can't disable this later. The room will be encrypted but the embedded call will not.", - "encrypted_warning": "You can't disable this later. Bridges & most bots won't work yet.", - "encryption_forced": "Your server requires encryption to be enabled in private rooms.", - "encryption_label": "Enable end-to-end encryption", - "error_title": "Failure to create room", - "generic_error": "Server may be unavailable, overloaded, or you hit a bug.", - "join_rule_change_notice": "You can change this at any time from room settings.", - "join_rule_invite": "Private room (invite only)", - "join_rule_invite_label": "Only people invited will be able to find and join this room.", - "join_rule_knock_label": "Anyone can request to join, but admins or moderators need to grant access. You can change this later.", - "join_rule_public_label": "Anyone will be able to find and join this room.", - "join_rule_public_parent_space_label": "Anyone will be able to find and join this room, not just members of .", - "join_rule_restricted": "Visible to space members", - "join_rule_restricted_label": "Everyone in will be able to find and join this room.", - "name_validation_required": "Please enter a name for the room", - "room_visibility_label": "Room visibility", - "title_private_room": "Create a private room", - "title_public_room": "Create a public room", - "title_video_room": "Create a video room", - "topic_label": "Topic (optional)", - "unfederated": "Block anyone not part of %(serverName)s from ever joining this room.", - "unfederated_label_default_off": "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.", - "unfederated_label_default_on": "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.", - "unsupported_version": "The server does not support the room version specified." + "theme": { + "light_high_contrast": "Light high contrast", + "match_system": "Match system" }, - "console_wait": "Wait!", - "console_scam_warning": "If someone told you to copy/paste something here, there is a high likelihood you're being scammed!", - "console_dev_note": "If you know what you're doing, Element is open-source, be sure to check out our GitHub (https://github.com/vector-im/element-web/) and contribute!", - "composer": { - "autocomplete": { - "@room_description": "Notify the whole room", - "command_a11y": "Command Autocomplete", - "command_description": "Commands", - "emoji_a11y": "Emoji Autocomplete", - "notification_a11y": "Notification Autocomplete", - "notification_description": "Room Notification", - "room_a11y": "Room Autocomplete", - "space_a11y": "Space Autocomplete", - "user_a11y": "User Autocomplete", - "user_description": "Users" - }, - "close_sticker_picker": "Hide stickers", - "edit_composer_label": "Edit message", - "format_bold": "Bold", - "format_code_block": "Code block", - "format_decrease_indent": "Indent decrease", - "format_increase_indent": "Indent increase", - "format_inline_code": "Code", - "format_insert_link": "Insert link", - "format_italic": "Italic", - "format_italics": "Italics", - "format_link": "Link", - "format_ordered_list": "Numbered list", - "format_strikethrough": "Strikethrough", - "format_underline": "Underline", - "format_unordered_list": "Bulleted list", - "formatting_toolbar_label": "Formatting", - "link_modal": { - "link_field_label": "Link", - "text_field_label": "Text", - "title_create": "Create a link", - "title_edit": "Edit link" + "thread_view_back_action_label": "Back to thread", + "threads": { + "all_threads": "All threads", + "all_threads_description": "Shows all threads from current room", + "count_of_reply": { + "one": "%(count)s reply", + "other": "%(count)s replies" }, - "mode_plain": "Hide formatting", - "mode_rich_text": "Show formatting", - "no_perms_notice": "You do not have permission to post to this room", - "placeholder": "Send a message…", - "placeholder_encrypted": "Send an encrypted message…", - "placeholder_reply": "Send a reply…", - "placeholder_reply_encrypted": "Send an encrypted reply…", - "placeholder_thread": "Reply to thread…", - "placeholder_thread_encrypted": "Reply to encrypted thread…", - "poll_button": "Poll", - "poll_button_no_perms_description": "You do not have permission to start polls in this room.", - "poll_button_no_perms_title": "Permission Required", - "replying_title": "Replying", - "room_upgraded_link": "The conversation continues here.", - "room_upgraded_notice": "This room has been replaced and is no longer active.", - "send_button_title": "Send message", - "send_button_voice_message": "Send voice message", - "send_voice_message": "Send voice message", - "stop_voice_message": "Stop recording", - "voice_message_button": "Voice Message" + "empty_explainer": "Threads help keep your conversations on-topic and easy to track.", + "empty_has_threads_tip": "Reply to an ongoing thread or use “%(replyInThread)s” when hovering over a message to start a new one.", + "empty_heading": "Keep discussions organised with threads", + "empty_tip": "Tip: Use “%(replyInThread)s” when hovering over a message.", + "error_start_thread_existing_relation": "Can't create a thread from an event with an existing relation", + "my_threads": "My threads", + "my_threads_description": "Shows all threads you've participated in", + "open_thread": "Open thread", + "show_all_threads": "Show all threads", + "show_thread_filter": "Show:", + "unable_to_decrypt": "Unable to decrypt message" }, - "common": { - "about": "About", - "access_token": "Access Token", - "accessibility": "Accessibility", - "advanced": "Advanced", - "all_rooms": "All rooms", - "analytics": "Analytics", - "and_n_others": { - "one": "and one other...", - "other": "and %(count)s others..." + "time": { + "about_day_ago": "about a day ago", + "about_hour_ago": "about an hour ago", + "about_minute_ago": "about a minute ago", + "date_at_time": "%(date)s at %(time)s", + "few_seconds_ago": "a few seconds ago", + "hours_minutes_seconds_left": "%(hours)sh %(minutes)sm %(seconds)ss left", + "in_about_day": "about a day from now", + "in_about_hour": "about an hour from now", + "in_about_minute": "about a minute from now", + "in_few_seconds": "a few seconds from now", + "in_n_days": "%(num)s days from now", + "in_n_hours": "%(num)s hours from now", + "in_n_minutes": "%(num)s minutes from now", + "left": "%(timeRemaining)s left", + "minutes_seconds_left": "%(minutes)sm %(seconds)ss left", + "n_days_ago": "%(num)s days ago", + "n_hours_ago": "%(num)s hours ago", + "n_minutes_ago": "%(num)s minutes ago", + "seconds_left": "%(seconds)ss left", + "short_days": "%(value)sd", + "short_days_hours_minutes_seconds": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", + "short_hours": "%(value)sh", + "short_hours_minutes_seconds": "%(hours)sh %(minutes)sm %(seconds)ss", + "short_minutes": "%(value)sm", + "short_minutes_seconds": "%(minutes)sm %(seconds)ss", + "short_seconds": "%(value)ss" + }, + "timeline": { + "context_menu": { + "collapse_reply_thread": "Collapse reply thread", + "external_url": "Source URL", + "open_in_osm": "Open in OpenStreetMap", + "report": "Report", + "resent_unsent_reactions": "Resend %(unsentCount)s reaction(s)", + "show_url_preview": "Show preview", + "view_related_event": "View related event", + "view_source": "View source" }, - "android": "Android", - "appearance": "Appearance", - "application": "Application", - "are_you_sure": "Are you sure?", - "attachment": "Attachment", - "authentication": "Authentication", - "avatar": "Avatar", - "beta": "Beta", - "camera": "Camera", - "cameras": "Cameras", - "capabilities": "Capabilities", - "copied": "Copied!", - "credits": "Credits", - "cross_signing": "Cross-signing", - "dark": "Dark", - "description": "Description", - "deselect_all": "Deselect all", - "device": "Device", - "display_name": "Display Name", - "edited": "edited", - "email_address": "Email address", - "emoji": "Emoji", - "encrypted": "Encrypted", - "encryption_enabled": "Encryption enabled", - "error": "Error", - "faq": "FAQ", - "favourites": "Favourites", - "feedback": "Feedback", - "filter_results": "Filter results", - "forward_message": "Forward message", - "general": "General", - "go_to_settings": "Go to Settings", - "guest": "Guest", - "help": "Help", - "historical": "Historical", - "home": "Home", - "homeserver": "Homeserver", - "identity_server": "Identity server", - "image": "Image", - "integration_manager": "Integration manager", - "ios": "iOS", - "joined": "Joined", - "labs": "Labs", - "legal": "Legal", - "light": "Light", - "loading": "Loading…", - "location": "Location", - "low_priority": "Low priority", - "matrix": "Matrix", - "message": "Message", - "message_layout": "Message layout", - "microphone": "Microphone", - "model": "Model", - "modern": "Modern", - "mute": "Mute", - "n_members": { - "one": "%(count)s member", - "other": "%(count)s members" + "creation_summary_dm": "%(creator)s created this DM.", + "creation_summary_room": "%(creator)s created and configured the room.", + "decryption_failure_blocked": "The sender has blocked you from receiving this message", + "disambiguated_profile": "%(displayName)s (%(matrixId)s)", + "download_action_decrypting": "Decrypting", + "download_action_downloading": "Downloading", + "edits": { + "tooltip_label": "Edited at %(date)s. Click to view edits.", + "tooltip_sub": "Click to view edits", + "tooltip_title": "Edited at %(date)s" + }, + "encrypted_historical_messages_unavailable": "Encrypted messages before this point are unavailable.", + "error_no_renderer": "This event could not be displayed", + "error_rendering_message": "Can't load this message", + "historical_messages_unavailable": "You can't see earlier messages", + "in_room_name": " in %(room)s", + "io.element.voice_broadcast_info": { + "user": "%(senderName)s ended a voice broadcast", + "you": "You ended a voice broadcast" + }, + "io.element.widgets.layout": "%(senderName)s has updated the room layout", + "late_event_separator": "Originally sent %(dateTime)s", + "load_error": { + "no_permission": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", + "title": "Failed to load timeline position", + "unable_to_find": "Tried to load a specific point in this room's timeline, but was unable to find it." + }, + "m.audio": { + "error_downloading_audio": "Error downloading audio", + "error_processing_audio": "Error processing audio message", + "error_processing_voice_message": "Error processing voice message", + "unnamed_audio": "Unnamed audio" }, - "n_participants": { - "one": "1 participant", - "other": "%(count)s participants" + "m.beacon_info": { + "view_live_location": "View live location" }, - "n_rooms": { - "one": "%(count)s room", - "other": "%(count)s rooms" + "m.call": { + "video_call_ended": "Video call ended", + "video_call_started": "Video call started in %(roomName)s.", + "video_call_started_text": "%(name)s started a video call", + "video_call_started_unsupported": "Video call started in %(roomName)s. (not supported by this browser)" }, - "name": "Name", - "no_results": "No results", - "no_results_found": "No results found", - "not_trusted": "Not trusted", - "off": "Off", - "offline": "Offline", - "on": "On", - "options": "Options", - "orphan_rooms": "Other rooms", - "password": "Password", - "people": "People", - "preferences": "Preferences", - "presence": "Presence", - "preview_message": "Hey you. You're the best!", - "privacy": "Privacy", - "private": "Private", - "private_room": "Private room", - "private_space": "Private space", - "profile": "Profile", - "public": "Public", - "public_room": "Public room", - "public_space": "Public space", - "qr_code": "QR Code", - "random": "Random", - "reactions": "Reactions", - "report_a_bug": "Report a bug", - "room": "Room", - "room_name": "Room name", - "rooms": "Rooms", - "saving": "Saving…", - "secure_backup": "Secure Backup", - "security": "Security", - "select_all": "Select all", - "server": "Server", - "settings": "Settings", - "setup_secure_messages": "Set up Secure Messages", - "show_more": "Show more", - "someone": "Someone", - "space": "Space", - "spaces": "Spaces", - "sticker": "Sticker", - "stickerpack": "Stickerpack", - "success": "Success", - "suggestions": "Suggestions", - "support": "Support", - "system_alerts": "System Alerts", - "theme": "Theme", - "thread": "Thread", - "threads": "Threads", - "timeline": "Timeline", - "trusted": "Trusted", - "unavailable": "unavailable", - "unencrypted": "Not encrypted", - "unmute": "Unmute", - "unnamed_room": "Unnamed Room", - "unnamed_space": "Unnamed Space", - "unsent": "Unsent", - "unverified": "Unverified", - "user": "User", - "user_avatar": "Profile picture", - "username": "Username", - "verification_cancelled": "Verification cancelled", - "verified": "Verified", - "version": "Version", - "video": "Video", - "video_room": "Video room", - "view_message": "View message", - "warning": "Warning", - "welcome": "Welcome" - }, - "chat_effects": { - "confetti_description": "Sends the given message with confetti", - "confetti_message": "sends confetti", - "fireworks_description": "Sends the given message with fireworks", - "fireworks_message": "sends fireworks", - "hearts_description": "Sends the given message with hearts", - "hearts_message": "sends hearts", - "rainfall_description": "Sends the given message with rainfall", - "rainfall_message": "sends rainfall", - "snowfall_description": "Sends the given message with snowfall", - "snowfall_message": "sends snowfall", - "spaceinvaders_description": "Sends the given message with a space themed effect", - "spaceinvaders_message": "sends space invaders" - }, - "chat_card_back_action_label": "Back to chat", - "cant_load_page": "Couldn't load page", - "cannot_reach_homeserver_detail": "Ensure you have a stable internet connection, or get in touch with the server admin", - "cannot_reach_homeserver": "Cannot reach homeserver", - "cannot_invite_without_identity_server": "Cannot invite user by email without an identity server. You can connect to one under \"Settings\".", - "bug_reporting": { - "additional_context": "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.", - "before_submitting": "Before submitting logs, you must create a GitHub issue to describe your problem.", - "collecting_information": "Collecting app version information", - "collecting_logs": "Collecting logs", - "create_new_issue": "Please create a new issue on GitHub so that we can investigate this bug.", - "description": "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.", - "download_logs": "Download logs", - "downloading_logs": "Downloading logs", - "error_empty": "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.", - "failed_send_logs": "Failed to send logs: ", - "github_issue": "GitHub issue", - "introduction": "If you've submitted a bug via GitHub, debug logs can help us track down the problem. ", - "log_request": "To help us prevent this in future, please send us logs.", - "logs_sent": "Logs sent", - "matrix_security_issue": "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.", - "preparing_download": "Preparing to download logs", - "preparing_logs": "Preparing to send logs", - "send_logs": "Send logs", - "submit_debug_logs": "Submit debug logs", - "textarea_label": "Notes", - "thank_you": "Thank you!", - "title": "Bug reporting", - "unsupported_browser": "Reminder: Your browser is unsupported, so your experience may be unpredictable.", - "uploading_logs": "Uploading logs", - "waiting_for_server": "Waiting for response from server" - }, - "auth": { - "3pid_in_use": "That e-mail address or phone number is already in use.", - "account_clash": "Your new account (%(newAccountId)s) is registered, but you're already logged into a different account (%(loggedInUserId)s).", - "account_clash_previous_account": "Continue with previous account", - "account_deactivated": "This account has been deactivated.", - "autodiscovery_generic_failure": "Failed to get autodiscovery configuration from server", - "autodiscovery_hs_incompatible": "Your homeserver is too old and does not support the minimum API version required. Please contact your server owner, or upgrade your server.", - "autodiscovery_invalid": "Invalid homeserver discovery response", - "autodiscovery_invalid_hs": "Homeserver URL does not appear to be a valid Matrix homeserver", - "autodiscovery_invalid_hs_base_url": "Invalid base_url for m.homeserver", - "autodiscovery_invalid_is": "Identity server URL does not appear to be a valid identity server", - "autodiscovery_invalid_is_base_url": "Invalid base_url for m.identity_server", - "autodiscovery_invalid_is_response": "Invalid identity server discovery response", - "autodiscovery_invalid_json": "Invalid JSON", - "autodiscovery_no_well_known": "No .well-known JSON file found", - "autodiscovery_unexpected_error_hs": "Unexpected error resolving homeserver configuration", - "autodiscovery_unexpected_error_is": "Unexpected error resolving identity server configuration", - "captcha_description": "This homeserver would like to make sure you are not a robot.", - "change_password_action": "Change Password", - "change_password_confirm_invalid": "Passwords don't match", - "change_password_confirm_label": "Confirm password", - "change_password_current_label": "Current password", - "change_password_empty": "Passwords can't be empty", - "change_password_error": "Error while changing password: %(error)s", - "change_password_mismatch": "New passwords don't match", - "change_password_new_label": "New Password", - "check_email_explainer": "Follow the instructions sent to %(email)s", - "check_email_resend_prompt": "Did not receive it?", - "check_email_resend_tooltip": "Verification link email resent!", - "check_email_wrong_email_button": "Re-enter email address", - "check_email_wrong_email_prompt": "Wrong email address?", - "continue_with_idp": "Continue with %(provider)s", - "continue_with_sso": "Continue with %(ssoButtons)s", - "country_dropdown": "Country Dropdown", - "create_account_prompt": "New here? Create an account", - "create_account_title": "Create account", - "email_discovery_text": "Use email to optionally be discoverable by existing contacts.", - "email_field_label": "Email", - "email_field_label_invalid": "Doesn't look like a valid email address", - "email_field_label_required": "Enter email address", - "email_help_text": "Add an email to be able to reset your password.", - "email_phone_discovery_text": "Use email or phone to optionally be discoverable by existing contacts.", - "enter_email_explainer": "%(homeserver)s will send you a verification link to let you reset your password.", - "enter_email_heading": "Enter your email to reset password", - "failed_connect_identity_server": "Cannot reach identity server", - "failed_connect_identity_server_other": "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.", - "failed_connect_identity_server_register": "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.", - "failed_connect_identity_server_reset_password": "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.", - "failed_homeserver_discovery": "Failed to perform homeserver discovery", - "failed_query_registration_methods": "Unable to query for supported registration methods.", - "failed_soft_logout_auth": "Failed to re-authenticate", - "failed_soft_logout_homeserver": "Failed to re-authenticate due to a homeserver problem", - "footer_powered_by_matrix": "powered by Matrix", - "forgot_password_email_invalid": "The email address doesn't appear to be valid.", - "forgot_password_email_required": "The email address linked to your account must be entered.", - "forgot_password_prompt": "Forgotten your password?", - "forgot_password_send_email": "Send email", - "identifier_label": "Sign in with", - "incorrect_credentials": "Incorrect username and/or password.", - "incorrect_credentials_detail": "Please note you are logging into the %(hs)s server, not matrix.org.", - "incorrect_password": "Incorrect password", - "log_in_new_account": "Log in to your new account.", - "logout_dialog": { - "description": "Are you sure you want to sign out?", - "megolm_export": "Manually export keys", - "setup_key_backup_title": "You'll lose access to your encrypted messages", - "setup_secure_backup_description_1": "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.", - "setup_secure_backup_description_2": "When you sign out, these keys will be deleted from this device, which means you won't be able to read encrypted messages unless you have the keys for them on your other devices, or backed them up to the server.", - "skip_key_backup": "I don't want my encrypted messages", - "use_key_backup": "Start using Key Backup" + "m.call.hangup": { + "dm": "Call ended" + }, + "m.call.invite": { + "answered_elsewhere": "Answered elsewhere", + "call_back_prompt": "Call back", + "declined": "Call declined", + "failed_connect_media": "Could not connect media", + "failed_connection": "Connection failed", + "failed_opponent_media": "Their device couldn't start the camera or microphone", + "missed_call": "Missed call", + "no_answer": "No answer", + "unknown_error": "An unknown error occurred", + "unknown_failure": "Unknown failure: %(reason)s", + "unknown_state": "The call is in an unknown state!", + "video_call": "%(senderName)s placed a video call.", + "video_call_unsupported": "%(senderName)s placed a video call. (not supported by this browser)", + "voice_call": "%(senderName)s placed a voice call.", + "voice_call_unsupported": "%(senderName)s placed a voice call. (not supported by this browser)" + }, + "m.file": { + "decrypt_label": "Decrypt %(text)s", + "download_label": "Download %(text)s", + "error_decrypting": "Error decrypting attachment", + "error_invalid": "Invalid file%(extra)s" + }, + "m.image": { + "error": "Unable to show image due to error", + "error_decrypting": "Error decrypting image", + "error_downloading": "Error downloading image", + "sent": "%(senderDisplayName)s sent an image.", + "show_image": "Show image" + }, + "m.key.verification.cancel": { + "user_cancelled": "%(name)s cancelled verifying", + "you_cancelled": "You cancelled verifying %(name)s" + }, + "m.key.verification.done": "You verified %(name)s", + "m.key.verification.request": { + "declining": "Declining…", + "user_accepted": "%(name)s accepted", + "user_cancelled": "%(name)s cancelled", + "user_declined": "%(name)s declined", + "user_wants_to_verify": "%(name)s wants to verify", + "you_accepted": "You accepted", + "you_cancelled": "You cancelled", + "you_declined": "You declined", + "you_started": "You sent a verification request" + }, + "m.location": { + "full": "%(senderName)s has shared their location", + "location": "Shared a location: ", + "self_location": "Shared their location: " + }, + "m.poll": { + "count_of_votes": { + "one": "%(count)s vote", + "other": "%(count)s votes" + } }, - "misconfigured_body": "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.", - "misconfigured_title": "Your %(brand)s is misconfigured", - "msisdn_field_description": "Other users can invite you to rooms using your contact details", - "msisdn_field_label": "Phone", - "msisdn_field_number_invalid": "That phone number doesn't look quite right, please check and try again", - "msisdn_field_required_invalid": "Enter phone number", - "no_hs_url_provided": "No homeserver URL provided", - "oidc": { - "error_generic": "Something went wrong.", - "error_title": "We couldn't log you in", - "logout_redirect_warning": "You will be redirected to your server's authentication provider to complete sign out." + "m.poll.end": { + "ended": "Ended a poll", + "sender_ended": "%(senderName)s has ended a poll" }, - "password_field_keep_going_prompt": "Keep going…", - "password_field_label": "Enter password", - "password_field_strong_label": "Nice, strong password!", - "password_field_weak_label": "Password is allowed, but unsafe", - "phone_label": "Phone", - "phone_optional_label": "Phone (optional)", - "qr_code_login": { - "approve_access_warning": "By approving access for this device, it will have full access to your account.", - "completing_setup": "Completing set up of your new device", - "confirm_code_match": "Check that the code below matches with your other device:", - "connecting": "Connecting…", - "devices_connected": "Devices connected", - "error_device_already_signed_in": "The other device is already signed in.", - "error_device_not_signed_in": "The other device isn't signed in.", - "error_device_unsupported": "Linking with this device is not supported.", - "error_homeserver_lacks_support": "The homeserver doesn't support signing in another device.", - "error_invalid_scanned_code": "The scanned code is invalid.", - "error_linking_incomplete": "The linking wasn't completed in the required time.", - "error_request_cancelled": "The request was cancelled.", - "error_request_declined": "The request was declined on the other device.", - "error_unexpected": "An unexpected error occurred.", - "review_and_approve": "Review and approve the sign in", - "scan_code_instruction": "Scan the QR code below with your device that's signed out.", - "scan_qr_code": "Scan QR code", - "select_qr_code": "Select '%(scanQRCode)s'", - "sign_in_new_device": "Sign in new device", - "start_at_sign_in_screen": "Start at the sign in screen", - "waiting_for_device": "Waiting for device to sign in" + "m.poll.start": "%(senderName)s has started a poll - %(pollQuestion)s", + "m.room.avatar": { + "changed": "%(senderDisplayName)s changed the room avatar.", + "changed_img": "%(senderDisplayName)s changed the room avatar to ", + "lightbox_title": "%(senderDisplayName)s changed the avatar for %(roomName)s", + "removed": "%(senderDisplayName)s removed the room avatar." }, - "register_action": "Create Account", - "registration": { - "continue_without_email_description": "Just a heads up, if you don't add an email and forget your password, you could permanently lose access to your account.", - "continue_without_email_field_label": "Email (optional)", - "continue_without_email_title": "Continuing without email" + "m.room.canonical_alias": { + "alt_added": { + "one": "%(senderName)s added alternative address %(addresses)s for this room.", + "other": "%(senderName)s added the alternative addresses %(addresses)s for this room." + }, + "alt_removed": { + "one": "%(senderName)s removed alternative address %(addresses)s for this room.", + "other": "%(senderName)s removed the alternative addresses %(addresses)s for this room." + }, + "changed": "%(senderName)s changed the addresses for this room.", + "changed_alternative": "%(senderName)s changed the alternative addresses for this room.", + "changed_main_and_alternative": "%(senderName)s changed the main and alternative addresses for this room.", + "removed": "%(senderName)s removed the main address for this room.", + "set": "%(senderName)s set the main address for this room to %(address)s." }, - "registration_disabled": "Registration has been disabled on this homeserver.", - "registration_msisdn_field_required_invalid": "Enter phone number (required on this homeserver)", - "registration_successful": "Registration Successful", - "registration_username_in_use": "Someone already has that username. Try another or if it is you, sign in below.", - "registration_username_unable_check": "Unable to check if username has been taken. Try again later.", - "registration_username_validation": "Use lowercase letters, numbers, dashes and underscores only", - "reset_password": { - "confirm_new_password": "Confirm new password", - "devices_logout_success": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device.", - "other_devices_logout_warning_1": "Signing out your devices will delete the message encryption keys stored on them, making encrypted chat history unreadable.", - "other_devices_logout_warning_2": "If you want to retain access to your chat history in encrypted rooms, set up Key Backup or export your message keys from one of your other devices before proceeding.", - "password_not_entered": "A new password must be entered.", - "passwords_mismatch": "New passwords must match each other.", - "rate_limit_error": "Too many attempts in a short time. Wait some time before trying again.", - "rate_limit_error_with_time": "Too many attempts in a short time. Retry after %(timeout)s.", - "reset_successful": "Your password has been reset.", - "return_to_login": "Return to login screen", - "sign_out_other_devices": "Sign out of all devices" + "m.room.create": { + "continuation": "This room is a continuation of another conversation.", + "see_older_messages": "Click here to see older messages.", + "unknown_predecessor": "Can't find the old version of this room (room ID: %(roomId)s), and we have not been provided with 'via_servers' to look for it.", + "unknown_predecessor_guess_server": "Can't find the old version of this room (room ID: %(roomId)s), and we have not been provided with 'via_servers' to look for it. It's possible that guessing the server from the room ID will work. If you want to try, click this link:" }, - "reset_password_action": "Reset password", - "reset_password_button": "Forgot password?", - "reset_password_email_field_description": "Use an email address to recover your account", - "reset_password_email_field_required_invalid": "Enter email address (required on this homeserver)", - "reset_password_email_not_associated": "Your email address does not appear to be associated with a Matrix ID on this homeserver.", - "reset_password_email_not_found_title": "This email address was not found", - "reset_password_title": "Reset your password", - "server_picker_custom": "Other homeserver", - "server_picker_description": "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.", - "server_picker_description_matrix.org": "Join millions for free on the largest public server", - "server_picker_dialog_title": "Decide where your account is hosted", - "server_picker_explainer": "Use your preferred Matrix homeserver if you have one, or host your own.", - "server_picker_failed_validate_homeserver": "Unable to validate homeserver", - "server_picker_intro": "We call the places where you can host your account 'homeservers'.", - "server_picker_invalid_url": "Invalid URL", - "server_picker_learn_more": "About homeservers", - "server_picker_matrix.org": "Matrix.org is the biggest public homeserver in the world, so it's a good place for many.", - "server_picker_required": "Specify a homeserver", - "server_picker_title": "Sign into your homeserver", - "server_picker_title_default": "Server Options", - "server_picker_title_registration": "Host account on", - "session_logged_out_description": "For security, this session has been signed out. Please sign in again.", - "session_logged_out_title": "Signed Out", - "set_email": { - "description": "This will allow you to reset your password and receive notifications.", - "verification_pending_description": "Please check your email and click on the link it contains. Once this is done, click continue.", - "verification_pending_title": "Verification Pending" + "m.room.encryption": { + "disable_attempt": "Ignored attempt to disable encryption", + "disabled": "Encryption not enabled", + "enabled": "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their profile picture.", + "enabled_dm": "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their profile picture.", + "enabled_local": "Messages in this chat will be end-to-end encrypted.", + "parameters_changed": "Some encryption parameters have been changed.", + "unsupported": "The encryption used by this room isn't supported." + }, + "m.room.guest_access": { + "can_join": "%(senderDisplayName)s has allowed guests to join the room.", + "forbidden": "%(senderDisplayName)s has prevented guests from joining the room.", + "unknown": "%(senderDisplayName)s changed guest access to %(rule)s" + }, + "m.room.history_visibility": { + "invited": "%(senderName)s made future room history visible to all room members, from the point they are invited.", + "joined": "%(senderName)s made future room history visible to all room members, from the point they joined.", + "shared": "%(senderName)s made future room history visible to all room members.", + "unknown": "%(senderName)s made future room history visible to unknown (%(visibility)s).", + "world_readable": "%(senderName)s made future room history visible to anyone." + }, + "m.room.join_rules": { + "invite": "%(senderDisplayName)s made the room invite only.", + "knock": "%(senderDisplayName)s changed the join rule to ask to join.", + "public": "%(senderDisplayName)s made the room public to whoever knows the link.", + "restricted": "%(senderDisplayName)s changed who can join this room.", + "restricted_settings": "%(senderDisplayName)s changed who can join this room. View settings.", + "unknown": "%(senderDisplayName)s changed the join rule to %(rule)s" + }, + "m.room.member": { + "accepted_3pid_invite": "%(targetName)s accepted the invitation for %(displayName)s", + "accepted_invite": "%(targetName)s accepted an invitation", + "ban": "%(senderName)s banned %(targetName)s", + "ban_reason": "%(senderName)s banned %(targetName)s: %(reason)s", + "change_avatar": "%(senderName)s changed their profile picture", + "change_name": "%(oldDisplayName)s changed their display name to %(displayName)s", + "change_name_avatar": "%(oldDisplayName)s changed their display name and profile picture", + "invite": "%(senderName)s invited %(targetName)s", + "join": "%(targetName)s joined the room", + "kick": "%(senderName)s removed %(targetName)s", + "kick_reason": "%(senderName)s removed %(targetName)s: %(reason)s", + "left": "%(targetName)s left the room", + "left_reason": "%(targetName)s left the room: %(reason)s", + "no_change": "%(senderName)s made no change", + "reject_invite": "%(targetName)s rejected the invitation", + "remove_avatar": "%(senderName)s removed their profile picture", + "remove_name": "%(senderName)s removed their display name (%(oldDisplayName)s)", + "set_avatar": "%(senderName)s set a profile picture", + "set_name": "%(senderName)s set their display name to %(displayName)s", + "unban": "%(senderName)s unbanned %(targetName)s", + "withdrew_invite": "%(senderName)s withdrew %(targetName)s's invitation", + "withdrew_invite_reason": "%(senderName)s withdrew %(targetName)s's invitation: %(reason)s" + }, + "m.room.name": { + "change": "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.", + "remove": "%(senderDisplayName)s removed the room name.", + "set": "%(senderDisplayName)s changed the room name to %(roomName)s." + }, + "m.room.pinned_events": { + "changed": "%(senderName)s changed the pinned messages for the room.", + "changed_link": "%(senderName)s changed the pinned messages for the room.", + "pinned": "%(senderName)s pinned a message to this room. See all pinned messages.", + "pinned_link": "%(senderName)s pinned a message to this room. See all pinned messages.", + "unpinned": "%(senderName)s unpinned a message from this room. See all pinned messages.", + "unpinned_link": "%(senderName)s unpinned a message from this room. See all pinned messages." + }, + "m.room.power_levels": { + "changed": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", + "user_from_to": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s" + }, + "m.room.server_acl": { + "all_servers_banned": "🎉 All servers are banned from participating! This room can no longer be used.", + "changed": "%(senderDisplayName)s changed the server ACLs for this room.", + "set": "%(senderDisplayName)s set the server ACLs for this room." + }, + "m.room.third_party_invite": { + "revoked": "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.", + "sent": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room." + }, + "m.room.tombstone": "%(senderDisplayName)s upgraded this room.", + "m.room.topic": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", + "m.sticker": "%(senderDisplayName)s sent a sticker.", + "m.video": { + "error_decrypting": "Error decrypting video" + }, + "m.widget": { + "added": "%(widgetName)s widget added by %(senderName)s", + "jitsi_ended": "Video conference ended by %(senderName)s", + "jitsi_join_right_prompt": "Join the conference from the room information card on the right", + "jitsi_join_top_prompt": "Join the conference at the top of this room", + "jitsi_started": "Video conference started by %(senderName)s", + "jitsi_updated": "Video conference updated by %(senderName)s", + "modified": "%(widgetName)s widget modified by %(senderName)s", + "removed": "%(widgetName)s widget removed by %(senderName)s" + }, + "mab": { + "collapse_reply_chain": "Collapse quotes", + "copy_link_thread": "Copy link to thread", + "expand_reply_chain": "Expand quotes", + "label": "Message Actions", + "view_in_room": "View in room" + }, + "message_timestamp_received_at": "Received at: %(dateTime)s", + "message_timestamp_sent_at": "Sent at: %(dateTime)s", + "mjolnir": { + "changed_rule_glob": "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", + "changed_rule_rooms": "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", + "changed_rule_servers": "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", + "changed_rule_users": "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", + "created_rule": "%(senderName)s created a ban rule matching %(glob)s for %(reason)s", + "created_rule_rooms": "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s", + "created_rule_servers": "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s", + "created_rule_users": "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s", + "message_hidden": "You have ignored this user, so their message is hidden. Show anyways.", + "removed_rule": "%(senderName)s removed a ban rule matching %(glob)s", + "removed_rule_rooms": "%(senderName)s removed the rule banning rooms matching %(glob)s", + "removed_rule_servers": "%(senderName)s removed the rule banning servers matching %(glob)s", + "removed_rule_users": "%(senderName)s removed the rule banning users matching %(glob)s", + "updated_invalid_rule": "%(senderName)s updated an invalid ban rule", + "updated_rule": "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s", + "updated_rule_rooms": "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s", + "updated_rule_servers": "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s", + "updated_rule_users": "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s" + }, + "no_permission_messages_before_invite": "You don't have permission to view messages from before you were invited.", + "no_permission_messages_before_join": "You don't have permission to view messages from before you joined.", + "pending_moderation": "Message pending moderation", + "pending_moderation_reason": "Message pending moderation: %(reason)s", + "reactions": { + "add_reaction_prompt": "Add reaction", + "custom_reaction_fallback_label": "Custom reaction", + "label": "%(reactors)s reacted with %(content)s", + "tooltip": "reacted with %(shortName)s" + }, + "read_receipt_title": { + "one": "Seen by %(count)s person", + "other": "Seen by %(count)s people" }, - "set_email_prompt": "Do you want to set an email address?", - "sign_in_description": "Use your account to continue.", - "sign_in_instead": "Sign in instead", - "sign_in_instead_prompt": "Already have an account? Sign in here", - "sign_in_or_register": "Sign In or Create Account", - "sign_in_or_register_description": "Use your account or create a new one to continue.", - "sign_in_prompt": "Got an account? Sign in", - "sign_in_with_sso": "Sign in with single sign-on", - "signing_in": "Signing In…", - "soft_logout": { - "clear_data_button": "Clear all data", - "clear_data_description": "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.", - "clear_data_title": "Clear all data in this session?" + "read_receipts_label": "Read receipts", + "redacted": { + "tooltip": "Message deleted on %(date)s" }, - "soft_logout_heading": "You're signed out", - "soft_logout_intro_password": "Enter your password to sign in and regain access to your account.", - "soft_logout_intro_sso": "Sign in and regain access to your account.", - "soft_logout_intro_unsupported_auth": "You cannot sign in to your account. Please contact your homeserver admin for more information.", - "soft_logout_subheading": "Clear personal data", - "soft_logout_warning": "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.", - "sso": "Single Sign On", - "sso_failed_missing_storage": "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.", - "sso_or_username_password": "%(ssoButtons)s Or %(usernamePassword)s", - "sync_footer_subtitle": "If you've joined lots of rooms, this might take a while", - "syncing": "Syncing…", - "uia": { - "code": "Code", - "email": "To create your account, open the link in the email we just sent to %(emailAddress)s.", - "email_auth_header": "Check your email to continue", - "email_resend_prompt": "Did not receive it? Resend it", - "email_resent": "Resent!", - "fallback_button": "Start authentication", - "msisdn": "A text message has been sent to %(msisdn)s", - "msisdn_token_incorrect": "Token incorrect", - "msisdn_token_prompt": "Please enter the code it contains:", - "password_prompt": "Confirm your identity by entering your account password below.", - "recaptcha_missing_params": "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.", - "registration_token_label": "Registration token", - "registration_token_prompt": "Enter a registration token provided by the homeserver administrator.", - "sso_body": "Confirm adding this email address by using Single Sign On to prove your identity.", - "sso_failed": "Something went wrong in confirming your identity. Cancel and try again.", - "sso_postauth_body": "Click the button below to confirm your identity.", - "sso_postauth_title": "Confirm to continue", - "sso_preauth_body": "To continue, use Single Sign On to prove your identity.", - "sso_title": "Use Single Sign On to continue", - "terms": "Please review and accept the policies of this homeserver:", - "terms_invalid": "Please review and accept all of the homeserver's policies" + "redaction": "Message deleted by %(name)s", + "reply": { + "error_loading": "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.", + "in_reply_to": "In reply to ", + "in_reply_to_for_export": "In reply to this message" + }, + "scalar_starter_link": { + "dialog_description": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?", + "dialog_title": "Add an Integration" + }, + "self_redaction": "Message deleted", + "send_state_encrypting": "Encrypting your message…", + "send_state_failed": "Failed to send", + "send_state_sending": "Sending your message…", + "send_state_sent": "Your message was sent", + "summary": { + "banned": { + "one": "was banned", + "other": "was banned %(count)s times" + }, + "banned_multiple": { + "one": "were banned", + "other": "were banned %(count)s times" + }, + "changed_avatar": { + "one": "%(oneUser)schanged their profile picture", + "other": "%(oneUser)schanged their profile picture %(count)s times" + }, + "changed_avatar_multiple": { + "one": "%(severalUsers)schanged their profile picture", + "other": "%(severalUsers)schanged their profile picture %(count)s times" + }, + "changed_name": { + "one": "%(oneUser)schanged their name", + "other": "%(oneUser)schanged their name %(count)s times" + }, + "changed_name_multiple": { + "one": "%(severalUsers)schanged their name", + "other": "%(severalUsers)schanged their name %(count)s times" + }, + "format": "%(nameList)s %(transitionList)s", + "hidden_event": { + "one": "%(oneUser)ssent a hidden message", + "other": "%(oneUser)ssent %(count)s hidden messages" + }, + "hidden_event_multiple": { + "one": "%(severalUsers)ssent a hidden message", + "other": "%(severalUsers)ssent %(count)s hidden messages" + }, + "invite_withdrawn": { + "one": "%(oneUser)shad their invitation withdrawn", + "other": "%(oneUser)shad their invitation withdrawn %(count)s times" + }, + "invite_withdrawn_multiple": { + "one": "%(severalUsers)shad their invitations withdrawn", + "other": "%(severalUsers)shad their invitations withdrawn %(count)s times" + }, + "invited": { + "one": "was invited", + "other": "was invited %(count)s times" + }, + "invited_multiple": { + "one": "were invited", + "other": "were invited %(count)s times" + }, + "joined": { + "one": "%(oneUser)sjoined", + "other": "%(oneUser)sjoined %(count)s times" + }, + "joined_and_left": { + "one": "%(oneUser)sjoined and left", + "other": "%(oneUser)sjoined and left %(count)s times" + }, + "joined_and_left_multiple": { + "one": "%(severalUsers)sjoined and left", + "other": "%(severalUsers)sjoined and left %(count)s times" + }, + "joined_multiple": { + "one": "%(severalUsers)sjoined", + "other": "%(severalUsers)sjoined %(count)s times" + }, + "kicked": { + "one": "was removed", + "other": "was removed %(count)s times" + }, + "kicked_multiple": { + "one": "were removed", + "other": "were removed %(count)s times" + }, + "left": { + "one": "%(oneUser)sleft", + "other": "%(oneUser)sleft %(count)s times" + }, + "left_multiple": { + "one": "%(severalUsers)sleft", + "other": "%(severalUsers)sleft %(count)s times" + }, + "no_change": { + "one": "%(oneUser)smade no changes", + "other": "%(oneUser)smade no changes %(count)s times" + }, + "no_change_multiple": { + "one": "%(severalUsers)smade no changes", + "other": "%(severalUsers)smade no changes %(count)s times" + }, + "pinned_events": { + "one": "%(oneUser)schanged the pinned messages for the room", + "other": "%(oneUser)schanged the pinned messages for the room %(count)s times" + }, + "pinned_events_multiple": { + "one": "%(severalUsers)schanged the pinned messages for the room", + "other": "%(severalUsers)schanged the pinned messages for the room %(count)s times" + }, + "redacted": { + "one": "%(oneUser)sremoved a message", + "other": "%(oneUser)sremoved %(count)s messages" + }, + "redacted_multiple": { + "one": "%(severalUsers)sremoved a message", + "other": "%(severalUsers)sremoved %(count)s messages" + }, + "rejected_invite": { + "one": "%(oneUser)srejected their invitation", + "other": "%(oneUser)srejected their invitation %(count)s times" + }, + "rejected_invite_multiple": { + "one": "%(severalUsers)srejected their invitations", + "other": "%(severalUsers)srejected their invitations %(count)s times" + }, + "rejoined": { + "one": "%(oneUser)sleft and rejoined", + "other": "%(oneUser)sleft and rejoined %(count)s times" + }, + "rejoined_multiple": { + "one": "%(severalUsers)sleft and rejoined", + "other": "%(severalUsers)sleft and rejoined %(count)s times" + }, + "server_acls": { + "one": "%(oneUser)schanged the server ACLs", + "other": "%(oneUser)schanged the server ACLs %(count)s times" + }, + "server_acls_multiple": { + "one": "%(severalUsers)schanged the server ACLs", + "other": "%(severalUsers)schanged the server ACLs %(count)s times" + }, + "unbanned": { + "one": "was unbanned", + "other": "was unbanned %(count)s times" + }, + "unbanned_multiple": { + "one": "were unbanned", + "other": "were unbanned %(count)s times" + } + }, + "thread_info_basic": "From a thread", + "typing_indicator": { + "more_users": { + "one": "%(names)s and one other is typing …", + "other": "%(names)s and %(count)s others are typing …" + }, + "one_user": "%(displayName)s is typing …", + "two_users": "%(names)s and %(lastPerson)s are typing …" + }, + "undecryptable_tooltip": "This message could not be decrypted", + "url_preview": { + "close": "Close preview", + "show_n_more": { + "one": "Show %(count)s other preview", + "other": "Show %(count)s other previews" + } + } + }, + "truncated_list_n_more": { + "other": "And %(count)s more..." + }, + "unsupported_server_description": "This server is using an older version of Matrix. Upgrade to Matrix %(version)s to use %(brand)s without errors.", + "unsupported_server_title": "Your server is unsupported", + "update": { + "changelog": "Changelog", + "check_action": "Check for update", + "checking": "Checking for an update…", + "downloading": "Downloading update…", + "error_encountered": "Error encountered (%(errorDetail)s).", + "error_unable_load_commit": "Unable to load commit detail: %(msg)s", + "new_version_available": "New version available. Update now.", + "no_update": "No update available.", + "release_notes_toast_title": "What's New", + "see_changes_button": "What's new?", + "toast_description": "New version of %(brand)s is available", + "toast_title": "Update %(brand)s", + "unavailable": "Unavailable" + }, + "upload_failed_generic": "The file '%(fileName)s' failed to upload.", + "upload_failed_size": "The file '%(fileName)s' exceeds this homeserver's size limit for uploads", + "upload_failed_title": "Upload Failed", + "upload_file": { + "cancel_all_button": "Cancel All", + "error_file_too_large": "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.", + "error_files_too_large": "These files are too large to upload. The file size limit is %(limit)s.", + "error_some_files_too_large": "Some files are too large to be uploaded. The file size limit is %(limit)s.", + "error_title": "Upload Error", + "title": "Upload files", + "title_progress": "Upload files (%(current)s of %(total)s)", + "upload_all_button": "Upload all", + "upload_n_others_button": { + "one": "Upload %(count)s other file", + "other": "Upload %(count)s other files" + } + }, + "user_info": { + "admin_tools_section": "Admin Tools", + "ban_button_room": "Ban from room", + "ban_button_space": "Ban from space", + "ban_room_confirm_title": "Ban from %(roomName)s", + "ban_space_everything": "Ban them from everything I'm able to", + "ban_space_specific": "Ban them from specific things I'm able to", + "count_of_sessions": { + "one": "%(count)s session", + "other": "%(count)s sessions" }, - "unsupported_auth": "This homeserver doesn't offer any login flows that are supported by this client.", - "unsupported_auth_email": "This homeserver does not support login using email address.", - "unsupported_auth_msisdn": "This server does not support authentication with a phone number.", - "username_field_required_invalid": "Enter username", - "username_in_use": "Someone already has that username, please try another.", - "verify_email_explainer": "We need to know it’s you before resetting your password. Click the link in the email we just sent to %(email)s", - "verify_email_heading": "Verify your email to continue" + "count_of_verified_sessions": { + "one": "1 verified session", + "other": "%(count)s verified sessions" + }, + "deactivate_confirm_action": "Deactivate user", + "deactivate_confirm_description": "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?", + "deactivate_confirm_title": "Deactivate user?", + "demote_button": "Demote", + "demote_self_confirm_description_space": "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.", + "demote_self_confirm_room": "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.", + "demote_self_confirm_title": "Demote yourself?", + "disinvite_button_room": "Disinvite from room", + "disinvite_button_room_name": "Disinvite from %(roomName)s", + "disinvite_button_space": "Disinvite from space", + "edit_own_devices": "Edit devices", + "error_ban_user": "Failed to ban user", + "error_deactivate": "Failed to deactivate user", + "error_kicking_user": "Failed to remove user", + "error_mute_user": "Failed to mute user", + "error_revoke_3pid_invite_description": "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.", + "error_revoke_3pid_invite_title": "Failed to revoke invite", + "hide_sessions": "Hide sessions", + "hide_verified_sessions": "Hide verified sessions", + "ignore_confirm_description": "All messages and invites from this user will be hidden. Are you sure you want to ignore them?", + "ignore_confirm_title": "Ignore %(user)s", + "invited_by": "Invited by %(sender)s", + "jump_to_rr_button": "Jump to read receipt", + "kick_button_room": "Remove from room", + "kick_button_room_name": "Remove from %(roomName)s", + "kick_button_space": "Remove from space", + "kick_button_space_everything": "Remove them from everything I'm able to", + "kick_space_specific": "Remove them from specific things I'm able to", + "kick_space_warning": "They'll still be able to access whatever you're not an admin of.", + "promote_warning": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", + "redact": { + "confirm_button": { + "one": "Remove 1 message", + "other": "Remove %(count)s messages" + }, + "confirm_description_1": { + "one": "You are about to remove %(count)s message by %(user)s. This will remove them permanently for everyone in the conversation. Do you wish to continue?", + "other": "You are about to remove %(count)s messages by %(user)s. This will remove them permanently for everyone in the conversation. Do you wish to continue?" + }, + "confirm_description_2": "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.", + "confirm_keep_state_explainer": "Uncheck if you also want to remove system messages on this user (e.g. membership change, profile change…)", + "confirm_keep_state_label": "Preserve system messages", + "confirm_title": "Remove recent messages by %(user)s", + "no_recent_messages_description": "Try scrolling up in the timeline to see if there are any earlier ones.", + "no_recent_messages_title": "No recent messages by %(user)s found" + }, + "redact_button": "Remove recent messages", + "revoke_invite": "Revoke invite", + "role_label": "Role in ", + "room_encrypted": "Messages in this room are end-to-end encrypted.", + "room_encrypted_detail": "Your messages are secured and only you and the recipient have the unique keys to unlock them.", + "room_unencrypted": "Messages in this room are not end-to-end encrypted.", + "room_unencrypted_detail": "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.", + "share_button": "Share Link to User", + "unban_button_room": "Unban from room", + "unban_button_space": "Unban from space", + "unban_room_confirm_title": "Unban from %(roomName)s", + "unban_space_everything": "Unban them from everything I'm able to", + "unban_space_specific": "Unban them from specific things I'm able to", + "unban_space_warning": "They won't be able to access whatever you're not an admin of.", + "verify_button": "Verify User", + "verify_explainer": "For extra security, verify this user by checking a one-time code on both of your devices." }, - "analytics": { - "accept_button": "That's fine", - "bullet_1": "We don't record or profile any account data", - "bullet_2": "We don't share information with third parties", - "consent_migration": "You previously consented to share anonymous usage data with us. We're updating how that works.", - "disable_prompt": "You can turn this off anytime in settings", - "enable_prompt": "Help improve %(analyticsOwner)s", - "learn_more": "Share anonymous data to help us identify issues. Nothing personal. No third parties. Learn More", - "privacy_policy": "You can read all our terms here", - "pseudonymous_usage_data": "Help us identify issues and improve %(analyticsOwner)s by sharing anonymous usage data. To understand how people use multiple devices, we'll generate a random identifier, shared by your devices.", - "shared_data_heading": "Any of the following data may be shared:" + "user_menu": { + "settings": "All settings", + "switch_theme_dark": "Switch to dark mode", + "switch_theme_light": "Switch to light mode" }, - "action": { - "accept": "Accept", - "add": "Add", - "add_existing_room": "Add existing room", - "add_people": "Add people", - "apply": "Apply", - "approve": "Approve", - "ask_to_join": "Ask to join", - "back": "Back", - "call": "Call", - "cancel": "Cancel", - "change": "Change", - "clear": "Clear", - "click": "Click", - "click_to_copy": "Click to copy", - "close": "Close", - "collapse": "Collapse", - "complete": "Complete", - "confirm": "Confirm", - "continue": "Continue", - "copy": "Copy", - "copy_link": "Copy link", - "create": "Create", - "create_a_room": "Create a room", - "decline": "Decline", - "delete": "Delete", - "deny": "Deny", - "disable": "Disable", - "disconnect": "Disconnect", - "dismiss": "Dismiss", - "done": "Done", - "download": "Download", - "edit": "Edit", - "enable": "Enable", - "enter_fullscreen": "Enter fullscreen", - "exit_fullscreeen": "Exit fullscreen", - "expand": "Expand", - "explore_public_rooms": "Explore public rooms", - "explore_rooms": "Explore rooms", - "export": "Export", - "forward": "Forward", - "go": "Go", - "go_back": "Go back", - "got_it": "Got it", - "hide_advanced": "Hide advanced", - "hold": "Hold", - "ignore": "Ignore", - "import": "Import", - "invite": "Invite", - "invite_to_space": "Invite to space", - "invites_list": "Invites", - "join": "Join", - "learn_more": "Learn more", - "leave": "Leave", - "leave_room": "Leave room", - "logout": "Logout", - "manage": "Manage", - "maximise": "Maximise", - "mention": "Mention", - "minimise": "Minimise", - "new_room": "New room", - "new_video_room": "New video room", - "next": "Next", - "no": "No", - "ok": "OK", - "pause": "Pause", - "pin": "Pin", - "play": "Play", - "proceed": "Proceed", - "quote": "Quote", - "react": "React", - "refresh": "Refresh", - "register": "Register", - "reject": "Reject", - "reload": "Reload", - "remove": "Remove", - "rename": "Rename", - "reply": "Reply", - "reply_in_thread": "Reply in thread", - "report_content": "Report Content", - "resend": "Resend", - "reset": "Reset", - "restore": "Restore", - "resume": "Resume", - "retry": "Retry", - "review": "Review", - "revoke": "Revoke", - "save": "Save", - "search": "Search", - "send_report": "Send report", - "share": "Share", - "show": "Show", - "show_advanced": "Show advanced", - "show_all": "Show all", - "sign_in": "Sign in", - "sign_out": "Sign out", - "skip": "Skip", - "start": "Start", - "start_chat": "Start chat", - "start_new_chat": "Start new chat", - "stop": "Stop", - "submit": "Submit", - "subscribe": "Subscribe", - "transfer": "Transfer", - "trust": "Trust", - "try_again": "Try again", - "unban": "Unban", - "unignore": "Unignore", - "unpin": "Unpin", - "unsubscribe": "Unsubscribe", - "update": "Update", - "upgrade": "Upgrade", - "upload": "Upload", - "verify": "Verify", - "view": "View", - "view_all": "View all", - "view_list": "View list", - "view_message": "View message", - "view_source": "View Source", - "yes": "Yes", - "zoom_in": "Zoom in", - "zoom_out": "Zoom out" + "voice_broadcast": { + "30s_backward": "30s backward", + "30s_forward": "30s forward", + "action": "Voice broadcast", + "buffering": "Buffering…", + "confirm_listen_affirm": "Yes, end my recording", + "confirm_listen_description": "If you start listening to this live broadcast, your current live broadcast recording will be ended.", + "confirm_listen_title": "Listen to live broadcast?", + "confirm_stop_affirm": "Yes, stop broadcast", + "confirm_stop_description": "Are you sure you want to stop your live broadcast? This will end the broadcast and the full recording will be available in the room.", + "confirm_stop_title": "Stop live broadcasting?", + "connection_error": "Connection error - Recording paused", + "failed_already_recording_description": "You are already recording a voice broadcast. Please end your current voice broadcast to start a new one.", + "failed_already_recording_title": "Can't start a new voice broadcast", + "failed_decrypt": "Unable to decrypt voice broadcast", + "failed_generic": "Unable to play this voice broadcast", + "failed_insufficient_permission_description": "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.", + "failed_insufficient_permission_title": "Can't start a new voice broadcast", + "failed_no_connection_description": "Unfortunately we're unable to start a recording right now. Please try again later.", + "failed_no_connection_title": "Connection error", + "failed_others_already_recording_description": "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.", + "failed_others_already_recording_title": "Can't start a new voice broadcast", + "go_live": "Go live", + "live": "Live", + "pause": "pause voice broadcast", + "play": "play voice broadcast", + "resume": "resume voice broadcast" + }, + "voice_message": { + "cant_start_broadcast_description": "You can't start a voice message as you are currently recording a live broadcast. Please end your live broadcast in order to start recording a voice message.", + "cant_start_broadcast_title": "Can't start voice message" + }, + "voip": { + "already_in_call": "Already in call", + "already_in_call_person": "You're already in a call with this person.", + "answered_elsewhere": "Answered Elsewhere", + "answered_elsewhere_description": "The call was answered on another device.", + "audio_devices": "Audio devices", + "call_failed": "Call Failed", + "call_failed_description": "The call could not be established", + "call_failed_media": "Call failed because webcam or microphone could not be accessed. Check that:", + "call_failed_media_applications": "No other application is using the webcam", + "call_failed_media_connected": "A microphone and webcam are plugged in and set up correctly", + "call_failed_media_permissions": "Permission is granted to use the webcam", + "call_failed_microphone": "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.", + "call_held": "%(peerName)s held the call", + "call_held_resume": "You held the call Resume", + "call_held_switch": "You held the call Switch", + "call_toast_unknown_room": "Unknown room", + "camera_disabled": "Your camera is turned off", + "camera_enabled": "Your camera is still enabled", + "cannot_call_yourself_description": "You cannot place a call with yourself.", + "change_input_device": "Change input device", + "connecting": "Connecting", + "connection_lost": "Connectivity to the server has been lost", + "connection_lost_description": "You cannot place calls without a connection to the server.", + "consulting": "Consulting with %(transferTarget)s. Transfer to %(transferee)s", + "default_device": "Default Device", + "dial": "Dial", + "dialpad": "Dialpad", + "disable_camera": "Turn off camera", + "disable_microphone": "Mute microphone", + "disabled_no_one_here": "There's no one here to call", + "disabled_no_perms_start_video_call": "You do not have permission to start video calls", + "disabled_no_perms_start_voice_call": "You do not have permission to start voice calls", + "disabled_ongoing_call": "Ongoing call", + "enable_camera": "Turn on camera", + "enable_microphone": "Unmute microphone", + "expand": "Return to call", + "failed_call_live_broadcast_description": "You can’t start a call as you are currently recording a live broadcast. Please end your live broadcast in order to start a call.", + "failed_call_live_broadcast_title": "Can’t start a call", + "hangup": "Hangup", + "hide_sidebar_button": "Hide sidebar", + "input_devices": "Input devices", + "join_button_tooltip_call_full": "Sorry — this call is currently full", + "join_button_tooltip_connecting": "Connecting", + "maximise": "Fill screen", + "misconfigured_server": "Call failed due to misconfigured server", + "misconfigured_server_description": "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.", + "misconfigured_server_fallback": "Alternatively, you can try to use the public server at , but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.", + "misconfigured_server_fallback_accept": "Try using %(server)s", + "more_button": "More", + "msisdn_lookup_failed": "Unable to look up phone number", + "msisdn_lookup_failed_description": "There was an error looking up the phone number", + "msisdn_transfer_failed": "Unable to transfer call", + "n_people_joined": { + "one": "%(count)s person joined", + "other": "%(count)s people joined" + }, + "no_audio_input_description": "We didn't find a microphone on your device. Please check your settings and try again.", + "no_audio_input_title": "No microphone found", + "no_media_perms_description": "You may need to manually permit %(brand)s to access your microphone/webcam", + "no_media_perms_title": "No media permissions", + "no_permission_conference": "Permission Required", + "no_permission_conference_description": "You do not have permission to start a conference call in this room", + "on_hold": "%(name)s on hold", + "output_devices": "Output devices", + "screenshare_monitor": "Share entire screen", + "screenshare_title": "Share content", + "screenshare_window": "Application window", + "show_sidebar_button": "Show sidebar", + "silence": "Silence call", + "silenced": "Notifications silenced", + "start_screenshare": "Start sharing your screen", + "stop_screenshare": "Stop sharing your screen", + "too_many_calls": "Too Many Calls", + "too_many_calls_description": "You've reached the maximum number of simultaneous calls.", + "transfer_consult_first_label": "Consult first", + "transfer_failed": "Transfer Failed", + "transfer_failed_description": "Failed to transfer call", + "unable_to_access_audio_input_description": "We were unable to access your microphone. Please check your browser settings and try again.", + "unable_to_access_audio_input_title": "Unable to access your microphone", + "unable_to_access_media": "Unable to access webcam / microphone", + "unable_to_access_microphone": "Unable to access microphone", + "unknown_caller": "Unknown caller", + "unknown_person": "unknown person", + "unsilence": "Sound on", + "unsupported": "Calls are unsupported", + "unsupported_browser": "You cannot place calls in this browser.", + "user_busy": "User Busy", + "user_busy_description": "The user you called is busy.", + "user_is_presenting": "%(sharerName)s is presenting", + "video_call": "Video call", + "video_call_started": "Video call started", + "video_devices": "Video devices", + "voice_call": "Voice call", + "you_are_presenting": "You are presenting" }, - "a11y_jump_first_unread_room": "Jump to first unread room.", - "a11y": { - "jump_first_invite": "Jump to first invite.", - "n_unread_messages": { - "one": "1 unread message.", - "other": "%(count)s unread messages." + "widget": { + "added_by": "Widget added by", + "capabilities_dialog": { + "content_starting_text": "This widget would like to:", + "decline_all_permission": "Decline All", + "remember_Selection": "Remember my selection for this widget", + "title": "Approve widget permissions" }, - "n_unread_messages_mentions": { - "one": "1 unread mention.", - "other": "%(count)s unread messages including mentions." + "capability": { + "always_on_screen_generic": "Remain on your screen while running", + "always_on_screen_viewing_another_room": "Remain on your screen when viewing another room, when running", + "any_room": "The above, but in any room you are joined or invited to as well", + "byline_empty_state_key": "with an empty state key", + "byline_state_key": "with state key %(stateKey)s", + "capability": "The %(capability)s capability", + "change_avatar_active_room": "Change the avatar of your active room", + "change_avatar_this_room": "Change the avatar of this room", + "change_name_active_room": "Change the name of your active room", + "change_name_this_room": "Change the name of this room", + "change_topic_active_room": "Change the topic of your active room", + "change_topic_this_room": "Change the topic of this room", + "receive_membership_active_room": "See when people join, leave, or are invited to your active room", + "receive_membership_this_room": "See when people join, leave, or are invited to this room", + "remove_ban_invite_leave_active_room": "Remove, ban, or invite people to your active room, and make you leave", + "remove_ban_invite_leave_this_room": "Remove, ban, or invite people to this room, and make you leave", + "see_avatar_change_active_room": "See when the avatar changes in your active room", + "see_avatar_change_this_room": "See when the avatar changes in this room", + "see_event_type_sent_active_room": "See %(eventType)s events posted to your active room", + "see_event_type_sent_this_room": "See %(eventType)s events posted to this room", + "see_images_sent_active_room": "See images posted to your active room", + "see_images_sent_this_room": "See images posted to this room", + "see_messages_sent_active_room": "See messages posted to your active room", + "see_messages_sent_this_room": "See messages posted to this room", + "see_msgtype_sent_active_room": "See %(msgtype)s messages posted to your active room", + "see_msgtype_sent_this_room": "See %(msgtype)s messages posted to this room", + "see_name_change_active_room": "See when the name changes in your active room", + "see_name_change_this_room": "See when the name changes in this room", + "see_sent_emotes_active_room": "See emotes posted to your active room", + "see_sent_emotes_this_room": "See emotes posted to this room", + "see_sent_files_active_room": "See general files posted to your active room", + "see_sent_files_this_room": "See general files posted to this room", + "see_sticker_posted_active_room": "See when anyone posts a sticker to your active room", + "see_sticker_posted_this_room": "See when a sticker is posted in this room", + "see_text_messages_sent_active_room": "See text messages posted to your active room", + "see_text_messages_sent_this_room": "See text messages posted to this room", + "see_topic_change_active_room": "See when the topic changes in your active room", + "see_topic_change_this_room": "See when the topic changes in this room", + "see_videos_sent_active_room": "See videos posted to your active room", + "see_videos_sent_this_room": "See videos posted to this room", + "send_emotes_active_room": "Send emotes as you in your active room", + "send_emotes_this_room": "Send emotes as you in this room", + "send_event_type_active_room": "Send %(eventType)s events as you in your active room", + "send_event_type_this_room": "Send %(eventType)s events as you in this room", + "send_files_active_room": "Send general files as you in your active room", + "send_files_this_room": "Send general files as you in this room", + "send_images_active_room": "Send images as you in your active room", + "send_images_this_room": "Send images as you in this room", + "send_messages_active_room": "Send messages as you in your active room", + "send_messages_this_room": "Send messages as you in this room", + "send_msgtype_active_room": "Send %(msgtype)s messages as you in your active room", + "send_msgtype_this_room": "Send %(msgtype)s messages as you in this room", + "send_stickers_active_room": "Send stickers into your active room", + "send_stickers_active_room_as_you": "Send stickers to your active room as you", + "send_stickers_this_room": "Send stickers into this room", + "send_stickers_this_room_as_you": "Send stickers to this room as you", + "send_text_messages_active_room": "Send text messages as you in your active room", + "send_text_messages_this_room": "Send text messages as you in this room", + "send_videos_active_room": "Send videos as you in your active room", + "send_videos_this_room": "Send videos as you in this room", + "specific_room": "The above, but in as well", + "switch_room": "Change which room you're viewing", + "switch_room_message_user": "Change which room, message, or user you're viewing" }, - "room_name": "Room %(name)s", - "unread_messages": "Unread messages.", - "user_menu": "User menu" + "close_to_view_right_panel": "Close this widget to view it in this panel", + "context_menu": { + "delete": "Delete widget", + "delete_warning": "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?", + "move_left": "Move left", + "move_right": "Move right", + "remove": "Remove for everyone", + "revoke": "Revoke permissions", + "screenshot": "Take a picture", + "start_audio_stream": "Start audio stream" + }, + "cookie_warning": "This widget may use cookies.", + "error_hangup_description": "You were disconnected from the call. (Error: %(message)s)", + "error_hangup_title": "Connection lost", + "error_loading": "Error loading Widget", + "error_mixed_content": "Error - Mixed content", + "error_need_invite_permission": "You need to be able to invite users to do that.", + "error_need_kick_permission": "You need to be able to kick users to do that.", + "error_need_to_be_logged_in": "You need to be logged in.", + "error_unable_start_audio_stream_description": "Unable to start audio streaming.", + "error_unable_start_audio_stream_title": "Failed to start livestream", + "modal_data_warning": "Data on this screen is shared with %(widgetDomain)s", + "modal_title_default": "Modal Widget", + "no_name": "Unknown App", + "open_id_permissions_dialog": { + "remember_selection": "Remember this", + "starting_text": "The widget will verify your user ID, but won't be able to perform actions for you:", + "title": "Allow this widget to verify your identity" + }, + "popout": "Popout widget", + "set_room_layout": "Set my room layout for everyone", + "shared_data_avatar": "Your profile picture URL", + "shared_data_device_id": "Your device ID", + "shared_data_lang": "Your language", + "shared_data_mxid": "Your user ID", + "shared_data_name": "Your display name", + "shared_data_room_id": "Room ID", + "shared_data_theme": "Your theme", + "shared_data_url": "%(brand)s URL", + "shared_data_warning": "Using this widget may share data with %(widgetDomain)s.", + "shared_data_warning_im": "Using this widget may share data with %(widgetDomain)s & your integration manager.", + "shared_data_widget_id": "Widget ID", + "unencrypted_warning": "Widgets do not use message encryption.", + "unmaximise": "Un-maximise", + "unpin_to_view_right_panel": "Unpin this widget to view it in this panel" }, - "This space is unfederated. You cannot invite people from external servers.": "This space is unfederated. You cannot invite people from external servers.", - "This room is unfederated. You cannot invite people from external servers.": "This room is unfederated. You cannot invite people from external servers." -} \ No newline at end of file + "zxcvbn": { + "suggestions": { + "allUppercase": "All-uppercase is almost as easy to guess as all-lowercase", + "anotherWord": "Add another word or two. Uncommon words are better.", + "associatedYears": "Avoid years that are associated with you", + "capitalization": "Capitalization doesn't help very much", + "dates": "Avoid dates and years that are associated with you", + "l33t": "Predictable substitutions like '@' instead of 'a' don't help very much", + "longerKeyboardPattern": "Use a longer keyboard pattern with more turns", + "noNeed": "No need for symbols, digits, or uppercase letters", + "pwned": "If you use this password elsewhere, you should change it.", + "recentYears": "Avoid recent years", + "repeated": "Avoid repeated words and characters", + "reverseWords": "Reversed words aren't much harder to guess", + "sequences": "Avoid sequences", + "useWords": "Use a few words, avoid common phrases" + }, + "warnings": { + "common": "This is a very common password", + "commonNames": "Common names and surnames are easy to guess", + "dates": "Dates are often easy to guess", + "extendedRepeat": "Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"", + "keyPattern": "Short keyboard patterns are easy to guess", + "namesByThemselves": "Names and surnames by themselves are easy to guess", + "pwned": "Your password was exposed by a data breach on the Internet.", + "recentYears": "Recent years are easy to guess", + "sequences": "Sequences like abc or 6543 are easy to guess", + "similarToCommon": "This is similar to a commonly used password", + "simpleRepeat": "Repeats like \"aaa\" are easy to guess", + "straightRow": "Straight rows of keys are easy to guess", + "topHundred": "This is a top-100 common password", + "topTen": "This is a top-10 common password", + "userInputs": "There should not be any personal or page related data.", + "wordByItself": "A word by itself is easy to guess" + } + } +} diff --git a/src/utils/MultiInviter.ts b/src/utils/MultiInviter.ts index 15b2c41b230..de8ea1d7bcd 100644 --- a/src/utils/MultiInviter.ts +++ b/src/utils/MultiInviter.ts @@ -259,16 +259,12 @@ export default class MultiInviter { if (isSpace) { errorText = isFederated === false - ? _t( - "This space is unfederated. You cannot invite people from external servers.", - ) + ? _t("invite|error_unfederated_space") : _t("invite|error_permissions_space"); } else { errorText = isFederated === false - ? _t( - "This room is unfederated. You cannot invite people from external servers.", - ) + ? _t("invite|error_unfederated_room") : _t("invite|error_permissions_room"); } fatal = true; From 41911f6f18c6aacb4a40a713b7b7e438b60331c5 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 25 Oct 2023 10:30:38 +0100 Subject: [PATCH 7/7] Add tests Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .../views/dialogs/InviteDialog-test.tsx | 16 ++++++ test/test-utils/test-utils.ts | 3 +- test/utils/MultiInviter-test.ts | 53 ++++++++++++++++++- 3 files changed, 70 insertions(+), 2 deletions(-) diff --git a/test/components/views/dialogs/InviteDialog-test.tsx b/test/components/views/dialogs/InviteDialog-test.tsx index 4ca4fd82697..a7dd7439216 100644 --- a/test/components/views/dialogs/InviteDialog-test.tsx +++ b/test/components/views/dialogs/InviteDialog-test.tsx @@ -477,4 +477,20 @@ describe("InviteDialog", () => { ]); }); }); + + it("should not suggest users from other server when room has m.federate=false", async () => { + SdkConfig.add({ welcome_user_id: "@bot:example.org" }); + room.currentState.setStateEvents([mkRoomCreateEvent(bobId, roomId, { "m.federate": false })]); + + render( + , + ); + await flushPromises(); + expect(screen.queryByText("@localpart:server.tld")).not.toBeInTheDocument(); + }); }); diff --git a/test/test-utils/test-utils.ts b/test/test-utils/test-utils.ts index b54c0589f69..d92ebe89bba 100644 --- a/test/test-utils/test-utils.ts +++ b/test/test-utils/test-utils.ts @@ -291,13 +291,14 @@ type MakeEventProps = MakeEventPassThruProps & { unsigned?: IUnsigned; }; -export const mkRoomCreateEvent = (userId: string, roomId: string): MatrixEvent => { +export const mkRoomCreateEvent = (userId: string, roomId: string, content?: IContent): MatrixEvent => { return mkEvent({ event: true, type: EventType.RoomCreate, content: { creator: userId, room_version: KNOWN_SAFE_ROOM_VERSION, + ...content, }, skey: "", user: userId, diff --git a/test/utils/MultiInviter-test.ts b/test/utils/MultiInviter-test.ts index d92710bd2a0..55c40b34e9c 100644 --- a/test/utils/MultiInviter-test.ts +++ b/test/utils/MultiInviter-test.ts @@ -15,7 +15,7 @@ limitations under the License. */ import { mocked } from "jest-mock"; -import { MatrixClient, MatrixError, Room, RoomMember } from "matrix-js-sdk/src/matrix"; +import { EventType, MatrixClient, MatrixError, MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix"; import { MatrixClientPeg } from "../../src/MatrixClientPeg"; import Modal, { ComponentType, ComponentProps } from "../../src/Modal"; @@ -187,5 +187,56 @@ describe("MultiInviter", () => { }); expect(client.unban).toHaveBeenCalledWith(ROOMID, MXID1); }); + + it("should show sensible error when attempting to invite over federation with m.federate=false", async () => { + mocked(client.invite).mockRejectedValueOnce( + new MatrixError({ + errcode: "M_FORBIDDEN", + }), + ); + const room = new Room(ROOMID, client, client.getSafeUserId()); + room.currentState.setStateEvents([ + new MatrixEvent({ + type: EventType.RoomCreate, + state_key: "", + content: { + "m.federate": false, + }, + room_id: ROOMID, + }), + ]); + mocked(client.getRoom).mockReturnValue(room); + + await inviter.invite(["@user:other_server"]); + expect(inviter.getErrorText("@user:other_server")).toMatchInlineSnapshot( + `"This room is unfederated. You cannot invite people from external servers."`, + ); + }); + + it("should show sensible error when attempting to invite over federation with m.federate=false to space", async () => { + mocked(client.invite).mockRejectedValueOnce( + new MatrixError({ + errcode: "M_FORBIDDEN", + }), + ); + const room = new Room(ROOMID, client, client.getSafeUserId()); + room.currentState.setStateEvents([ + new MatrixEvent({ + type: EventType.RoomCreate, + state_key: "", + content: { + "m.federate": false, + "type": "m.space", + }, + room_id: ROOMID, + }), + ]); + mocked(client.getRoom).mockReturnValue(room); + + await inviter.invite(["@user:other_server"]); + expect(inviter.getErrorText("@user:other_server")).toMatchInlineSnapshot( + `"This space is unfederated. You cannot invite people from external servers."`, + ); + }); }); });