From 8370c823b6d1e5ec04b70cf218a071532c9056ca Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 17 Oct 2017 19:19:01 +0100 Subject: [PATCH 1/8] Script to generate the translations base file Also replaces the translations base file with the output of the script. --- package.json | 3 + scripts/gen-i18n.js | 117 +++ src/i18n/strings/en_EN.json | 1644 +++++++++++++++++------------------ 3 files changed, 930 insertions(+), 834 deletions(-) create mode 100644 scripts/gen-i18n.js diff --git a/package.json b/package.json index 8693e33471..0ae6fd999b 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,9 @@ "eslint-plugin-babel": "^4.0.1", "eslint-plugin-flowtype": "^2.30.0", "eslint-plugin-react": "^7.4.0", + "estree-walker": "^0.5.0", "expect": "^1.16.0", + "flow-parser": "^0.57.3", "json-loader": "^0.5.3", "karma": "^1.7.0", "karma-chrome-launcher": "^0.2.3", @@ -121,6 +123,7 @@ "rimraf": "^2.4.3", "sinon": "^1.17.3", "source-map-loader": "^0.1.5", + "walk": "^2.3.9", "webpack": "^1.12.14" } } diff --git a/scripts/gen-i18n.js b/scripts/gen-i18n.js new file mode 100644 index 0000000000..e1596af954 --- /dev/null +++ b/scripts/gen-i18n.js @@ -0,0 +1,117 @@ +/** + * Regenerates the translations base file by walking the source tree and + * parsing each file with flow-parser. Emits a JSON file with the + * translatable strings mapped to themselves in the order they appeared + * in the files and grouped by the file they appeared in. + * + * Usage: node scripts/gen-i18n.js + */ +const fs = require('fs'); +const path = require('path'); + +const walk = require('walk'); + +const flowParser = require('flow-parser'); +const estreeWalker = require('estree-walker'); + +const TRANSLATIONS_FUNCS = ['_t', '_td', '_tJsx']; + +// A selection of plural variants to put in the base file: other langauges +// with more types of plural will have more, but they will just be in the file +// for that language. +const COUNTSTRINGS = ['one', 'other']; + +const FLOW_PARSER_OPTS = { + esproposal_class_instance_fields: true, + esproposal_class_static_fields: true, + esproposal_decorators: true, + esproposal_export_star_as: true, + types: true, +}; + +function getObjectValue(obj, key) { + for (const prop of obj.properties) { + if (prop.key.type == 'Identifier' && prop.key.name == key) { + return prop.value; + } + } + return null; +} + +function getTKey(arg) { + if (arg.type == 'Literal') { + return arg.value; + } else if (arg.type == 'BinaryExpression' && arg.operator == '+') { + return getTKey(arg.left) + getTKey(arg.right); + } else if (arg.type == 'TemplateLiteral') { + return arg.quasis.map((q) => { + return q.value.raw; + }).join(''); + } + return null; +} + +function getTranslations(file) { + const tree = flowParser.parse(fs.readFileSync(file, { encoding: 'utf8' }), FLOW_PARSER_OPTS) + + const trs = new Set(); + + estreeWalker.walk(tree, { + enter: function(node, parent) { + //console.log(node); + if ( + node.type == 'CallExpression' && + TRANSLATIONS_FUNCS.includes(node.callee.name) + ) { + const tKey = getTKey(node.arguments[0]); + if (tKey === null) return; + + let isPlural = false; + if (node.arguments.length > 1 && node.arguments[1].type == 'ObjectExpression') { + const countVal = getObjectValue(node.arguments[1], 'count'); + if (countVal) { + isPlural = true; + } + } + + if (isPlural) { + for (const s of COUNTSTRINGS) { + trs.add(tKey + "|" + s); + } + } else { + trs.add(tKey); + } + } + } + }); + + return trs; +} + +const translatables = new Set(); + +walk.walkSync("src", { + listeners: { + file: function(root, fileStats, next) { + if (!fileStats.name.endsWith('.js')) return; + + const fullPath = path.join(root, fileStats.name); + const trs = getTranslations(fullPath); + console.log(`${fullPath} (${trs.size} strings)`); + for (const tr of trs.values()) { + translatables.add(tr); + } + }, + } +}); + +const trObj = {}; +for (const tr of translatables) { + trObj[tr] = tr; +} + +fs.writeFileSync( + "src/i18n/strings/en_EN.json", + JSON.stringify(trObj, translatables.values(), 4) + "\n" +); + diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index a28e532073..ac81b0e84c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,571 +1,24 @@ { - "Add a widget": "Add a widget", - "a room": "a room", - "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", - "Accept": "Accept", - "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.", - "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", - "Account": "Account", - "Access Token:": "Access Token:", - "Active call (%(roomName)s)": "Active call (%(roomName)s)", - "Add": "Add", - "Add a topic": "Add a topic", - "Add email address": "Add email address", - "Add phone number": "Add phone number", - "Admin": "Admin", - "Admin Tools": "Admin tools", - "Allow": "Allow", - "And %(count)s more...": "And %(count)s more...", - "VoIP": "VoIP", - "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.", - "No Microphones detected": "No Microphones detected", - "No Webcams detected": "No Webcams detected", - "No media permissions": "No media permissions", - "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam", - "Default Device": "Default Device", - "Microphone": "Microphone", - "Camera": "Camera", - "Advanced": "Advanced", - "Advanced options": "Advanced options", - "Algorithm": "Algorithm", - "Hide removed messages": "Hide removed messages", - "Always show message timestamps": "Always show message timestamps", - "Authentication": "Authentication", - "Alias (optional)": "Alias (optional)", - "and": "and", - "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", - "%(items)s and one other": "%(items)s and one other", - "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", - "and %(count)s others...|other": "and %(count)s others...", - "and %(count)s others...|one": "and one other...", - "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", - "%(names)s and one other are typing": "%(names)s and one other are typing", - "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", - "An email has been sent to": "An email has been sent to", - "A new password must be entered.": "A new password must be entered.", - "%(senderName)s answered the call.": "%(senderName)s answered the call.", - "An error has occurred.": "An error has occurred.", - "Anyone": "Anyone", - "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", - "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests", - "Are you sure?": "Are you sure?", - "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", - "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?", - "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?", - "Attachment": "Attachment", - "Autoplay GIFs and videos": "Autoplay GIFs and videos", - "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.", - "Ban": "Ban", - "Banned users": "Banned users", - "Bans user with given id": "Bans user with given id", - "Blacklisted": "Blacklisted", - "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room", - "This setting cannot be changed later!": "This setting cannot be changed later!", - "Bug Report": "Bug Report", - "Bulk Options": "Bulk Options", - "Call Timeout": "Call Timeout", - "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.": "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.", - "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", - "Can't load user settings": "Can't load user settings", - "Cannot add any more widgets": "Cannot add any more widgets", - "Change Password": "Change Password", - "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.", - "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.", - "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", - "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.", - "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.", - "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", - "Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room", - "Changes your display nickname": "Changes your display nickname", - "Changes colour scheme of current room": "Changes colour scheme of current room", - "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", - "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key", - "Clear Cache and Reload": "Clear Cache and Reload", - "Clear Cache": "Clear Cache", - "Click here to join the discussion!": "Click here to join the discussion!", - "Click here to fix": "Click here to fix", - "Click to mute audio": "Click to mute audio", - "Click to mute video": "Click to mute video", - "click to reveal": "click to reveal", - "Click to unmute video": "Click to unmute video", - "Click to unmute audio": "Click to unmute audio", - "Close": "Close", - "Command error": "Command error", - "Commands": "Commands", - "Conference call failed.": "Conference call failed.", - "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.", - "Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms", - "Conference calls are not supported in this client": "Conference calls are not supported in this client", - "Confirm password": "Confirm password", - "Confirm your new password": "Confirm your new password", - "Continue": "Continue", - "Could not connect to the integration server": "Could not connect to the integration server", - "%(count)s new messages|one": "%(count)s new message", - "%(count)s new messages|other": "%(count)s new messages", - "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", - "Create an account": "Create an account", - "Create Room": "Create Room", - "Cryptography": "Cryptography", - "Current password": "Current password", - "Curve25519 identity key": "Curve25519 identity key", - "Custom": "Custom", - "Custom level": "Custom level", - "/ddg is not a command": "/ddg is not a command", - "Deactivate Account": "Deactivate Account", - "Deactivate my account": "Deactivate my account", - "Decline": "Decline", - "Decrypt %(text)s": "Decrypt %(text)s", - "Decryption error": "Decryption error", - "Delete": "Delete", - "Delete widget": "Delete widget", - "demote": "demote", - "Deops user with given id": "Deops user with given id", - "Default": "Default", - "Define the power level of a user": "Define the power level of a user", - "Device already verified!": "Device already verified!", - "Device ID": "Device ID", - "Device ID:": "Device ID:", - "device id: ": "device id: ", - "Device key:": "Device key:", - "Devices": "Devices", - "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room", - "Direct chats": "Direct chats", - "Disable Notifications": "Disable Notifications", - "disabled": "disabled", - "Disable inline URL previews by default": "Disable inline URL previews by default", - "Disinvite": "Disinvite", - "Display name": "Display name", - "Displays action": "Displays action", - "Do you want to load widget from URL:": "Do you want to load widget from URL:", - "Don't send typing notifications": "Don't send typing notifications", - "Download %(text)s": "Download %(text)s", - "Drop File Here": "Drop File Here", - "Drop here %(toAction)s": "Drop here %(toAction)s", - "Drop here to tag %(section)s": "Drop here to tag %(section)s", - "Ed25519 fingerprint": "Ed25519 fingerprint", - "Edit": "Edit", - "Email": "Email", - "Email address": "Email address", - "Email address (optional)": "Email address (optional)", - "Email, name or matrix ID": "Email, name or matrix ID", - "Emoji": "Emoji", - "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", - "Enable encryption": "Enable encryption", - "Enable Notifications": "Enable Notifications", - "enabled": "enabled", - "Encrypted by a verified device": "Encrypted by a verified device", - "Encrypted by an unverified device": "Encrypted by an unverified device", - "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption", - "Encrypted room": "Encrypted room", - "Encryption is enabled in this room": "Encryption is enabled in this room", - "Encryption is not enabled in this room": "Encryption is not enabled in this room", - "%(senderName)s ended the call.": "%(senderName)s ended the call.", - "End-to-end encryption information": "End-to-end encryption information", - "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable", - "Enter Code": "Enter Code", - "Enter passphrase": "Enter passphrase", - "Error": "Error", - "Error decrypting attachment": "Error decrypting attachment", - "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.", - "Event information": "Event information", - "Existing Call": "Existing Call", - "Export": "Export", - "Export E2E room keys": "Export E2E room keys", - "Failed to ban user": "Failed to ban user", - "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", - "Failed to change power level": "Failed to change power level", - "Failed to delete device": "Failed to delete device", - "Failed to fetch avatar URL": "Failed to fetch avatar URL", - "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", - "Failed to join room": "Failed to join room", - "Failed to kick": "Failed to kick", - "Failed to leave room": "Failed to leave room", - "Failed to load timeline position": "Failed to load timeline position", - "Failed to lookup current room": "Failed to lookup current room", - "Failed to mute user": "Failed to mute user", - "Failed to register as guest:": "Failed to register as guest:", - "Failed to reject invite": "Failed to reject invite", - "Failed to reject invitation": "Failed to reject invitation", - "Failed to save settings": "Failed to save settings", - "Failed to send email": "Failed to send email", - "Failed to send request.": "Failed to send request.", - "Failed to set avatar.": "Failed to set avatar.", - "Failed to set display name": "Failed to set display name", - "Failed to set up conference call": "Failed to set up conference call", - "Failed to toggle moderator status": "Failed to toggle moderator status", - "Failed to unban": "Failed to unban", - "Failed to upload file": "Failed to upload file", - "Failed to upload profile picture!": "Failed to upload profile picture!", - "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email", - "Failure to create room": "Failure to create room", - "Favourite": "Favourite", - "favourite": "favourite", - "Favourites": "Favourites", - "Fill screen": "Fill screen", - "Filter room members": "Filter room members", - "Forget room": "Forget room", - "Forgot your password?": "Forgot your password?", - "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", - "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.", - "Found a bug?": "Found a bug?", - "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s", - "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.", - "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", - "had": "had", - "Hangup": "Hangup", - "Hide Apps": "Hide Apps", - "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)", - "Hide avatar and display name changes": "Hide avatar and display name changes", - "Hide read receipts": "Hide read receipts", - "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", - "Historical": "Historical", - "Home": "Home", - "Homeserver is": "Homeserver is", - "Identity Server is": "Identity Server is", - "I have verified my email address": "I have verified my email address", - "Import": "Import", - "Import E2E room keys": "Import E2E room keys", - "Incoming call from %(name)s": "Incoming call from %(name)s", - "Incoming video call from %(name)s": "Incoming video call from %(name)s", - "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", - "Incorrect username and/or password.": "Incorrect username and/or password.", - "Incorrect verification code": "Incorrect verification code", - "Integrations Error": "Integrations Error", - "Interface Language": "Interface Language", - "Invalid alias format": "Invalid alias format", - "Invalid address format": "Invalid address format", - "Invalid Email Address": "Invalid Email Address", - "Invalid file%(extra)s": "Invalid file%(extra)s", - "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.", - "Invite new room members": "Invite new room members", - "Invited": "Invited", - "Invites": "Invites", - "Invites user with given id to current room": "Invites user with given id to current room", - "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", - "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", - "%(displayName)s is typing": "%(displayName)s is typing", - "Sign in with": "Sign in with", - "Join as voice or video.": "Join as voice or video.", - "Join Room": "Join Room", - "joined and left": "joined and left", - "joined": "joined", - "%(targetName)s joined the room.": "%(targetName)s joined the room.", - "Joins room with given alias": "Joins room with given alias", - "Jump to first unread message.": "Jump to first unread message.", - "Jump to read receipt": "Jump to read receipt", - "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", - "Kick": "Kick", - "Kicks user with given id": "Kicks user with given id", - "Labs": "Labs", - "Ignored Users": "Ignored Users", - "Ignore": "Ignore", - "Unignore": "Unignore", - "User Options": "User Options", - "You are now ignoring %(userId)s": "You are now ignoring %(userId)s", - "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s", - "Unignored user": "Unignored user", - "Ignored user": "Ignored user", - "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward", - "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you", - "Last seen": "Last seen", - "Leave room": "Leave room", - "left and rejoined": "left and rejoined", - "left": "left", - "%(targetName)s left the room.": "%(targetName)s left the room.", - "Level:": "Level:", - "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?", - "Local addresses for this room:": "Local addresses for this room:", - "Logged in as:": "Logged in as:", - "Login as guest": "Login as guest", - "Logout": "Logout", - "Low priority": "Low priority", - "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.", - "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.", - "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.", - "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.", - "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).", - "Manage Integrations": "Manage Integrations", - "Markdown is disabled": "Markdown is disabled", - "Markdown is enabled": "Markdown is enabled", - "matrix-react-sdk version:": "matrix-react-sdk version:", - "Matrix Apps": "Matrix Apps", - "Members only": "Members only", - "Disable big emoji in chat": "Disable big emoji in chat", - "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing", - "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", - "Missing room_id in request": "Missing room_id in request", - "Missing user_id in request": "Missing user_id in request", - "Mobile phone number": "Mobile phone number", - "Mobile phone number (optional)": "Mobile phone number (optional)", - "Moderator": "Moderator", - "Must be viewing a room": "Must be viewing a room", - "Mute": "Mute", - "Name": "Name", - "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device", - "Never send encrypted messages to unverified devices in this room": "Never send encrypted messages to unverified devices in this room", - "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", - "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", - "New password": "New password", - "New passwords don't match": "New passwords don't match", - "New passwords must match each other.": "New passwords must match each other.", - "none": "none", - "not set": "not set", - "not specified": "not specified", - "Notifications": "Notifications", - "(not supported by this browser)": "(not supported by this browser)", - "": "", - "AM": "AM", - "PM": "PM", - "NOT verified": "NOT verified", - "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted", - "No devices with registered encryption keys": "No devices with registered encryption keys", - "No display name": "No display name", - "No more results": "No more results", - "No results": "No results", - "No users have specific privileges in this room": "No users have specific privileges in this room", - "OK": "OK", - "olm version:": "olm version:", - "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)", - "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below", - "Only people who have been invited": "Only people who have been invited", - "Operation failed": "Operation failed", - "Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.", - "Password": "Password", - "Password:": "Password:", - "Passwords can't be empty": "Passwords can't be empty", - "People": "People", - "Permissions": "Permissions", - "Phone": "Phone", - "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", - "Power level must be positive integer.": "Power level must be positive integer.", - "Press to start a chat with someone": "Press to start a chat with someone", - "Privacy warning": "Privacy warning", - "Private Chat": "Private Chat", - "Privileged Users": "Privileged Users", - "Profile": "Profile", - "Public Chat": "Public Chat", - "Reason": "Reason", - "Reason: %(reasonText)s": "Reason: %(reasonText)s", - "Revoke Moderator": "Revoke Moderator", - "Revoke widget access": "Revoke widget access", - "Refer a friend to Riot:": "Refer a friend to Riot:", - "Register": "Register", - "rejected": "rejected", - "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.", - "Reject invitation": "Reject invitation", - "Rejoin": "Rejoin", - "Remote addresses for this room:": "Remote addresses for this room:", - "Remove Contact Information?": "Remove Contact Information?", - "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).", - "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.", - "Remove": "Remove", - "Remove %(threePid)s?": "Remove %(threePid)s?", - "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.", - "Report it": "Report it", - "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", - "restore": "restore", - "Results from DuckDuckGo": "Results from DuckDuckGo", - "Return to app": "Return to app", - "Return to login screen": "Return to login screen", - "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", - "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", - "riot-web version:": "riot-web version:", - "Room %(roomId)s not visible": "Room %(roomId)s not visible", - "Room Colour": "Room Colour", - "Room contains unknown devices": "Room contains unknown devices", - "Room name (optional)": "Room name (optional)", - "%(roomName)s does not exist.": "%(roomName)s does not exist.", - "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.", - "Rooms": "Rooms", - "Save": "Save", - "Scroll to bottom of page": "Scroll to bottom of page", - "Scroll to unread messages": "Scroll to unread messages", - "Search": "Search", - "Search failed": "Search failed", - "Searches DuckDuckGo for results": "Searches DuckDuckGo for results", - "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s", - "Send a message (unencrypted)": "Send a message (unencrypted)", - "Send an encrypted message": "Send an encrypted message", - "Send anyway": "Send anyway", - "Sender device information": "Sender device information", - "Send Invites": "Send Invites", - "Send Reset Email": "Send Reset Email", - "sent an image": "sent an image", - "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", - "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.", - "sent a video": "sent a video", - "Server error": "Server error", - "Server may be unavailable or overloaded": "Server may be unavailable or overloaded", - "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(", - "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big", - "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", - "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.", - "Session ID": "Session ID", - "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.", - "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", - "Set": "Set", - "Settings": "Settings", - "Sets the room topic": "Sets the room topic", - "Show Apps": "Show Apps", - "Show panel": "Show panel", - "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", - "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", - "Signed Out": "Signed Out", - "Sign in": "Sign in", - "Sign out": "Sign out", - "since the point in time of selecting this option": "since the point in time of selecting this option", - "since they joined": "since they joined", - "since they were invited": "since they were invited", - "Some of your messages have not been sent.": "Some of your messages have not been sent.", - "Someone": "Someone", - "Sorry, this homeserver is using a login which is not recognised ": "Sorry, this homeserver is using a login which is not recognised ", - "Start a chat": "Start a chat", - "Start authentication": "Start authentication", - "Start Chat": "Start Chat", - "Submit": "Submit", - "Success": "Success", - "tag direct chat": "tag direct chat", - "Tagged as: ": "Tagged as: ", - "The default role for new room members is": "The default role for new room members is", - "The main address for this room is": "The main address for this room is", - "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.", - "The phone number entered looks invalid": "The phone number entered looks invalid", - "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.", "This email address is already in use": "This email address is already in use", - "This email address was not found": "This email address was not found", - "%(actionVerb)s this person?": "%(actionVerb)s this person?", - "The email address linked to your account must be entered.": "The email address linked to your account must be entered.", - "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads", - "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", - "The remote side failed to pick up": "The remote side failed to pick up", - "This Home Server does not support login using email address.": "This Home Server does not support login using email address.", - "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:", - "This room has no local addresses": "This room has no local addresses", - "This room is not recognised.": "This room is not recognised.", - "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways", - "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged", - "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address", - "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled", "This phone number is already in use": "This phone number is already in use", - "This room": "This room", - "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers", - "This room's internal ID is": "This room's internal ID is", - "times": "times", - "to browse the directory": "to browse the directory", - "to demote": "to demote", - "to favourite": "to favourite", - "To get started, please pick a username!": "To get started, please pick a username!", - "To link to a room it must have an address.": "To link to a room it must have an address.", - "to make a room or": "to make a room or", - "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account", - "to restore": "to restore", - "to start a chat with someone": "to start a chat with someone", - "to tag direct chat": "to tag direct chat", - "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.", - "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", - "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", - "Turn Markdown off": "Turn Markdown off", - "Turn Markdown on": "Turn Markdown on", - "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).", - "Unable to add email address": "Unable to add email address", - "Unable to create widget.": "Unable to create widget.", - "Unable to remove contact information": "Unable to remove contact information", - "Unable to verify email address.": "Unable to verify email address.", - "Unban": "Unban", - "Unbans user with given id": "Unbans user with given id", - "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", - "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", + "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email", + "Call Timeout": "Call Timeout", + "The remote side failed to pick up": "The remote side failed to pick up", "Unable to capture screen": "Unable to capture screen", - "Unable to enable Notifications": "Unable to enable Notifications", - "Unable to load device list": "Unable to load device list", - "Undecryptable": "Undecryptable", - "Unencrypted room": "Unencrypted room", - "unencrypted": "unencrypted", - "Unencrypted message": "Unencrypted message", - "unknown caller": "unknown caller", - "unknown device": "unknown device", - "unknown error code": "unknown error code", - "Unknown room %(roomId)s": "Unknown room %(roomId)s", - "Unknown (user, device) pair:": "Unknown (user, device) pair:", - "Unmute": "Unmute", - "Unnamed Room": "Unnamed Room", - "Unrecognised command:": "Unrecognised command:", - "Unrecognised room alias:": "Unrecognised room alias:", - "Unverified": "Unverified", - "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", - "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", - "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others", - "uploaded a file": "uploaded a file", - "Upload avatar": "Upload avatar", - "Upload Failed": "Upload Failed", - "Upload Files": "Upload Files", - "Upload file": "Upload file", - "Upload new:": "Upload new:", - "Usage": "Usage", - "Use compact timeline layout": "Use compact timeline layout", - "Use with caution": "Use with caution", - "User ID": "User ID", - "User Interface": "User Interface", - "%(user)s is a": "%(user)s is a", - "User name": "User name", - "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", - "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", - "Users": "Users", - "User": "User", - "Verification Pending": "Verification Pending", - "Verification": "Verification", - "verified": "verified", - "Verified": "Verified", - "Verified key": "Verified key", - "Video call": "Video call", - "Voice call": "Voice call", - "VoIP conference finished.": "VoIP conference finished.", - "VoIP conference started.": "VoIP conference started.", - "VoIP is unsupported": "VoIP is unsupported", - "(could not connect media)": "(could not connect media)", - "(no answer)": "(no answer)", - "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)", - "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)", - "Warning!": "Warning!", - "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!", - "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!", - "Who can access this room?": "Who can access this room?", - "Who can read history?": "Who can read history?", - "Who would you like to add to this room?": "Who would you like to add to this room?", - "Who would you like to communicate with?": "Who would you like to communicate with?", - "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", - "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", - "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", + "Existing Call": "Existing Call", "You are already in a call.": "You are already in a call.", - "You are not in this room.": "You are not in this room.", - "You do not have permission to do that in this room.": "You do not have permission to do that in this room.", - "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", - "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", - "You cannot place a call with yourself.": "You cannot place a call with yourself.", + "VoIP is unsupported": "VoIP is unsupported", "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", - "You do not have permission to post to this room": "You do not have permission to post to this room", - "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.", - "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s", - "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.", - "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": "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", - "You have disabled URL previews by default.": "You have disabled URL previews by default.", - "You have enabled URL previews by default.": "You have enabled URL previews by default.", - "You have no visible notifications": "You have no visible notifications", - "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.", - "you must be a": "you must be a", - "You must register to use this functionality": "You must register to use this functionality", - "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", - "You need to be logged in.": "You need to be logged in.", - "You need to enter a user name.": "You need to enter a user name.", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", - "Your password has been reset": "Your password has been reset", - "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", - "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?", - "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?", - "You should not yet trust it to secure data": "You should not yet trust it to secure data", - "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", - "Your home server does not support device management.": "Your home server does not support device management.", + "You cannot place a call with yourself.": "You cannot place a call with yourself.", + "Conference calls are not supported in this client": "Conference calls are not supported in this client", + "Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms", + "Warning!": "Warning!", + "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.", + "Failed to set up conference call": "Failed to set up conference call", + "Conference call failed.": "Conference call failed.", + "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads", + "Upload Failed": "Upload Failed", "Sun": "Sun", "Mon": "Mon", "Tue": "Tue", @@ -585,49 +38,242 @@ "Oct": "Oct", "Nov": "Nov", "Dec": "Dec", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", - "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(monthName)s %(day)s", - "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", - "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", - "Set a display name:": "Set a display name:", - "Upload an avatar:": "Upload an avatar:", - "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", - "Missing password.": "Missing password.", - "Passwords don't match.": "Passwords don't match.", - "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).", - "This doesn't look like a valid email address.": "This doesn't look like a valid email address.", - "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.", - "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.", - "An unknown error occurred.": "An unknown error occurred.", - "I already have an account": "I already have an account", - "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", - "Topic": "Topic", - "Make Moderator": "Make Moderator", - "Make this room private": "Make this room private", - "Share message history with new users": "Share message history with new users", - "Encrypt room": "Encrypt room", - "There are no visible files in this room": "There are no visible files in this room", - "Room": "Room", - "Copied!": "Copied!", - "Failed to copy": "Failed to copy", - "There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?", - "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", - "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", - "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", - "(~%(count)s results)|one": "(~%(count)s result)", - "(~%(count)s results)|other": "(~%(count)s results)", - "Cancel": "Cancel", - "or": "or", + "Invite new group members": "Invite new group members", + "Who would you like to add to this group?": "Who would you like to add to this group?", + "Name or matrix ID": "Name or matrix ID", + "Invite to Group": "Invite to Group", + "Add rooms to the group": "Add rooms to the group", + "Which rooms would you like to add to this group?": "Which rooms would you like to add to this group?", + "Room name or alias": "Room name or alias", + "Add to group": "Add to group", + "Failed to invite the following users to %(groupId)s:": "Failed to invite the following users to %(groupId)s:", + "Invites sent": "Invites sent", + "Your group invitations have been sent.": "Your group invitations have been sent.", + "Failed to invite users group": "Failed to invite users group", + "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", + "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", + "Unable to enable Notifications": "Unable to enable Notifications", + "This email address was not found": "This email address was not found", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", + "Default": "Default", + "User": "User", + "Moderator": "Moderator", + "Admin": "Admin", + "Start a chat": "Start a chat", + "Who would you like to communicate with?": "Who would you like to communicate with?", + "Email, name or matrix ID": "Email, name or matrix ID", + "Start Chat": "Start Chat", + "Invite new room members": "Invite new room members", + "Who would you like to add to this room?": "Who would you like to add to this room?", + "Send Invites": "Send Invites", + "Failed to invite user": "Failed to invite user", + "Operation failed": "Operation failed", + "Failed to invite": "Failed to invite", + "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:", + "You need to be logged in.": "You need to be logged in.", + "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", + "Unable to create widget.": "Unable to create widget.", + "Failed to send request.": "Failed to send request.", + "This room is not recognised.": "This room is not recognised.", + "Power level must be positive integer.": "Power level must be positive integer.", + "You are not in this room.": "You are not in this room.", + "You do not have permission to do that in this room.": "You do not have permission to do that in this room.", + "Missing room_id in request": "Missing room_id in request", + "Must be viewing a room": "Must be viewing a room", + "Room %(roomId)s not visible": "Room %(roomId)s not visible", + "Missing user_id in request": "Missing user_id in request", + "Failed to lookup current room": "Failed to lookup current room", + "Usage": "Usage", + "/ddg is not a command": "/ddg is not a command", + "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.", + "Unrecognised room alias:": "Unrecognised room alias:", + "Ignored user": "Ignored user", + "You are now ignoring %(userId)s": "You are now ignoring %(userId)s", + "Unignored user": "Unignored user", + "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s", + "Unknown (user, device) pair:": "Unknown (user, device) pair:", + "Device already verified!": "Device already verified!", + "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!", + "Verified key": "Verified key", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.", + "Unrecognised command:": "Unrecognised command:", + "Reason": "Reason", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.", + "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.", + "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.", + "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.", + "VoIP conference started.": "VoIP conference started.", + "%(targetName)s joined the room.": "%(targetName)s joined the room.", + "VoIP conference finished.": "VoIP conference finished.", + "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.", + "%(targetName)s left the room.": "%(targetName)s left the room.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", + "Someone": "Someone", + "(not supported by this browser)": "(not supported by this browser)", + "%(senderName)s answered the call.": "%(senderName)s answered the call.", + "(could not connect media)": "(could not connect media)", + "(no answer)": "(no answer)", + "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s ended the call.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s changed the pinned messages for the room.", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s", + "Groups": "Groups", "Message Pinning": "Message Pinning", - "Active call": "Active call", - "Monday": "Monday", - "Tuesday": "Tuesday", - "Wednesday": "Wednesday", - "Thursday": "Thursday", - "Friday": "Friday", - "Saturday": "Saturday", - "Sunday": "Sunday", + "%(displayName)s is typing": "%(displayName)s is typing", + "%(names)s and one other are typing": "%(names)s and one other are typing", + "%(names)s and %(count)s others are typing|one": "%(names)s and %(count)s others are typing|one", + "%(names)s and %(count)s others are typing|other": "%(names)s and %(count)s others are typing|other", + "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", + "Failure to create room": "Failure to create room", + "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", + "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", + "Not a valid Riot keyfile": "Not a valid Riot keyfile", + "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Failed to join room": "Failed to join room", + "Active call (%(roomName)s)": "Active call (%(roomName)s)", + "unknown caller": "unknown caller", + "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", + "Incoming video call from %(name)s": "Incoming video call from %(name)s", + "Incoming call from %(name)s": "Incoming call from %(name)s", + "Decline": "Decline", + "Accept": "Accept", + "Error": "Error", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", + "Incorrect verification code": "Incorrect verification code", + "Enter Code": "Enter Code", + "Submit": "Submit", + "Phone": "Phone", + "Add phone number": "Add phone number", + "Add": "Add", + "Failed to upload profile picture!": "Failed to upload profile picture!", + "Upload new:": "Upload new:", + "No display name": "No display name", + "New passwords don't match": "New passwords don't match", + "Passwords can't be empty": "Passwords can't be empty", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", + "Continue": "Continue", + "Export E2E room keys": "Export E2E room keys", + "Do you want to set an email address?": "Do you want to set an email address?", + "Current password": "Current password", + "Password": "Password", + "New Password": "New Password", + "Confirm password": "Confirm password", + "Change Password": "Change Password", + "Your home server does not support device management.": "Your home server does not support device management.", + "Unable to load device list": "Unable to load device list", + "Device ID": "Device ID", + "Device Name": "Device Name", + "Last seen": "Last seen", + "Failed to set display name": "Failed to set display name", + "Authentication": "Authentication", + "Failed to delete device": "Failed to delete device", + "Delete": "Delete", + "Disable Notifications": "Disable Notifications", + "Enable Notifications": "Enable Notifications", + "Cannot add any more widgets": "Cannot add any more widgets", + "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.", + "Add a widget": "Add a widget", + "Drop File Here": "Drop File Here", + "Drop file here to upload": "Drop file here to upload", + " (unsupported)": " (unsupported)", + "Join as voice or video.": "Join as voice or video.", + "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.", + "sent an image": "sent an image", + "sent a video": "sent a video", + "uploaded a file": "uploaded a file", + "Options": "Options", + "Undecryptable": "Undecryptable", + "Encrypted by a verified device": "Encrypted by a verified device", + "Encrypted by an unverified device": "Encrypted by an unverified device", + "Unencrypted message": "Unencrypted message", + "Please select the destination room for this message": "Please select the destination room for this message", + "Blacklisted": "Blacklisted", + "Verified": "Verified", + "Unverified": "Unverified", + "device id: ": "device id: ", + "Disinvite": "Disinvite", + "Kick": "Kick", + "Failed to kick": "Failed to kick", + "Unban": "Unban", + "Ban": "Ban", + "Failed to ban user": "Failed to ban user", + "Failed to mute user": "Failed to mute user", + "Failed to toggle moderator status": "Failed to toggle moderator status", + "Failed to change power level": "Failed to change power level", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", + "Are you sure?": "Are you sure?", + "No devices with registered encryption keys": "No devices with registered encryption keys", + "Devices": "Devices", + "Unignore": "Unignore", + "Ignore": "Ignore", + "Jump to read receipt": "Jump to read receipt", + "User Options": "User Options", + "Direct chats": "Direct chats", + "Unmute": "Unmute", + "Mute": "Mute", + "Revoke Moderator": "Revoke Moderator", + "Make Moderator": "Make Moderator", + "Admin Tools": "Admin Tools", + "Level:": "Level:", + "and %(count)s others...|one": "and %(count)s others...|one", + "and %(count)s others...|other": "and %(count)s others...|other", + "Invited": "Invited", + "Filter room members": "Filter room members", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", + "Attachment": "Attachment", + "Upload Files": "Upload Files", + "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?", + "Encrypted room": "Encrypted room", + "Unencrypted room": "Unencrypted room", + "Hangup": "Hangup", + "Voice call": "Voice call", + "Video call": "Video call", + "Hide Apps": "Hide Apps", + "Show Apps": "Show Apps", + "Upload file": "Upload file", + "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", + "Send an encrypted message": "Send an encrypted message", + "Send a message (unencrypted)": "Send a message (unencrypted)", + "You do not have permission to post to this room": "You do not have permission to post to this room", + "Turn Markdown on": "Turn Markdown on", + "Turn Markdown off": "Turn Markdown off", + "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", + "Server error": "Server error", + "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.", + "Command error": "Command error", "bold": "bold", "italic": "italic", "strike": "strike", @@ -636,7 +282,235 @@ "quote": "quote", "bullet": "bullet", "numbullet": "numbullet", + "Markdown is disabled": "Markdown is disabled", + "Markdown is enabled": "Markdown is enabled", + "Unpin Message": "Unpin Message", + "Jump to message": "Jump to message", + "No pinned messages.": "No pinned messages.", + "Loading...": "Loading...", + "Pinned Messages": "Pinned Messages", + "for %(amount)ss": "for %(amount)ss", + "for %(amount)sm": "for %(amount)sm", + "for %(amount)sh": "for %(amount)sh", + "for %(amount)sd": "for %(amount)sd", + "Online": "Online", + "Idle": "Idle", + "Offline": "Offline", + "Unknown": "Unknown", + "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s", + "Unnamed room": "Unnamed room", + "World readable": "World readable", + "Guests can join": "Guests can join", + "No rooms to show": "No rooms to show", + "Failed to set avatar.": "Failed to set avatar.", + "Save": "Save", + "(~%(count)s results)|one": "(~%(count)s results)|one", + "(~%(count)s results)|other": "(~%(count)s results)|other", + "Join Room": "Join Room", + "Upload avatar": "Upload avatar", "Remove avatar": "Remove avatar", + "Settings": "Settings", + "Forget room": "Forget room", + "Search": "Search", + "Show panel": "Show panel", + "to favourite": "to favourite", + "to tag direct chat": "to tag direct chat", + "to restore": "to restore", + "to demote": "to demote", + "Drop here to tag %(section)s": "Drop here to tag %(section)s", + "Drop here %(toAction)s": "Drop here %(toAction)s", + "Press to start a chat with someone": "Press to start a chat with someone", + "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", + "Invites": "Invites", + "Favourites": "Favourites", + "People": "People", + "Rooms": "Rooms", + "Low priority": "Low priority", + "Historical": "Historical", + "Unnamed Room": "Unnamed Room", + "a room": "a room", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", + "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:", + "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.", + "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s", + "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", + "This room": "This room", + "Reason: %(reasonText)s": "Reason: %(reasonText)s", + "Rejoin": "Rejoin", + "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.", + "%(roomName)s does not exist.": "%(roomName)s does not exist.", + "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.", + "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", + "Click here to join the discussion!": "Click here to join the discussion!", + "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled", + "To change the room's avatar, you must be a": "To change the room's avatar, you must be a", + "To change the room's name, you must be a": "To change the room's name, you must be a", + "To change the room's main address, you must be a": "To change the room's main address, you must be a", + "To change the room's history visibility, you must be a": "To change the room's history visibility, you must be a", + "To change the permissions in the room, you must be a": "To change the permissions in the room, you must be a", + "To change the topic, you must be a": "To change the topic, you must be a", + "To modify widgets in the room, you must be a": "To modify widgets in the room, you must be a", + "Failed to unban": "Failed to unban", + "Banned by %(displayName)s": "Banned by %(displayName)s", + "Privacy warning": "Privacy warning", + "Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room", + "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged", + "unknown error code": "unknown error code", + "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", + "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable", + "You should not yet trust it to secure data": "You should not yet trust it to secure data", + "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption", + "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", + "Enable encryption": "Enable encryption", + "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)", + "Encryption is enabled in this room": "Encryption is enabled in this room", + "Encryption is not enabled in this room": "Encryption is not enabled in this room", + "Privileged Users": "Privileged Users", + "%(user)s is a": "%(user)s is a", + "No users have specific privileges in this room": "No users have specific privileges in this room", + "Banned users": "Banned users", + "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers", + "Leave room": "Leave room", + "Favourite": "Favourite", + "Tagged as: ": "Tagged as: ", + "To link to a room it must have an address.": "To link to a room it must have an address.", + "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", + "Click here to fix": "Click here to fix", + "Who can access this room?": "Who can access this room?", + "Only people who have been invited": "Only people who have been invited", + "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", + "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests", + "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?", + "Who can read history?": "Who can read history?", + "Anyone": "Anyone", + "Members only": "Members only", + "since the point in time of selecting this option": "since the point in time of selecting this option", + "since they were invited": "since they were invited", + "since they joined": "since they joined", + "Room Colour": "Room Colour", + "Permissions": "Permissions", + "The default role for new room members is": "The default role for new room members is", + "To send messages, you must be a": "To send messages, you must be a", + "To invite users into the room, you must be a": "To invite users into the room, you must be a", + "To configure the room, you must be a": "To configure the room, you must be a", + "To kick users, you must be a": "To kick users, you must be a", + "To ban users, you must be a": "To ban users, you must be a", + "To remove other users' messages, you must be a": "To remove other users' messages, you must be a", + "To send events of type , you must be a": "To send events of type , you must be a", + "Advanced": "Advanced", + "This room's internal ID is": "This room's internal ID is", + "Add a topic": "Add a topic", + "Cancel": "Cancel", + "Scroll to unread messages": "Scroll to unread messages", + "Jump to first unread message.": "Jump to first unread message.", + "Close": "Close", + "Invalid alias format": "Invalid alias format", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", + "Invalid address format": "Invalid address format", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", + "not specified": "not specified", + "not set": "not set", + "Remote addresses for this room:": "Remote addresses for this room:", + "The main address for this room is": "The main address for this room is", + "Local addresses for this room:": "Local addresses for this room:", + "This room has no local addresses": "This room has no local addresses", + "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", + "Invalid group ID": "Invalid group ID", + "'%(groupId)s' is not a valid group ID": "'%(groupId)s' is not a valid group ID", + "Related Groups": "Related Groups", + "Related groups for this room:": "Related groups for this room:", + "This room has no related groups": "This room has no related groups", + "New group ID (e.g. +foo:%(localDomain)s)": "New group ID (e.g. +foo:%(localDomain)s)", + "Disable URL previews by default for participants in this room": "Disable URL previews by default for participants in this room", + "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.", + "disabled": "disabled", + "enabled": "enabled", + "You have disabled URL previews by default.": "You have disabled URL previews by default.", + "You have enabled URL previews by default.": "You have enabled URL previews by default.", + "URL Previews": "URL Previews", + "Enable URL previews for this room (affects only you)": "Enable URL previews for this room (affects only you)", + "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)", + "Error decrypting audio": "Error decrypting audio", + "Error decrypting attachment": "Error decrypting attachment", + "Decrypt %(text)s": "Decrypt %(text)s", + "Download %(text)s": "Download %(text)s", + "Invalid file%(extra)s": "Invalid file%(extra)s", + "Error decrypting image": "Error decrypting image", + "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.", + "This image cannot be displayed.": "This image cannot be displayed.", + "Error decrypting video": "Error decrypting video", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", + "Copied!": "Copied!", + "Failed to copy": "Failed to copy", + "Add an Integration": "Add an Integration", + "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?": "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?", + "Removed or unknown message type": "Removed or unknown message type", + "Message removed by %(userId)s": "Message removed by %(userId)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", + "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot", + "Sign in with CAS": "Sign in with CAS", + "Custom Server Options": "Custom Server Options", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.", + "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.", + "Dismiss": "Dismiss", + "To continue, please enter your password.": "To continue, please enter your password.", + "Password:": "Password:", + "An email has been sent to": "An email has been sent to", + "Please check your email to continue registration.": "Please check your email to continue registration.", + "Token incorrect": "Token incorrect", + "A text message has been sent to": "A text message has been sent to", + "Please enter the code it contains:": "Please enter the code it contains:", + "Start authentication": "Start authentication", + "powered by Matrix": "powered by Matrix", + "User name": "User name", + "Mobile phone number": "Mobile phone number", + "Forgot your password?": "Forgot your password?", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Sign in with": "Sign in with", + "Email address": "Email address", + "Sign in": "Sign in", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?", + "Email address (optional)": "Email address (optional)", + "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s", + "Mobile phone number (optional)": "Mobile phone number (optional)", + "Register": "Register", + "Default server": "Default server", + "Custom server": "Custom server", + "Home server URL": "Home server URL", + "Identity server URL": "Identity server URL", + "What does this mean?": "What does this mean?", + "Remove from group": "Remove from group", + "Failed to remove user from group": "Failed to remove user from group", + "Filter group members": "Filter group members", + "Filter group rooms": "Filter group rooms", + "Failed to remove room from group": "Failed to remove room from group", + "Failed to remove '%(roomName)s' from %(groupId)s": "Failed to remove '%(roomName)s' from %(groupId)s", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Are you sure you want to remove '%(roomName)s' from %(groupId)s?", + "Removing a room from the group will also remove it from the group page.": "Removing a room from the group will also remove it from the group page.", + "Remove": "Remove", + "Unknown Address": "Unknown Address", + "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted", + "Do you want to load widget from URL:": "Do you want to load widget from URL:", + "Allow": "Allow", + "Delete widget": "Delete widget", + "Revoke widget access": "Revoke widget access", + "Edit": "Edit", + "Create new room": "Create new room", + "Unblacklist": "Unblacklist", + "Blacklist": "Blacklist", + "Unverify": "Unverify", + "Verify...": "Verify...", + "No results": "No results", + "Home": "Home", + "Integrations Error": "Integrations Error", + "Could not connect to the integration server": "Could not connect to the integration server", + "Manage Integrations": "Manage Integrations", "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)sjoined %(repeats)s times", "%(oneUser)sjoined %(repeats)s times": "%(oneUser)sjoined %(repeats)s times", "%(severalUsers)sjoined": "%(severalUsers)sjoined", @@ -685,247 +559,349 @@ "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)schanged their avatar %(repeats)s times", "%(severalUsers)schanged their avatar": "%(severalUsers)schanged their avatar", "%(oneUser)schanged their avatar": "%(oneUser)schanged their avatar", - "Please select the destination room for this message": "Please select the destination room for this message", - "Create new room": "Create new room", + "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", + "%(items)s and one other": "%(items)s and one other", + "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", + "Custom level": "Custom level", "Room directory": "Room directory", "Start chat": "Start chat", - "New Password": "New Password", - "Start automatically after system login": "Start automatically after system login", - "Desktop specific": "Desktop specific", - "Analytics": "Analytics", - "Opt out of analytics": "Opt out of analytics", - "Options": "Options", - "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.", - "Passphrases must match": "Passphrases must match", - "Passphrase must not be empty": "Passphrase must not be empty", - "Export room keys": "Export room keys", - "Confirm passphrase": "Confirm passphrase", - "Import room keys": "Import room keys", - "File to import": "File to import", - "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", - "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", - "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.": "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.", - "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", - "You must join the room to see its files": "You must join the room to see its files", - "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites", - "Start new chat": "Start new chat", - "Failed to invite": "Failed to invite", - "Failed to invite user": "Failed to invite user", - "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:", - "Confirm Removal": "Confirm Removal", - "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.", - "Unknown error": "Unknown error", - "Incorrect password": "Incorrect password", - "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.", - "This action is irreversible.": "This action is irreversible.", - "To continue, please enter your password.": "To continue, please enter your password.", - "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:", - "Device name": "Device name", - "Device Name": "Device Name", - "Device key": "Device key", - "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.", - "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.", - "Verify device": "Verify device", - "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple", - "I verify that the keys match": "I verify that the keys match", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.", - "Unable to restore session": "Unable to restore session", - "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.", - "Continue anyway": "Continue anyway", - "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.", - "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.", - "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", - "Unknown devices": "Unknown devices", - "Unknown Address": "Unknown Address", - "Unblacklist": "Unblacklist", - "Blacklist": "Blacklist", - "Unverify": "Unverify", - "Verify...": "Verify...", + "And %(count)s more...|one": "And %(count)s more...|one", + "And %(count)s more...|other": "And %(count)s more...|other", "ex. @bob:example.com": "ex. @bob:example.com", "Add User": "Add User", - "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot", - "Sign in with CAS": "Sign in with CAS", - "Custom Server Options": "Custom Server Options", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.", - "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.", - "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.", - "Dismiss": "Dismiss", - "Please check your email to continue registration.": "Please check your email to continue registration.", - "Token incorrect": "Token incorrect", - "A text message has been sent to": "A text message has been sent to", - "Please enter the code it contains:": "Please enter the code it contains:", - "powered by Matrix": "powered by Matrix", - "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?", - "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s", - "Default server": "Default server", - "Custom server": "Custom server", - "Home server URL": "Home server URL", - "Identity server URL": "Identity server URL", - "What does this mean?": "What does this mean?", - "Error decrypting audio": "Error decrypting audio", - "Error decrypting image": "Error decrypting image", - "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.", - "This image cannot be displayed.": "This image cannot be displayed.", - "Error decrypting video": "Error decrypting video", - "Add an Integration": "Add an Integration", - "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?": "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?", - "Removed or unknown message type": "Removed or unknown message type", - "Disable URL previews by default for participants in this room": "Disable URL previews by default for participants in this room", - "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)", - "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.", - "URL Previews": "URL Previews", - "Enable URL previews for this room (affects only you)": "Enable URL previews for this room (affects only you)", - "Drop file here to upload": "Drop file here to upload", - " (unsupported)": " (unsupported)", - "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.", - "for %(amount)ss": "for %(amount)ss", - "for %(amount)sm": "for %(amount)sm", - "for %(amount)sh": "for %(amount)sh", - "for %(amount)sd": "for %(amount)sd", - "Online": "Online", - "Idle": "Idle", - "Offline": "Offline", - "Updates": "Updates", - "Check for update": "Check for update", - "Start chatting": "Start chatting", - "Start Chatting": "Start Chatting", - "Click on the button below to start chatting!": "Click on the button below to start chatting!", - "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", - "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", - "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", - "Username available": "Username available", - "Username not available": "Username not available", "Something went wrong!": "Something went wrong!", - "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", - "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", - "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", - "Not a valid Riot keyfile": "Not a valid Riot keyfile", - "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", - "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", - "Do you want to set an email address?": "Do you want to set an email address?", - "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", - "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", - "Skip": "Skip", - "Banned by %(displayName)s": "Banned by %(displayName)s", - "Start verification": "Start verification", - "Share without verifying": "Share without verifying", - "Ignore request": "Ignore request", - "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", - "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", - "Encryption key request": "Encryption key request", - "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", - "This Home server does not support groups": "This Home server does not support groups", - "Loading device info...": "Loading device info...", - "Message removed by %(userId)s": "Message removed by %(userId)s", - "Groups": "Groups", - "Create a new group": "Create a new group", - "Create Group": "Create Group", - "Group Name": "Group Name", - "Example": "Example", - "Create": "Create", - "Group ID": "Group ID", - "+example:%(domain)s": "+example:%(domain)s", - "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s", - "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", - "Room creation failed": "Room creation failed", - "You are a member of these groups:": "You are a member of these groups:", - "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", - "Join an existing group": "Join an existing group", - "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.", - "Featured Rooms:": "Featured Rooms:", - "To send messages, you must be a": "To send messages, you must be a", - "To invite users into the room, you must be a": "To invite users into the room, you must be a", - "To configure the room, you must be a": "To configure the room, you must be a", - "To kick users, you must be a": "To kick users, you must be a", - "To ban users, you must be a": "To ban users, you must be a", - "To remove other users' messages, you must be a": "To remove other users' messages, you must be a", - "To send events of type , you must be a": "To send events of type , you must be a", - "To change the room's avatar, you must be a": "To change the room's avatar, you must be a", - "To change the room's name, you must be a": "To change the room's name, you must be a", - "To change the room's main address, you must be a": "To change the room's main address, you must be a", - "To change the room's history visibility, you must be a": "To change the room's history visibility, you must be a", - "To change the permissions in the room, you must be a": "To change the permissions in the room, you must be a", - "To change the topic, you must be a": "To change the topic, you must be a", - "To modify widgets in the room, you must be a": "To modify widgets in the room, you must be a", - "Error whilst fetching joined groups": "Error whilst fetching joined groups", - "Featured Users:": "Featured Users:", - "Edit Group": "Edit Group", - "Automatically replace plain text Emoji": "Automatically replace plain text Emoji", - "Failed to upload image": "Failed to upload image", - "Failed to update group": "Failed to update group", - "Hide avatars in user and room mentions": "Hide avatars in user and room mentions", - "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s", - "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s", - "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s", - "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", - "Description": "Description", - "Filter group members": "Filter group members", - "Filter group rooms": "Filter group rooms", - "Remove from group": "Remove from group", - "Invite new group members": "Invite new group members", - "Who would you like to add to this group?": "Who would you like to add to this group?", - "Name or matrix ID": "Name or matrix ID", - "Invite to Group": "Invite to Group", - "Unable to accept invite": "Unable to accept invite", - "Unable to leave room": "Unable to leave room", - "%(inviter)s has invited you to join this group": "%(inviter)s has invited you to join this group", - "You are a member of this group": "You are a member of this group", - "Leave": "Leave", - "Failed to remove user from group": "Failed to remove user from group", - "Failed to invite the following users to %(groupId)s:": "Failed to invite the following users to %(groupId)s:", - "Failed to invite users group": "Failed to invite users group", - "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s", - "Unable to reject invite": "Unable to reject invite", - "Leave Group": "Leave Group", - "Leave %(groupName)s?": "Leave %(groupName)s?", - "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s", - "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", - "Flair": "Flair", - "Add a Room": "Add a Room", - "Add a User": "Add a User", - "Add users to the group summary": "Add users to the group summary", - "Who would you like to add to this summary?": "Who would you like to add to this summary?", - "Add to summary": "Add to summary", - "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:", - "Add rooms to the group summary": "Add rooms to the group summary", - "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?", - "Room name or alias": "Room name or alias", - "Pinned Messages": "Pinned Messages", - "%(senderName)s changed the pinned messages for the room.": "%(senderName)s changed the pinned messages for the room.", - "You are an administrator of this group": "You are an administrator of this group", - "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:", - "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s", - "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.", - "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s", - "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.", - "Light theme": "Light theme", - "Dark theme": "Dark theme", - "Unknown": "Unknown", - "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:", - "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.", - "Add rooms to the group": "Add rooms to the group", - "Which rooms would you like to add to this group?": "Which rooms would you like to add to this group?", - "Add to group": "Add to group", - "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:", - "Unpublish": "Unpublish", - "This group is published on your profile": "This group is published on your profile", - "Publish": "Publish", - "This group is not published on your profile": "This group is not published on your profile", "Matrix ID": "Matrix ID", "Matrix Room ID": "Matrix Room ID", "email address": "email address", "Try using one of the following valid address types: %(validTypesList)s.": "Try using one of the following valid address types: %(validTypesList)s.", "You have entered an invalid address.": "You have entered an invalid address.", - "Failed to remove room from group": "Failed to remove room from group", - "Failed to remove '%(roomName)s' from %(groupId)s": "Failed to remove '%(roomName)s' from %(groupId)s", - "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Are you sure you want to remove '%(roomName)s' from %(groupId)s?", - "Removing a room from the group will also remove it from the group page.": "Removing a room from the group will also remove it from the group page.", - "Related Groups": "Related Groups", - "Related groups for this room:": "Related groups for this room:", - "This room has no related groups": "This room has no related groups", - "New group ID (e.g. +foo:%(localDomain)s)": "New group ID (e.g. +foo:%(localDomain)s)", - "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", + "Start new chat": "Start new chat", + "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", + "Start chatting": "Start chatting", + "Click on the button below to start chatting!": "Click on the button below to start chatting!", + "Start Chatting": "Start Chatting", + "Confirm Removal": "Confirm Removal", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.", + "%(actionVerb)s this person?": "%(actionVerb)s this person?", + "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s", + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", + "Room creation failed": "Room creation failed", + "Create Group": "Create Group", + "Group Name": "Group Name", + "Example": "Example", + "Group ID": "Group ID", + "+example:%(domain)s": "+example:%(domain)s", + "Create": "Create", + "Create Room": "Create Room", + "Room name (optional)": "Room name (optional)", + "Advanced options": "Advanced options", + "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room", + "This setting cannot be changed later!": "This setting cannot be changed later!", + "Unknown error": "Unknown error", + "Incorrect password": "Incorrect password", + "Deactivate Account": "Deactivate Account", + "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.", + "This action is irreversible.": "This action is irreversible.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:", + "Device name": "Device name", + "Device key": "Device key", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.", + "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.", + "Verify device": "Verify device", + "I verify that the keys match": "I verify that the keys match", + "An error has occurred.": "An error has occurred.", + "OK": "OK", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", + "Start verification": "Start verification", + "Share without verifying": "Share without verifying", + "Ignore request": "Ignore request", + "Loading device info...": "Loading device info...", + "Encryption key request": "Encryption key request", + "Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.", + "Unable to restore session": "Unable to restore session", + "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.", + "Continue anyway": "Continue anyway", + "Invalid Email Address": "Invalid Email Address", + "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address", + "Verification Pending": "Verification Pending", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", + "Unable to add email address": "Unable to add email address", + "Unable to verify email address.": "Unable to verify email address.", + "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", + "Skip": "Skip", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.", + "Username not available": "Username not available", + "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", + "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", + "Username available": "Username available", + "To get started, please pick a username!": "To get started, please pick a username!", + "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", + "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.", + "Room contains unknown devices": "Room contains unknown devices", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", + "Unknown devices": "Unknown devices", + "Send anyway": "Send anyway", + "Private Chat": "Private Chat", + "Public Chat": "Public Chat", + "Custom": "Custom", + "Alias (optional)": "Alias (optional)", + "Name": "Name", + "Topic": "Topic", + "Make this room private": "Make this room private", + "Share message history with new users": "Share message history with new users", + "Encrypt room": "Encrypt room", + "You must register to use this functionality": "You must register to use this functionality", + "You must join the room to see its files": "You must join the room to see its files", + "There are no visible files in this room": "There are no visible files in this room", + "Add rooms to the group summary": "Add rooms to the group summary", + "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?", + "Add to summary": "Add to summary", + "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:", + "Add a Room": "Add a Room", + "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.", + "Add users to the group summary": "Add users to the group summary", + "Who would you like to add to this summary?": "Who would you like to add to this summary?", + "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:", + "Add a User": "Add a User", + "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.", + "Failed to upload image": "Failed to upload image", + "Failed to update group": "Failed to update group", + "Unable to accept invite": "Unable to accept invite", + "Unable to reject invite": "Unable to reject invite", + "Leave Group": "Leave Group", + "Leave %(groupName)s?": "Leave %(groupName)s?", + "Leave": "Leave", + "Unable to leave room": "Unable to leave room", "Add rooms to this group": "Add rooms to this group", - "Invites sent": "Invites sent", - "Your group invitations have been sent.": "Your group invitations have been sent." + "Featured Rooms:": "Featured Rooms:", + "Featured Users:": "Featured Users:", + "%(inviter)s has invited you to join this group": "%(inviter)s has invited you to join this group", + "You are a member of this group": "You are a member of this group", + "You are an administrator of this group": "You are an administrator of this group", + "Unpublish": "Unpublish", + "This group is published on your profile": "This group is published on your profile", + "Publish": "Publish", + "This group is not published on your profile": "This group is not published on your profile", + "Description": "Description", + "Edit Group": "Edit Group", + "This Home server does not support groups": "This Home server does not support groups", + "Reject invitation": "Reject invitation", + "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?", + "Failed to reject invitation": "Failed to reject invitation", + "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", + "Failed to leave room": "Failed to leave room", + "Signed Out": "Signed Out", + "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", + "Logout": "Logout", + "You are a member of these groups:": "You are a member of these groups:", + "Error whilst fetching joined groups": "Error whilst fetching joined groups", + "Create a new group": "Create a new group", + "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", + "Join an existing group": "Join an existing group", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.", + "You have no visible notifications": "You have no visible notifications", + "Scroll to bottom of page": "Scroll to bottom of page", + "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", + "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", + "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", + "%(count)s new messages|one": "%(count)s new messages|one", + "%(count)s new messages|other": "%(count)s new messages|other", + "Active call": "Active call", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?", + "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?", + "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?", + "Some of your messages have not been sent.": "Some of your messages have not been sent.", + "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", + "Failed to upload file": "Failed to upload file", + "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big", + "Search failed": "Search failed", + "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(", + "No more results": "No more results", + "Unknown room %(roomId)s": "Unknown room %(roomId)s", + "Room": "Room", + "Failed to save settings": "Failed to save settings", + "Failed to reject invite": "Failed to reject invite", + "Fill screen": "Fill screen", + "Click to unmute video": "Click to unmute video", + "Click to mute video": "Click to mute video", + "Click to unmute audio": "Click to unmute audio", + "Click to mute audio": "Click to mute audio", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", + "Failed to load timeline position": "Failed to load timeline position", + "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s others|one", + "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others|other", + "Autoplay GIFs and videos": "Autoplay GIFs and videos", + "Hide read receipts": "Hide read receipts", + "Don't send typing notifications": "Don't send typing notifications", + "Always show message timestamps": "Always show message timestamps", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)", + "Hide avatar and display name changes": "Hide avatar and display name changes", + "Use compact timeline layout": "Use compact timeline layout", + "Hide removed messages": "Hide removed messages", + "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", + "Automatically replace plain text Emoji": "Automatically replace plain text Emoji", + "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing", + "Hide avatars in user and room mentions": "Hide avatars in user and room mentions", + "Disable big emoji in chat": "Disable big emoji in chat", + "Opt out of analytics": "Opt out of analytics", + "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", + "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device", + "Light theme": "Light theme", + "Dark theme": "Dark theme", + "Can't load user settings": "Can't load user settings", + "Server may be unavailable or overloaded": "Server may be unavailable or overloaded", + "Sign out": "Sign out", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.", + "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", + "Success": "Success", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", + "Remove Contact Information?": "Remove Contact Information?", + "Remove %(threePid)s?": "Remove %(threePid)s?", + "Unable to remove contact information": "Unable to remove contact information", + "Refer a friend to Riot:": "Refer a friend to Riot:", + "Interface Language": "Interface Language", + "User Interface": "User Interface", + "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", + "Disable inline URL previews by default": "Disable inline URL previews by default", + "": "", + "Import E2E room keys": "Import E2E room keys", + "Cryptography": "Cryptography", + "Device ID:": "Device ID:", + "Device key:": "Device key:", + "Ignored Users": "Ignored Users", + "Bug Report": "Bug Report", + "Found a bug?": "Found a bug?", + "Report it": "Report it", + "Analytics": "Analytics", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.", + "Labs": "Labs", + "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways", + "Use with caution": "Use with caution", + "Deactivate my account": "Deactivate my account", + "Clear Cache": "Clear Cache", + "Clear Cache and Reload": "Clear Cache and Reload", + "Updates": "Updates", + "Check for update": "Check for update", + "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites", + "Bulk Options": "Bulk Options", + "Desktop specific": "Desktop specific", + "Start automatically after system login": "Start automatically after system login", + "No media permissions": "No media permissions", + "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam", + "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.", + "No Microphones detected": "No Microphones detected", + "No Webcams detected": "No Webcams detected", + "Default Device": "Default Device", + "Microphone": "Microphone", + "Camera": "Camera", + "VoIP": "VoIP", + "Email": "Email", + "Add email address": "Add email address", + "Notifications": "Notifications", + "Profile": "Profile", + "Display name": "Display name", + "Account": "Account", + "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", + "Logged in as:": "Logged in as:", + "Access Token:": "Access Token:", + "click to reveal": "click to reveal", + "Homeserver is": "Homeserver is", + "Identity Server is": "Identity Server is", + "matrix-react-sdk version:": "matrix-react-sdk version:", + "riot-web version:": "riot-web version:", + "olm version:": "olm version:", + "Failed to send email": "Failed to send email", + "The email address linked to your account must be entered.": "The email address linked to your account must be entered.", + "A new password must be entered.": "A new password must be entered.", + "New passwords must match each other.": "New passwords must match each other.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", + "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below", + "I have verified my email address": "I have verified my email address", + "Your password has been reset": "Your password has been reset", + "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": "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", + "Return to login screen": "Return to login screen", + "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account", + "New password": "New password", + "Confirm your new password": "Confirm your new password", + "Send Reset Email": "Send Reset Email", + "Create an account": "Create an account", + "This Home Server does not support login using email address.": "This Home Server does not support login using email address.", + "Incorrect username and/or password.": "Incorrect username and/or password.", + "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.", + "The phone number entered looks invalid": "The phone number entered looks invalid", + "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", + "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.": "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.", + "Sorry, this homeserver is using a login which is not recognised ": "Sorry, this homeserver is using a login which is not recognised ", + "Login as guest": "Login as guest", + "Return to app": "Return to app", + "Failed to fetch avatar URL": "Failed to fetch avatar URL", + "Set a display name:": "Set a display name:", + "Upload an avatar:": "Upload an avatar:", + "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", + "Missing password.": "Missing password.", + "Passwords don't match.": "Passwords don't match.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "This doesn't look like a valid email address.", + "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.", + "You need to enter a user name.": "You need to enter a user name.", + "An unknown error occurred.": "An unknown error occurred.", + "I already have an account": "I already have an account", + "Displays action": "Displays action", + "Bans user with given id": "Bans user with given id", + "Unbans user with given id": "Unbans user with given id", + "Define the power level of a user": "Define the power level of a user", + "Deops user with given id": "Deops user with given id", + "Invites user with given id to current room": "Invites user with given id to current room", + "Joins room with given alias": "Joins room with given alias", + "Sets the room topic": "Sets the room topic", + "Kicks user with given id": "Kicks user with given id", + "Changes your display nickname": "Changes your display nickname", + "Searches DuckDuckGo for results": "Searches DuckDuckGo for results", + "Changes colour scheme of current room": "Changes colour scheme of current room", + "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple", + "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you", + "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward", + "Commands": "Commands", + "Results from DuckDuckGo": "Results from DuckDuckGo", + "Emoji": "Emoji", + "Users": "Users", + "unknown device": "unknown device", + "NOT verified": "NOT verified", + "verified": "verified", + "Verification": "Verification", + "Ed25519 fingerprint": "Ed25519 fingerprint", + "User ID": "User ID", + "Curve25519 identity key": "Curve25519 identity key", + "none": "none", + "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key", + "Algorithm": "Algorithm", + "unencrypted": "unencrypted", + "Decryption error": "Decryption error", + "Session ID": "Session ID", + "End-to-end encryption information": "End-to-end encryption information", + "Event information": "Event information", + "Sender device information": "Sender device information", + "Passphrases must match": "Passphrases must match", + "Passphrase must not be empty": "Passphrase must not be empty", + "Export room keys": "Export room keys", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", + "Enter passphrase": "Enter passphrase", + "Confirm passphrase": "Confirm passphrase", + "Export": "Export", + "Import room keys": "Import room keys", + "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.": "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.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", + "File to import": "File to import", + "Import": "Import" } From 11761f535df4b25465fded1914251abec5ec80b7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 18 Oct 2017 13:39:04 +0100 Subject: [PATCH 2/8] Copyright --- scripts/gen-i18n.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/scripts/gen-i18n.js b/scripts/gen-i18n.js index e1596af954..b3611ee741 100644 --- a/scripts/gen-i18n.js +++ b/scripts/gen-i18n.js @@ -1,3 +1,19 @@ +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + /** * Regenerates the translations base file by walking the source tree and * parsing each file with flow-parser. Emits a JSON file with the From f759467193246973004050dbcdc23c74fd10640c Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 18 Oct 2017 14:30:55 +0100 Subject: [PATCH 3/8] Get English plural strings from an input file --- scripts/gen-i18n.js | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/scripts/gen-i18n.js b/scripts/gen-i18n.js index b3611ee741..512da5a586 100644 --- a/scripts/gen-i18n.js +++ b/scripts/gen-i18n.js @@ -32,10 +32,7 @@ const estreeWalker = require('estree-walker'); const TRANSLATIONS_FUNCS = ['_t', '_td', '_tJsx']; -// A selection of plural variants to put in the base file: other langauges -// with more types of plural will have more, but they will just be in the file -// for that language. -const COUNTSTRINGS = ['one', 'other']; +const INPUT_TRANSLATIONS_FILE = 'src/i18n/strings/en_EN.json'; const FLOW_PARSER_OPTS = { esproposal_class_instance_fields: true, @@ -91,8 +88,12 @@ function getTranslations(file) { } if (isPlural) { - for (const s of COUNTSTRINGS) { - trs.add(tKey + "|" + s); + trs.add(tKey + "|other"); + const plurals = enPlurals[tKey]; + if (plurals) { + for (const pluralType of Object.keys(plurals)) { + trs.add(tKey + "|" + pluralType); + } } } else { trs.add(tKey); @@ -104,6 +105,21 @@ function getTranslations(file) { return trs; } +// gather en_EN plural strings from the input translations file: +// the en_EN strings are all in the source with the exception of +// pluralised strings, which we need to pull in from elsewhere. +const inputTranslationsRaw = JSON.parse(fs.readFileSync(INPUT_TRANSLATIONS_FILE, { encoding: 'utf8' })); +const enPlurals = {}; + +for (const key of Object.keys(inputTranslationsRaw)) { + const parts = key.split("|"); + if (parts.length > 1) { + const plurals = enPlurals[parts[0]] || {}; + plurals[parts[1]] = inputTranslationsRaw[key]; + enPlurals[parts[0]] = plurals; + } +} + const translatables = new Set(); walk.walkSync("src", { @@ -124,6 +140,9 @@ walk.walkSync("src", { const trObj = {}; for (const tr of translatables) { trObj[tr] = tr; + if (tr.includes("|")) { + trObj[tr] = inputTranslationsRaw[tr]; + } } fs.writeFileSync( From a2bfdd89251b804793c606654f60740795259ce2 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 18 Oct 2017 14:33:21 +0100 Subject: [PATCH 4/8] missing saemi --- scripts/gen-i18n.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gen-i18n.js b/scripts/gen-i18n.js index 512da5a586..f8f6769507 100644 --- a/scripts/gen-i18n.js +++ b/scripts/gen-i18n.js @@ -65,7 +65,7 @@ function getTKey(arg) { } function getTranslations(file) { - const tree = flowParser.parse(fs.readFileSync(file, { encoding: 'utf8' }), FLOW_PARSER_OPTS) + const tree = flowParser.parse(fs.readFileSync(file, { encoding: 'utf8' }), FLOW_PARSER_OPTS); const trs = new Set(); From 63a7d37f5a34d39f26418c61bc1a817f4a4b68f4 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 18 Oct 2017 14:41:54 +0100 Subject: [PATCH 5/8] commented logging --- scripts/gen-i18n.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/gen-i18n.js b/scripts/gen-i18n.js index f8f6769507..e15263fb34 100644 --- a/scripts/gen-i18n.js +++ b/scripts/gen-i18n.js @@ -71,7 +71,6 @@ function getTranslations(file) { estreeWalker.walk(tree, { enter: function(node, parent) { - //console.log(node); if ( node.type == 'CallExpression' && TRANSLATIONS_FUNCS.includes(node.callee.name) From caa4979e37591dd34b24112ff58fea1b9e4130d7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 18 Oct 2017 14:43:18 +0100 Subject: [PATCH 6/8] Comment ignoring getTKey returning null --- scripts/gen-i18n.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/gen-i18n.js b/scripts/gen-i18n.js index e15263fb34..d3c92cc8f3 100644 --- a/scripts/gen-i18n.js +++ b/scripts/gen-i18n.js @@ -76,6 +76,8 @@ function getTranslations(file) { TRANSLATIONS_FUNCS.includes(node.callee.name) ) { const tKey = getTKey(node.arguments[0]); + // This happens whenever we call _t with non-literals (ie. whenever we've + // had to use a _td to compensate) so is expected. if (tKey === null) return; let isPlural = false; From 2bbac903f14f6b1144d52f89dd0e643933a7e1cd Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 18 Oct 2017 14:45:04 +0100 Subject: [PATCH 7/8] 'base file' is a bit overloaded by weblate --- scripts/gen-i18n.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gen-i18n.js b/scripts/gen-i18n.js index d3c92cc8f3..3ce5aeb312 100644 --- a/scripts/gen-i18n.js +++ b/scripts/gen-i18n.js @@ -15,7 +15,7 @@ limitations under the License. */ /** - * Regenerates the translations base file by walking the source tree and + * Regenerates the translations en_EN file by walking the source tree and * parsing each file with flow-parser. Emits a JSON file with the * translatable strings mapped to themselves in the order they appeared * in the files and grouped by the file they appeared in. From 12d672226573050776db8e27d74f1b3625904207 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 18 Oct 2017 15:48:33 +0100 Subject: [PATCH 8/8] Re-run the fun --- src/i18n/strings/en_EN.json | 1640 +++++++++++++++++------------------ 1 file changed, 804 insertions(+), 836 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 53abbb5584..6bf020feaf 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,571 +1,24 @@ { - "Add a widget": "Add a widget", - "a room": "a room", - "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", - "Accept": "Accept", - "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.", - "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", - "Account": "Account", - "Access Token:": "Access Token:", - "Active call (%(roomName)s)": "Active call (%(roomName)s)", - "Add": "Add", - "Add a topic": "Add a topic", - "Add email address": "Add email address", - "Add phone number": "Add phone number", - "Admin": "Admin", - "Admin Tools": "Admin tools", - "Allow": "Allow", - "And %(count)s more...": "And %(count)s more...", - "VoIP": "VoIP", - "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.", - "No Microphones detected": "No Microphones detected", - "No Webcams detected": "No Webcams detected", - "No media permissions": "No media permissions", - "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam", - "Default Device": "Default Device", - "Microphone": "Microphone", - "Camera": "Camera", - "Advanced": "Advanced", - "Advanced options": "Advanced options", - "Algorithm": "Algorithm", - "Hide removed messages": "Hide removed messages", - "Always show message timestamps": "Always show message timestamps", - "Authentication": "Authentication", - "Alias (optional)": "Alias (optional)", - "and": "and", - "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", - "%(items)s and one other": "%(items)s and one other", - "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", - "and %(count)s others...|other": "and %(count)s others...", - "and %(count)s others...|one": "and one other...", - "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", - "%(names)s and one other are typing": "%(names)s and one other are typing", - "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", - "An email has been sent to": "An email has been sent to", - "A new password must be entered.": "A new password must be entered.", - "%(senderName)s answered the call.": "%(senderName)s answered the call.", - "An error has occurred.": "An error has occurred.", - "Anyone": "Anyone", - "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", - "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests", - "Are you sure?": "Are you sure?", - "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", - "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?", - "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?", - "Attachment": "Attachment", - "Autoplay GIFs and videos": "Autoplay GIFs and videos", - "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.", - "Ban": "Ban", - "Banned users": "Banned users", - "Bans user with given id": "Bans user with given id", - "Blacklisted": "Blacklisted", - "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room", - "This setting cannot be changed later!": "This setting cannot be changed later!", - "Bug Report": "Bug Report", - "Bulk Options": "Bulk Options", - "Call Timeout": "Call Timeout", - "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.": "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.", - "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", - "Can't load user settings": "Can't load user settings", - "Cannot add any more widgets": "Cannot add any more widgets", - "Change Password": "Change Password", - "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.", - "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.", - "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", - "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.", - "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.", - "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", - "Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room", - "Changes your display nickname": "Changes your display nickname", - "Changes colour scheme of current room": "Changes colour scheme of current room", - "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", - "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key", - "Clear Cache and Reload": "Clear Cache and Reload", - "Clear Cache": "Clear Cache", - "Click here to join the discussion!": "Click here to join the discussion!", - "Click here to fix": "Click here to fix", - "Click to mute audio": "Click to mute audio", - "Click to mute video": "Click to mute video", - "click to reveal": "click to reveal", - "Click to unmute video": "Click to unmute video", - "Click to unmute audio": "Click to unmute audio", - "Close": "Close", - "Command error": "Command error", - "Commands": "Commands", - "Conference call failed.": "Conference call failed.", - "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.", - "Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms", - "Conference calls are not supported in this client": "Conference calls are not supported in this client", - "Confirm password": "Confirm password", - "Confirm your new password": "Confirm your new password", - "Continue": "Continue", - "Could not connect to the integration server": "Could not connect to the integration server", - "%(count)s new messages|one": "%(count)s new message", - "%(count)s new messages|other": "%(count)s new messages", - "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", - "Create an account": "Create an account", - "Create Room": "Create Room", - "Cryptography": "Cryptography", - "Current password": "Current password", - "Curve25519 identity key": "Curve25519 identity key", - "Custom": "Custom", - "Custom level": "Custom level", - "/ddg is not a command": "/ddg is not a command", - "Deactivate Account": "Deactivate Account", - "Deactivate my account": "Deactivate my account", - "Decline": "Decline", - "Decrypt %(text)s": "Decrypt %(text)s", - "Decryption error": "Decryption error", - "Delete": "Delete", - "Delete widget": "Delete widget", - "demote": "demote", - "Deops user with given id": "Deops user with given id", - "Default": "Default", - "Define the power level of a user": "Define the power level of a user", - "Device already verified!": "Device already verified!", - "Device ID": "Device ID", - "Device ID:": "Device ID:", - "device id: ": "device id: ", - "Device key:": "Device key:", - "Devices": "Devices", - "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room", - "Direct chats": "Direct chats", - "Disable Notifications": "Disable Notifications", - "disabled": "disabled", - "Disable inline URL previews by default": "Disable inline URL previews by default", - "Disinvite": "Disinvite", - "Display name": "Display name", - "Displays action": "Displays action", - "Do you want to load widget from URL:": "Do you want to load widget from URL:", - "Don't send typing notifications": "Don't send typing notifications", - "Download %(text)s": "Download %(text)s", - "Drop File Here": "Drop File Here", - "Drop here %(toAction)s": "Drop here %(toAction)s", - "Drop here to tag %(section)s": "Drop here to tag %(section)s", - "Ed25519 fingerprint": "Ed25519 fingerprint", - "Edit": "Edit", - "Email": "Email", - "Email address": "Email address", - "Email address (optional)": "Email address (optional)", - "Email, name or matrix ID": "Email, name or matrix ID", - "Emoji": "Emoji", - "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", - "Enable encryption": "Enable encryption", - "Enable Notifications": "Enable Notifications", - "enabled": "enabled", - "Encrypted by a verified device": "Encrypted by a verified device", - "Encrypted by an unverified device": "Encrypted by an unverified device", - "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption", - "Encrypted room": "Encrypted room", - "Encryption is enabled in this room": "Encryption is enabled in this room", - "Encryption is not enabled in this room": "Encryption is not enabled in this room", - "%(senderName)s ended the call.": "%(senderName)s ended the call.", - "End-to-end encryption information": "End-to-end encryption information", - "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable", - "Enter Code": "Enter Code", - "Enter passphrase": "Enter passphrase", - "Error": "Error", - "Error decrypting attachment": "Error decrypting attachment", - "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.", - "Event information": "Event information", - "Existing Call": "Existing Call", - "Export": "Export", - "Export E2E room keys": "Export E2E room keys", - "Failed to ban user": "Failed to ban user", - "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", - "Failed to change power level": "Failed to change power level", - "Failed to delete device": "Failed to delete device", - "Failed to fetch avatar URL": "Failed to fetch avatar URL", - "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", - "Failed to join room": "Failed to join room", - "Failed to kick": "Failed to kick", - "Failed to leave room": "Failed to leave room", - "Failed to load timeline position": "Failed to load timeline position", - "Failed to lookup current room": "Failed to lookup current room", - "Failed to mute user": "Failed to mute user", - "Failed to register as guest:": "Failed to register as guest:", - "Failed to reject invite": "Failed to reject invite", - "Failed to reject invitation": "Failed to reject invitation", - "Failed to save settings": "Failed to save settings", - "Failed to send email": "Failed to send email", - "Failed to send request.": "Failed to send request.", - "Failed to set avatar.": "Failed to set avatar.", - "Failed to set display name": "Failed to set display name", - "Failed to set up conference call": "Failed to set up conference call", - "Failed to toggle moderator status": "Failed to toggle moderator status", - "Failed to unban": "Failed to unban", - "Failed to upload file": "Failed to upload file", - "Failed to upload profile picture!": "Failed to upload profile picture!", - "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email", - "Failure to create room": "Failure to create room", - "Favourite": "Favourite", - "favourite": "favourite", - "Favourites": "Favourites", - "Fill screen": "Fill screen", - "Filter room members": "Filter room members", - "Forget room": "Forget room", - "Forgot your password?": "Forgot your password?", - "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", - "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.", - "Found a bug?": "Found a bug?", - "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s", - "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.", - "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", - "had": "had", - "Hangup": "Hangup", - "Hide Apps": "Hide Apps", - "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)", - "Hide avatar and display name changes": "Hide avatar and display name changes", - "Hide read receipts": "Hide read receipts", - "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", - "Historical": "Historical", - "Home": "Home", - "Homeserver is": "Homeserver is", - "Identity Server is": "Identity Server is", - "I have verified my email address": "I have verified my email address", - "Import": "Import", - "Import E2E room keys": "Import E2E room keys", - "Incoming call from %(name)s": "Incoming call from %(name)s", - "Incoming video call from %(name)s": "Incoming video call from %(name)s", - "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", - "Incorrect username and/or password.": "Incorrect username and/or password.", - "Incorrect verification code": "Incorrect verification code", - "Integrations Error": "Integrations Error", - "Interface Language": "Interface Language", - "Invalid alias format": "Invalid alias format", - "Invalid address format": "Invalid address format", - "Invalid Email Address": "Invalid Email Address", - "Invalid file%(extra)s": "Invalid file%(extra)s", - "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.", - "Invite new room members": "Invite new room members", - "Invited": "Invited", - "Invites": "Invites", - "Invites user with given id to current room": "Invites user with given id to current room", - "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", - "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", - "%(displayName)s is typing": "%(displayName)s is typing", - "Sign in with": "Sign in with", - "Join as voice or video.": "Join as voice or video.", - "Join Room": "Join Room", - "joined and left": "joined and left", - "joined": "joined", - "%(targetName)s joined the room.": "%(targetName)s joined the room.", - "Joins room with given alias": "Joins room with given alias", - "Jump to first unread message.": "Jump to first unread message.", - "Jump to read receipt": "Jump to read receipt", - "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", - "Kick": "Kick", - "Kicks user with given id": "Kicks user with given id", - "Labs": "Labs", - "Ignored Users": "Ignored Users", - "Ignore": "Ignore", - "Unignore": "Unignore", - "User Options": "User Options", - "You are now ignoring %(userId)s": "You are now ignoring %(userId)s", - "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s", - "Unignored user": "Unignored user", - "Ignored user": "Ignored user", - "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward", - "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you", - "Last seen": "Last seen", - "Leave room": "Leave room", - "left and rejoined": "left and rejoined", - "left": "left", - "%(targetName)s left the room.": "%(targetName)s left the room.", - "Level:": "Level:", - "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?", - "Local addresses for this room:": "Local addresses for this room:", - "Logged in as:": "Logged in as:", - "Login as guest": "Login as guest", - "Logout": "Logout", - "Low priority": "Low priority", - "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.", - "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.", - "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.", - "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.", - "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).", - "Manage Integrations": "Manage Integrations", - "Markdown is disabled": "Markdown is disabled", - "Markdown is enabled": "Markdown is enabled", - "matrix-react-sdk version:": "matrix-react-sdk version:", - "Matrix Apps": "Matrix Apps", - "Members only": "Members only", - "Disable big emoji in chat": "Disable big emoji in chat", - "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing", - "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", - "Missing room_id in request": "Missing room_id in request", - "Missing user_id in request": "Missing user_id in request", - "Mobile phone number": "Mobile phone number", - "Mobile phone number (optional)": "Mobile phone number (optional)", - "Moderator": "Moderator", - "Must be viewing a room": "Must be viewing a room", - "Mute": "Mute", - "Name": "Name", - "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device", - "Never send encrypted messages to unverified devices in this room": "Never send encrypted messages to unverified devices in this room", - "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", - "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", - "New password": "New password", - "New passwords don't match": "New passwords don't match", - "New passwords must match each other.": "New passwords must match each other.", - "none": "none", - "not set": "not set", - "not specified": "not specified", - "Notifications": "Notifications", - "(not supported by this browser)": "(not supported by this browser)", - "": "", - "AM": "AM", - "PM": "PM", - "NOT verified": "NOT verified", - "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted", - "No devices with registered encryption keys": "No devices with registered encryption keys", - "No display name": "No display name", - "No more results": "No more results", - "No results": "No results", - "No users have specific privileges in this room": "No users have specific privileges in this room", - "OK": "OK", - "olm version:": "olm version:", - "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)", - "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below", - "Only people who have been invited": "Only people who have been invited", - "Operation failed": "Operation failed", - "Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.", - "Password": "Password", - "Password:": "Password:", - "Passwords can't be empty": "Passwords can't be empty", - "People": "People", - "Permissions": "Permissions", - "Phone": "Phone", - "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", - "Power level must be positive integer.": "Power level must be positive integer.", - "Press to start a chat with someone": "Press to start a chat with someone", - "Privacy warning": "Privacy warning", - "Private Chat": "Private Chat", - "Privileged Users": "Privileged Users", - "Profile": "Profile", - "Public Chat": "Public Chat", - "Reason": "Reason", - "Reason: %(reasonText)s": "Reason: %(reasonText)s", - "Revoke Moderator": "Revoke Moderator", - "Revoke widget access": "Revoke widget access", - "Refer a friend to Riot:": "Refer a friend to Riot:", - "Register": "Register", - "rejected": "rejected", - "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.", - "Reject invitation": "Reject invitation", - "Rejoin": "Rejoin", - "Remote addresses for this room:": "Remote addresses for this room:", - "Remove Contact Information?": "Remove Contact Information?", - "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).", - "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.", - "Remove": "Remove", - "Remove %(threePid)s?": "Remove %(threePid)s?", - "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.", - "Report it": "Report it", - "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", - "restore": "restore", - "Results from DuckDuckGo": "Results from DuckDuckGo", - "Return to app": "Return to app", - "Return to login screen": "Return to login screen", - "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", - "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", - "riot-web version:": "riot-web version:", - "Room %(roomId)s not visible": "Room %(roomId)s not visible", - "Room Colour": "Room Colour", - "Room contains unknown devices": "Room contains unknown devices", - "Room name (optional)": "Room name (optional)", - "%(roomName)s does not exist.": "%(roomName)s does not exist.", - "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.", - "Rooms": "Rooms", - "Save": "Save", - "Scroll to bottom of page": "Scroll to bottom of page", - "Scroll to unread messages": "Scroll to unread messages", - "Search": "Search", - "Search failed": "Search failed", - "Searches DuckDuckGo for results": "Searches DuckDuckGo for results", - "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s", - "Send a message (unencrypted)": "Send a message (unencrypted)", - "Send an encrypted message": "Send an encrypted message", - "Send anyway": "Send anyway", - "Sender device information": "Sender device information", - "Send Invites": "Send Invites", - "Send Reset Email": "Send Reset Email", - "sent an image": "sent an image", - "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", - "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.", - "sent a video": "sent a video", - "Server error": "Server error", - "Server may be unavailable or overloaded": "Server may be unavailable or overloaded", - "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(", - "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big", - "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", - "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.", - "Session ID": "Session ID", - "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.", - "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", - "Set": "Set", - "Settings": "Settings", - "Sets the room topic": "Sets the room topic", - "Show Apps": "Show Apps", - "Show panel": "Show panel", - "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", - "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", - "Signed Out": "Signed Out", - "Sign in": "Sign in", - "Sign out": "Sign out", - "since the point in time of selecting this option": "since the point in time of selecting this option", - "since they joined": "since they joined", - "since they were invited": "since they were invited", - "Some of your messages have not been sent.": "Some of your messages have not been sent.", - "Someone": "Someone", - "Sorry, this homeserver is using a login which is not recognised ": "Sorry, this homeserver is using a login which is not recognised ", - "Start a chat": "Start a chat", - "Start authentication": "Start authentication", - "Start Chat": "Start Chat", - "Submit": "Submit", - "Success": "Success", - "tag direct chat": "tag direct chat", - "Tagged as: ": "Tagged as: ", - "The default role for new room members is": "The default role for new room members is", - "The main address for this room is": "The main address for this room is", - "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.", - "The phone number entered looks invalid": "The phone number entered looks invalid", - "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.", "This email address is already in use": "This email address is already in use", - "This email address was not found": "This email address was not found", - "%(actionVerb)s this person?": "%(actionVerb)s this person?", - "The email address linked to your account must be entered.": "The email address linked to your account must be entered.", - "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads", - "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", - "The remote side failed to pick up": "The remote side failed to pick up", - "This Home Server does not support login using email address.": "This Home Server does not support login using email address.", - "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:", - "This room has no local addresses": "This room has no local addresses", - "This room is not recognised.": "This room is not recognised.", - "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways", - "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged", - "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address", - "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled", "This phone number is already in use": "This phone number is already in use", - "This room": "This room", - "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers", - "This room's internal ID is": "This room's internal ID is", - "times": "times", - "to browse the directory": "to browse the directory", - "to demote": "to demote", - "to favourite": "to favourite", - "To get started, please pick a username!": "To get started, please pick a username!", - "To link to a room it must have an address.": "To link to a room it must have an address.", - "to make a room or": "to make a room or", - "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account", - "to restore": "to restore", - "to start a chat with someone": "to start a chat with someone", - "to tag direct chat": "to tag direct chat", - "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.", - "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", - "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", - "Turn Markdown off": "Turn Markdown off", - "Turn Markdown on": "Turn Markdown on", - "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).", - "Unable to add email address": "Unable to add email address", - "Unable to create widget.": "Unable to create widget.", - "Unable to remove contact information": "Unable to remove contact information", - "Unable to verify email address.": "Unable to verify email address.", - "Unban": "Unban", - "Unbans user with given id": "Unbans user with given id", - "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", - "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", + "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email", + "Call Timeout": "Call Timeout", + "The remote side failed to pick up": "The remote side failed to pick up", "Unable to capture screen": "Unable to capture screen", - "Unable to enable Notifications": "Unable to enable Notifications", - "Unable to load device list": "Unable to load device list", - "Undecryptable": "Undecryptable", - "Unencrypted room": "Unencrypted room", - "unencrypted": "unencrypted", - "Unencrypted message": "Unencrypted message", - "unknown caller": "unknown caller", - "unknown device": "unknown device", - "unknown error code": "unknown error code", - "Unknown room %(roomId)s": "Unknown room %(roomId)s", - "Unknown (user, device) pair:": "Unknown (user, device) pair:", - "Unmute": "Unmute", - "Unnamed Room": "Unnamed Room", - "Unrecognised command:": "Unrecognised command:", - "Unrecognised room alias:": "Unrecognised room alias:", - "Unverified": "Unverified", - "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", - "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", - "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others", - "uploaded a file": "uploaded a file", - "Upload avatar": "Upload avatar", - "Upload Failed": "Upload Failed", - "Upload Files": "Upload Files", - "Upload file": "Upload file", - "Upload new:": "Upload new:", - "Usage": "Usage", - "Use compact timeline layout": "Use compact timeline layout", - "Use with caution": "Use with caution", - "User ID": "User ID", - "User Interface": "User Interface", - "%(user)s is a": "%(user)s is a", - "User name": "User name", - "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", - "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", - "Users": "Users", - "User": "User", - "Verification Pending": "Verification Pending", - "Verification": "Verification", - "verified": "verified", - "Verified": "Verified", - "Verified key": "Verified key", - "Video call": "Video call", - "Voice call": "Voice call", - "VoIP conference finished.": "VoIP conference finished.", - "VoIP conference started.": "VoIP conference started.", - "VoIP is unsupported": "VoIP is unsupported", - "(could not connect media)": "(could not connect media)", - "(no answer)": "(no answer)", - "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)", - "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)", - "Warning!": "Warning!", - "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!", - "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!", - "Who can access this room?": "Who can access this room?", - "Who can read history?": "Who can read history?", - "Who would you like to add to this room?": "Who would you like to add to this room?", - "Who would you like to communicate with?": "Who would you like to communicate with?", - "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", - "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", - "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", + "Existing Call": "Existing Call", "You are already in a call.": "You are already in a call.", - "You are not in this room.": "You are not in this room.", - "You do not have permission to do that in this room.": "You do not have permission to do that in this room.", - "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", - "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", - "You cannot place a call with yourself.": "You cannot place a call with yourself.", + "VoIP is unsupported": "VoIP is unsupported", "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", - "You do not have permission to post to this room": "You do not have permission to post to this room", - "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.", - "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s", - "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.", - "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": "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", - "You have disabled URL previews by default.": "You have disabled URL previews by default.", - "You have enabled URL previews by default.": "You have enabled URL previews by default.", - "You have no visible notifications": "You have no visible notifications", - "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.", - "you must be a": "you must be a", - "You must register to use this functionality": "You must register to use this functionality", - "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", - "You need to be logged in.": "You need to be logged in.", - "You need to enter a user name.": "You need to enter a user name.", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", - "Your password has been reset": "Your password has been reset", - "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", - "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?", - "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?", - "You should not yet trust it to secure data": "You should not yet trust it to secure data", - "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", - "Your home server does not support device management.": "Your home server does not support device management.", + "You cannot place a call with yourself.": "You cannot place a call with yourself.", + "Conference calls are not supported in this client": "Conference calls are not supported in this client", + "Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms", + "Warning!": "Warning!", + "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.", + "Failed to set up conference call": "Failed to set up conference call", + "Conference call failed.": "Conference call failed.", + "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads", + "Upload Failed": "Upload Failed", "Sun": "Sun", "Mon": "Mon", "Tue": "Tue", @@ -585,49 +38,240 @@ "Oct": "Oct", "Nov": "Nov", "Dec": "Dec", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", - "%(weekDayName)s, %(monthName)s %(day)s": "%(weekDayName)s, %(monthName)s %(day)s", - "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", - "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", - "Set a display name:": "Set a display name:", - "Upload an avatar:": "Upload an avatar:", - "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", - "Missing password.": "Missing password.", - "Passwords don't match.": "Passwords don't match.", - "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).", - "This doesn't look like a valid email address.": "This doesn't look like a valid email address.", - "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.", - "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.", - "An unknown error occurred.": "An unknown error occurred.", - "I already have an account": "I already have an account", - "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", - "Topic": "Topic", - "Make Moderator": "Make Moderator", - "Make this room private": "Make this room private", - "Share message history with new users": "Share message history with new users", - "Encrypt room": "Encrypt room", - "There are no visible files in this room": "There are no visible files in this room", - "Room": "Room", - "Copied!": "Copied!", - "Failed to copy": "Failed to copy", - "There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?", - "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", - "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", - "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", - "(~%(count)s results)|one": "(~%(count)s result)", - "(~%(count)s results)|other": "(~%(count)s results)", - "Cancel": "Cancel", - "or": "or", + "Invite new group members": "Invite new group members", + "Who would you like to add to this group?": "Who would you like to add to this group?", + "Name or matrix ID": "Name or matrix ID", + "Invite to Group": "Invite to Group", + "Add rooms to the group": "Add rooms to the group", + "Which rooms would you like to add to this group?": "Which rooms would you like to add to this group?", + "Room name or alias": "Room name or alias", + "Add to group": "Add to group", + "Failed to invite the following users to %(groupId)s:": "Failed to invite the following users to %(groupId)s:", + "Invites sent": "Invites sent", + "Your group invitations have been sent.": "Your group invitations have been sent.", + "Failed to invite users group": "Failed to invite users group", + "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", + "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", + "Unable to enable Notifications": "Unable to enable Notifications", + "This email address was not found": "This email address was not found", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", + "Default": "Default", + "User": "User", + "Moderator": "Moderator", + "Admin": "Admin", + "Start a chat": "Start a chat", + "Who would you like to communicate with?": "Who would you like to communicate with?", + "Email, name or matrix ID": "Email, name or matrix ID", + "Start Chat": "Start Chat", + "Invite new room members": "Invite new room members", + "Who would you like to add to this room?": "Who would you like to add to this room?", + "Send Invites": "Send Invites", + "Failed to invite user": "Failed to invite user", + "Operation failed": "Operation failed", + "Failed to invite": "Failed to invite", + "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:", + "You need to be logged in.": "You need to be logged in.", + "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", + "Unable to create widget.": "Unable to create widget.", + "Failed to send request.": "Failed to send request.", + "This room is not recognised.": "This room is not recognised.", + "Power level must be positive integer.": "Power level must be positive integer.", + "You are not in this room.": "You are not in this room.", + "You do not have permission to do that in this room.": "You do not have permission to do that in this room.", + "Missing room_id in request": "Missing room_id in request", + "Must be viewing a room": "Must be viewing a room", + "Room %(roomId)s not visible": "Room %(roomId)s not visible", + "Missing user_id in request": "Missing user_id in request", + "Failed to lookup current room": "Failed to lookup current room", + "Usage": "Usage", + "/ddg is not a command": "/ddg is not a command", + "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.", + "Unrecognised room alias:": "Unrecognised room alias:", + "Ignored user": "Ignored user", + "You are now ignoring %(userId)s": "You are now ignoring %(userId)s", + "Unignored user": "Unignored user", + "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s", + "Unknown (user, device) pair:": "Unknown (user, device) pair:", + "Device already verified!": "Device already verified!", + "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!", + "Verified key": "Verified key", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.", + "Unrecognised command:": "Unrecognised command:", + "Reason": "Reason", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.", + "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.", + "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.", + "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.", + "VoIP conference started.": "VoIP conference started.", + "%(targetName)s joined the room.": "%(targetName)s joined the room.", + "VoIP conference finished.": "VoIP conference finished.", + "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.", + "%(targetName)s left the room.": "%(targetName)s left the room.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", + "Someone": "Someone", + "(not supported by this browser)": "(not supported by this browser)", + "%(senderName)s answered the call.": "%(senderName)s answered the call.", + "(could not connect media)": "(could not connect media)", + "(no answer)": "(no answer)", + "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s ended the call.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s changed the pinned messages for the room.", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s", + "Groups": "Groups", "Message Pinning": "Message Pinning", - "Active call": "Active call", - "Monday": "Monday", - "Tuesday": "Tuesday", - "Wednesday": "Wednesday", - "Thursday": "Thursday", - "Friday": "Friday", - "Saturday": "Saturday", - "Sunday": "Sunday", + "%(displayName)s is typing": "%(displayName)s is typing", + "%(names)s and one other are typing": "%(names)s and one other are typing", + "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", + "Failure to create room": "Failure to create room", + "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", + "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", + "Not a valid Riot keyfile": "Not a valid Riot keyfile", + "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Failed to join room": "Failed to join room", + "Active call (%(roomName)s)": "Active call (%(roomName)s)", + "unknown caller": "unknown caller", + "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", + "Incoming video call from %(name)s": "Incoming video call from %(name)s", + "Incoming call from %(name)s": "Incoming call from %(name)s", + "Decline": "Decline", + "Accept": "Accept", + "Error": "Error", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", + "Incorrect verification code": "Incorrect verification code", + "Enter Code": "Enter Code", + "Submit": "Submit", + "Phone": "Phone", + "Add phone number": "Add phone number", + "Add": "Add", + "Failed to upload profile picture!": "Failed to upload profile picture!", + "Upload new:": "Upload new:", + "No display name": "No display name", + "New passwords don't match": "New passwords don't match", + "Passwords can't be empty": "Passwords can't be empty", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", + "Continue": "Continue", + "Export E2E room keys": "Export E2E room keys", + "Do you want to set an email address?": "Do you want to set an email address?", + "Current password": "Current password", + "Password": "Password", + "New Password": "New Password", + "Confirm password": "Confirm password", + "Change Password": "Change Password", + "Your home server does not support device management.": "Your home server does not support device management.", + "Unable to load device list": "Unable to load device list", + "Device ID": "Device ID", + "Device Name": "Device Name", + "Last seen": "Last seen", + "Failed to set display name": "Failed to set display name", + "Authentication": "Authentication", + "Failed to delete device": "Failed to delete device", + "Delete": "Delete", + "Disable Notifications": "Disable Notifications", + "Enable Notifications": "Enable Notifications", + "Cannot add any more widgets": "Cannot add any more widgets", + "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.", + "Add a widget": "Add a widget", + "Drop File Here": "Drop File Here", + "Drop file here to upload": "Drop file here to upload", + " (unsupported)": " (unsupported)", + "Join as voice or video.": "Join as voice or video.", + "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.", + "sent an image": "sent an image", + "sent a video": "sent a video", + "uploaded a file": "uploaded a file", + "Options": "Options", + "Undecryptable": "Undecryptable", + "Encrypted by a verified device": "Encrypted by a verified device", + "Encrypted by an unverified device": "Encrypted by an unverified device", + "Unencrypted message": "Unencrypted message", + "Please select the destination room for this message": "Please select the destination room for this message", + "Blacklisted": "Blacklisted", + "Verified": "Verified", + "Unverified": "Unverified", + "device id: ": "device id: ", + "Disinvite": "Disinvite", + "Kick": "Kick", + "Failed to kick": "Failed to kick", + "Unban": "Unban", + "Ban": "Ban", + "Failed to ban user": "Failed to ban user", + "Failed to mute user": "Failed to mute user", + "Failed to toggle moderator status": "Failed to toggle moderator status", + "Failed to change power level": "Failed to change power level", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", + "Are you sure?": "Are you sure?", + "No devices with registered encryption keys": "No devices with registered encryption keys", + "Devices": "Devices", + "Unignore": "Unignore", + "Ignore": "Ignore", + "Jump to read receipt": "Jump to read receipt", + "User Options": "User Options", + "Direct chats": "Direct chats", + "Unmute": "Unmute", + "Mute": "Mute", + "Revoke Moderator": "Revoke Moderator", + "Make Moderator": "Make Moderator", + "Admin Tools": "Admin Tools", + "Level:": "Level:", + "and %(count)s others...|other": "and %(count)s others...", + "and %(count)s others...|one": "and one other...", + "Invited": "Invited", + "Filter room members": "Filter room members", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", + "Attachment": "Attachment", + "Upload Files": "Upload Files", + "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?", + "Encrypted room": "Encrypted room", + "Unencrypted room": "Unencrypted room", + "Hangup": "Hangup", + "Voice call": "Voice call", + "Video call": "Video call", + "Hide Apps": "Hide Apps", + "Show Apps": "Show Apps", + "Upload file": "Upload file", + "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", + "Send an encrypted message": "Send an encrypted message", + "Send a message (unencrypted)": "Send a message (unencrypted)", + "You do not have permission to post to this room": "You do not have permission to post to this room", + "Turn Markdown on": "Turn Markdown on", + "Turn Markdown off": "Turn Markdown off", + "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", + "Server error": "Server error", + "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.", + "Command error": "Command error", "bold": "bold", "italic": "italic", "strike": "strike", @@ -636,7 +280,235 @@ "quote": "quote", "bullet": "bullet", "numbullet": "numbullet", + "Markdown is disabled": "Markdown is disabled", + "Markdown is enabled": "Markdown is enabled", + "Unpin Message": "Unpin Message", + "Jump to message": "Jump to message", + "No pinned messages.": "No pinned messages.", + "Loading...": "Loading...", + "Pinned Messages": "Pinned Messages", + "for %(amount)ss": "for %(amount)ss", + "for %(amount)sm": "for %(amount)sm", + "for %(amount)sh": "for %(amount)sh", + "for %(amount)sd": "for %(amount)sd", + "Online": "Online", + "Idle": "Idle", + "Offline": "Offline", + "Unknown": "Unknown", + "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s", + "Unnamed room": "Unnamed room", + "World readable": "World readable", + "Guests can join": "Guests can join", + "No rooms to show": "No rooms to show", + "Failed to set avatar.": "Failed to set avatar.", + "Save": "Save", + "(~%(count)s results)|other": "(~%(count)s results)", + "(~%(count)s results)|one": "(~%(count)s result)", + "Join Room": "Join Room", + "Upload avatar": "Upload avatar", "Remove avatar": "Remove avatar", + "Settings": "Settings", + "Forget room": "Forget room", + "Search": "Search", + "Show panel": "Show panel", + "to favourite": "to favourite", + "to tag direct chat": "to tag direct chat", + "to restore": "to restore", + "to demote": "to demote", + "Drop here to tag %(section)s": "Drop here to tag %(section)s", + "Drop here %(toAction)s": "Drop here %(toAction)s", + "Press to start a chat with someone": "Press to start a chat with someone", + "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", + "Invites": "Invites", + "Favourites": "Favourites", + "People": "People", + "Rooms": "Rooms", + "Low priority": "Low priority", + "Historical": "Historical", + "Unnamed Room": "Unnamed Room", + "a room": "a room", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", + "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:", + "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.", + "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s", + "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", + "This room": "This room", + "Reason: %(reasonText)s": "Reason: %(reasonText)s", + "Rejoin": "Rejoin", + "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.", + "%(roomName)s does not exist.": "%(roomName)s does not exist.", + "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.", + "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", + "Click here to join the discussion!": "Click here to join the discussion!", + "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled", + "To change the room's avatar, you must be a": "To change the room's avatar, you must be a", + "To change the room's name, you must be a": "To change the room's name, you must be a", + "To change the room's main address, you must be a": "To change the room's main address, you must be a", + "To change the room's history visibility, you must be a": "To change the room's history visibility, you must be a", + "To change the permissions in the room, you must be a": "To change the permissions in the room, you must be a", + "To change the topic, you must be a": "To change the topic, you must be a", + "To modify widgets in the room, you must be a": "To modify widgets in the room, you must be a", + "Failed to unban": "Failed to unban", + "Banned by %(displayName)s": "Banned by %(displayName)s", + "Privacy warning": "Privacy warning", + "Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room", + "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged", + "unknown error code": "unknown error code", + "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", + "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable", + "You should not yet trust it to secure data": "You should not yet trust it to secure data", + "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption", + "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", + "Enable encryption": "Enable encryption", + "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)", + "Encryption is enabled in this room": "Encryption is enabled in this room", + "Encryption is not enabled in this room": "Encryption is not enabled in this room", + "Privileged Users": "Privileged Users", + "%(user)s is a": "%(user)s is a", + "No users have specific privileges in this room": "No users have specific privileges in this room", + "Banned users": "Banned users", + "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers", + "Leave room": "Leave room", + "Favourite": "Favourite", + "Tagged as: ": "Tagged as: ", + "To link to a room it must have an address.": "To link to a room it must have an address.", + "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", + "Click here to fix": "Click here to fix", + "Who can access this room?": "Who can access this room?", + "Only people who have been invited": "Only people who have been invited", + "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", + "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests", + "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?", + "Who can read history?": "Who can read history?", + "Anyone": "Anyone", + "Members only": "Members only", + "since the point in time of selecting this option": "since the point in time of selecting this option", + "since they were invited": "since they were invited", + "since they joined": "since they joined", + "Room Colour": "Room Colour", + "Permissions": "Permissions", + "The default role for new room members is": "The default role for new room members is", + "To send messages, you must be a": "To send messages, you must be a", + "To invite users into the room, you must be a": "To invite users into the room, you must be a", + "To configure the room, you must be a": "To configure the room, you must be a", + "To kick users, you must be a": "To kick users, you must be a", + "To ban users, you must be a": "To ban users, you must be a", + "To remove other users' messages, you must be a": "To remove other users' messages, you must be a", + "To send events of type , you must be a": "To send events of type , you must be a", + "Advanced": "Advanced", + "This room's internal ID is": "This room's internal ID is", + "Add a topic": "Add a topic", + "Cancel": "Cancel", + "Scroll to unread messages": "Scroll to unread messages", + "Jump to first unread message.": "Jump to first unread message.", + "Close": "Close", + "Invalid alias format": "Invalid alias format", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", + "Invalid address format": "Invalid address format", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", + "not specified": "not specified", + "not set": "not set", + "Remote addresses for this room:": "Remote addresses for this room:", + "The main address for this room is": "The main address for this room is", + "Local addresses for this room:": "Local addresses for this room:", + "This room has no local addresses": "This room has no local addresses", + "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", + "Invalid group ID": "Invalid group ID", + "'%(groupId)s' is not a valid group ID": "'%(groupId)s' is not a valid group ID", + "Related Groups": "Related Groups", + "Related groups for this room:": "Related groups for this room:", + "This room has no related groups": "This room has no related groups", + "New group ID (e.g. +foo:%(localDomain)s)": "New group ID (e.g. +foo:%(localDomain)s)", + "Disable URL previews by default for participants in this room": "Disable URL previews by default for participants in this room", + "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.", + "disabled": "disabled", + "enabled": "enabled", + "You have disabled URL previews by default.": "You have disabled URL previews by default.", + "You have enabled URL previews by default.": "You have enabled URL previews by default.", + "URL Previews": "URL Previews", + "Enable URL previews for this room (affects only you)": "Enable URL previews for this room (affects only you)", + "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)", + "Error decrypting audio": "Error decrypting audio", + "Error decrypting attachment": "Error decrypting attachment", + "Decrypt %(text)s": "Decrypt %(text)s", + "Download %(text)s": "Download %(text)s", + "Invalid file%(extra)s": "Invalid file%(extra)s", + "Error decrypting image": "Error decrypting image", + "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.", + "This image cannot be displayed.": "This image cannot be displayed.", + "Error decrypting video": "Error decrypting video", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", + "Copied!": "Copied!", + "Failed to copy": "Failed to copy", + "Add an Integration": "Add an Integration", + "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?": "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?", + "Removed or unknown message type": "Removed or unknown message type", + "Message removed by %(userId)s": "Message removed by %(userId)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", + "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot", + "Sign in with CAS": "Sign in with CAS", + "Custom Server Options": "Custom Server Options", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.", + "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.", + "Dismiss": "Dismiss", + "To continue, please enter your password.": "To continue, please enter your password.", + "Password:": "Password:", + "An email has been sent to": "An email has been sent to", + "Please check your email to continue registration.": "Please check your email to continue registration.", + "Token incorrect": "Token incorrect", + "A text message has been sent to": "A text message has been sent to", + "Please enter the code it contains:": "Please enter the code it contains:", + "Start authentication": "Start authentication", + "powered by Matrix": "powered by Matrix", + "User name": "User name", + "Mobile phone number": "Mobile phone number", + "Forgot your password?": "Forgot your password?", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Sign in with": "Sign in with", + "Email address": "Email address", + "Sign in": "Sign in", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?", + "Email address (optional)": "Email address (optional)", + "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s", + "Mobile phone number (optional)": "Mobile phone number (optional)", + "Register": "Register", + "Default server": "Default server", + "Custom server": "Custom server", + "Home server URL": "Home server URL", + "Identity server URL": "Identity server URL", + "What does this mean?": "What does this mean?", + "Remove from group": "Remove from group", + "Failed to remove user from group": "Failed to remove user from group", + "Filter group members": "Filter group members", + "Filter group rooms": "Filter group rooms", + "Failed to remove room from group": "Failed to remove room from group", + "Failed to remove '%(roomName)s' from %(groupId)s": "Failed to remove '%(roomName)s' from %(groupId)s", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Are you sure you want to remove '%(roomName)s' from %(groupId)s?", + "Removing a room from the group will also remove it from the group page.": "Removing a room from the group will also remove it from the group page.", + "Remove": "Remove", + "Unknown Address": "Unknown Address", + "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted", + "Do you want to load widget from URL:": "Do you want to load widget from URL:", + "Allow": "Allow", + "Delete widget": "Delete widget", + "Revoke widget access": "Revoke widget access", + "Edit": "Edit", + "Create new room": "Create new room", + "Unblacklist": "Unblacklist", + "Blacklist": "Blacklist", + "Unverify": "Unverify", + "Verify...": "Verify...", + "No results": "No results", + "Home": "Home", + "Integrations Error": "Integrations Error", + "Could not connect to the integration server": "Could not connect to the integration server", + "Manage Integrations": "Manage Integrations", "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)sjoined %(repeats)s times", "%(oneUser)sjoined %(repeats)s times": "%(oneUser)sjoined %(repeats)s times", "%(severalUsers)sjoined": "%(severalUsers)sjoined", @@ -685,251 +557,347 @@ "%(oneUser)schanged their avatar %(repeats)s times": "%(oneUser)schanged their avatar %(repeats)s times", "%(severalUsers)schanged their avatar": "%(severalUsers)schanged their avatar", "%(oneUser)schanged their avatar": "%(oneUser)schanged their avatar", - "Please select the destination room for this message": "Please select the destination room for this message", - "Create new room": "Create new room", + "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", + "%(items)s and one other": "%(items)s and one other", + "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", + "Custom level": "Custom level", "Room directory": "Room directory", "Start chat": "Start chat", - "New Password": "New Password", - "Start automatically after system login": "Start automatically after system login", - "Desktop specific": "Desktop specific", - "Analytics": "Analytics", - "Opt out of analytics": "Opt out of analytics", - "Options": "Options", - "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.", - "Passphrases must match": "Passphrases must match", - "Passphrase must not be empty": "Passphrase must not be empty", - "Export room keys": "Export room keys", - "Confirm passphrase": "Confirm passphrase", - "Import room keys": "Import room keys", - "File to import": "File to import", - "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", - "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", - "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.": "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.", - "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", - "You must join the room to see its files": "You must join the room to see its files", - "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites", - "Start new chat": "Start new chat", - "Failed to invite": "Failed to invite", - "Failed to invite user": "Failed to invite user", - "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:", - "Confirm Removal": "Confirm Removal", - "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.", - "Unknown error": "Unknown error", - "Incorrect password": "Incorrect password", - "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.", - "This action is irreversible.": "This action is irreversible.", - "To continue, please enter your password.": "To continue, please enter your password.", - "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:", - "Device name": "Device name", - "Device Name": "Device Name", - "Device key": "Device key", - "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.", - "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.", - "Verify device": "Verify device", - "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple", - "I verify that the keys match": "I verify that the keys match", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.", - "Unable to restore session": "Unable to restore session", - "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.", - "Continue anyway": "Continue anyway", - "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.", - "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.", - "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", - "Unknown devices": "Unknown devices", - "Unknown Address": "Unknown Address", - "Unblacklist": "Unblacklist", - "Blacklist": "Blacklist", - "Unverify": "Unverify", - "Verify...": "Verify...", "ex. @bob:example.com": "ex. @bob:example.com", "Add User": "Add User", - "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot", - "Sign in with CAS": "Sign in with CAS", - "Custom Server Options": "Custom Server Options", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.", - "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.", - "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.", - "Dismiss": "Dismiss", - "Please check your email to continue registration.": "Please check your email to continue registration.", - "Token incorrect": "Token incorrect", - "A text message has been sent to": "A text message has been sent to", - "Please enter the code it contains:": "Please enter the code it contains:", - "powered by Matrix": "powered by Matrix", - "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?", - "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s", - "Default server": "Default server", - "Custom server": "Custom server", - "Home server URL": "Home server URL", - "Identity server URL": "Identity server URL", - "What does this mean?": "What does this mean?", - "Error decrypting audio": "Error decrypting audio", - "Error decrypting image": "Error decrypting image", - "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.", - "This image cannot be displayed.": "This image cannot be displayed.", - "Error decrypting video": "Error decrypting video", - "Add an Integration": "Add an Integration", - "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?": "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?", - "Removed or unknown message type": "Removed or unknown message type", - "Disable URL previews by default for participants in this room": "Disable URL previews by default for participants in this room", - "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)", - "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.", - "URL Previews": "URL Previews", - "Enable URL previews for this room (affects only you)": "Enable URL previews for this room (affects only you)", - "Drop file here to upload": "Drop file here to upload", - " (unsupported)": " (unsupported)", - "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.", - "for %(amount)ss": "for %(amount)ss", - "for %(amount)sm": "for %(amount)sm", - "for %(amount)sh": "for %(amount)sh", - "for %(amount)sd": "for %(amount)sd", - "Online": "Online", - "Idle": "Idle", - "Offline": "Offline", - "Updates": "Updates", - "Check for update": "Check for update", - "Start chatting": "Start chatting", - "Start Chatting": "Start Chatting", - "Click on the button below to start chatting!": "Click on the button below to start chatting!", - "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", - "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", - "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", - "Username available": "Username available", - "Username not available": "Username not available", "Something went wrong!": "Something went wrong!", - "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", - "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", - "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", - "Not a valid Riot keyfile": "Not a valid Riot keyfile", - "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", - "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", - "Do you want to set an email address?": "Do you want to set an email address?", - "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", - "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", - "Skip": "Skip", - "Banned by %(displayName)s": "Banned by %(displayName)s", - "Start verification": "Start verification", - "Share without verifying": "Share without verifying", - "Ignore request": "Ignore request", - "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", - "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", - "Encryption key request": "Encryption key request", - "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", - "This Home server does not support groups": "This Home server does not support groups", - "Loading device info...": "Loading device info...", - "Message removed by %(userId)s": "Message removed by %(userId)s", - "Groups": "Groups", - "Create a new group": "Create a new group", - "Create Group": "Create Group", - "Group Name": "Group Name", - "Example": "Example", - "Create": "Create", - "Group ID": "Group ID", - "+example:%(domain)s": "+example:%(domain)s", - "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s", - "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", - "Room creation failed": "Room creation failed", - "You are a member of these groups:": "You are a member of these groups:", - "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", - "Join an existing group": "Join an existing group", - "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.", - "Featured Rooms:": "Featured Rooms:", - "To send messages, you must be a": "To send messages, you must be a", - "To invite users into the room, you must be a": "To invite users into the room, you must be a", - "To configure the room, you must be a": "To configure the room, you must be a", - "To kick users, you must be a": "To kick users, you must be a", - "To ban users, you must be a": "To ban users, you must be a", - "To remove other users' messages, you must be a": "To remove other users' messages, you must be a", - "To send events of type , you must be a": "To send events of type , you must be a", - "To change the room's avatar, you must be a": "To change the room's avatar, you must be a", - "To change the room's name, you must be a": "To change the room's name, you must be a", - "To change the room's main address, you must be a": "To change the room's main address, you must be a", - "To change the room's history visibility, you must be a": "To change the room's history visibility, you must be a", - "To change the permissions in the room, you must be a": "To change the permissions in the room, you must be a", - "To change the topic, you must be a": "To change the topic, you must be a", - "To modify widgets in the room, you must be a": "To modify widgets in the room, you must be a", - "Error whilst fetching joined groups": "Error whilst fetching joined groups", - "Featured Users:": "Featured Users:", - "Edit Group": "Edit Group", - "Automatically replace plain text Emoji": "Automatically replace plain text Emoji", - "Failed to upload image": "Failed to upload image", - "Failed to update group": "Failed to update group", - "Hide avatars in user and room mentions": "Hide avatars in user and room mentions", - "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s", - "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s", - "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s", - "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", - "Description": "Description", - "Filter group members": "Filter group members", - "Filter group rooms": "Filter group rooms", - "Remove from group": "Remove from group", - "Invite new group members": "Invite new group members", - "Who would you like to add to this group?": "Who would you like to add to this group?", - "Name or matrix ID": "Name or matrix ID", - "Invite to Group": "Invite to Group", - "Unable to accept invite": "Unable to accept invite", - "Unable to leave room": "Unable to leave room", - "%(inviter)s has invited you to join this group": "%(inviter)s has invited you to join this group", - "You are a member of this group": "You are a member of this group", - "Leave": "Leave", - "Failed to remove user from group": "Failed to remove user from group", - "Failed to invite the following users to %(groupId)s:": "Failed to invite the following users to %(groupId)s:", - "Failed to invite users group": "Failed to invite users group", - "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s", - "Unable to reject invite": "Unable to reject invite", - "Leave Group": "Leave Group", - "Leave %(groupName)s?": "Leave %(groupName)s?", - "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s", - "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", - "Flair": "Flair", - "Add a Room": "Add a Room", - "Add a User": "Add a User", - "Add users to the group summary": "Add users to the group summary", - "Who would you like to add to this summary?": "Who would you like to add to this summary?", - "Add to summary": "Add to summary", - "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:", - "Add rooms to the group summary": "Add rooms to the group summary", - "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?", - "Room name or alias": "Room name or alias", - "Pinned Messages": "Pinned Messages", - "%(senderName)s changed the pinned messages for the room.": "%(senderName)s changed the pinned messages for the room.", - "You are an administrator of this group": "You are an administrator of this group", - "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:", - "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s", - "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.", - "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s", - "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.", - "Light theme": "Light theme", - "Dark theme": "Dark theme", - "Unknown": "Unknown", - "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:", - "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.", - "Add rooms to the group": "Add rooms to the group", - "Which rooms would you like to add to this group?": "Which rooms would you like to add to this group?", - "Add to group": "Add to group", - "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:", - "Unpublish": "Unpublish", - "This group is published on your profile": "This group is published on your profile", - "Publish": "Publish", - "This group is not published on your profile": "This group is not published on your profile", "Matrix ID": "Matrix ID", "Matrix Room ID": "Matrix Room ID", "email address": "email address", "Try using one of the following valid address types: %(validTypesList)s.": "Try using one of the following valid address types: %(validTypesList)s.", "You have entered an invalid address.": "You have entered an invalid address.", - "Failed to remove room from group": "Failed to remove room from group", - "Failed to remove '%(roomName)s' from %(groupId)s": "Failed to remove '%(roomName)s' from %(groupId)s", - "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Are you sure you want to remove '%(roomName)s' from %(groupId)s?", - "Removing a room from the group will also remove it from the group page.": "Removing a room from the group will also remove it from the group page.", - "Related Groups": "Related Groups", - "Related groups for this room:": "Related groups for this room:", - "This room has no related groups": "This room has no related groups", - "New group ID (e.g. +foo:%(localDomain)s)": "New group ID (e.g. +foo:%(localDomain)s)", - "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", + "Start new chat": "Start new chat", + "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", + "Start chatting": "Start chatting", + "Click on the button below to start chatting!": "Click on the button below to start chatting!", + "Start Chatting": "Start Chatting", + "Confirm Removal": "Confirm Removal", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.", + "%(actionVerb)s this person?": "%(actionVerb)s this person?", + "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s", + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", + "Room creation failed": "Room creation failed", + "Create Group": "Create Group", + "Group Name": "Group Name", + "Example": "Example", + "Group ID": "Group ID", + "+example:%(domain)s": "+example:%(domain)s", + "Create": "Create", + "Create Room": "Create Room", + "Room name (optional)": "Room name (optional)", + "Advanced options": "Advanced options", + "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room", + "This setting cannot be changed later!": "This setting cannot be changed later!", + "Unknown error": "Unknown error", + "Incorrect password": "Incorrect password", + "Deactivate Account": "Deactivate Account", + "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.", + "This action is irreversible.": "This action is irreversible.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:", + "Device name": "Device name", + "Device key": "Device key", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.", + "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.", + "Verify device": "Verify device", + "I verify that the keys match": "I verify that the keys match", + "An error has occurred.": "An error has occurred.", + "OK": "OK", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", + "Start verification": "Start verification", + "Share without verifying": "Share without verifying", + "Ignore request": "Ignore request", + "Loading device info...": "Loading device info...", + "Encryption key request": "Encryption key request", + "Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.", + "Unable to restore session": "Unable to restore session", + "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.", + "Continue anyway": "Continue anyway", + "Invalid Email Address": "Invalid Email Address", + "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address", + "Verification Pending": "Verification Pending", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", + "Unable to add email address": "Unable to add email address", + "Unable to verify email address.": "Unable to verify email address.", + "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", + "Skip": "Skip", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.", + "Username not available": "Username not available", + "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", + "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", + "Username available": "Username available", + "To get started, please pick a username!": "To get started, please pick a username!", + "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", + "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.", + "Room contains unknown devices": "Room contains unknown devices", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", + "Unknown devices": "Unknown devices", + "Send anyway": "Send anyway", + "Private Chat": "Private Chat", + "Public Chat": "Public Chat", + "Custom": "Custom", + "Alias (optional)": "Alias (optional)", + "Name": "Name", + "Topic": "Topic", + "Make this room private": "Make this room private", + "Share message history with new users": "Share message history with new users", + "Encrypt room": "Encrypt room", + "You must register to use this functionality": "You must register to use this functionality", + "You must join the room to see its files": "You must join the room to see its files", + "There are no visible files in this room": "There are no visible files in this room", + "Add rooms to the group summary": "Add rooms to the group summary", + "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?", + "Add to summary": "Add to summary", + "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:", + "Add a Room": "Add a Room", + "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.", + "Add users to the group summary": "Add users to the group summary", + "Who would you like to add to this summary?": "Who would you like to add to this summary?", + "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:", + "Add a User": "Add a User", + "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.", + "Failed to upload image": "Failed to upload image", + "Failed to update group": "Failed to update group", + "Unable to accept invite": "Unable to accept invite", + "Unable to reject invite": "Unable to reject invite", + "Leave Group": "Leave Group", + "Leave %(groupName)s?": "Leave %(groupName)s?", + "Leave": "Leave", + "Unable to leave room": "Unable to leave room", "Add rooms to this group": "Add rooms to this group", - "Invites sent": "Invites sent", - "Your group invitations have been sent.": "Your group invitations have been sent.", - "Publish this community on your profile": "Publish this community on your profile", + "Featured Rooms:": "Featured Rooms:", + "Featured Users:": "Featured Users:", + "%(inviter)s has invited you to join this group": "%(inviter)s has invited you to join this group", + "You are a member of this group": "You are a member of this group", + "You are an administrator of this group": "You are an administrator of this group", "Community Member Settings": "Community Member Settings", + "Publish this community on your profile": "Publish this community on your profile", "Long Description (HTML)": "Long Description (HTML)", - "Community Settings": "Community Settings" + "Description": "Description", + "Community Settings": "Community Settings", + "This Home server does not support groups": "This Home server does not support groups", + "Reject invitation": "Reject invitation", + "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?", + "Failed to reject invitation": "Failed to reject invitation", + "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", + "Failed to leave room": "Failed to leave room", + "Signed Out": "Signed Out", + "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", + "Logout": "Logout", + "You are a member of these groups:": "You are a member of these groups:", + "Error whilst fetching joined groups": "Error whilst fetching joined groups", + "Create a new group": "Create a new group", + "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", + "Join an existing group": "Join an existing group", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.", + "You have no visible notifications": "You have no visible notifications", + "Scroll to bottom of page": "Scroll to bottom of page", + "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", + "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", + "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", + "%(count)s new messages|other": "%(count)s new messages", + "%(count)s new messages|one": "%(count)s new message", + "Active call": "Active call", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?", + "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?", + "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?", + "Some of your messages have not been sent.": "Some of your messages have not been sent.", + "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", + "Failed to upload file": "Failed to upload file", + "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big", + "Search failed": "Search failed", + "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(", + "No more results": "No more results", + "Unknown room %(roomId)s": "Unknown room %(roomId)s", + "Room": "Room", + "Failed to save settings": "Failed to save settings", + "Failed to reject invite": "Failed to reject invite", + "Fill screen": "Fill screen", + "Click to unmute video": "Click to unmute video", + "Click to mute video": "Click to mute video", + "Click to unmute audio": "Click to unmute audio", + "Click to mute audio": "Click to mute audio", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", + "Failed to load timeline position": "Failed to load timeline position", + "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others", + "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", + "Autoplay GIFs and videos": "Autoplay GIFs and videos", + "Hide read receipts": "Hide read receipts", + "Don't send typing notifications": "Don't send typing notifications", + "Always show message timestamps": "Always show message timestamps", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)", + "Hide avatar and display name changes": "Hide avatar and display name changes", + "Use compact timeline layout": "Use compact timeline layout", + "Hide removed messages": "Hide removed messages", + "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", + "Automatically replace plain text Emoji": "Automatically replace plain text Emoji", + "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing", + "Hide avatars in user and room mentions": "Hide avatars in user and room mentions", + "Disable big emoji in chat": "Disable big emoji in chat", + "Opt out of analytics": "Opt out of analytics", + "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", + "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device", + "Light theme": "Light theme", + "Dark theme": "Dark theme", + "Can't load user settings": "Can't load user settings", + "Server may be unavailable or overloaded": "Server may be unavailable or overloaded", + "Sign out": "Sign out", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.", + "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", + "Success": "Success", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", + "Remove Contact Information?": "Remove Contact Information?", + "Remove %(threePid)s?": "Remove %(threePid)s?", + "Unable to remove contact information": "Unable to remove contact information", + "Refer a friend to Riot:": "Refer a friend to Riot:", + "Interface Language": "Interface Language", + "User Interface": "User Interface", + "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", + "Disable inline URL previews by default": "Disable inline URL previews by default", + "": "", + "Import E2E room keys": "Import E2E room keys", + "Cryptography": "Cryptography", + "Device ID:": "Device ID:", + "Device key:": "Device key:", + "Ignored Users": "Ignored Users", + "Bug Report": "Bug Report", + "Found a bug?": "Found a bug?", + "Report it": "Report it", + "Analytics": "Analytics", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.", + "Labs": "Labs", + "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways", + "Use with caution": "Use with caution", + "Deactivate my account": "Deactivate my account", + "Clear Cache": "Clear Cache", + "Clear Cache and Reload": "Clear Cache and Reload", + "Updates": "Updates", + "Check for update": "Check for update", + "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites", + "Bulk Options": "Bulk Options", + "Desktop specific": "Desktop specific", + "Start automatically after system login": "Start automatically after system login", + "No media permissions": "No media permissions", + "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam", + "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.", + "No Microphones detected": "No Microphones detected", + "No Webcams detected": "No Webcams detected", + "Default Device": "Default Device", + "Microphone": "Microphone", + "Camera": "Camera", + "VoIP": "VoIP", + "Email": "Email", + "Add email address": "Add email address", + "Notifications": "Notifications", + "Profile": "Profile", + "Display name": "Display name", + "Account": "Account", + "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", + "Logged in as:": "Logged in as:", + "Access Token:": "Access Token:", + "click to reveal": "click to reveal", + "Homeserver is": "Homeserver is", + "Identity Server is": "Identity Server is", + "matrix-react-sdk version:": "matrix-react-sdk version:", + "riot-web version:": "riot-web version:", + "olm version:": "olm version:", + "Failed to send email": "Failed to send email", + "The email address linked to your account must be entered.": "The email address linked to your account must be entered.", + "A new password must be entered.": "A new password must be entered.", + "New passwords must match each other.": "New passwords must match each other.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", + "Once you've followed the link it contains, click below": "Once you've followed the link it contains, click below", + "I have verified my email address": "I have verified my email address", + "Your password has been reset": "Your password has been reset", + "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": "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", + "Return to login screen": "Return to login screen", + "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account", + "New password": "New password", + "Confirm your new password": "Confirm your new password", + "Send Reset Email": "Send Reset Email", + "Create an account": "Create an account", + "This Home Server does not support login using email address.": "This Home Server does not support login using email address.", + "Incorrect username and/or password.": "Incorrect username and/or password.", + "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.", + "The phone number entered looks invalid": "The phone number entered looks invalid", + "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", + "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.": "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.", + "Sorry, this homeserver is using a login which is not recognised ": "Sorry, this homeserver is using a login which is not recognised ", + "Login as guest": "Login as guest", + "Return to app": "Return to app", + "Failed to fetch avatar URL": "Failed to fetch avatar URL", + "Set a display name:": "Set a display name:", + "Upload an avatar:": "Upload an avatar:", + "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", + "Missing password.": "Missing password.", + "Passwords don't match.": "Passwords don't match.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "This doesn't look like a valid email address.", + "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.", + "You need to enter a user name.": "You need to enter a user name.", + "An unknown error occurred.": "An unknown error occurred.", + "I already have an account": "I already have an account", + "Displays action": "Displays action", + "Bans user with given id": "Bans user with given id", + "Unbans user with given id": "Unbans user with given id", + "Define the power level of a user": "Define the power level of a user", + "Deops user with given id": "Deops user with given id", + "Invites user with given id to current room": "Invites user with given id to current room", + "Joins room with given alias": "Joins room with given alias", + "Sets the room topic": "Sets the room topic", + "Kicks user with given id": "Kicks user with given id", + "Changes your display nickname": "Changes your display nickname", + "Searches DuckDuckGo for results": "Searches DuckDuckGo for results", + "Changes colour scheme of current room": "Changes colour scheme of current room", + "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple", + "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you", + "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward", + "Commands": "Commands", + "Results from DuckDuckGo": "Results from DuckDuckGo", + "Emoji": "Emoji", + "Users": "Users", + "unknown device": "unknown device", + "NOT verified": "NOT verified", + "verified": "verified", + "Verification": "Verification", + "Ed25519 fingerprint": "Ed25519 fingerprint", + "User ID": "User ID", + "Curve25519 identity key": "Curve25519 identity key", + "none": "none", + "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key", + "Algorithm": "Algorithm", + "unencrypted": "unencrypted", + "Decryption error": "Decryption error", + "Session ID": "Session ID", + "End-to-end encryption information": "End-to-end encryption information", + "Event information": "Event information", + "Sender device information": "Sender device information", + "Passphrases must match": "Passphrases must match", + "Passphrase must not be empty": "Passphrase must not be empty", + "Export room keys": "Export room keys", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", + "Enter passphrase": "Enter passphrase", + "Confirm passphrase": "Confirm passphrase", + "Export": "Export", + "Import room keys": "Import room keys", + "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.": "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.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", + "File to import": "File to import", + "Import": "Import" }