update translation to match android - part 1

pull/1306/head
Audric Ackermann 5 years ago
parent 730c520b22
commit 70b739d24f
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4

@ -1,27 +1,27 @@
{ {
"privacyPolicy": { "privacyPolicy": {
"message": "Terms & Privacy Policy", "message": "Terms & Privacy Policy",
"description": "Shown in the about box for the link to https://getsession.org/privacy-policy/" "description": "Shown in the about box for the link to https://getsession.org/privacy-policy/",
"androidKey": "RegistrationActivity_terms_and_privacy"
}, },
"copyErrorAndQuit": { "copyErrorAndQuit": {
"message": "Copy error and quit", "message": "Copy error and quit",
"description": "Shown in the top-level error popup, allowing user to copy the error text and close the app" "description": "Shown in the top-level error popup, allowing user to copy the error text and close the app"
}, },
"unknownGroup": { "unknown": {
"message": "Unknown group", "message": "Unknown",
"description": "Shown as the name of a group if we don't have any information about it" "description": "Shown as the name of a group if we don't have any information about it",
"androidKey": "NotificationChannel_missing_display_name"
}, },
"databaseError": { "databaseError": {
"message": "Database Error", "message": "Database Error",
"description": "Shown in a popup if the database cannot start up properly" "description": "Shown in a popup if the database cannot start up properly"
}, },
"deleteAndRestart": {
"message": "Delete all data and restart",
"description": "Shown in a popup if the database cannot start up properly; allows user to dalete database and restart"
},
"mainMenuFile": { "mainMenuFile": {
"message": "&File", "message": "&File",
"description": "The label that is used for the File menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination." "description": "The label that is used for the File menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination.",
"androidKey": "attachment_type_selector__file_description",
"addStart": "&"
}, },
"mainMenuEdit": { "mainMenuEdit": {
"message": "&Edit", "message": "&Edit",
@ -29,7 +29,10 @@
}, },
"mainMenuView": { "mainMenuView": {
"message": "&View", "message": "&View",
"description": "The label that is used for the View menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination." "description": "The label that is used for the View menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination.",
"androidKey": "message_recipients_list_item__view",
"addStart": "&",
"camelCase": true
}, },
"mainMenuWindow": { "mainMenuWindow": {
"message": "&Window", "message": "&Window",
@ -37,7 +40,9 @@
}, },
"mainMenuHelp": { "mainMenuHelp": {
"message": "&Help", "message": "&Help",
"description": "The label that is used for the Help menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination." "description": "The label that is used for the Help menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination.",
"androidKey": "text_secure_normal__help",
"addStart": "&"
}, },
"appMenuHide": { "appMenuHide": {
"message": "Hide", "message": "Hide",
@ -57,7 +62,9 @@
}, },
"editMenuUndo": { "editMenuUndo": {
"message": "Undo", "message": "Undo",
"description": "Edit menu command to remove recently-typed text" "description": "Edit menu command to remove recently-typed text",
"androidKey": "ConversationListFragment_undo",
"camelCase": true
}, },
"editMenuRedo": { "editMenuRedo": {
"message": "Redo", "message": "Redo",
@ -69,7 +76,8 @@
}, },
"editMenuCopy": { "editMenuCopy": {
"message": "Copy", "message": "Copy",
"description": "Edit menu command to add selected text to clipboard" "description": "Edit menu command to add selected text to clipboard",
"androidKey": "copy"
}, },
"editMenuPaste": { "editMenuPaste": {
"message": "Paste", "message": "Paste",
@ -81,11 +89,13 @@
}, },
"editMenuDelete": { "editMenuDelete": {
"message": "Delete", "message": "Delete",
"description": "Edit menu command to remove the selected text" "description": "Edit menu command to remove the selected text",
"androidKey": "delete"
}, },
"editMenuSelectAll": { "editMenuSelectAll": {
"message": "Select All", "message": "Select All",
"description": "Edit menu comand to select all of the text in selected text box" "description": "Edit menu comand to select all of the text in selected text box",
"androidKey": "conversation_list_batch__menu_select_all"
}, },
"editMenuStartSpeaking": { "editMenuStartSpeaking": {
"message": "Start speaking", "message": "Start speaking",
@ -149,7 +159,8 @@
}, },
"loading": { "loading": {
"message": "Loading...", "message": "Loading...",
"description": "Message shown on the loading screen before we've loaded any messages" "description": "Message shown on the loading screen before we've loaded any messages",
"androidKey": "ConversationListFragment_loading"
}, },
"optimizingApplication": { "optimizingApplication": {
"message": "Optimizing application...", "message": "Optimizing application...",
@ -223,15 +234,19 @@
}, },
"view": { "view": {
"message": "View", "message": "View",
"description": "Used as a label on a button allowing user to see more information" "description": "Used as a label on a button allowing user to see more information",
"androidKey": "message_recipients_list_item__view",
"camelCase": true
}, },
"youLeftTheGroup": { "youLeftTheGroup": {
"message": "You left the group", "message": "You have left the group.",
"description": "Displayed when a user can't send a message because they have left the group" "description": "Displayed when a user can't send a message because they have left the group",
"androidKey": "MessageRecord_left_group"
}, },
"youGotKickedFromGroup": { "youGotKickedFromGroup": {
"message": "You were removed from the group", "message": "You were removed from the group",
"description": "Displayed when a user can't send a message because they have left the group" "description": "Displayed when a user can't send a message because they have left the group",
"androidKey": "GroupUtil_you_were_removed_from_group"
}, },
"unreadMessage": { "unreadMessage": {
"message": "$count$ Unread Message", "message": "$count$ Unread Message",
@ -241,7 +256,9 @@
"content": "$1", "content": "$1",
"example": "5" "example": "5"
} }
} },
"androidKey": "ConversationAdapter_n_unread_messages",
"androidKeyCount": "one"
}, },
"unreadMessages": { "unreadMessages": {
"message": "$count$ Unread Messages", "message": "$count$ Unread Messages",
@ -251,46 +268,64 @@
"content": "$1", "content": "$1",
"example": "5" "example": "5"
} }
} },
"androidKey": "ConversationAdapter_n_unread_messages",
"androidKeyCount": "other"
}, },
"youMarkedAsVerified": { "youMarkedAsVerified": {
"message": "You marked your Safety Number with $name$ as verified", "message": "You marked your safety number with $name$ verified",
"description": "Shown in the conversation history when the user marks a contact as verified.", "description": "Shown in the conversation history when the user marks a contact as verified.",
"placeholders": { "placeholders": {
"name": { "name": {
"content": "$1", "content": "$1",
"example": "Bob" "example": "Bob"
} }
},
"androidKey": "MessageRecord_you_marked_your_safety_number_with_s_verified",
"androidReplace": {
"%s": "$name$"
} }
}, },
"youMarkedAsNotVerified": { "youMarkedAsNotVerified": {
"message": "You marked your Safety Number with $name$ as not verified", "message": "You marked your safety number with $name$ unverified",
"description": "Shown in the conversation history when the user marks a contact as not verified, whether on the Safety Number screen or by dismissing a banner or dialog.", "description": "Shown in the conversation history when the user marks a contact as not verified, whether on the Safety Number screen or by dismissing a banner or dialog.",
"placeholders": { "placeholders": {
"name": { "name": {
"content": "$1", "content": "$1",
"example": "Bob" "example": "Bob"
} }
},
"androidKey": "MessageRecord_you_marked_your_safety_number_with_s_unverified",
"androidReplace": {
"%s": "$name$"
} }
}, },
"youMarkedAsVerifiedOtherDevice": { "youMarkedAsVerifiedOtherDevice": {
"message": "You marked your Safety Number with $name$ as verified from another device", "message": "You marked your safety number with $name$ verified from another device",
"description": "Shown in the conversation history when we discover that the user marked a contact as verified on another device.", "description": "Shown in the conversation history when we discover that the user marked a contact as verified on another device.",
"placeholders": { "placeholders": {
"name": { "name": {
"content": "$1", "content": "$1",
"example": "Bob" "example": "Bob"
} }
},
"androidKey": "MessageRecord_you_marked_your_safety_number_with_s_verified_from_another_device",
"androidReplace": {
"%s": "$name$"
} }
}, },
"youMarkedAsNotVerifiedOtherDevice": { "youMarkedAsNotVerifiedOtherDevice": {
"message": "You marked your Safety Number with $name$ as not verified from another device", "message": "You marked your safety number with $name$ unverified from another device",
"description": "Shown in the conversation history when we discover that the user marked a contact as not verified on another device.", "description": "Shown in the conversation history when we discover that the user marked a contact as not verified on another device.",
"placeholders": { "placeholders": {
"name": { "name": {
"content": "$1", "content": "$1",
"example": "Bob" "example": "Bob"
} }
},
"androidKey": "MessageRecord_you_marked_your_safety_number_with_s_unverified_from_another_device",
"androidReplace": {
"%s": "$name$"
} }
}, },
"membersNeedingVerification": { "membersNeedingVerification": {
@ -298,20 +333,26 @@
"description": "When there are multiple previously-verified group members with safety number changes, a banner will be shown. The list of contacts with safety number changes is shown, and this text introduces that list." "description": "When there are multiple previously-verified group members with safety number changes, a banner will be shown. The list of contacts with safety number changes is shown, and this text introduces that list."
}, },
"changedSinceVerifiedTitle": { "changedSinceVerifiedTitle": {
"message": "Safety Number Changed" "message": "Safety Number Changed",
"androidKey": "ThreadRecord_safety_number_changed",
"wordCapitalize": true
}, },
"changedSinceVerifiedMultiple": { "changedSinceVerifiedMultiple": {
"message": "Your safety numbers with multiple group members have changed since you last verified. This could mean that someone is trying to intercept your communication or that they have simply reinstalled Session.", "message": "Your safety numbers with multiple group members have changed since you last verified. This could mean that someone is trying to intercept your communication or that they have simply reinstalled Session.",
"description": "Shown on confirmation dialog when user attempts to send a message" "description": "Shown on confirmation dialog when user attempts to send a message"
}, },
"changedSinceVerified": { "changedSinceVerified": {
"message": "Your safety number with $name$ has changed since you last verified. This could mean that someone is trying to intercept your communication or that $name$ has simply reinstalled Session.", "message": "Your safety number with $name$ has changed and is no longer verified. This could either mean that someone is trying to intercept your communication, or that $name$ simply reinstalled Session",
"description": "Shown on confirmation dialog when user attempts to send a message", "description": "Shown on confirmation dialog when user attempts to send a message",
"placeholders": { "placeholders": {
"name": { "name": {
"content": "$1", "content": "$1",
"example": "Bob" "example": "Bob"
} }
},
"androidKey": "IdentityUtil_unverified_dialog_one",
"androidReplace": {
"%1$s": "$name$"
} }
}, },
"changedRightAfterVerify": { "changedRightAfterVerify": {
@ -329,17 +370,22 @@
"description": "Shown on confirmation dialog when user attempts to send a message" "description": "Shown on confirmation dialog when user attempts to send a message"
}, },
"changedRecently": { "changedRecently": {
"message": "Your safety number with $name$ has changed recently. This could mean that someone is trying to intercept your communication or that $name$ has simply reinstalled Session.", "message": "Your safety number with $name$ has changed. This could either mean that someone is trying to intercept your communication, or that $name$ simply reinstalled Session.",
"description": "Shown on confirmation dialog when user attempts to send a message", "description": "Shown on confirmation dialog when user attempts to send a message",
"placeholders": { "placeholders": {
"name": { "name": {
"content": "$1", "content": "$1",
"example": "Bob" "example": "Bob"
} }
},
"androidKey": "ConfirmIdentityDialog_your_safety_number_with_s_has_changed",
"androidReplace": {
"%1$s": "$name$",
"%2$s": "$name$"
} }
}, },
"identityKeyErrorOnSend": { "identityKeyErrorOnSend": {
"message": "Your safety number with $name$ has changed. This could either mean that someone is trying to intercept your communication or that $name$ has simply reinstalled Session. You may wish to verify your saftey number with this contact.", "message": "Your safety number with $name$ has changed. This could either mean that someone is trying to intercept your communication or that $name$ has simply reinstalled Session.",
"description": "Shown when user clicks on a failed recipient in the message detail view after an identity key change", "description": "Shown when user clicks on a failed recipient in the message detail view after an identity key change",
"placeholders": { "placeholders": {
"name": { "name": {
@ -348,6 +394,17 @@
} }
} }
}, },
"youMayWishToVerifyContact": {
"message": "You may wish to verify your safety number with this contact.",
"description": "Shown when user clicks on a failed recipient in the message detail view after an identity key change",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
},
"androidKey": "WebRtcCallScreen_you_may_wish_to_verify_this_contact"
},
"sendAnyway": { "sendAnyway": {
"message": "Send Anyway", "message": "Send Anyway",
"description": "Used on a warning dialog to make it clear that it might be risky to send the message." "description": "Used on a warning dialog to make it clear that it might be risky to send the message."
@ -377,11 +434,13 @@
"description": "Link to open the issue tracker" "description": "Link to open the issue tracker"
}, },
"gotIt": { "gotIt": {
"message": "Got it!", "message": "Got it",
"description": "Label for a button that dismisses a dialog. The user clicks it to confirm that they understand the message in the dialog." "description": "Label for a button that dismisses a dialog. The user clicks it to confirm that they understand the message in the dialog.",
"androidKey": "ExperienceUpgradeActivity_got_it"
}, },
"submit": { "submit": {
"message": "Submit" "message": "Submit",
"androidKey": "log_submit_activity__button_submit"
}, },
"verify": { "verify": {
"message": "Mark as verified" "message": "Mark as verified"
@ -390,13 +449,17 @@
"message": "Mark as not verified" "message": "Mark as not verified"
}, },
"isVerified": { "isVerified": {
"message": "You have verified your safety number with $name$.", "message": "You marked your safety number with $name$ verified",
"description": "Summary state shown at top of the safety number screen if user has verified contact.", "description": "Summary state shown at top of the safety number screen if user has verified contact.",
"placeholders": { "placeholders": {
"name": { "name": {
"content": "$1", "content": "$1",
"example": "Bob" "example": "Bob"
} }
},
"androidKey": "MessageRecord_you_marked_your_safety_number_with_s_verified",
"androidReplace": {
"%s": "$name$"
} }
}, },
"isNotVerified": { "isNotVerified": {
@ -410,46 +473,56 @@
} }
}, },
"verified": { "verified": {
"message": "Verified" "message": "Verified",
"androidKey": "verify_display_fragment__verified"
}, },
"newIdentity": { "newIdentity": {
"message": "New safety number", "message": "New safety number",
"description": "Header for a key change dialog" "description": "Header for a key change dialog",
"androidKey": "MessageDetailsRecipient_new_safety_number"
}, },
"incomingError": { "incomingError": {
"message": "Error handling incoming message" "message": "Error handling incoming message"
}, },
"media": { "media": {
"message": "Media", "message": "Media",
"description": "Header of the default pane in the media gallery, showing images and videos" "description": "Header of the default pane in the media gallery, showing images and videos",
"androidKey": "MediaOverviewActivity_Media"
}, },
"mediaEmptyState": { "mediaEmptyState": {
"message": "You dont have any media in this conversation", "message": "No media",
"description": "Message shown to user in the media gallery when there are no messages with media attachments (images or video)" "description": "Message shown to user in the media gallery when there are no messages with media attachments (images or video)",
"androidKey": "media_overview_activity__no_media"
}, },
"documents": { "documents": {
"message": "Documents", "message": "Documents",
"description": "Header of the secondary pane in the media gallery, showing every non-media attachment" "description": "Header of the secondary pane in the media gallery, showing every non-media attachment",
"androidKey": "MediaOverviewActivity_Documents"
}, },
"documentsEmptyState": { "documentsEmptyState": {
"message": "You dont have any documents in this conversation", "message": "No documents",
"description": "Message shown to user in the media gallery when there are no messages with document attachments (anything other than images or video)" "description": "Message shown to user in the media gallery when there are no messages with document attachments (anything other than images or video)",
"androidKey": "media_overview_documents_fragment__no_documents_found"
}, },
"today": { "today": {
"message": "Today", "message": "Today",
"description": "Section header in the media gallery" "description": "Section header in the media gallery",
"androidKey": "BucketedThreadMedia_Today"
}, },
"yesterday": { "yesterday": {
"message": "Yesterday", "message": "Yesterday",
"description": "Section header in the media gallery" "description": "Section header in the media gallery",
"androidKey": "BucketedThreadMedia_Yesterday"
}, },
"thisWeek": { "thisWeek": {
"message": "This Week", "message": "This Week",
"description": "Section header in the media gallery" "description": "Section header in the media gallery",
"androidKey": "BucketedThreadMedia_This_week"
}, },
"thisMonth": { "thisMonth": {
"message": "This Month", "message": "This Month",
"description": "Section header in the media gallery" "description": "Section header in the media gallery",
"androidKey": "BucketedThreadMedia_This_month"
}, },
"voiceMessage": { "voiceMessage": {
"message": "Voice Message", "message": "Voice Message",
@ -459,10 +532,6 @@
"message": "For security reasons, this file type cannot be sent", "message": "For security reasons, this file type cannot be sent",
"description": "Shown in toast when user attempts to send .exe file, for example" "description": "Shown in toast when user attempts to send .exe file, for example"
}, },
"loadingPreview": {
"message": "Loading Preview...",
"description": "Shown while Session Desktop is fetching metadata for a url in composition area"
},
"stagedPreviewThumbnail": { "stagedPreviewThumbnail": {
"message": "Draft thumbnail link preview for $domain$", "message": "Draft thumbnail link preview for $domain$",
"description": "Shown while Session Desktop is fetching metadata for a url in composition area", "description": "Shown while Session Desktop is fetching metadata for a url in composition area",
@ -506,18 +575,17 @@
"description": "An error popup when the user has attempted to add an attachment" "description": "An error popup when the user has attempted to add an attachment"
}, },
"fileSizeWarning": { "fileSizeWarning": {
"message": "Sorry, the selected attachment is too large" "message": "Attachment exceeds size limits for the type of message you're sending.",
"androidKey": "ConversationActivity_attachment_exceeds_size_limits"
}, },
"unableToLoadAttachment": { "unableToLoadAttachment": {
"message": "Unable to load attachment." "message": "Sorry, there was an error setting your attachment.",
}, "androidKey": "ConversationActivity_sorry_there_was_an_error_setting_your_attachment"
"disconnected": {
"message": "Disconnected",
"description": "Displayed when the desktop client cannot connect to the server."
}, },
"connecting": { "connecting": {
"message": "Connecting", "message": "Connecting...",
"description": "Displayed when the desktop client is currently connecting to the server." "description": "Displayed when the desktop client is currently connecting to the server.",
"androidKey": "CallNotificationBuilder_connecting"
}, },
"offline": { "offline": {
"message": "Offline", "message": "Offline",
@ -556,13 +624,10 @@
"message": "Report an Issue", "message": "Report an Issue",
"description": "Item under the Help menu, takes you to GitHub new issue form (title case)" "description": "Item under the Help menu, takes you to GitHub new issue form (title case)"
}, },
"signalDesktopPreferences": { "about": {
"message": "Session Preferences", "message": "About",
"description": "Title of the window that pops up with Session Desktop preferences in it" "description": "Item under the Help menu, which opens a small about window",
}, "androidKey": "recipient_preferences__about"
"aboutSignalDesktop": {
"message": "About Session",
"description": "Item under the Help menu, which opens a small about window"
}, },
"speech": { "speech": {
"message": "Speech", "message": "Speech",
@ -570,49 +635,54 @@
}, },
"show": { "show": {
"message": "Show", "message": "Show",
"description": "Command under Window menu, to show the window" "description": "Command under Window menu, to show the window",
"androidKey": "preferences_notifications__show"
}, },
"quit": { "sessionMessenger": {
"message": "Quit", "message": "Session",
"description": "Command in the tray icon menu, to quit the application" "androidKey": "activity_landing_title"
},
"lokiMessenger": {
"message": "Session"
}, },
"search": { "search": {
"message": "Search", "message": "Search",
"description": "Placeholder text in the search input" "description": "Placeholder text in the search input",
"androidKey": "SearchToolbar_search"
}, },
"noSearchResults": { "noSearchResults": {
"message": "No results for \"$searchTerm$\"", "message": "No results found for \"$searchTerm$\"",
"description": "Shown in the search left pane when no results were found", "description": "Shown in the search left pane when no results were found",
"placeholders": { "placeholders": {
"searchTerm": { "searchTerm": {
"content": "$1", "content": "$1",
"example": "dog" "example": "dog"
} }
},
"androidKey": "SearchFragment_no_results",
"androidReplace": {
"'%s'": "\"$searchTerm$\""
} }
}, },
"conversationsHeader": { "conversationsHeader": {
"message": "Conversations", "message": "Conversations",
"description": "Shown to separate the types of search results" "description": "Shown to separate the types of search results",
"androidKey": "SearchFragment_header_conversations"
}, },
"contactsHeader": { "contactsHeader": {
"message": "Contacts", "message": "Contacts",
"description": "Shown to separate the types of search results" "description": "Shown to separate the types of search results",
"androidKey": "SearchFragment_header_contacts"
}, },
"messagesHeader": { "messagesHeader": {
"message": "Conversations", "message": "Messages",
"description": "Shown to separate the types of search results" "description": "Shown to separate the types of search results",
"androidKey": "SearchFragment_header_messages"
}, },
"settingsHeader": { "settingsHeader": {
"message": "Settings" "message": "Settings",
"androidKey": "activity_settings_title"
}, },
"welcomeToSession": { "welcomeToSession": {
"message": "Welcome to Session" "message": "Welcome to Session.",
}, "androidKey": "ExperienceUpgradeActivity_welcome_to_signal_dgaf"
"selectAContact": {
"message": "Select a contact or group to start chatting."
}, },
"typingAlt": { "typingAlt": {
"message": "Typing animation for this conversation", "message": "Typing animation for this conversation",
@ -628,21 +698,20 @@
} }
} }
}, },
"sendMessageToContact": {
"message": "Send Message",
"description": "Shown when you are sent a contact and that contact has a session"
},
"home": { "home": {
"message": "home", "message": "Home",
"description": "Shown on contact detail screen as a label for an address/phone/email" "description": "Shown on contact detail screen as a label for an address/phone/email",
"androidKey": "ContactShareEditActivity_type_home"
}, },
"work": { "work": {
"message": "work", "message": "Work",
"description": "Shown on contact detail screen as a label for an address/phone/email" "description": "Shown on contact detail screen as a label for an address/phone/email",
"androidKey": "ContactShareEditActivity_type_work"
}, },
"mobile": { "mobile": {
"message": "mobile", "message": "Mobile",
"description": "Shown on contact detail screen as a label for aa phone or email" "description": "Shown on contact detail screen as a label for a phone or email",
"androidKey": "ContactShareEditActivity_type_mobile"
}, },
"email": { "email": {
"message": "email", "message": "email",
@ -670,15 +739,18 @@
}, },
"replyToMessage": { "replyToMessage": {
"message": "Reply to Message", "message": "Reply to Message",
"description": "Shown in triple-dot menu next to message to allow user to start crafting a message with a quotation" "description": "Shown in triple-dot menu next to message to allow user to start crafting a message with a quotation",
"androidKey": "conversation_context__menu_reply_to_message"
}, },
"originalMessageNotFound": { "originalMessageNotFound": {
"message": "Original message not found", "message": "Original message not found",
"description": "Shown in quote if reference message was not found as message was initially downloaded and processed" "description": "Shown in quote if reference message was not found as message was initially downloaded and processed",
"androidKey": "ConversationFragment_quoted_message_not_found"
}, },
"originalMessageNotAvailable": { "originalMessageNotAvailable": {
"message": "Original message no longer available", "message": "Original message no longer available",
"description": "Shown in toast if user clicks on quote that references message no longer in database" "description": "Shown in toast if user clicks on quote that references message no longer in database",
"androidKey": "ConversationFragment_quoted_message_no_longer_available"
}, },
"messageFoundButNotLoaded": { "messageFoundButNotLoaded": {
"message": "Original message found, but not loaded. Scroll up to load it.", "message": "Original message found, but not loaded. Scroll up to load it.",
@ -690,11 +762,13 @@
}, },
"you": { "you": {
"message": "You", "message": "You",
"description": "In Android theme, shown in quote if you or someone else replies to you" "description": "In Android theme, shown in quote if you or someone else replies to you",
"androidKey": "MediaPreviewActivity_you"
}, },
"audioPermissionNeeded": { "audioPermissionNeeded": {
"message": "To send audio messages, allow Session to access your microphone.", "message": "Session needs microphone access to send audio messages.",
"description": "Shown if the user attempts to send an audio message without audio permssions turned on" "description": "Shown if the user attempts to send an audio message without audio permssions turned on",
"androidKey": "ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone"
}, },
"allowAccess": { "allowAccess": {
"message": "Allow Access", "message": "Allow Access",
@ -702,15 +776,18 @@
}, },
"audio": { "audio": {
"message": "Audio", "message": "Audio",
"description": "Shown in a quotation of a message containing an audio attachment if no text was originally provided with that attachment" "description": "Shown in a quotation of a message containing an audio attachment if no text was originally provided with that attachment",
"androidKey": "QuoteView_audio"
}, },
"video": { "video": {
"message": "Video", "message": "Video",
"description": "Shown in a quotation of a message containing a video if no text was originally provided with that video" "description": "Shown in a quotation of a message containing a video if no text was originally provided with that video",
"androidKey": "QuoteView_video"
}, },
"photo": { "photo": {
"message": "Photo", "message": "Photo",
"description": "Shown in a quotation of a message containing a photo if no text was originally provided with that image" "description": "Shown in a quotation of a message containing a photo if no text was originally provided with that image",
"androidKey": "QuoteView_photo"
}, },
"cannotUpdate": { "cannotUpdate": {
"message": "Cannot Update", "message": "Cannot Update",
@ -721,43 +798,50 @@
"description": "Shown if a general error happened while trying to install update package" "description": "Shown if a general error happened while trying to install update package"
}, },
"ok": { "ok": {
"message": "OK" "message": "OK",
}, "androidKey": "activity_settings_seed_dialog_ok_button_title"
"enter": {
"message": "Enter"
}, },
"yes": { "yes": {
"message": "Yes" "message": "Yes",
"androidKey": "ConversationActivity_yes"
}, },
"cancel": { "cancel": {
"message": "Cancel" "message": "Cancel",
"androidKey": "view_qr_code_cancel_button_title"
}, },
"close": { "close": {
"message": "Close" "message": "Close"
}, },
"continue": { "continue": {
"message": "Continue" "message": "Continue",
"androidKey": "RegistrationActivity_continue"
}, },
"devicePairingRequestReceivedLimitTitle": { "devicePairingRequestReceivedLimitTitle": {
"message": "Device linking limit reached." "message": "Device Limit Reached",
"androidKey": "activity_linked_devices_multi_device_limit_reached_dialog_title"
}, },
"devicePairingRequestReceivedLimitDescription": { "devicePairingRequestReceivedLimitDescription": {
"message": "To change your linked devices, please unlink a device first." "message": "Sorry, you have too many devices linked already, try removing some",
"androidKey": "DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already"
}, },
"devicePairingRequestReceivedNoListenerTitle": { "devicePairingRequestReceivedNoListenerTitle": {
"message": "Device linking request received." "message": "Linking Request Received",
"androidKey": "dialog_link_device_master_mode_title_2"
}, },
"devicePairingRequestReceivedNoListenerDescription": { "devicePairingRequestReceivedNoListenerDescription": {
"message": "Device linking request received but you are not on the device linking screen. \nGo to Settings > Device > Link New Device." "message": "Device linking request received but you are not on the device linking screen. \nGo to Settings > Device > Link New Device."
}, },
"waitingForDeviceToRegister": { "waitingForDeviceToRegister": {
"message": "Waiting for device to register..." "message": "Waiting for Device",
"androidKey": "dialog_link_device_master_mode_title_1"
}, },
"pairNewDevicePrompt": { "pairNewDevicePrompt": {
"message": "Scan the QR Code on your other device" "message": "Scan the QR code displayed on the device to link",
"androidKey": "device_add_fragment__scan_the_qr_code_displayed_on_the_device_to_link"
}, },
"noPairedDevices": { "noPairedDevices": {
"message": "No linked devices" "message": "You don't have any linked devices yet",
"androidKey": "device_list_fragment__no_devices_linked"
}, },
"deviceIsSecondaryNoPairing": { "deviceIsSecondaryNoPairing": {
"message": "This device is a secondary device and so cannot be linked." "message": "This device is a secondary device and so cannot be linked."
@ -766,7 +850,8 @@
"message": "A pairing request is already ongoing. Restart the app if it takes too long." "message": "A pairing request is already ongoing. Restart the app if it takes too long."
}, },
"allowPairing": { "allowPairing": {
"message": "Allow Linking" "message": "Authorize",
"androidKey": "view_device_linking_authorize_button_title"
}, },
"allowPairingWithDevice": { "allowPairingWithDevice": {
"message": "Allow linking with this device?" "message": "Allow linking with this device?"
@ -781,7 +866,9 @@
"message": "Please confirm you want to unlink the following device:" "message": "Please confirm you want to unlink the following device:"
}, },
"unpairDevice": { "unpairDevice": {
"message": "Unlink Device" "message": "Unlink Device",
"androidKey": "fragment_device_list_unlink_device_title",
"wordCapitalize": true
}, },
"unpairDeviceWarning": { "unpairDeviceWarning": {
"message": "Are you sure you want to unlink this device?", "message": "Are you sure you want to unlink this device?",
@ -792,22 +879,15 @@
"description": "Warning description for device unlinking in settings view" "description": "Warning description for device unlinking in settings view"
}, },
"deviceUnpaired": { "deviceUnpaired": {
"message": "Device Unlinked" "message": "Your device was unlinked successfully",
}, "androidKey": "activity_linked_devices_unlinking_successful_message"
"clear": {
"message": "Clear"
},
"copySeed": {
"message": "Copy Seed"
},
"confirm": {
"message": "Confirm"
}, },
"error": { "error": {
"message": "Error" "message": "Error"
}, },
"delete": { "delete": {
"message": "Delete" "message": "Delete",
"androidKey": "delete"
}, },
"deletePublicWarning": { "deletePublicWarning": {
"message": "Are you sure? This will permanently remove this message for everyone in this open group." "message": "Are you sure? This will permanently remove this message for everyone in this open group."
@ -826,7 +906,9 @@
"description": "Toast message explaining that the user doens't have the rights to delete other people's messages." "description": "Toast message explaining that the user doens't have the rights to delete other people's messages."
}, },
"deleteThisMessage": { "deleteThisMessage": {
"message": "Delete this message" "message": "Delete message",
"androidKey": "conversation_context__menu_delete_message",
"description": "action visible in MessageDetail screen"
}, },
"from": { "from": {
"message": "From", "message": "From",
@ -838,11 +920,13 @@
}, },
"sent": { "sent": {
"message": "Sent", "message": "Sent",
"description": "Label for the time a message was sent" "description": "Label for the time a message was sent",
"androidKey": "message_details_header__sent"
}, },
"received": { "received": {
"message": "Received", "message": "Received",
"description": "Label for the time a message was received" "description": "Label for the time a message was received",
"androidKey": "message_details_header__received"
}, },
"sendMessage": { "sendMessage": {
"message": " Type your message", "message": " Type your message",
@ -879,29 +963,21 @@
"theirIdentityUnknown": { "theirIdentityUnknown": {
"message": "You haven't exchanged any messages with this contact yet. Your safety number with them will be available after the first message." "message": "You haven't exchanged any messages with this contact yet. Your safety number with them will be available after the first message."
}, },
"moreInfo": { "moreInformation": {
"message": "More Info...", "message": "More information",
"description": "Shown on the drop-down menu for an individual message, takes you to message detail screen" "description": "Shown on the drop-down menu for an individual message, takes you to message detail screen",
"androidKey": "RegistrationActivity_more_information"
}, },
"retrySend": { "resend": {
"message": "Retry Send", "message": "Resend",
"description": "Shown on the drop-down menu for an indinvidaul message, but only if it is an outgoing message that failed to send" "description": "Shown on the drop-down menu for an indinvidaul message, but only if it is an outgoing message that failed to send",
"androidKey": "message_recipients_list_item__resend",
"camelCase": true
}, },
"deleteMessage": { "deleteMessage": {
"message": "Delete Message", "message": "Delete Message",
"description": "Shown on the drop-down menu for an individual message, deletes single message" "description": "Shown on the drop-down menu for an individual message, deletes single message",
}, "androidKey": "conversation_context__menu_delete_message"
"unsendMessage": {
"message": "Unsend Message",
"description": "Shown on the drop-down menu for an individual message being removed from the server"
},
"unsendMessages": {
"message": "Unsend Messages",
"description": "Tiitle for prompt and header button for messages being removed from the server"
},
"messages": {
"message": "Messages",
"description": "Message search result"
}, },
"deleteMessages": { "deleteMessages": {
"message": "Delete Messages", "message": "Delete Messages",
@ -927,21 +1003,15 @@
"message": "Permanently delete the messages in this conversation?", "message": "Permanently delete the messages in this conversation?",
"description": "Confirmation dialog text that asks the user if they really wish to delete the conversation. Answer buttons use the strings 'ok' and 'cancel'. The deletion is permanent, i.e. it cannot be undone." "description": "Confirmation dialog text that asks the user if they really wish to delete the conversation. Answer buttons use the strings 'ok' and 'cancel'. The deletion is permanent, i.e. it cannot be undone."
}, },
"deleteAccount": { "clearAllData": {
"message": "Delete Account", "message": "Clear All Data",
"description": "Text for button in settings view to delete account" "description": "Text for button in settings view to delete account",
"androidKey": "dialog_clear_all_data_title"
}, },
"deleteAccountWarning": { "deleteAccountWarning": {
"message": "Are you sure you want to delete your account?", "message": "This will permanently delete your messages, sessions, and contacts. These cannot be restored",
"description": "Warning for account deletion in settings view" "description": "Warning for account deletion in settings view",
}, "androidKey": "dialog_clear_all_data_explanation"
"deleteAccountWarningSub": {
"message": "Delete all history, including all messages, sessions, and contacts. Once deleted, these cannot be restored.",
"description": "Warning for account deletion in settings view"
},
"deleteContact": {
"message": "Delete Contact",
"description": "Confirmation dialog title that asks the user if they really wish to delete the contact. Answer buttons use the strings 'ok' and 'cancel'. The deletion is permanent, i.e. it cannot be undone."
}, },
"deleteContactConfirmation": { "deleteContactConfirmation": {
"message": "Permanently delete this contact and destroy all sessions?", "message": "Permanently delete this contact and destroy all sessions?",
@ -995,6 +1065,11 @@
"message": "Add a caption...", "message": "Add a caption...",
"descripton": "Used as the placeholder text in the caption editor text field" "descripton": "Used as the placeholder text in the caption editor text field"
}, },
"copy": {
"message": "Copy",
"description": "Copy to clipboard button text",
"androidKey": "copy"
},
"save": { "save": {
"message": "Save", "message": "Save",
"descripton": "Used as a 'commit changes' button in the Caption Editor for outgoing image attachments" "descripton": "Used as a 'commit changes' button in the Caption Editor for outgoing image attachments"
@ -1048,8 +1123,8 @@
"installTooManyDevices": { "installTooManyDevices": {
"message": "Sorry, you have too many devices linked already. Try removing some." "message": "Sorry, you have too many devices linked already. Try removing some."
}, },
"permissions": {
"message": "Permissions", "message": "Permissions",
"permissions": {
"description": "Header for permissions section of settings" "description": "Header for permissions section of settings"
}, },
"general": { "general": {
@ -1098,10 +1173,6 @@
"message": "This will clear all data in the application, removing all messages and saved account information.", "message": "This will clear all data in the application, removing all messages and saved account information.",
"description": "Text describing what the clear data button will do." "description": "Text describing what the clear data button will do."
}, },
"deleteAllDataButton": {
"message": "Delete all data",
"description": "Text of the button that deletes all data"
},
"notifications": { "notifications": {
"message": "Notifications", "message": "Notifications",
"description": "Header for notification settings" "description": "Header for notification settings"
@ -1647,9 +1718,9 @@
"message": "Updating a open group Channel", "message": "Updating a open group Channel",
"description": "Title for the dialog box used to update an existing open group channel" "description": "Title for the dialog box used to update an existing open group channel"
}, },
"showSeed": { "showRecoveryPhrase": {
"message": "Show Seed", "message": "Show Recovery Phrase",
"description": "Button action that the user can click to view their unique seed" "description": "Button action that the user can click to view their unique recovery phrase"
}, },
"yourSessionID": { "yourSessionID": {
"message": "Your Session ID" "message": "Your Session ID"
@ -1691,17 +1762,17 @@
"message": "The clipboard content exceeds the maximum password length of $max_pwd_len$ characters.", "message": "The clipboard content exceeds the maximum password length of $max_pwd_len$ characters.",
"description": "Shown when user pastes a password which is longer than MAX_PASSWORD_LEN" "description": "Shown when user pastes a password which is longer than MAX_PASSWORD_LEN"
}, },
"showSeedPasswordRequest": { "showRecoveryPhrasePasswordRequest": {
"message": "Please enter your password", "message": "Please enter your password",
"description": "Request for user to enter password to show seed." "description": "Request for user to enter password to show recovery phrase."
}, },
"seedSavePromptMain": { "recoveryPhraseSavePromptMain": {
"message": "Please save the seed below in a safe location.", "message": "Please save the recovery phrase below in a safe location.",
"description": "Prompt on seed modal requesting user to save their seed. Line one" "description": "Prompt on recovery phrase modal requesting user to save their recovery phrase. Line one"
}, },
"seedSavePromptAlt": { "recoveryPhraseSavePromptAlt": {
"message": "They can be used to restore your account if you lose access or migrate to a new device.", "message": "They can be used to restore your account if you lose access or migrate to a new device.",
"description": "Prompt on seed modal requesting user to save their seed. Line two" "description": "Prompt on recovery phrase modal requesting user to save their recovery phrase. Line two"
}, },
"QRCodeTitle": { "QRCodeTitle": {
"message": "View My QR Code", "message": "View My QR Code",
@ -1913,10 +1984,10 @@
"generateSessionID": { "generateSessionID": {
"message": "Create Session ID" "message": "Create Session ID"
}, },
"mnemonicSeed": { "recoveryPhrase": {
"message": "Mnemonic Seed" "message": "Recovery Phrase"
}, },
"enterSeed": { "enterRecoveryPhrase": {
"message": "Enter Recovery Phrase" "message": "Enter Recovery Phrase"
}, },
"displayName": { "displayName": {
@ -1962,7 +2033,7 @@
"linkDevice": { "linkDevice": {
"message": "Link Device" "message": "Link Device"
}, },
"restoreUsingSeed": { "restoreUsingRecoveryPhrase": {
"message": "Restore From Recovery Phrase" "message": "Restore From Recovery Phrase"
}, },
"linkDeviceToExistingAccount": { "linkDeviceToExistingAccount": {
@ -2022,8 +2093,8 @@
"devicesSettingsTitle": { "devicesSettingsTitle": {
"message": "Devices" "message": "Devices"
}, },
"mnemonicEmpty": { "recoveryPhraseEmpty": {
"message": "Seed is mandatory" "message": "Recovery Phrase is mandatory"
}, },
"displayNameEmpty": { "displayNameEmpty": {
"message": "Display Name Is Mandatory" "message": "Display Name Is Mandatory"

@ -143,7 +143,7 @@ exports.createTemplate = (options, messages) => {
type: 'separator', type: 'separator',
}, },
{ {
label: messages.aboutSignalDesktop.message, label: messages.about.message,
click: showAbout, click: showAbout,
}, },
], ],
@ -227,10 +227,10 @@ function updateForMac(template, messages, options) {
// Add the OSX-specific Signal Desktop menu at the far left // Add the OSX-specific Signal Desktop menu at the far left
template.unshift({ template.unshift({
label: messages.lokiMessenger.message, label: messages.sessionMessenger.message,
submenu: [ submenu: [
{ {
label: messages.aboutSignalDesktop.message, label: messages.about.message,
click: showAbout, click: showAbout,
}, },
{ {

@ -1176,7 +1176,7 @@ async function initialize({ configDir, key, messages, passwordAttempt }) {
const buttonIndex = dialog.showMessageBox({ const buttonIndex = dialog.showMessageBox({
buttons: [ buttons: [
messages.copyErrorAndQuit.message, messages.copyErrorAndQuit.message,
messages.deleteAndRestart.message, messages.clearAllData.message,
], ],
defaultId: 0, defaultId: 0,
detail: redactAll(error.stack), detail: redactAll(error.stack),

@ -97,7 +97,7 @@ function createTrayIcon(getMainWindow, messages) {
tray.on('click', tray.showWindow); tray.on('click', tray.showWindow);
tray.setToolTip(messages.lokiMessenger.message); tray.setToolTip(messages.sessionMessenger.message);
tray.updateContextMenu(); tray.updateContextMenu();
return tray; return tray;

@ -2328,7 +2328,7 @@
}, },
deleteContact() { deleteContact() {
let title = i18n('deleteContact'); let title = i18n('delete');
let message = i18n('deleteContactConfirmation'); let message = i18n('deleteContactConfirmation');
if (this.isGroup()) { if (this.isGroup()) {
@ -2438,7 +2438,7 @@
if (this.isPrivate()) { if (this.isPrivate()) {
return this.get('name'); return this.get('name');
} }
return this.get('name') || i18n('unknownGroup'); return this.get('name') || i18n('unknown');
}, },
getTitle() { getTitle() {

@ -234,14 +234,15 @@
this.el.append(dialog.el); this.el.append(dialog.el);
}, },
showLeaveGroupDialog(groupConvo) { showLeaveGroupDialog(groupConvo) {
let title = i18n('deleteContact'); if (!groupConvo.isGroup()) {
let message = i18n('deleteContactConfirmation'); throw new Error(
'showLeaveGroupDialog() called with a non group convo.'
if (groupConvo.isGroup()) { );
title = i18n('leaveGroup');
message = i18n('leaveGroupConfirmation');
} }
const title = i18n('leaveGroup');
const message = i18n('leaveGroupConfirmation');
window.confirmationDialog({ window.confirmationDialog({
title, title,
message, message,

@ -1241,6 +1241,7 @@
contact.getTitle(), contact.getTitle(),
contact.getTitle(), contact.getTitle(),
]), ]),
messageSub: i18n('youMayWishToVerifyContact'),
okText: i18n('sendAnyway'), okText: i18n('sendAnyway'),
resolve: async () => { resolve: async () => {
await contact.updateVerified(); await contact.updateVerified();

@ -179,7 +179,6 @@
}, },
render_attributes: { render_attributes: {
welcomeToSession: i18n('welcomeToSession'), welcomeToSession: i18n('welcomeToSession'),
selectAContact: i18n('selectAContact'),
}, },
events: { events: {
click: 'onClick', click: 'onClick',

@ -72,7 +72,7 @@
// Intentional fallthrough // Intentional fallthrough
default: { default: {
const markOffline = () => { const markOffline = () => {
message = i18n('disconnected'); message = i18n('offline');
instructions = i18n('checkNetworkConnection'); instructions = i18n('checkNetworkConnection');
hasInterruption = true; hasInterruption = true;
}; };

@ -607,7 +607,7 @@ function showAbout() {
width: 500, width: 500,
height: 400, height: 400,
resizable: false, resizable: false,
title: locale.messages.aboutSignalDesktop.message, title: locale.messages.about.message,
autoHideMenuBar: true, autoHideMenuBar: true,
backgroundColor: '#2090EA', backgroundColor: '#2090EA',
show: false, show: false,
@ -649,7 +649,7 @@ async function showDebugLogWindow() {
width: Math.max(size[0] - 100, WINDOW_SIZE.minWidth), width: Math.max(size[0] - 100, WINDOW_SIZE.minWidth),
height: Math.max(size[1] - 100, WINDOW_SIZE.minHeight), height: Math.max(size[1] - 100, WINDOW_SIZE.minHeight),
resizable: false, resizable: false,
title: locale.messages.signalDesktopPreferences.message, title: locale.messages.debugLog.message,
autoHideMenuBar: true, autoHideMenuBar: true,
backgroundColor: '#FFFFFF', backgroundColor: '#FFFFFF',
show: false, show: false,
@ -697,7 +697,7 @@ async function showPermissionsPopupWindow() {
width: Math.min(400, size[0]), width: Math.min(400, size[0]),
height: Math.min(150, size[1]), height: Math.min(150, size[1]),
resizable: false, resizable: false,
title: locale.messages.signalDesktopPreferences.message, title: locale.messages.permissions.message,
autoHideMenuBar: true, autoHideMenuBar: true,
backgroundColor: '#FFFFFF', backgroundColor: '#FFFFFF',
show: false, show: false,

@ -79,7 +79,7 @@ export class SearchResults extends React.Component<Props> {
<div className="module-search-results__messages"> <div className="module-search-results__messages">
{hideMessagesHeader ? null : ( {hideMessagesHeader ? null : (
<div className="module-search-results__messages-header"> <div className="module-search-results__messages-header">
{i18n('messages')} {i18n('messagesHeader')}
</div> </div>
)} )}
{messages.map(message => ( {messages.map(message => (

@ -81,52 +81,9 @@ export class ContactDetail extends React.Component<Props> {
i18n: (key: string, values?: Array<string>) => string; i18n: (key: string, values?: Array<string>) => string;
onSendMessage: () => void; onSendMessage: () => void;
}) { }) {
if (!hasSignalAccount) {
return null; return null;
} }
// We don't want the overall click handler for this element to fire, so we stop
// propagation before handing control to the caller's callback.
const onClick = (e: React.MouseEvent<{}>): void => {
e.stopPropagation();
onSendMessage();
};
return (
<div
className="module-contact-detail__send-message"
role="button"
// tslint:disable-next-line react-this-binding-issue
onClick={onClick}
>
<button className="module-contact-detail__send-message__inner">
<div className="module-contact-detail__send-message__bubble-icon" />
{i18n('sendMessageToContact')}
</button>
</div>
);
}
public renderEmail(items: Array<Email> | undefined, i18n: LocalizerType) {
if (!items || items.length === 0) {
return;
}
return items.map((item: Email) => {
return (
<div
key={item.value}
className="module-contact-detail__additional-contact"
>
<div className="module-contact-detail__additional-contact__type">
{getLabelForEmail(item, i18n)}
</div>
{item.value}
</div>
);
});
}
public renderPhone(items: Array<Phone> | undefined, i18n: LocalizerType) { public renderPhone(items: Array<Phone> | undefined, i18n: LocalizerType) {
if (!items || items.length === 0) { if (!items || items.length === 0) {
return; return;
@ -217,7 +174,6 @@ export class ContactDetail extends React.Component<Props> {
{renderContactShorthand({ contact, isIncoming, module })} {renderContactShorthand({ contact, isIncoming, module })}
{this.renderSendMessage({ hasSignalAccount, i18n, onSendMessage })} {this.renderSendMessage({ hasSignalAccount, i18n, onSendMessage })}
{this.renderPhone(contact.number, i18n)} {this.renderPhone(contact.number, i18n)}
{this.renderEmail(contact.email, i18n)}
{this.renderAddresses(contact.address, i18n)} {this.renderAddresses(contact.address, i18n)}
</div> </div>
); );

@ -304,13 +304,7 @@ export class ConversationHeader extends React.Component<Props> {
return ( return (
<ContextMenu id={triggerId}> <ContextMenu id={triggerId}>
{this.renderPublicMenuItems()} {this.renderPublicMenuItems()}
{Menu.getCopyMenuItem( {Menu.getCopyMenuItem(isPublic, isRss, isGroup, onCopyPublicKey, i18n)}
isPublic,
isRss,
isGroup,
onCopyPublicKey,
i18n
)}
{Menu.getDeleteMessagesMenuItem(isPublic, onDeleteMessages, i18n)} {Menu.getDeleteMessagesMenuItem(isPublic, onDeleteMessages, i18n)}
{Menu.getAddModeratorsMenuItem( {Menu.getAddModeratorsMenuItem(
amMod, amMod,

@ -658,23 +658,6 @@ export class Message extends React.PureComponent<Props, State> {
); );
} }
public renderSendMessageButton() {
const { contact, i18n } = this.props;
if (!contact || !contact.hasSignalAccount) {
return null;
}
return (
<div
role="button"
onClick={contact.onSendMessage}
className="module-message__send-message-button"
>
{i18n('sendMessageToContact')}
</div>
);
}
public renderAvatar() { public renderAvatar() {
const { const {
authorAvatarPath, authorAvatarPath,
@ -972,7 +955,7 @@ export class Message extends React.PureComponent<Props, State> {
}} }}
onClick={wrap(onShowDetail)} onClick={wrap(onShowDetail)}
> >
{i18n('moreInfo')} {i18n('moreInformation')}
</MenuItem> </MenuItem>
{showRetry ? ( {showRetry ? (
<MenuItem <MenuItem
@ -981,7 +964,7 @@ export class Message extends React.PureComponent<Props, State> {
}} }}
onClick={wrap(onRetrySend)} onClick={wrap(onRetrySend)}
> >
{i18n('retrySend')} {i18n('resend')}
</MenuItem> </MenuItem>
) : null} ) : null}
{isDeletable ? ( {isDeletable ? (
@ -1175,7 +1158,6 @@ export class Message extends React.PureComponent<Props, State> {
{this.renderEmbeddedContact()} {this.renderEmbeddedContact()}
{this.renderText()} {this.renderText()}
{this.renderMetadata()} {this.renderMetadata()}
{this.renderSendMessageButton()}
</div> </div>
{this.renderError(!isIncoming)} {this.renderError(!isIncoming)}
{isRss || multiSelectMode {isRss || multiSelectMode

@ -31,7 +31,7 @@ export class StagedLinkPreview extends React.Component<Props> {
> >
{!isLoaded ? ( {!isLoaded ? (
<div className="module-staged-link-preview__loading"> <div className="module-staged-link-preview__loading">
{i18n('loadingPreview')} {i18n('loading')}
</div> </div>
) : null} ) : null}
{isLoaded && image && isImage ? ( {isLoaded && image && isImage ? (

@ -178,16 +178,16 @@ export class LeftPaneSettingSection extends React.Component<Props, State> {
const { isSecondaryDevice } = this.props; const { isSecondaryDevice } = this.props;
const title = window.i18n( const title = window.i18n(
isSecondaryDevice ? 'unpairDevice' : 'deleteAccount' isSecondaryDevice ? 'unpairDevice' : 'clearAllData'
); );
const message = window.i18n( const message = window.i18n(
isSecondaryDevice ? 'unpairDeviceWarning' : 'deleteAccountWarning' isSecondaryDevice ? 'unpairDeviceWarning' : 'deleteAccountWarning'
); );
const messageSub = window.i18n( const messageSub = isSecondaryDevice
isSecondaryDevice ? 'unpairDeviceWarningSub' : 'deleteAccountWarningSub' ? window.i18n('unpairDeviceWarningSub')
); : '';
window.confirmationDialog({ window.confirmationDialog({
title, title,

@ -215,7 +215,7 @@ export class SessionPasswordPrompt extends React.PureComponent<{}, State> {
/> />
<SessionButton <SessionButton
text={window.i18n('deleteAllDataButton')} text={window.i18n('clearAllData')}
buttonType={SessionButtonType.Default} buttonType={SessionButtonType.Default}
buttonColor={SessionButtonColor.Danger} buttonColor={SessionButtonColor.Danger}
onClick={window.clearLocalData} onClick={window.clearLocalData}

@ -82,7 +82,7 @@ export class SessionSeedModal extends React.Component<Props, State> {
return ( return (
<> <>
<p>{i18n('showSeedPasswordRequest')}</p> <p>{i18n('showRecoveryPhrasePasswordRequest')}</p>
<input <input
type="password" type="password"
id="seed-input-password" id="seed-input-password"
@ -101,10 +101,7 @@ export class SessionSeedModal extends React.Component<Props, State> {
<div className="spacer-lg" /> <div className="spacer-lg" />
<div className="session-modal__button-group"> <div className="session-modal__button-group">
<SessionButton <SessionButton text={i18n('ok')} onClick={this.confirmPassword} />
text={i18n('ok')}
onClick={this.confirmPassword}
/>
<SessionButton text={i18n('cancel')} onClick={onClose} /> <SessionButton text={i18n('cancel')} onClick={onClose} />
</div> </div>
@ -120,13 +117,17 @@ export class SessionSeedModal extends React.Component<Props, State> {
<> <>
<div className="session-modal__centered text-center"> <div className="session-modal__centered text-center">
<p className="session-modal__description"> <p className="session-modal__description">
{i18n('seedSavePromptMain')} {i18n('recoveryPhraseSavePromptMain')}
<br /> <br />
<span className="subtle">{i18n('seedSavePromptAlt')}</span> <span className="subtle">
{i18n('recoveryPhraseSavePromptAlt')}
</span>
</p> </p>
<div className="spacer-xs" /> <div className="spacer-xs" />
<i className="session-modal__text-highlight">{this.state.recoveryPhrase}</i> <i className="session-modal__text-highlight">
{this.state.recoveryPhrase}
</i>
</div> </div>
<div className="spacer-lg" /> <div className="spacer-lg" />

@ -54,7 +54,11 @@ function showDeleteMessages(isPublic: boolean): boolean {
return !isPublic; return !isPublic;
} }
function showCopyId(isPublic: boolean, isRss: boolean, isGroup: boolean): boolean { function showCopyId(
isPublic: boolean,
isRss: boolean,
isGroup: boolean
): boolean {
return !isGroup && !isRss; return !isGroup && !isRss;
} }
@ -137,7 +141,7 @@ export function getDeleteContactMenuItem(
if (isPublic) { if (isPublic) {
return <MenuItem onClick={action}>{i18n('leaveGroup')}</MenuItem>; return <MenuItem onClick={action}>{i18n('leaveGroup')}</MenuItem>;
} }
return <MenuItem onClick={action}>{i18n('deleteContact')}</MenuItem>; return <MenuItem onClick={action}>{i18n('delete')}</MenuItem>;
} }
return null; return null;
} }

@ -48,7 +48,7 @@ function getConversationTitle(
if (conversation.type === 'group') { if (conversation.type === 'group') {
const { i18n } = options; const { i18n } = options;
return i18n('unknownGroup'); return i18n('unknown');
} }
return format(conversation.phoneNumber, options); return format(conversation.phoneNumber, options);

Loading…
Cancel
Save