diff --git a/src/components/views/create_room/Presets.js b/src/components/views/create_room/Presets.js index 6d40be9d32..c4d7ca0cdb 100644 --- a/src/components/views/create_room/Presets.js +++ b/src/components/views/create_room/Presets.js @@ -17,6 +17,7 @@ limitations under the License. 'use strict'; var React = require('react'); +import { _t } from '../../../languageHandler'; var Presets = { PrivateChat: "private_chat", @@ -46,9 +47,9 @@ module.exports = React.createClass({ render: function() { return ( ); } diff --git a/src/components/views/create_room/RoomAlias.js b/src/components/views/create_room/RoomAlias.js index 6d311db593..e1cb7e4094 100644 --- a/src/components/views/create_room/RoomAlias.js +++ b/src/components/views/create_room/RoomAlias.js @@ -15,6 +15,7 @@ limitations under the License. */ var React = require('react'); +import { _t } from '../../../languageHandler'; module.exports = React.createClass({ displayName: 'RoomAlias', @@ -94,7 +95,7 @@ module.exports = React.createClass({ render: function() { return ( - ); diff --git a/src/components/views/dialogs/DeactivateAccountDialog.js b/src/components/views/dialogs/DeactivateAccountDialog.js index da74e6b716..e3b7cca078 100644 --- a/src/components/views/dialogs/DeactivateAccountDialog.js +++ b/src/components/views/dialogs/DeactivateAccountDialog.js @@ -86,7 +86,7 @@ export default class DeactivateAccountDialog extends React.Component { passwordBoxClass = 'error'; } - const okLabel = this.state.busy ? : 'Deactivate Account'; + const okLabel = this.state.busy ? : _t('Deactivate Account'); const okEnabled = this.state.confirmButtonEnabled && !this.state.busy; let cancelButton = null; diff --git a/src/components/views/dialogs/InteractiveAuthDialog.js b/src/components/views/dialogs/InteractiveAuthDialog.js index 945e0a9d69..363ce89b57 100644 --- a/src/components/views/dialogs/InteractiveAuthDialog.js +++ b/src/components/views/dialogs/InteractiveAuthDialog.js @@ -78,7 +78,7 @@ export default React.createClass({ - Dismiss + {_t("Dismiss")} ); diff --git a/src/components/views/dialogs/SessionRestoreErrorDialog.js b/src/components/views/dialogs/SessionRestoreErrorDialog.js index e7f6e19db7..a3eb7c6962 100644 --- a/src/components/views/dialogs/SessionRestoreErrorDialog.js +++ b/src/components/views/dialogs/SessionRestoreErrorDialog.js @@ -18,7 +18,7 @@ import React from 'react'; import sdk from '../../../index'; import SdkConfig from '../../../SdkConfig'; import Modal from '../../../Modal'; -import { _t } from '../../../languageHandler'; +import { _t, _tJsx } from '../../../languageHandler'; export default React.createClass({ @@ -44,8 +44,11 @@ export default React.createClass({ if (SdkConfig.get().bug_report_endpoint_url) { bugreport = ( -

Otherwise, - click here to send a bug report. +

+ {_tJsx( + "Otherwise, click here to send a bug report.", + /(.*?)<\/a>/, (sub) => {sub}, + )}

); } diff --git a/src/components/views/dialogs/UnknownDeviceDialog.js b/src/components/views/dialogs/UnknownDeviceDialog.js index 8f91b84519..6ebd0c3efc 100644 --- a/src/components/views/dialogs/UnknownDeviceDialog.js +++ b/src/components/views/dialogs/UnknownDeviceDialog.js @@ -145,7 +145,7 @@ export default React.createClass({ console.log("UnknownDeviceDialog closed by escape"); this.props.onFinished(); }} - title='Room contains unknown devices' + title={_t('Room contains unknown devices')} >

@@ -162,7 +162,7 @@ export default React.createClass({ this.props.onFinished(); Resend.resendUnsentEvents(this.props.room); }}> - Send anyway + {_t("Send anyway")} ); } else { return ( ); } diff --git a/src/components/views/voip/CallView.js b/src/components/views/voip/CallView.js index 6cab7531b7..b53794637f 100644 --- a/src/components/views/voip/CallView.js +++ b/src/components/views/voip/CallView.js @@ -18,6 +18,7 @@ var dis = require("../../../dispatcher"); var CallHandler = require("../../../CallHandler"); var sdk = require('../../../index'); var MatrixClientPeg = require("../../../MatrixClientPeg"); +import { _t } from '../../../languageHandler'; module.exports = React.createClass({ displayName: 'CallView', @@ -130,7 +131,11 @@ module.exports = React.createClass({ var voice; if (this.state.call && this.state.call.type === "voice" && this.props.showVoice) { var callRoom = MatrixClientPeg.get().getRoom(this.state.call.roomId); - voice =
Active call ({ callRoom.name })
; + voice = ( +
+ {_t("Active call (%(roomName)s)", {roomName: callRoom.name})} +
+ ); } return ( diff --git a/src/components/views/voip/IncomingCallBox.js b/src/components/views/voip/IncomingCallBox.js index 6cd19538f0..1b806fc5b3 100644 --- a/src/components/views/voip/IncomingCallBox.js +++ b/src/components/views/voip/IncomingCallBox.js @@ -17,6 +17,7 @@ var React = require('react'); var MatrixClientPeg = require('../../../MatrixClientPeg'); var dis = require("../../../dispatcher"); var CallHandler = require("../../../CallHandler"); +import { _t } from '../../../languageHandler'; module.exports = React.createClass({ displayName: 'IncomingCallBox', @@ -45,23 +46,36 @@ module.exports = React.createClass({ room = MatrixClientPeg.get().getRoom(this.props.incomingCall.roomId); } - var caller = room ? room.name : "unknown"; + var caller = room ? room.name : _t("unknown caller"); + + let incomingCallText = null; + if (this.props.incomingCall) { + if (this.props.incomingCall.type === "voice") { + incomingCallText = _t("Incoming voice call from %(name)s", {name: caller}); + } + else if (this.props.incomingCall.type === "video") { + incomingCallText = _t("Incoming video call from %(name)s", {name: caller}); + } + else { + incomingCallText = _t("Incoming call from %(name)s", {name: caller}); + } + } return (
- Incoming { this.props.incomingCall ? this.props.incomingCall.type : '' } call from { caller } + {incomingCallText}
- Decline + {_t("Decline")}
- Accept + {_t("Accept")}
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8dbbb98423..d29c26aa28 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -120,17 +120,21 @@ "zh-tw":"Chinese (Taiwan)", "zu":"Zulu", "A registered account is required for this action": "A registered account is required for this action", + "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", + "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", + "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", @@ -145,10 +149,10 @@ "Hide removed messages": "Hide removed messages", "Always show message timestamps": "Always show message timestamps", "Authentication": "Authentication", + "Alias (optional)": "Alias (optional)", "all room members": "all room members", "all room members, from the point they are invited": "all room members, from the point they are invited", "all room members, from the point they joined": "all room members, from the point they joined", - "an address": "an address", "and": "and", "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", "%(items)s and one other": "%(items)s and one other", @@ -197,13 +201,14 @@ "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key", "Clear Cache and Reload": "Clear Cache and Reload", "Clear Cache": "Clear Cache", - "Click here": "Click here", + "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.", @@ -218,16 +223,18 @@ "one": "%(count)s new message", "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", + "Decline": "Decline", "Decrypt %(text)s": "Decrypt %(text)s", "Decryption error": "Decryption error", "(default: %(userName)s)": "(default: %(userName)s)", @@ -244,6 +251,7 @@ "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 Chat": "Direct Chat", "Direct chats": "Direct chats", + "Disable Notifications": "Disable Notifications", "disabled": "disabled", "Disable inline URL previews by default": "Disable inline URL previews by default", "Disable markdown formatting": "Disable markdown formatting", @@ -252,6 +260,7 @@ "Displays action": "Displays action", "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", @@ -261,9 +270,14 @@ "Email, name or matrix ID": "Email, name or matrix ID", "Emoji": "Emoji", "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", @@ -301,6 +315,7 @@ "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", @@ -331,6 +346,9 @@ "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", "Interface Language": "Interface Language", @@ -343,11 +361,11 @@ "Invited": "Invited", "Invites": "Invites", "Invites user with given id to current room": "Invites user with given id to current room", - "is a": "is a", "'%(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", @@ -358,11 +376,12 @@ "Kick": "Kick", "Kicks user with given id": "Kicks user with given id", "Labs": "Labs", + "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", + "Level:": "Level:", "List this room in %(domain)s's room directory?": "List this room in %(domain)s's room directory?", "Local addresses for this room:": "Local addresses for this room:", "Logged in as:": "Logged in as:", @@ -401,6 +420,7 @@ "": "", "NOT verified": "NOT verified", "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", @@ -410,6 +430,7 @@ "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", @@ -422,9 +443,12 @@ "Power level must be positive integer.": "Power level must be positive integer.", "Press": "Press", "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", "Refer a friend to Riot:": "Refer a friend to Riot:", "Register": "Register", @@ -432,6 +456,7 @@ "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).", @@ -450,7 +475,10 @@ "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", @@ -458,8 +486,11 @@ "Search": "Search", "Search failed": "Search failed", "Searches DuckDuckGo for results": "Searches DuckDuckGo for results", + "Searching known users": "Searching known users", + "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", @@ -476,9 +507,11 @@ "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", "Setting a user name will create a fresh account": "Setting a user name will create a fresh account", "Settings": "Settings", "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", @@ -490,6 +523,7 @@ "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", @@ -500,7 +534,7 @@ "The main address for this room is": "The main address for this room is", "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 action cannot be performed by a guest user. Please register to be able to do this": "This action cannot be performed by a guest user. Please register to be able to do this", + "This action cannot be performed by a guest user. Please register to be able to do this.": "This action cannot be performed by a guest user. Please register to be able to do this.", "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?", @@ -509,15 +543,16 @@ "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:", "There was a problem logging in.": "There was a problem logging in.", "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 invitation?": "this invitation?", "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", @@ -527,9 +562,8 @@ "to demote": "to demote", "to favourite": "to favourite", "To invite users into the room": "To invite users into the room", - "to join the discussion": "to join the discussion", "To kick users": "To kick users", - "To link to a room it must have": "To link to a room it must have", + "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 remove other users' messages": "To remove other users' messages", "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account", @@ -551,11 +585,15 @@ "Unable to verify email address.": "Unable to verify email address.", "Unban": "Unban", "%(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.", "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 command": "Unknown command", "unknown device": "unknown device", "unknown error code": "unknown error code", @@ -563,8 +601,10 @@ "Unknown (user, device) pair:": "Unknown (user, device) pair:", "unknown": "unknown", "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", "one": "Uploading %(filename)s and %(count)s other", @@ -575,18 +615,22 @@ "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", @@ -603,19 +647,23 @@ "Who would you like to communicate with?": "Who would you like to communicate with?", "Searching known users": "Searching known users", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", - "Would you like to": "Would you like to", + "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:", "You are already in a call.": "You are already in a call.", "You're not in any rooms yet! Press": "You're not in any rooms yet! Press", - "You are trying to access %(roomName)s": "You are trying to access %(roomName)s", + "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.", "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 entered an invalid contact. Try using their Matrix ID or email address.": "You have entered an invalid contact. Try using their Matrix ID or email address.", "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.", @@ -628,7 +676,8 @@ "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", + "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.", "Sun": "Sun", "Mon": "Mon", "Tue": "Tue", @@ -675,7 +724,10 @@ "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", "Auto-complete": "Auto-complete", "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.", - "(~%(searchCount)s results)": "(~%(searchCount)s results)", + "(~%(count)s results)": { + "one": "(~%(count)s result)", + "other": "(~%(count)s results)" + }, "Cancel": "Cancel", "or": "or", "Active call": "Active call", @@ -781,6 +833,7 @@ "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.",