Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5577335522 | ||
|
|
b551fbaff2 | ||
|
|
dc498a7884 | ||
|
|
6505b58d52 | ||
|
|
c18d1c402e | ||
|
|
942fe75407 | ||
|
|
0d05b760c1 | ||
|
|
9b7cc59519 | ||
|
|
60aaf4e451 |
@ -175,6 +175,10 @@
|
||||
"message": "সংরক্ষণাগার দেখুন",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"avatarMenuChatColors": {
|
||||
"message": "Chat Color",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"loading": {
|
||||
"message": "লোড হচ্ছে...",
|
||||
"description": "Message shown on the loading screen before we've loaded any messages"
|
||||
@ -1139,6 +1143,38 @@
|
||||
"message": "সহায়তা কেন্দ্রে যোগাযোগ করুন",
|
||||
"description": "Shown on explainer dialog available from chat session refreshed timeline events"
|
||||
},
|
||||
"DeliveryIssue--preview": {
|
||||
"message": "Delivery issue",
|
||||
"description": "Shown in left pane preview when message delivery issue happens"
|
||||
},
|
||||
"DeliveryIssue--notification": {
|
||||
"message": "A message from $sender$ couldn’t be delivered",
|
||||
"description": "Shown in timeline when message delivery issue happens",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DeliveryIssue--learnMore": {
|
||||
"message": "আরও জানুন",
|
||||
"description": "Shown in timeline when message delivery issue happens, to provide access to a popup info dialog"
|
||||
},
|
||||
"DeliveryIssue--title": {
|
||||
"message": "Delivery Issue",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events"
|
||||
},
|
||||
"DeliveryIssue--summary": {
|
||||
"message": "A message, sticker, reaction, read receipt or media couldn’t be delivered to you from $sender$. They may have tried sending it to you directly, or in a group.",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quoteThumbnailAlt": {
|
||||
"message": "উদ্ধৃত বার্তা থেকে ছবির ছোট রূপ",
|
||||
"description": "Used in alt tag of thumbnail images inside of an embedded message quote"
|
||||
@ -1458,23 +1494,19 @@
|
||||
"description": "Shown as the title for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--macos-permission-description": {
|
||||
"message": "On an Apple Mac computer using macOS Catalina version 10.15 or later, Signal needs permission to access your computer's screen recording.",
|
||||
"message": "Signal needs permission to access your computer's screen recording.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step1": {
|
||||
"message": "Go to System Preferences and then click Security & Privacy.",
|
||||
"message": "Go to System Preferences.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step2": {
|
||||
"message": "Click Privacy.",
|
||||
"message": "Click on the lock icon on the bottom left and enter your computer’s password.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step3": {
|
||||
"message": "On the left, click Screen Recording.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step4": {
|
||||
"message": "On the right, check the Signal box.",
|
||||
"message": "On the right, check the box next to Signal. If you don’t see Signal in the list, click the + to add it.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-open": {
|
||||
@ -1640,7 +1672,7 @@
|
||||
"description": "Shown on outgoing message if it fails to send"
|
||||
},
|
||||
"sendPaused": {
|
||||
"message": "Send paused",
|
||||
"message": "সাময়িকভাবে পাঠানো বদ্ধ",
|
||||
"description": "Shown on outgoing message if it cannot be sent immediately"
|
||||
},
|
||||
"partiallySent": {
|
||||
@ -1801,7 +1833,7 @@
|
||||
},
|
||||
"disappearingMessages": {
|
||||
"message": "অদৃশ্য বার্তা",
|
||||
"description": "Conversation menu option to enable disappearing messages"
|
||||
"description": "Conversation menu option to enable disappearing messages. Title of the settings section for Disappearing Messages"
|
||||
},
|
||||
"disappearingMessagesDisabled": {
|
||||
"message": "অদৃশ্য হওয়া বার্তাগুলি অক্ষম করা হয়েছে",
|
||||
@ -2037,6 +2069,10 @@
|
||||
"message": "গ্রুপের নাম (প্রয়োজনীয়)",
|
||||
"description": "The placeholder for the group name placeholder"
|
||||
},
|
||||
"setGroupMetadata__group-description-placeholder": {
|
||||
"message": "Description",
|
||||
"description": "The placeholder for the group description"
|
||||
},
|
||||
"setGroupMetadata__create-group": {
|
||||
"message": "তৈরি",
|
||||
"description": "The 'create group' button text in the 'set group metadata' left pane screen"
|
||||
@ -2050,7 +2086,7 @@
|
||||
"description": "Shown in the modal when we can't create a group"
|
||||
},
|
||||
"updateGroupAttributes__title": {
|
||||
"message": "গ্রুপের নাম এবং ছবি সম্পাদনা করুন",
|
||||
"message": "গ্রুপ সংশোধন করুন",
|
||||
"description": "Shown in the modal when we want to update a group"
|
||||
},
|
||||
"updateGroupAttributes__error-message": {
|
||||
@ -2229,15 +2265,15 @@
|
||||
},
|
||||
"message--getDescription--disappearing-media": {
|
||||
"message": "একবার দেখা মিডিয়া",
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted."
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted. Also shown when quoting a view once media."
|
||||
},
|
||||
"message--getDescription--disappearing-photo": {
|
||||
"message": "View-once Photo",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo. Also shown when quoting a view once photo."
|
||||
},
|
||||
"message--getDescription--disappearing-video": {
|
||||
"message": "View-once Video",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video. Also shown when quoting a view once video."
|
||||
},
|
||||
"message--deletedForEveryone": {
|
||||
"message": "এই বার্তাটি মুছে ফেলা হয়েছে।",
|
||||
@ -2999,9 +3035,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"MessageRequests--block-and-delete": {
|
||||
"message": "অবরুদ্ধ করুন এবং মুছুন",
|
||||
"description": "Shown as a button to let the user block and delete a message request"
|
||||
"MessageRequests--block-and-report-spam": {
|
||||
"message": "Report Spam and Block",
|
||||
"description": "Shown as a button to let the user block a message request and report spam"
|
||||
},
|
||||
"MessageRequests--block-and-report-spam-success-toast": {
|
||||
"message": "স্প্যাম হিসেবে রিপোর্ট এবং ব্লক করা হয়েছে",
|
||||
"description": "Shown in a toast when you successfully block a user and report them as spam"
|
||||
},
|
||||
"MessageRequests--block-direct-confirm-title": {
|
||||
"message": "Block $name$?",
|
||||
@ -3387,7 +3427,17 @@
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--entireScreen": {
|
||||
"message": "Entire screen",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
"description": "Title for the select your screen sharing sources modal and 'Entire Screen' source"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--screen": {
|
||||
"message": "Screen $id$",
|
||||
"description": "Title for `Screen #N` source in screen sharing sources modal and overlay",
|
||||
"placeholders": {
|
||||
"id": {
|
||||
"content": "$1",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--window": {
|
||||
"message": "A window",
|
||||
@ -4611,6 +4661,42 @@
|
||||
"message": "The group link has been reset.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--you": {
|
||||
"message": "You removed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--other": {
|
||||
"message": "$memberName$ removed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--remove--unknown": {
|
||||
"message": "The group description was removed.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--you": {
|
||||
"message": "You changed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--other": {
|
||||
"message": "$memberName$ changed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--change--unknown": {
|
||||
"message": "The group description was changed.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV1--Migration--disabled": {
|
||||
"message": "Upgrade this group to activate new features like @mentions and admins. Members who have not shared their name or photo in this group will be invited to join. $learnMore$",
|
||||
"description": "Shown instead of composition area when user is forced to migrate a legacy group (GV1).",
|
||||
@ -4797,6 +4883,10 @@
|
||||
"message": "গ্রুপ থেকে সরান",
|
||||
"description": "Button text for remove from group button in Group Contact Details modal"
|
||||
},
|
||||
"showChatColorEditor": {
|
||||
"message": "Chat color",
|
||||
"description": "This is a button in the conversation context menu to show the chat color editor"
|
||||
},
|
||||
"showConversationDetails": {
|
||||
"message": "গ্রুপ সেটিংস",
|
||||
"description": "This is a button in the conversation context menu to show group settings"
|
||||
@ -4818,7 +4908,7 @@
|
||||
"description": "This is the label for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--group-info-info": {
|
||||
"message": "Choose who can edit group name, avatar, and disappearing messages timer.",
|
||||
"message": "Choose who can edit group name, photo, description, and disappearing messages timer.",
|
||||
"description": "This is the additional info for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--add-members-label": {
|
||||
@ -4842,7 +4932,7 @@
|
||||
"description": "This is a button to block a group"
|
||||
},
|
||||
"ConversationDetailsActions--leave-group-must-choose-new-admin": {
|
||||
"message": "Before you leave, you must choose at least one new admin for this group.",
|
||||
"message": "আপনি চলে যাওয়ার আগে, আপনাকে এই গ্রুপের জন্য অন্তত একজন নতুন অ্যাডমিন বেছে নিতে হবে।",
|
||||
"description": "Shown if, before leaving a group, you need to choose an admin"
|
||||
},
|
||||
"ConversationDetailsActions--leave-group-modal-title": {
|
||||
@ -5249,10 +5339,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group": {
|
||||
"message": "$count$ group members have the same name. $link$",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": "3"
|
||||
},
|
||||
"link": {
|
||||
"content": "$2",
|
||||
"example": "Tap to review"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name__link": {
|
||||
"message": "Review request",
|
||||
"description": "Shown in the timeline warning when you have a message request from someone with the same name as someone else"
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group__link": {
|
||||
"message": "Click to review",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__title": {
|
||||
"message": "Review request",
|
||||
"description": "Title for the contact name spoofing review dialog"
|
||||
@ -5269,6 +5377,46 @@
|
||||
"message": "আপনার কন্টাক্ট",
|
||||
"description": "Header in the contact spoofing review dialog, shown above the \"safe\" user"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__title": {
|
||||
"message": "Review members",
|
||||
"description": "Title for the contact name spoofing review dialog in groups"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__description": {
|
||||
"message": "$count$ group members have similar names. Review the members below or choose to take action.",
|
||||
"description": "Description for the group contact spoofing review dialog"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__members-header": {
|
||||
"message": "সদস্যগণ",
|
||||
"description": "Header in the group contact spoofing review dialog. After this header, there will be a list of members"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__name-change-info": {
|
||||
"message": "Recently changed their profile name from $oldName$ to $newName$",
|
||||
"description": "In the group contact spoofing review dialog, this text is shown when someone has changed their name recently",
|
||||
"placeholders": {
|
||||
"oldName": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
},
|
||||
"newName": {
|
||||
"content": "$2",
|
||||
"example": "Doe Jane"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__remove-button": {
|
||||
"message": "গ্রুপ থেকে সরান",
|
||||
"description": "When confirming the removal of a group member, show this text in the button"
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__description": {
|
||||
"message": "Remove \"$name$\" from the group?",
|
||||
"description": "When confirming the removal of a group member, show this text in the dialog",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CaptchaDialog__title": {
|
||||
"message": "Verify to continue messaging",
|
||||
"description": "Header in the captcha dialog"
|
||||
@ -5304,5 +5452,169 @@
|
||||
"deleteForEveryoneFailed": {
|
||||
"message": "Failed to delete message for everyone. Please retry later.",
|
||||
"description": "Displayed when delete-for-everyone has failed to send to all recepients"
|
||||
},
|
||||
"ChatColorPicker__delete--title": {
|
||||
"message": "Delete color",
|
||||
"description": "Confirm title for deleting custom color"
|
||||
},
|
||||
"ChatColorPicker__delete--message": {
|
||||
"message": "This custom color is used in $num$ chats. Do you want to delete it for all chats?",
|
||||
"description": "Confirm message for deleting custom color",
|
||||
"placeholders": {
|
||||
"num": {
|
||||
"content": "$1",
|
||||
"example": "5"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ChatColorPicker__global-chat-color": {
|
||||
"message": "Global Chat Color",
|
||||
"description": "Modal title for the chat color picker and editor for all conversations"
|
||||
},
|
||||
"ChatColorPicker__menu-title": {
|
||||
"message": "Chat Color",
|
||||
"description": "View title for the chat color picker and editor"
|
||||
},
|
||||
"ChatColorPicker__reset": {
|
||||
"message": "Reset chat color",
|
||||
"description": "Button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__resetDefault": {
|
||||
"message": "Reset Chat Colors",
|
||||
"description": "Confirmation dialog title for resetting all chat colors or only the global default one"
|
||||
},
|
||||
"ChatColorPicker__resetAll": {
|
||||
"message": "Reset all chat colors",
|
||||
"description": "Button label for resetting all chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-default": {
|
||||
"message": "Reset default",
|
||||
"description": "Button label for resetting only global chat color"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset": {
|
||||
"message": "রিসেট ",
|
||||
"description": "Confirm button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-message": {
|
||||
"message": "Would you like to override all chat colors?",
|
||||
"description": "Modal message text for confirming resetting of chat colors"
|
||||
},
|
||||
"ChatColorPicker__custom-color--label": {
|
||||
"message": "Show custom color editor",
|
||||
"description": "aria-label for custom color editor button"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble1": {
|
||||
"message": "Here's a preview of the chat color.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble2": {
|
||||
"message": "Another bubble.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble3": {
|
||||
"message": "The color is visible to only you.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__context--edit": {
|
||||
"message": "রং পরিবর্তন করুন",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--duplicate": {
|
||||
"message": "Duplicate",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--delete": {
|
||||
"message": "মুছে দিন",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"CustomColorEditor__solid": {
|
||||
"message": "সলিড",
|
||||
"description": "Tab label for selecting solid colors"
|
||||
},
|
||||
"CustomColorEditor__gradient": {
|
||||
"message": "গ্রেডিয়েন্ট",
|
||||
"description": "Tab label for selecting a gradient"
|
||||
},
|
||||
"CustomColorEditor__hue": {
|
||||
"message": "হিয়ু",
|
||||
"description": "Label for the hue slider"
|
||||
},
|
||||
"CustomColorEditor__saturation": {
|
||||
"message": "স্যাচুরেশন",
|
||||
"description": "Label for the saturation slider"
|
||||
},
|
||||
"CustomColorEditor__title": {
|
||||
"message": "Custom Color",
|
||||
"description": "Modal title for the custom color editor"
|
||||
},
|
||||
"customDisappearingTimeOption": {
|
||||
"message": "Custom time...",
|
||||
"description": "Text for an option in Disappearing Messages menu and Conversation Details Disappearing Messages setting when no user value is available"
|
||||
},
|
||||
"selectedCustomDisappearingTimeOption": {
|
||||
"message": "Custom time",
|
||||
"description": "Text for an option in Conversation Details Disappearing Messages setting when user previously selected custom time"
|
||||
},
|
||||
"DisappearingTimeDialog__title": {
|
||||
"message": "Custom Time",
|
||||
"description": "Title for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__body": {
|
||||
"message": "Choose a custom time for disappearing messages.",
|
||||
"description": "Body for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__set": {
|
||||
"message": "Set",
|
||||
"description": "Text for the dialog button confirming the custom disappearing message timeout"
|
||||
},
|
||||
"DisappearingTimeDialog__seconds": {
|
||||
"message": "Seconds",
|
||||
"description": "Name of the 'seconds' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__minutes": {
|
||||
"message": "Minutes",
|
||||
"description": "Name of the 'minutes' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__hours": {
|
||||
"message": "Hours",
|
||||
"description": "Name of the 'hours' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__days": {
|
||||
"message": "Days",
|
||||
"description": "Name of the 'days' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__weeks": {
|
||||
"message": "Weeks",
|
||||
"description": "Name of the 'weeks' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"settings__DisappearingMessages__footer": {
|
||||
"message": "Set a default disappearing message timer for all new chats started by you.",
|
||||
"description": "Footer for the Disappearing Messages settings section"
|
||||
},
|
||||
"settings__DisappearingMessages__timer__label": {
|
||||
"message": "Default timer for new chats",
|
||||
"description": "Label for the Disapearring Messages default timer setting"
|
||||
},
|
||||
"UniversalTimerNotification__text": {
|
||||
"message": "The disappearing message time will be set to $timeValue$ when you message them.",
|
||||
"description": "A message displayed when default disappearing message timeout is about to be applied",
|
||||
"placeholders": {
|
||||
"timeValue": {
|
||||
"content": "$1",
|
||||
"example": "1 week"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupDescription__read-more": {
|
||||
"message": "read more",
|
||||
"description": "Button text when the group description is too long"
|
||||
},
|
||||
"EditConversationAttributesModal__description-warning": {
|
||||
"message": "Group descriptions will be visible to members of this group and people who have been invited.",
|
||||
"description": "Label text shown when editing group description"
|
||||
},
|
||||
"ConversationDetailsHeader--add-group-description": {
|
||||
"message": "Add group description...",
|
||||
"description": "Placeholder text in the details header for those that can edit the group description"
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,6 +175,10 @@
|
||||
"message": "Vis arkiv",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"avatarMenuChatColors": {
|
||||
"message": "Chat farve",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"loading": {
|
||||
"message": "Indlæser...",
|
||||
"description": "Message shown on the loading screen before we've loaded any messages"
|
||||
@ -1139,6 +1143,38 @@
|
||||
"message": "Kontakt Support",
|
||||
"description": "Shown on explainer dialog available from chat session refreshed timeline events"
|
||||
},
|
||||
"DeliveryIssue--preview": {
|
||||
"message": "Leveringsproblem",
|
||||
"description": "Shown in left pane preview when message delivery issue happens"
|
||||
},
|
||||
"DeliveryIssue--notification": {
|
||||
"message": "En besked fra $sender$ kunne ikke leveres",
|
||||
"description": "Shown in timeline when message delivery issue happens",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DeliveryIssue--learnMore": {
|
||||
"message": "Lær mere",
|
||||
"description": "Shown in timeline when message delivery issue happens, to provide access to a popup info dialog"
|
||||
},
|
||||
"DeliveryIssue--title": {
|
||||
"message": "Leveringsproblem",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events"
|
||||
},
|
||||
"DeliveryIssue--summary": {
|
||||
"message": "En besked, klistermærke, reaktion, læsekvittering eller medier kunne ikke leveres til dig fra $sender$. De har muligvis forsøgt at sende det direkte til dig eller i en gruppe.",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quoteThumbnailAlt": {
|
||||
"message": "Miniature af billede fra citeret besked",
|
||||
"description": "Used in alt tag of thumbnail images inside of an embedded message quote"
|
||||
@ -1458,27 +1494,23 @@
|
||||
"description": "Shown as the title for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--macos-permission-description": {
|
||||
"message": "På en Apple Mac-computer, der bruger macOS Catalina version 10.15 eller nyere, har Signal brug for tilladelse til at få adgang til din computers skærmoptagelse.",
|
||||
"message": "Signal skal have tilladelse for at få adgang til din computers skærmoptagelse.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step1": {
|
||||
"message": "Gå til Systemindstillinger, og klik derefter på Sikkerhed og Privatliv.",
|
||||
"message": "Gå til Systempræferencer",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step2": {
|
||||
"message": "Klik på Privatliv",
|
||||
"message": "Klik på lås-ikonet nederst til venstre og indtast din computers adgangskode.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step3": {
|
||||
"message": "Klik på skærmoptagelse til venstre.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step4": {
|
||||
"message": "Marker afkrydsningsfeltet Signal til højre.",
|
||||
"message": "Marker afkrydsningsfeltet ud for Signal til højre. Hvis du ikke kan se Signal på listen, skal du klikke på + for at tilføje det.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-open": {
|
||||
"message": "Gå til Systemindstillinger",
|
||||
"message": "Åbn Systempræferencer",
|
||||
"description": "The button that opens your system preferences for the needs screen record permissions modal"
|
||||
},
|
||||
"calling__presenting--permission-cancel": {
|
||||
@ -1801,7 +1833,7 @@
|
||||
},
|
||||
"disappearingMessages": {
|
||||
"message": "Beskeder med tidsudløb",
|
||||
"description": "Conversation menu option to enable disappearing messages"
|
||||
"description": "Conversation menu option to enable disappearing messages. Title of the settings section for Disappearing Messages"
|
||||
},
|
||||
"disappearingMessagesDisabled": {
|
||||
"message": "Beskeder med tidsudløb er déaktiveret",
|
||||
@ -2037,6 +2069,10 @@
|
||||
"message": "Gruppenavn (påkrævet)",
|
||||
"description": "The placeholder for the group name placeholder"
|
||||
},
|
||||
"setGroupMetadata__group-description-placeholder": {
|
||||
"message": "Beskrivelse",
|
||||
"description": "The placeholder for the group description"
|
||||
},
|
||||
"setGroupMetadata__create-group": {
|
||||
"message": "Opret",
|
||||
"description": "The 'create group' button text in the 'set group metadata' left pane screen"
|
||||
@ -2050,7 +2086,7 @@
|
||||
"description": "Shown in the modal when we can't create a group"
|
||||
},
|
||||
"updateGroupAttributes__title": {
|
||||
"message": "Rediger gruppenavn og foto",
|
||||
"message": "Redigér gruppe",
|
||||
"description": "Shown in the modal when we want to update a group"
|
||||
},
|
||||
"updateGroupAttributes__error-message": {
|
||||
@ -2229,15 +2265,15 @@
|
||||
},
|
||||
"message--getDescription--disappearing-media": {
|
||||
"message": "Vis medier én gang",
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted."
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted. Also shown when quoting a view once media."
|
||||
},
|
||||
"message--getDescription--disappearing-photo": {
|
||||
"message": "Vis billede én gang",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo. Also shown when quoting a view once photo."
|
||||
},
|
||||
"message--getDescription--disappearing-video": {
|
||||
"message": "Vis engangs-video",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video. Also shown when quoting a view once video."
|
||||
},
|
||||
"message--deletedForEveryone": {
|
||||
"message": "Beskeden blev slettet",
|
||||
@ -2999,9 +3035,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"MessageRequests--block-and-delete": {
|
||||
"message": "Blokér og slet",
|
||||
"description": "Shown as a button to let the user block and delete a message request"
|
||||
"MessageRequests--block-and-report-spam": {
|
||||
"message": "Rapportér spam og blokér",
|
||||
"description": "Shown as a button to let the user block a message request and report spam"
|
||||
},
|
||||
"MessageRequests--block-and-report-spam-success-toast": {
|
||||
"message": "Rapporteret som spam og blokeret.",
|
||||
"description": "Shown in a toast when you successfully block a user and report them as spam"
|
||||
},
|
||||
"MessageRequests--block-direct-confirm-title": {
|
||||
"message": "Bloker $name$?",
|
||||
@ -3387,7 +3427,17 @@
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--entireScreen": {
|
||||
"message": "Hele skærmen",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
"description": "Title for the select your screen sharing sources modal and 'Entire Screen' source"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--screen": {
|
||||
"message": "Skærm $id$",
|
||||
"description": "Title for `Screen #N` source in screen sharing sources modal and overlay",
|
||||
"placeholders": {
|
||||
"id": {
|
||||
"content": "$1",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--window": {
|
||||
"message": "En rude",
|
||||
@ -4611,6 +4661,42 @@
|
||||
"message": "Gruppelinket er blevet nulstillet.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--you": {
|
||||
"message": "Du fjernede gruppebeskrivelsen.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--other": {
|
||||
"message": "$memberName$ fjernede gruppebeskrivelsen.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--remove--unknown": {
|
||||
"message": "Gruppebeskrivelsen blev fjernet.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--you": {
|
||||
"message": "Du ændrede gruppebeskrivelsen.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--other": {
|
||||
"message": "$memberName$ ændrede gruppebeskrivelsen.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--change--unknown": {
|
||||
"message": "Gruppebeskrivelsen blev ændret.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV1--Migration--disabled": {
|
||||
"message": "Opgrader gruppen for adgang til nye funktioner, som @omtaler og administrator. Medlemmer som ikke har delt deres navn eller billede i gruppen, vil blive inviteret til at deltage. $learnMore$",
|
||||
"description": "Shown instead of composition area when user is forced to migrate a legacy group (GV1).",
|
||||
@ -4797,6 +4883,10 @@
|
||||
"message": "Fjern fra gruppe",
|
||||
"description": "Button text for remove from group button in Group Contact Details modal"
|
||||
},
|
||||
"showChatColorEditor": {
|
||||
"message": "Chatfarve",
|
||||
"description": "This is a button in the conversation context menu to show the chat color editor"
|
||||
},
|
||||
"showConversationDetails": {
|
||||
"message": "Gruppeindstillinger",
|
||||
"description": "This is a button in the conversation context menu to show group settings"
|
||||
@ -4818,7 +4908,7 @@
|
||||
"description": "This is the label for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--group-info-info": {
|
||||
"message": "Vælg hvem som kan redigere gruppennavn, avatar og tidsindstilling af forsvindende beskeder.",
|
||||
"message": "Vælg hvem som kan redigere gruppens navn, foto og beskrivelse, og tidsindstille forsvindende beskeder.",
|
||||
"description": "This is the additional info for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--add-members-label": {
|
||||
@ -5249,10 +5339,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group": {
|
||||
"message": "$count$ gruppemedlemmer har det samme navn. $link$",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": "3"
|
||||
},
|
||||
"link": {
|
||||
"content": "$2",
|
||||
"example": "Tap to review"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name__link": {
|
||||
"message": "Gennemgå anmodning",
|
||||
"description": "Shown in the timeline warning when you have a message request from someone with the same name as someone else"
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group__link": {
|
||||
"message": "Klik for at gennemgå",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__title": {
|
||||
"message": "Gennemgå anmodning",
|
||||
"description": "Title for the contact name spoofing review dialog"
|
||||
@ -5269,6 +5377,46 @@
|
||||
"message": "Din kontakt",
|
||||
"description": "Header in the contact spoofing review dialog, shown above the \"safe\" user"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__title": {
|
||||
"message": "Gennemgå medlemmer",
|
||||
"description": "Title for the contact name spoofing review dialog in groups"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__description": {
|
||||
"message": "$count$ gruppemedlemmer har lignende navne, gennemgå nedenstående medlemmer eller vælg at tage affære.",
|
||||
"description": "Description for the group contact spoofing review dialog"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__members-header": {
|
||||
"message": "Medlemmer",
|
||||
"description": "Header in the group contact spoofing review dialog. After this header, there will be a list of members"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__name-change-info": {
|
||||
"message": "For nylig er deres profilnavn ændret fra $oldName$ til $newName$",
|
||||
"description": "In the group contact spoofing review dialog, this text is shown when someone has changed their name recently",
|
||||
"placeholders": {
|
||||
"oldName": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
},
|
||||
"newName": {
|
||||
"content": "$2",
|
||||
"example": "Doe Jane"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__remove-button": {
|
||||
"message": "Fjern fra gruppe",
|
||||
"description": "When confirming the removal of a group member, show this text in the button"
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__description": {
|
||||
"message": "Fjern $name$ fra gruppen?",
|
||||
"description": "When confirming the removal of a group member, show this text in the dialog",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CaptchaDialog__title": {
|
||||
"message": "Bekræft for at fortsætte beskedskrivning",
|
||||
"description": "Header in the captcha dialog"
|
||||
@ -5304,5 +5452,169 @@
|
||||
"deleteForEveryoneFailed": {
|
||||
"message": "Beskeden kunne ikke slettes for alle. Prøv igen senere.",
|
||||
"description": "Displayed when delete-for-everyone has failed to send to all recepients"
|
||||
},
|
||||
"ChatColorPicker__delete--title": {
|
||||
"message": "Slet farve",
|
||||
"description": "Confirm title for deleting custom color"
|
||||
},
|
||||
"ChatColorPicker__delete--message": {
|
||||
"message": "Denne tilpassede farve bruges i $num$ chats. Vil du slette det for alle chats?",
|
||||
"description": "Confirm message for deleting custom color",
|
||||
"placeholders": {
|
||||
"num": {
|
||||
"content": "$1",
|
||||
"example": "5"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ChatColorPicker__global-chat-color": {
|
||||
"message": "Global chatfarve",
|
||||
"description": "Modal title for the chat color picker and editor for all conversations"
|
||||
},
|
||||
"ChatColorPicker__menu-title": {
|
||||
"message": "Chat farve",
|
||||
"description": "View title for the chat color picker and editor"
|
||||
},
|
||||
"ChatColorPicker__reset": {
|
||||
"message": "Nulstil chatfarve",
|
||||
"description": "Button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__resetDefault": {
|
||||
"message": "Nulstil chatfarver",
|
||||
"description": "Confirmation dialog title for resetting all chat colors or only the global default one"
|
||||
},
|
||||
"ChatColorPicker__resetAll": {
|
||||
"message": "Nulstil alle chatfarver",
|
||||
"description": "Button label for resetting all chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-default": {
|
||||
"message": "Nulstil standard",
|
||||
"description": "Button label for resetting only global chat color"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset": {
|
||||
"message": "Nulstil",
|
||||
"description": "Confirm button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-message": {
|
||||
"message": "Vil du tilsidesætte alle chatfarver?",
|
||||
"description": "Modal message text for confirming resetting of chat colors"
|
||||
},
|
||||
"ChatColorPicker__custom-color--label": {
|
||||
"message": "Vis brugertilpasset farveeditor",
|
||||
"description": "aria-label for custom color editor button"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble1": {
|
||||
"message": "Her er et smugkig af chatfarven.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble2": {
|
||||
"message": "En anden boble",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble3": {
|
||||
"message": "Farven er kun synlig for dig.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__context--edit": {
|
||||
"message": "Rediger farve",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--duplicate": {
|
||||
"message": "Duplikér",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--delete": {
|
||||
"message": "Slet",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"CustomColorEditor__solid": {
|
||||
"message": "Solid",
|
||||
"description": "Tab label for selecting solid colors"
|
||||
},
|
||||
"CustomColorEditor__gradient": {
|
||||
"message": "Farveovergang",
|
||||
"description": "Tab label for selecting a gradient"
|
||||
},
|
||||
"CustomColorEditor__hue": {
|
||||
"message": "Nuance",
|
||||
"description": "Label for the hue slider"
|
||||
},
|
||||
"CustomColorEditor__saturation": {
|
||||
"message": "Mætning",
|
||||
"description": "Label for the saturation slider"
|
||||
},
|
||||
"CustomColorEditor__title": {
|
||||
"message": "Tilpasset farve",
|
||||
"description": "Modal title for the custom color editor"
|
||||
},
|
||||
"customDisappearingTimeOption": {
|
||||
"message": "Tilpas tidspunkt...",
|
||||
"description": "Text for an option in Disappearing Messages menu and Conversation Details Disappearing Messages setting when no user value is available"
|
||||
},
|
||||
"selectedCustomDisappearingTimeOption": {
|
||||
"message": "Tilpasset tid",
|
||||
"description": "Text for an option in Conversation Details Disappearing Messages setting when user previously selected custom time"
|
||||
},
|
||||
"DisappearingTimeDialog__title": {
|
||||
"message": "Tilpasset tid",
|
||||
"description": "Title for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__body": {
|
||||
"message": "Vælg et brugertilpasset tidspunkt for forsvindende beskeder.",
|
||||
"description": "Body for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__set": {
|
||||
"message": "Opsæt",
|
||||
"description": "Text for the dialog button confirming the custom disappearing message timeout"
|
||||
},
|
||||
"DisappearingTimeDialog__seconds": {
|
||||
"message": "Sekunder",
|
||||
"description": "Name of the 'seconds' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__minutes": {
|
||||
"message": "Minutter",
|
||||
"description": "Name of the 'minutes' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__hours": {
|
||||
"message": "Timer",
|
||||
"description": "Name of the 'hours' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__days": {
|
||||
"message": "Dage",
|
||||
"description": "Name of the 'days' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__weeks": {
|
||||
"message": "Uger",
|
||||
"description": "Name of the 'weeks' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"settings__DisappearingMessages__footer": {
|
||||
"message": "Indstil en standard tidsindstilling til forsvindende beskeder for alle nye chats, startet af dig.",
|
||||
"description": "Footer for the Disappearing Messages settings section"
|
||||
},
|
||||
"settings__DisappearingMessages__timer__label": {
|
||||
"message": "Standardtimer for nye chats",
|
||||
"description": "Label for the Disapearring Messages default timer setting"
|
||||
},
|
||||
"UniversalTimerNotification__text": {
|
||||
"message": "Tidspunktet for forsvindende besked indstilles til $timeValue$, når du sender beskeder til dem.",
|
||||
"description": "A message displayed when default disappearing message timeout is about to be applied",
|
||||
"placeholders": {
|
||||
"timeValue": {
|
||||
"content": "$1",
|
||||
"example": "1 week"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupDescription__read-more": {
|
||||
"message": "læs mere",
|
||||
"description": "Button text when the group description is too long"
|
||||
},
|
||||
"EditConversationAttributesModal__description-warning": {
|
||||
"message": "Gruppebeskrivelser vil være synlige for medlemmer af denne gruppe og personer, der er blevet inviteret.",
|
||||
"description": "Label text shown when editing group description"
|
||||
},
|
||||
"ConversationDetailsHeader--add-group-description": {
|
||||
"message": "Tilføj gruppebeskrivelse...",
|
||||
"description": "Placeholder text in the details header for those that can edit the group description"
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,6 +55,10 @@
|
||||
"message": "Preferences…",
|
||||
"description": "The label that is used for the Preferences menu in the program main menu. This should be consistent with the standard naming for ‘Preferences’ on the operating system."
|
||||
},
|
||||
"appMenuServices": {
|
||||
"message": "Services",
|
||||
"description": "Application menu item for macOS 'Services'"
|
||||
},
|
||||
"appMenuHide": {
|
||||
"message": "Hide",
|
||||
"description": "Application menu command to hide the window"
|
||||
|
||||
@ -175,6 +175,10 @@
|
||||
"message": "View Archive",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"avatarMenuChatColors": {
|
||||
"message": "Chat Color",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"loading": {
|
||||
"message": "ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ…",
|
||||
"description": "Message shown on the loading screen before we've loaded any messages"
|
||||
@ -1139,6 +1143,38 @@
|
||||
"message": "ಬೆಂಬಲವನ್ನು ಸಂಪರ್ಕಿಸಿ",
|
||||
"description": "Shown on explainer dialog available from chat session refreshed timeline events"
|
||||
},
|
||||
"DeliveryIssue--preview": {
|
||||
"message": "Delivery issue",
|
||||
"description": "Shown in left pane preview when message delivery issue happens"
|
||||
},
|
||||
"DeliveryIssue--notification": {
|
||||
"message": "A message from $sender$ couldn’t be delivered",
|
||||
"description": "Shown in timeline when message delivery issue happens",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DeliveryIssue--learnMore": {
|
||||
"message": "ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ",
|
||||
"description": "Shown in timeline when message delivery issue happens, to provide access to a popup info dialog"
|
||||
},
|
||||
"DeliveryIssue--title": {
|
||||
"message": "Delivery Issue",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events"
|
||||
},
|
||||
"DeliveryIssue--summary": {
|
||||
"message": "A message, sticker, reaction, read receipt or media couldn’t be delivered to you from $sender$. They may have tried sending it to you directly, or in a group.",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quoteThumbnailAlt": {
|
||||
"message": "Thumbnail of image from quoted message",
|
||||
"description": "Used in alt tag of thumbnail images inside of an embedded message quote"
|
||||
@ -1458,23 +1494,19 @@
|
||||
"description": "Shown as the title for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--macos-permission-description": {
|
||||
"message": "On an Apple Mac computer using macOS Catalina version 10.15 or later, Signal needs permission to access your computer's screen recording.",
|
||||
"message": "Signal needs permission to access your computer's screen recording.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step1": {
|
||||
"message": "Go to System Preferences and then click Security & Privacy.",
|
||||
"message": "Go to System Preferences.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step2": {
|
||||
"message": "Click Privacy.",
|
||||
"message": "Click on the lock icon on the bottom left and enter your computer’s password.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step3": {
|
||||
"message": "On the left, click Screen Recording.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step4": {
|
||||
"message": "On the right, check the Signal box.",
|
||||
"message": "On the right, check the box next to Signal. If you don’t see Signal in the list, click the + to add it.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-open": {
|
||||
@ -1801,7 +1833,7 @@
|
||||
},
|
||||
"disappearingMessages": {
|
||||
"message": "ಕಣ್ಮರೆಯಾಗುವ ಸಂದೇಶಗಳು",
|
||||
"description": "Conversation menu option to enable disappearing messages"
|
||||
"description": "Conversation menu option to enable disappearing messages. Title of the settings section for Disappearing Messages"
|
||||
},
|
||||
"disappearingMessagesDisabled": {
|
||||
"message": "ಕಣ್ಮರೆಯಾಗುತ್ತಿದೆ ಸಂದೇಶಗಳು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ",
|
||||
@ -2037,6 +2069,10 @@
|
||||
"message": "ಗುಂಪಿನ ಹೆಸರು (ಅಗತ್ಯವಿದೆ)",
|
||||
"description": "The placeholder for the group name placeholder"
|
||||
},
|
||||
"setGroupMetadata__group-description-placeholder": {
|
||||
"message": "Description",
|
||||
"description": "The placeholder for the group description"
|
||||
},
|
||||
"setGroupMetadata__create-group": {
|
||||
"message": "ರಚಿಸಿ",
|
||||
"description": "The 'create group' button text in the 'set group metadata' left pane screen"
|
||||
@ -2050,7 +2086,7 @@
|
||||
"description": "Shown in the modal when we can't create a group"
|
||||
},
|
||||
"updateGroupAttributes__title": {
|
||||
"message": "Edit group name and photo",
|
||||
"message": "ಗುಂಪನ್ನು ಬದಲಾಯಿಸಿ",
|
||||
"description": "Shown in the modal when we want to update a group"
|
||||
},
|
||||
"updateGroupAttributes__error-message": {
|
||||
@ -2229,15 +2265,15 @@
|
||||
},
|
||||
"message--getDescription--disappearing-media": {
|
||||
"message": "View-once Media",
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted."
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted. Also shown when quoting a view once media."
|
||||
},
|
||||
"message--getDescription--disappearing-photo": {
|
||||
"message": "View-once Photo",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo. Also shown when quoting a view once photo."
|
||||
},
|
||||
"message--getDescription--disappearing-video": {
|
||||
"message": "View-once Video",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video. Also shown when quoting a view once video."
|
||||
},
|
||||
"message--deletedForEveryone": {
|
||||
"message": "ಈ ಸಂದೇಶವನ್ನು ಅಳಿಸಲಾಗಿದೆ.",
|
||||
@ -2999,9 +3035,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"MessageRequests--block-and-delete": {
|
||||
"message": "ನಿರ್ಬಂಧಿಸಿ ಮತ್ತು ಅಳಿಸಿ",
|
||||
"description": "Shown as a button to let the user block and delete a message request"
|
||||
"MessageRequests--block-and-report-spam": {
|
||||
"message": "Report Spam and Block",
|
||||
"description": "Shown as a button to let the user block a message request and report spam"
|
||||
},
|
||||
"MessageRequests--block-and-report-spam-success-toast": {
|
||||
"message": "Reported as spam and blocked.",
|
||||
"description": "Shown in a toast when you successfully block a user and report them as spam"
|
||||
},
|
||||
"MessageRequests--block-direct-confirm-title": {
|
||||
"message": "Block $name$?",
|
||||
@ -3387,7 +3427,17 @@
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--entireScreen": {
|
||||
"message": "Entire screen",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
"description": "Title for the select your screen sharing sources modal and 'Entire Screen' source"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--screen": {
|
||||
"message": "Screen $id$",
|
||||
"description": "Title for `Screen #N` source in screen sharing sources modal and overlay",
|
||||
"placeholders": {
|
||||
"id": {
|
||||
"content": "$1",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--window": {
|
||||
"message": "A window",
|
||||
@ -4611,6 +4661,42 @@
|
||||
"message": "The group link has been reset.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--you": {
|
||||
"message": "You removed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--other": {
|
||||
"message": "$memberName$ removed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--remove--unknown": {
|
||||
"message": "The group description was removed.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--you": {
|
||||
"message": "You changed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--other": {
|
||||
"message": "$memberName$ changed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--change--unknown": {
|
||||
"message": "The group description was changed.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV1--Migration--disabled": {
|
||||
"message": "Upgrade this group to activate new features like @mentions and admins. Members who have not shared their name or photo in this group will be invited to join. $learnMore$",
|
||||
"description": "Shown instead of composition area when user is forced to migrate a legacy group (GV1).",
|
||||
@ -4797,6 +4883,10 @@
|
||||
"message": "ಗುಂಪಿನಿಂದ ತೆಗೆಯಿರಿ",
|
||||
"description": "Button text for remove from group button in Group Contact Details modal"
|
||||
},
|
||||
"showChatColorEditor": {
|
||||
"message": "Chat color",
|
||||
"description": "This is a button in the conversation context menu to show the chat color editor"
|
||||
},
|
||||
"showConversationDetails": {
|
||||
"message": "ಗುಂಪಿನ ಸಿದ್ಧತೆಗಳು",
|
||||
"description": "This is a button in the conversation context menu to show group settings"
|
||||
@ -4818,7 +4908,7 @@
|
||||
"description": "This is the label for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--group-info-info": {
|
||||
"message": "Choose who can edit group name, avatar, and disappearing messages timer.",
|
||||
"message": "Choose who can edit group name, photo, description, and disappearing messages timer.",
|
||||
"description": "This is the additional info for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--add-members-label": {
|
||||
@ -5249,10 +5339,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group": {
|
||||
"message": "$count$ group members have the same name. $link$",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": "3"
|
||||
},
|
||||
"link": {
|
||||
"content": "$2",
|
||||
"example": "Tap to review"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name__link": {
|
||||
"message": "Review request",
|
||||
"description": "Shown in the timeline warning when you have a message request from someone with the same name as someone else"
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group__link": {
|
||||
"message": "Click to review",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__title": {
|
||||
"message": "Review request",
|
||||
"description": "Title for the contact name spoofing review dialog"
|
||||
@ -5269,6 +5377,46 @@
|
||||
"message": "ನಿಮ್ಮ ಸಂಪರ್ಕ",
|
||||
"description": "Header in the contact spoofing review dialog, shown above the \"safe\" user"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__title": {
|
||||
"message": "Review members",
|
||||
"description": "Title for the contact name spoofing review dialog in groups"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__description": {
|
||||
"message": "$count$ group members have similar names. Review the members below or choose to take action.",
|
||||
"description": "Description for the group contact spoofing review dialog"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__members-header": {
|
||||
"message": "ಸದಸ್ಯರು",
|
||||
"description": "Header in the group contact spoofing review dialog. After this header, there will be a list of members"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__name-change-info": {
|
||||
"message": "Recently changed their profile name from $oldName$ to $newName$",
|
||||
"description": "In the group contact spoofing review dialog, this text is shown when someone has changed their name recently",
|
||||
"placeholders": {
|
||||
"oldName": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
},
|
||||
"newName": {
|
||||
"content": "$2",
|
||||
"example": "Doe Jane"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__remove-button": {
|
||||
"message": "ಗುಂಪಿನಿಂದ ತೆಗೆಯಿರಿ",
|
||||
"description": "When confirming the removal of a group member, show this text in the button"
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__description": {
|
||||
"message": "Remove \"$name$\" from the group?",
|
||||
"description": "When confirming the removal of a group member, show this text in the dialog",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CaptchaDialog__title": {
|
||||
"message": "Verify to continue messaging",
|
||||
"description": "Header in the captcha dialog"
|
||||
@ -5304,5 +5452,169 @@
|
||||
"deleteForEveryoneFailed": {
|
||||
"message": "Failed to delete message for everyone. Please retry later.",
|
||||
"description": "Displayed when delete-for-everyone has failed to send to all recepients"
|
||||
},
|
||||
"ChatColorPicker__delete--title": {
|
||||
"message": "Delete color",
|
||||
"description": "Confirm title for deleting custom color"
|
||||
},
|
||||
"ChatColorPicker__delete--message": {
|
||||
"message": "This custom color is used in $num$ chats. Do you want to delete it for all chats?",
|
||||
"description": "Confirm message for deleting custom color",
|
||||
"placeholders": {
|
||||
"num": {
|
||||
"content": "$1",
|
||||
"example": "5"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ChatColorPicker__global-chat-color": {
|
||||
"message": "Global Chat Color",
|
||||
"description": "Modal title for the chat color picker and editor for all conversations"
|
||||
},
|
||||
"ChatColorPicker__menu-title": {
|
||||
"message": "Chat Color",
|
||||
"description": "View title for the chat color picker and editor"
|
||||
},
|
||||
"ChatColorPicker__reset": {
|
||||
"message": "Reset chat color",
|
||||
"description": "Button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__resetDefault": {
|
||||
"message": "Reset Chat Colors",
|
||||
"description": "Confirmation dialog title for resetting all chat colors or only the global default one"
|
||||
},
|
||||
"ChatColorPicker__resetAll": {
|
||||
"message": "Reset all chat colors",
|
||||
"description": "Button label for resetting all chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-default": {
|
||||
"message": "Reset default",
|
||||
"description": "Button label for resetting only global chat color"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset": {
|
||||
"message": "ಮರುಹೊಂದಿಸಿ",
|
||||
"description": "Confirm button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-message": {
|
||||
"message": "Would you like to override all chat colors?",
|
||||
"description": "Modal message text for confirming resetting of chat colors"
|
||||
},
|
||||
"ChatColorPicker__custom-color--label": {
|
||||
"message": "Show custom color editor",
|
||||
"description": "aria-label for custom color editor button"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble1": {
|
||||
"message": "Here's a preview of the chat color.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble2": {
|
||||
"message": "Another bubble.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble3": {
|
||||
"message": "The color is visible to only you.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__context--edit": {
|
||||
"message": "Edit color",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--duplicate": {
|
||||
"message": "Duplicate",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--delete": {
|
||||
"message": "ಅಳಿಸು",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"CustomColorEditor__solid": {
|
||||
"message": "Solid",
|
||||
"description": "Tab label for selecting solid colors"
|
||||
},
|
||||
"CustomColorEditor__gradient": {
|
||||
"message": "Gradient",
|
||||
"description": "Tab label for selecting a gradient"
|
||||
},
|
||||
"CustomColorEditor__hue": {
|
||||
"message": "Hue",
|
||||
"description": "Label for the hue slider"
|
||||
},
|
||||
"CustomColorEditor__saturation": {
|
||||
"message": "Saturation",
|
||||
"description": "Label for the saturation slider"
|
||||
},
|
||||
"CustomColorEditor__title": {
|
||||
"message": "Custom Color",
|
||||
"description": "Modal title for the custom color editor"
|
||||
},
|
||||
"customDisappearingTimeOption": {
|
||||
"message": "Custom time...",
|
||||
"description": "Text for an option in Disappearing Messages menu and Conversation Details Disappearing Messages setting when no user value is available"
|
||||
},
|
||||
"selectedCustomDisappearingTimeOption": {
|
||||
"message": "Custom time",
|
||||
"description": "Text for an option in Conversation Details Disappearing Messages setting when user previously selected custom time"
|
||||
},
|
||||
"DisappearingTimeDialog__title": {
|
||||
"message": "Custom Time",
|
||||
"description": "Title for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__body": {
|
||||
"message": "Choose a custom time for disappearing messages.",
|
||||
"description": "Body for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__set": {
|
||||
"message": "Set",
|
||||
"description": "Text for the dialog button confirming the custom disappearing message timeout"
|
||||
},
|
||||
"DisappearingTimeDialog__seconds": {
|
||||
"message": "Seconds",
|
||||
"description": "Name of the 'seconds' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__minutes": {
|
||||
"message": "Minutes",
|
||||
"description": "Name of the 'minutes' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__hours": {
|
||||
"message": "Hours",
|
||||
"description": "Name of the 'hours' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__days": {
|
||||
"message": "Days",
|
||||
"description": "Name of the 'days' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__weeks": {
|
||||
"message": "Weeks",
|
||||
"description": "Name of the 'weeks' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"settings__DisappearingMessages__footer": {
|
||||
"message": "Set a default disappearing message timer for all new chats started by you.",
|
||||
"description": "Footer for the Disappearing Messages settings section"
|
||||
},
|
||||
"settings__DisappearingMessages__timer__label": {
|
||||
"message": "Default timer for new chats",
|
||||
"description": "Label for the Disapearring Messages default timer setting"
|
||||
},
|
||||
"UniversalTimerNotification__text": {
|
||||
"message": "The disappearing message time will be set to $timeValue$ when you message them.",
|
||||
"description": "A message displayed when default disappearing message timeout is about to be applied",
|
||||
"placeholders": {
|
||||
"timeValue": {
|
||||
"content": "$1",
|
||||
"example": "1 week"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupDescription__read-more": {
|
||||
"message": "read more",
|
||||
"description": "Button text when the group description is too long"
|
||||
},
|
||||
"EditConversationAttributesModal__description-warning": {
|
||||
"message": "Group descriptions will be visible to members of this group and people who have been invited.",
|
||||
"description": "Label text shown when editing group description"
|
||||
},
|
||||
"ConversationDetailsHeader--add-group-description": {
|
||||
"message": "Add group description...",
|
||||
"description": "Placeholder text in the details header for those that can edit the group description"
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,6 +175,10 @@
|
||||
"message": "Vis arkivet",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"avatarMenuChatColors": {
|
||||
"message": "Samtalefarge",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"loading": {
|
||||
"message": "Laster...",
|
||||
"description": "Message shown on the loading screen before we've loaded any messages"
|
||||
@ -1139,6 +1143,38 @@
|
||||
"message": "Kontakt brukerstøtte",
|
||||
"description": "Shown on explainer dialog available from chat session refreshed timeline events"
|
||||
},
|
||||
"DeliveryIssue--preview": {
|
||||
"message": "Delivery issue",
|
||||
"description": "Shown in left pane preview when message delivery issue happens"
|
||||
},
|
||||
"DeliveryIssue--notification": {
|
||||
"message": "A message from $sender$ couldn’t be delivered",
|
||||
"description": "Shown in timeline when message delivery issue happens",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DeliveryIssue--learnMore": {
|
||||
"message": "Lær mer",
|
||||
"description": "Shown in timeline when message delivery issue happens, to provide access to a popup info dialog"
|
||||
},
|
||||
"DeliveryIssue--title": {
|
||||
"message": "Delivery Issue",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events"
|
||||
},
|
||||
"DeliveryIssue--summary": {
|
||||
"message": "A message, sticker, reaction, read receipt or media couldn’t be delivered to you from $sender$. They may have tried sending it to you directly, or in a group.",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quoteThumbnailAlt": {
|
||||
"message": "Miniatyrbilde i sitert melding",
|
||||
"description": "Used in alt tag of thumbnail images inside of an embedded message quote"
|
||||
@ -1458,23 +1494,19 @@
|
||||
"description": "Shown as the title for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--macos-permission-description": {
|
||||
"message": "På Apple Mac-datamaskiner som bruker macOS Catalina versjon 10.15 eller nyere, trenger Signal tillatelse for å få tilgang til datamaskinens skjermopptaks funksjon.",
|
||||
"message": "Signal needs permission to access your computer's screen recording.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step1": {
|
||||
"message": "Gå til Systemvalg og klikk deretter Sikkerhet og Personvern.",
|
||||
"message": "Go to System Preferences.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step2": {
|
||||
"message": "Åpne Personvern.",
|
||||
"message": "Click on the lock icon on the bottom left and enter your computer’s password.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step3": {
|
||||
"message": "Klikk på Skjermbilde til venstre.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step4": {
|
||||
"message": "Til høyre merker du av i boksen får Signal.",
|
||||
"message": "On the right, check the box next to Signal. If you don’t see Signal in the list, click the + to add it.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-open": {
|
||||
@ -1752,7 +1784,7 @@
|
||||
"description": "Brief message shown when trying to message a blocked group"
|
||||
},
|
||||
"youChangedTheTimer": {
|
||||
"message": "Du satte midlertidige meldinger til $time$.",
|
||||
"message": "Du satte utløpstiden for meldinger til $time$.",
|
||||
"description": "Message displayed when you change the message expiration timer in a conversation.",
|
||||
"placeholders": {
|
||||
"time": {
|
||||
@ -1762,7 +1794,7 @@
|
||||
}
|
||||
},
|
||||
"timerSetOnSync": {
|
||||
"message": "Oppdatert midlertidige meldinger til $time$.",
|
||||
"message": "Oppdatert utløpstid for meldinger til $time$.",
|
||||
"description": "Message displayed when timer is set on initial link of desktop device.",
|
||||
"placeholders": {
|
||||
"time": {
|
||||
@ -1772,7 +1804,7 @@
|
||||
}
|
||||
},
|
||||
"timerSetByMember": {
|
||||
"message": "Et medlem satte midlertidige meldinger til $time$.",
|
||||
"message": "Et medlem satte utløpstiden for meldinger til $time$.",
|
||||
"description": "Message displayed when timer is by an unknown group member.",
|
||||
"placeholders": {
|
||||
"time": {
|
||||
@ -1782,7 +1814,7 @@
|
||||
}
|
||||
},
|
||||
"theyChangedTheTimer": {
|
||||
"message": "$name$ satte midlertidige meldinger til $time$",
|
||||
"message": "$name$ satte utløpstiden for meldinger til $time$",
|
||||
"description": "Message displayed when someone else changes the message expiration timer in a conversation.",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
@ -1800,19 +1832,19 @@
|
||||
"description": "Label for option to turn off message expiration in the timer menu"
|
||||
},
|
||||
"disappearingMessages": {
|
||||
"message": "Forsvinnende meldinger",
|
||||
"description": "Conversation menu option to enable disappearing messages"
|
||||
"message": "Tidsavgrensede meldinger",
|
||||
"description": "Conversation menu option to enable disappearing messages. Title of the settings section for Disappearing Messages"
|
||||
},
|
||||
"disappearingMessagesDisabled": {
|
||||
"message": "Utløpstid for meldinger er slått av",
|
||||
"message": "Tidsavgrensede meldinger er skrudd av",
|
||||
"description": "Displayed in the left pane when the timer is turned off"
|
||||
},
|
||||
"disappearingMessagesDisabledByMember": {
|
||||
"message": "Et medlem skrudde av midlertidige meldinger.",
|
||||
"message": "Et medlem skrudde av tidsavgrensede meldinger.",
|
||||
"description": "Displayed in the left pane when the timer is turned off"
|
||||
},
|
||||
"disabledDisappearingMessages": {
|
||||
"message": "$name$ skrudde av midlertidige meldinger.",
|
||||
"message": "$name$ skrudde av tidsavgrensede meldinger.",
|
||||
"description": "Displayed in the conversation list when the timer is turned off",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
@ -1822,7 +1854,7 @@
|
||||
}
|
||||
},
|
||||
"youDisabledDisappearingMessages": {
|
||||
"message": "Du deaktiverte forsvinnende meldinger.",
|
||||
"message": "Du deaktiverte tidsavgrensede meldinger.",
|
||||
"description": "Displayed in the conversation list when the timer is turned off"
|
||||
},
|
||||
"timerSetTo": {
|
||||
@ -2037,6 +2069,10 @@
|
||||
"message": "Gruppenavn (påkrevd)",
|
||||
"description": "The placeholder for the group name placeholder"
|
||||
},
|
||||
"setGroupMetadata__group-description-placeholder": {
|
||||
"message": "Beskrivelse",
|
||||
"description": "The placeholder for the group description"
|
||||
},
|
||||
"setGroupMetadata__create-group": {
|
||||
"message": "Opprett",
|
||||
"description": "The 'create group' button text in the 'set group metadata' left pane screen"
|
||||
@ -2050,7 +2086,7 @@
|
||||
"description": "Shown in the modal when we can't create a group"
|
||||
},
|
||||
"updateGroupAttributes__title": {
|
||||
"message": "Rediger gruppenavn og bilde",
|
||||
"message": "Rediger gruppe",
|
||||
"description": "Shown in the modal when we want to update a group"
|
||||
},
|
||||
"updateGroupAttributes__error-message": {
|
||||
@ -2229,15 +2265,15 @@
|
||||
},
|
||||
"message--getDescription--disappearing-media": {
|
||||
"message": "Vis en gang media",
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted."
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted. Also shown when quoting a view once media."
|
||||
},
|
||||
"message--getDescription--disappearing-photo": {
|
||||
"message": "Vis en gang Bilde",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo. Also shown when quoting a view once photo."
|
||||
},
|
||||
"message--getDescription--disappearing-video": {
|
||||
"message": "Vis en gang video",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video. Also shown when quoting a view once video."
|
||||
},
|
||||
"message--deletedForEveryone": {
|
||||
"message": "Denne meldingen ble slettet.",
|
||||
@ -2999,9 +3035,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"MessageRequests--block-and-delete": {
|
||||
"message": "Blokker og slett",
|
||||
"description": "Shown as a button to let the user block and delete a message request"
|
||||
"MessageRequests--block-and-report-spam": {
|
||||
"message": "Rapporter søppelpost og blokkér",
|
||||
"description": "Shown as a button to let the user block a message request and report spam"
|
||||
},
|
||||
"MessageRequests--block-and-report-spam-success-toast": {
|
||||
"message": "Rapportert som søppelpost og blokkért.",
|
||||
"description": "Shown in a toast when you successfully block a user and report them as spam"
|
||||
},
|
||||
"MessageRequests--block-direct-confirm-title": {
|
||||
"message": "Blokker $name$?",
|
||||
@ -3387,7 +3427,17 @@
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--entireScreen": {
|
||||
"message": "Hele skjermen",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
"description": "Title for the select your screen sharing sources modal and 'Entire Screen' source"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--screen": {
|
||||
"message": "Screen $id$",
|
||||
"description": "Title for `Screen #N` source in screen sharing sources modal and overlay",
|
||||
"placeholders": {
|
||||
"id": {
|
||||
"content": "$1",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--window": {
|
||||
"message": "Et vindu",
|
||||
@ -4611,6 +4661,42 @@
|
||||
"message": "Gruppelenken ble resatt.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--you": {
|
||||
"message": "Du fjernet gruppebeskrivelsen.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--other": {
|
||||
"message": "$memberName$ fjernet gruppebeskrivelsen.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--remove--unknown": {
|
||||
"message": "Gruppebeskrivelsen ble fjernet.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--you": {
|
||||
"message": "Du endret gruppebeskrivelsen.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--other": {
|
||||
"message": "$memberName$ endret gruppebeskrivelsen.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--change--unknown": {
|
||||
"message": "Gruppebeskrivelsen ble endret.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV1--Migration--disabled": {
|
||||
"message": "Oppgrader denne gruppen for å aktivere nye funksjoner som @mentions og administratorer. Medlemmer som ikke har delt sitt navn og bilde i denne gruppen vil bli invitert til gruppen. $learnMore$",
|
||||
"description": "Shown instead of composition area when user is forced to migrate a legacy group (GV1).",
|
||||
@ -4797,6 +4883,10 @@
|
||||
"message": "Fjern fra gruppen",
|
||||
"description": "Button text for remove from group button in Group Contact Details modal"
|
||||
},
|
||||
"showChatColorEditor": {
|
||||
"message": "Samtalefarge",
|
||||
"description": "This is a button in the conversation context menu to show the chat color editor"
|
||||
},
|
||||
"showConversationDetails": {
|
||||
"message": "Gruppeinstillinger",
|
||||
"description": "This is a button in the conversation context menu to show group settings"
|
||||
@ -4806,7 +4896,7 @@
|
||||
"description": "This is the label for the group link management panel"
|
||||
},
|
||||
"ConversationDetails--disappearing-messages-label": {
|
||||
"message": "Forsvinnende meldinger",
|
||||
"message": "Tidsavgrensede meldinger",
|
||||
"description": "This is the label for the disappearing messages setting panel"
|
||||
},
|
||||
"ConversationDetails--disappearing-messages-info": {
|
||||
@ -4818,7 +4908,7 @@
|
||||
"description": "This is the label for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--group-info-info": {
|
||||
"message": "Velg hvem som kan redigere navnet til gruppen, gruppeavataren og når meldinger forsvinner.",
|
||||
"message": "Velg hvem som kan redigere gruppenavnet, gruppeavataren og når meldinger forsvinner.",
|
||||
"description": "This is the additional info for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--add-members-label": {
|
||||
@ -5249,10 +5339,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group": {
|
||||
"message": "$count$ group members have the same name. $link$",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": "3"
|
||||
},
|
||||
"link": {
|
||||
"content": "$2",
|
||||
"example": "Tap to review"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name__link": {
|
||||
"message": "Se gjennom forespørsel",
|
||||
"description": "Shown in the timeline warning when you have a message request from someone with the same name as someone else"
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group__link": {
|
||||
"message": "Click to review",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__title": {
|
||||
"message": "Se gjennom forespørsel",
|
||||
"description": "Title for the contact name spoofing review dialog"
|
||||
@ -5269,6 +5377,46 @@
|
||||
"message": "Din kontakt",
|
||||
"description": "Header in the contact spoofing review dialog, shown above the \"safe\" user"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__title": {
|
||||
"message": "Review members",
|
||||
"description": "Title for the contact name spoofing review dialog in groups"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__description": {
|
||||
"message": "$count$ group members have similar names. Review the members below or choose to take action.",
|
||||
"description": "Description for the group contact spoofing review dialog"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__members-header": {
|
||||
"message": "Medlemmer",
|
||||
"description": "Header in the group contact spoofing review dialog. After this header, there will be a list of members"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__name-change-info": {
|
||||
"message": "Recently changed their profile name from $oldName$ to $newName$",
|
||||
"description": "In the group contact spoofing review dialog, this text is shown when someone has changed their name recently",
|
||||
"placeholders": {
|
||||
"oldName": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
},
|
||||
"newName": {
|
||||
"content": "$2",
|
||||
"example": "Doe Jane"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__remove-button": {
|
||||
"message": "Fjern fra gruppen",
|
||||
"description": "When confirming the removal of a group member, show this text in the button"
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__description": {
|
||||
"message": "Fjern «$name$» fra gruppen?",
|
||||
"description": "When confirming the removal of a group member, show this text in the dialog",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CaptchaDialog__title": {
|
||||
"message": "Verifiser for å fortsette å sende meldinger",
|
||||
"description": "Header in the captcha dialog"
|
||||
@ -5304,5 +5452,169 @@
|
||||
"deleteForEveryoneFailed": {
|
||||
"message": "Kunne ikke slette meldingen for alle. Vennligst prøv igjen senere.",
|
||||
"description": "Displayed when delete-for-everyone has failed to send to all recepients"
|
||||
},
|
||||
"ChatColorPicker__delete--title": {
|
||||
"message": "Fjern farge",
|
||||
"description": "Confirm title for deleting custom color"
|
||||
},
|
||||
"ChatColorPicker__delete--message": {
|
||||
"message": "Denne selvvalgte fargen brukes i $num$ samtaler. Ønsker du å fjerne den fra alle samtaler?",
|
||||
"description": "Confirm message for deleting custom color",
|
||||
"placeholders": {
|
||||
"num": {
|
||||
"content": "$1",
|
||||
"example": "5"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ChatColorPicker__global-chat-color": {
|
||||
"message": "Global Chat Color",
|
||||
"description": "Modal title for the chat color picker and editor for all conversations"
|
||||
},
|
||||
"ChatColorPicker__menu-title": {
|
||||
"message": "Samtalefarge",
|
||||
"description": "View title for the chat color picker and editor"
|
||||
},
|
||||
"ChatColorPicker__reset": {
|
||||
"message": "Tilbakestill samtalefarge",
|
||||
"description": "Button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__resetDefault": {
|
||||
"message": "Tilbakestill samtalefarger",
|
||||
"description": "Confirmation dialog title for resetting all chat colors or only the global default one"
|
||||
},
|
||||
"ChatColorPicker__resetAll": {
|
||||
"message": "Tilbakestill alle samtalefarger",
|
||||
"description": "Button label for resetting all chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-default": {
|
||||
"message": "Reset default",
|
||||
"description": "Button label for resetting only global chat color"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset": {
|
||||
"message": "Tilbakestill",
|
||||
"description": "Confirm button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-message": {
|
||||
"message": "Vil du overstyre alle samtalers farge?",
|
||||
"description": "Modal message text for confirming resetting of chat colors"
|
||||
},
|
||||
"ChatColorPicker__custom-color--label": {
|
||||
"message": "Show custom color editor",
|
||||
"description": "aria-label for custom color editor button"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble1": {
|
||||
"message": "Her er en forhåndsvisning av samtalefargen.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble2": {
|
||||
"message": "Another bubble.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble3": {
|
||||
"message": "Fargen synes kun for deg.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__context--edit": {
|
||||
"message": "Endre farge",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--duplicate": {
|
||||
"message": "Duplikat",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--delete": {
|
||||
"message": "Slett",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"CustomColorEditor__solid": {
|
||||
"message": "Hel farge",
|
||||
"description": "Tab label for selecting solid colors"
|
||||
},
|
||||
"CustomColorEditor__gradient": {
|
||||
"message": "Graderinger",
|
||||
"description": "Tab label for selecting a gradient"
|
||||
},
|
||||
"CustomColorEditor__hue": {
|
||||
"message": "Fargetone",
|
||||
"description": "Label for the hue slider"
|
||||
},
|
||||
"CustomColorEditor__saturation": {
|
||||
"message": "Fargemetning",
|
||||
"description": "Label for the saturation slider"
|
||||
},
|
||||
"CustomColorEditor__title": {
|
||||
"message": "Selvvalgt farge",
|
||||
"description": "Modal title for the custom color editor"
|
||||
},
|
||||
"customDisappearingTimeOption": {
|
||||
"message": "Selvvalgt tid…",
|
||||
"description": "Text for an option in Disappearing Messages menu and Conversation Details Disappearing Messages setting when no user value is available"
|
||||
},
|
||||
"selectedCustomDisappearingTimeOption": {
|
||||
"message": "Selvvalgt tid",
|
||||
"description": "Text for an option in Conversation Details Disappearing Messages setting when user previously selected custom time"
|
||||
},
|
||||
"DisappearingTimeDialog__title": {
|
||||
"message": "Selvvalgt tid",
|
||||
"description": "Title for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__body": {
|
||||
"message": "Angi selvvalgt utløpstid for tidsavgrensede meldinger.",
|
||||
"description": "Body for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__set": {
|
||||
"message": "Sett",
|
||||
"description": "Text for the dialog button confirming the custom disappearing message timeout"
|
||||
},
|
||||
"DisappearingTimeDialog__seconds": {
|
||||
"message": "Sekunder",
|
||||
"description": "Name of the 'seconds' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__minutes": {
|
||||
"message": "Minutter",
|
||||
"description": "Name of the 'minutes' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__hours": {
|
||||
"message": "Timer",
|
||||
"description": "Name of the 'hours' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__days": {
|
||||
"message": "Dager",
|
||||
"description": "Name of the 'days' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__weeks": {
|
||||
"message": "Uker",
|
||||
"description": "Name of the 'weeks' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"settings__DisappearingMessages__footer": {
|
||||
"message": "Sett standard utløpstid for tidsavgrensede meldinger, for nye samtaler startet av deg.",
|
||||
"description": "Footer for the Disappearing Messages settings section"
|
||||
},
|
||||
"settings__DisappearingMessages__timer__label": {
|
||||
"message": "Standard nedtelling for nye samtaler",
|
||||
"description": "Label for the Disapearring Messages default timer setting"
|
||||
},
|
||||
"UniversalTimerNotification__text": {
|
||||
"message": "Utløpstiden for meldinger blir satt til $timeValue$ når du melder dem.",
|
||||
"description": "A message displayed when default disappearing message timeout is about to be applied",
|
||||
"placeholders": {
|
||||
"timeValue": {
|
||||
"content": "$1",
|
||||
"example": "1 week"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupDescription__read-more": {
|
||||
"message": "les mer",
|
||||
"description": "Button text when the group description is too long"
|
||||
},
|
||||
"EditConversationAttributesModal__description-warning": {
|
||||
"message": "Gruppebeskrivelser vil være synlige for medlemmer av denne gruppen og personer som har blitt invitert.",
|
||||
"description": "Label text shown when editing group description"
|
||||
},
|
||||
"ConversationDetailsHeader--add-group-description": {
|
||||
"message": "Legg til gruppebeskrivelse…",
|
||||
"description": "Placeholder text in the details header for those that can edit the group description"
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,7 +124,7 @@
|
||||
"description": "Window menu command to make the current window the size of the whole screen"
|
||||
},
|
||||
"windowMenuBringAllToFront": {
|
||||
"message": "Alle vensters naar voorgrond brengen",
|
||||
"message": "Alle vensters naar de voorgrond brengen",
|
||||
"description": "Window menu command to bring all windows of current application to front"
|
||||
},
|
||||
"viewMenuResetZoom": {
|
||||
@ -1050,7 +1050,7 @@
|
||||
"description": "Label for the time a message was received"
|
||||
},
|
||||
"sendMessage": {
|
||||
"message": "Verzend een bericht",
|
||||
"message": "Een bericht verzenden",
|
||||
"description": "Placeholder text in the message entry field"
|
||||
},
|
||||
"groupMembers": {
|
||||
@ -1324,11 +1324,11 @@
|
||||
"description": "Button tooltip label for when screen sharing is disabled"
|
||||
},
|
||||
"calling__button--presenting-on": {
|
||||
"message": "Scherm laten zien beginnen",
|
||||
"message": "Scherm laten zien",
|
||||
"description": "Button tooltip label for starting to share screen"
|
||||
},
|
||||
"calling__button--presenting-off": {
|
||||
"message": "Scherm laten zien stoppen",
|
||||
"message": "Stoppen met scherm laten zien",
|
||||
"description": "Button tooltip label for stopping screen sharing"
|
||||
},
|
||||
"calling__your-video-is-off": {
|
||||
@ -1336,7 +1336,7 @@
|
||||
"description": "Label in the calling lobby indicating that your camera is off"
|
||||
},
|
||||
"calling__lobby-summary--zero": {
|
||||
"message": "Er is niemand behalve jou in dit gesprek",
|
||||
"message": "Er is niemand behalve jij in dit gesprek",
|
||||
"description": "Shown in the calling lobby to describe who is in the call"
|
||||
},
|
||||
"calling__lobby-summary--single": {
|
||||
@ -1404,7 +1404,7 @@
|
||||
}
|
||||
},
|
||||
"calling__in-this-call--zero": {
|
||||
"message": "Er is niemand behalve jou in dit gesprek",
|
||||
"message": "Er is niemand behalve jij in dit gesprek",
|
||||
"description": "Shown in the participants list to describe how many people are in the call"
|
||||
},
|
||||
"calling__in-this-call--one": {
|
||||
@ -1530,11 +1530,11 @@
|
||||
"description": "Header for permissions section of settings"
|
||||
},
|
||||
"mediaPermissionsDescription": {
|
||||
"message": "Geef toestemming om de microfoon te gebruiken",
|
||||
"message": "Toestemming geven om de microfoon te gebruiken",
|
||||
"description": "Description of the media permission description"
|
||||
},
|
||||
"mediaCameraPermissionsDescription": {
|
||||
"message": "Geef toestemming om de camera te gebruiken",
|
||||
"message": "Toestemming geven om de camera te gebruiken",
|
||||
"description": "Description of the media permission description"
|
||||
},
|
||||
"general": {
|
||||
@ -1554,7 +1554,7 @@
|
||||
"description": "Shown when the user disables spellcheck to indicate that they must restart Signal."
|
||||
},
|
||||
"autoLaunchDescription": {
|
||||
"message": "Start Signal wanneer je inlogt op je computer",
|
||||
"message": "Signal starten wanneer je inlogt op je computer",
|
||||
"description": "Description for the automatic launch setting"
|
||||
},
|
||||
"clearDataHeader": {
|
||||
@ -1598,7 +1598,7 @@
|
||||
"description": "Header for notification settings"
|
||||
},
|
||||
"notificationSettingsDialog": {
|
||||
"message": "Toon wanneer een bericht ontvangen wordt meldingen die het volgende weergeven:",
|
||||
"message": "Geef bij meldingen van binnenkomende berichten de volgende inhoud weer:",
|
||||
"description": "Explain the purpose of the notification settings"
|
||||
},
|
||||
"disableNotifications": {
|
||||
@ -1606,11 +1606,11 @@
|
||||
"description": "Label for disabling notifications"
|
||||
},
|
||||
"nameAndMessage": {
|
||||
"message": "Naam, berichtinhoud en handelingen",
|
||||
"message": "Naam, berichtinhoud en gebeurtenissen",
|
||||
"description": "Label for setting notifications to display name and message text"
|
||||
},
|
||||
"noNameOrMessage": {
|
||||
"message": "Geen naam of berichtinhoud",
|
||||
"message": "Geen naam en geen berichtinhoud",
|
||||
"description": "Label for setting notifications to display no name and no message text"
|
||||
},
|
||||
"nameOnly": {
|
||||
@ -1872,11 +1872,11 @@
|
||||
"description": "Description for audio notification setting"
|
||||
},
|
||||
"callRingtoneNotificationDescription": {
|
||||
"message": "Laat oproepgeluid horen",
|
||||
"message": "Oproepgeluid laten horen",
|
||||
"description": "Description for call ringtone notification setting"
|
||||
},
|
||||
"callSystemNotificationDescription": {
|
||||
"message": "Geef meldingen weer voor oproepen",
|
||||
"message": "Over oproepen meldingen weergeven",
|
||||
"description": "Description for call notification setting"
|
||||
},
|
||||
"incomingCallNotificationDescription": {
|
||||
@ -1960,7 +1960,7 @@
|
||||
"description": "Label text for dark theme"
|
||||
},
|
||||
"themeSystem": {
|
||||
"message": "Systeem",
|
||||
"message": "Systeemstandaard volgen",
|
||||
"description": "Label text for system theme"
|
||||
},
|
||||
"noteToSelf": {
|
||||
@ -2265,15 +2265,15 @@
|
||||
},
|
||||
"message--getDescription--disappearing-media": {
|
||||
"message": "Eenmaligeweergave-media",
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted."
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted. Also shown when quoting a view once media."
|
||||
},
|
||||
"message--getDescription--disappearing-photo": {
|
||||
"message": "Eenmaligeweergave-afbeelding",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo. Also shown when quoting a view once photo."
|
||||
},
|
||||
"message--getDescription--disappearing-video": {
|
||||
"message": "Eenmaligeweergave-video",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video. Also shown when quoting a view once video."
|
||||
},
|
||||
"message--deletedForEveryone": {
|
||||
"message": "Dit bericht is gewist.",
|
||||
@ -2590,7 +2590,7 @@
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"Keyboard--toggle-reaction-picker": {
|
||||
"message": "Emoji-reactie keuzemenu openen of sluiten voor het geselecteerde bericht",
|
||||
"message": "Emoji-reactie keuzemenu voor het geselecteerde bericht openen of sluiten",
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"Keyboard--save-attachment": {
|
||||
@ -2602,7 +2602,7 @@
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"Keyboard--add-newline": {
|
||||
"message": "Regeleinde toevoegen aan bericht",
|
||||
"message": "Regeleinde aan bericht toevoegen",
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"Keyboard--expand-composer": {
|
||||
@ -2694,7 +2694,7 @@
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"Keyboard--toggle-video": {
|
||||
"message": "Zet camera aan of uit",
|
||||
"message": "Camera aan- of uitzetten",
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"close-popup": {
|
||||
@ -3427,7 +3427,17 @@
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--entireScreen": {
|
||||
"message": "Het volledige scherm",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
"description": "Title for the select your screen sharing sources modal and 'Entire Screen' source"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--screen": {
|
||||
"message": "Scherm $id$",
|
||||
"description": "Title for `Screen #N` source in screen sharing sources modal and overlay",
|
||||
"placeholders": {
|
||||
"id": {
|
||||
"content": "$1",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--window": {
|
||||
"message": "Een bepaald venster",
|
||||
@ -4878,7 +4888,7 @@
|
||||
"description": "This is a button in the conversation context menu to show the chat color editor"
|
||||
},
|
||||
"showConversationDetails": {
|
||||
"message": "Groepsinstellingen",
|
||||
"message": "Groepsgesprek-instellingen",
|
||||
"description": "This is a button in the conversation context menu to show group settings"
|
||||
},
|
||||
"ConversationDetails--group-link": {
|
||||
@ -5469,20 +5479,28 @@
|
||||
"message": "Kleurinstelling verwijderen",
|
||||
"description": "Button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__resetDefault": {
|
||||
"message": "Kleurinstellingen verwijderen",
|
||||
"description": "Confirmation dialog title for resetting all chat colors or only the global default one"
|
||||
},
|
||||
"ChatColorPicker__resetAll": {
|
||||
"message": "Alle kleurinstellingen verwijderen",
|
||||
"description": "Button label for resetting all chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-default": {
|
||||
"message": "Alleen standaardkleurinstelling verwijderen",
|
||||
"description": "Button label for resetting only global chat color"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset": {
|
||||
"message": "Voor dit gesprek verwijderen",
|
||||
"message": "Alle kleurinstellingen verwijderen",
|
||||
"description": "Confirm button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-message": {
|
||||
"message": "Wil je alleen de standaardkleur verwijderen of wil je de kleurinstellingen van alle gesprekken verwijderen?",
|
||||
"message": "Wil je de kleurinstellingen van alle gesprekken verwijderen?",
|
||||
"description": "Modal message text for confirming resetting of chat colors"
|
||||
},
|
||||
"ChatColorPicker__custom-color--label": {
|
||||
"message": "Zelfgekozen-kleurmaker weergeven",
|
||||
"message": "Zelfgekozen-kleur-maker weergeven",
|
||||
"description": "aria-label for custom color editor button"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble1": {
|
||||
@ -5530,15 +5548,15 @@
|
||||
"description": "Modal title for the custom color editor"
|
||||
},
|
||||
"customDisappearingTimeOption": {
|
||||
"message": "Zelf gekozen tijdspanne …",
|
||||
"message": "Zelfgekozen tijdspanne …",
|
||||
"description": "Text for an option in Disappearing Messages menu and Conversation Details Disappearing Messages setting when no user value is available"
|
||||
},
|
||||
"selectedCustomDisappearingTimeOption": {
|
||||
"message": "Zelf gekozen tijdspanne",
|
||||
"message": "Zelfgekozen tijdspanne",
|
||||
"description": "Text for an option in Conversation Details Disappearing Messages setting when user previously selected custom time"
|
||||
},
|
||||
"DisappearingTimeDialog__title": {
|
||||
"message": "Zelf gekozen tijdspanne",
|
||||
"message": "Zelfgekozen tijdspanne",
|
||||
"description": "Title for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__body": {
|
||||
|
||||
@ -175,6 +175,10 @@
|
||||
"message": "Ver arquivo",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"avatarMenuChatColors": {
|
||||
"message": "Cor da conversa",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"loading": {
|
||||
"message": "A carregar...",
|
||||
"description": "Message shown on the loading screen before we've loaded any messages"
|
||||
@ -726,7 +730,7 @@
|
||||
"description": "Tooltip for the tray icon"
|
||||
},
|
||||
"search": {
|
||||
"message": "Pesquisar",
|
||||
"message": "Procurar",
|
||||
"description": "Placeholder text in the search input"
|
||||
},
|
||||
"clearSearch": {
|
||||
@ -734,7 +738,7 @@
|
||||
"description": "Aria label for clear search button"
|
||||
},
|
||||
"searchIn": {
|
||||
"message": "Pesquisar em $conversationName$",
|
||||
"message": "Procurar em $conversationName$",
|
||||
"description": "Shown in the search box before text is entered when searching in a specific conversation",
|
||||
"placeholders": {
|
||||
"conversationName": {
|
||||
@ -1139,6 +1143,38 @@
|
||||
"message": "Contactar o Suporte",
|
||||
"description": "Shown on explainer dialog available from chat session refreshed timeline events"
|
||||
},
|
||||
"DeliveryIssue--preview": {
|
||||
"message": "Problema na entrega",
|
||||
"description": "Shown in left pane preview when message delivery issue happens"
|
||||
},
|
||||
"DeliveryIssue--notification": {
|
||||
"message": "Não pode ser entregue uma mensagem de $sender$",
|
||||
"description": "Shown in timeline when message delivery issue happens",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DeliveryIssue--learnMore": {
|
||||
"message": "Saber mais",
|
||||
"description": "Shown in timeline when message delivery issue happens, to provide access to a popup info dialog"
|
||||
},
|
||||
"DeliveryIssue--title": {
|
||||
"message": "Problema na entrega",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events"
|
||||
},
|
||||
"DeliveryIssue--summary": {
|
||||
"message": "Uma mensagem, autocolante, reação, recibo de leitura ou multimédia enviada por $sender$ não pode ser entregue a si. Essa mensagem poderá ter sido tentada enviada para si diretamente ou através de um grupo.",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quoteThumbnailAlt": {
|
||||
"message": "Miniatura da imagem da mensagem",
|
||||
"description": "Used in alt tag of thumbnail images inside of an embedded message quote"
|
||||
@ -1240,7 +1276,7 @@
|
||||
"description": "Header for theme settings"
|
||||
},
|
||||
"calling": {
|
||||
"message": "A ligar",
|
||||
"message": "Chamadas",
|
||||
"description": "Header for calling options on the settings screen"
|
||||
},
|
||||
"calling__start": {
|
||||
@ -1458,23 +1494,19 @@
|
||||
"description": "Shown as the title for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--macos-permission-description": {
|
||||
"message": "Num computador Apple Mac a correr o macOS Catalina versão 10.15 ou posterior, o Signal necessita de permissão para aceder à gravação de ecrã do seu computador. ",
|
||||
"message": "O Signal necessita de permissão para aceder à gravação do ecrã do seu computador.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step1": {
|
||||
"message": "Vá até às 'Definições do sistema' e depois clique em 'Segurança e privacidade'.",
|
||||
"message": "Ir para as 'Definições do sistema'",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step2": {
|
||||
"message": "Clique em 'Privacidade'.",
|
||||
"message": "Clique no ícone de cadeado no canto inferior esquerdo e introduza a palavra-passe do seu computador. ",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step3": {
|
||||
"message": "À esquerda, clique em 'Gravação de ecrã'.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step4": {
|
||||
"message": "À direita, marque a caixa correspondente ao Signal.",
|
||||
"message": "À direita, marque a caixa ao lado do Signal. Se você não vir o Signal na lista, clique em + para o adicionar. ",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-open": {
|
||||
@ -1498,11 +1530,11 @@
|
||||
"description": "Header for permissions section of settings"
|
||||
},
|
||||
"mediaPermissionsDescription": {
|
||||
"message": "Permita o acesso ao microfone",
|
||||
"message": "Permitir o acesso ao microfone",
|
||||
"description": "Description of the media permission description"
|
||||
},
|
||||
"mediaCameraPermissionsDescription": {
|
||||
"message": "Permita o acesso à câmara",
|
||||
"message": "Permitir o acesso à câmara",
|
||||
"description": "Description of the media permission description"
|
||||
},
|
||||
"general": {
|
||||
@ -1801,7 +1833,7 @@
|
||||
},
|
||||
"disappearingMessages": {
|
||||
"message": "Destruição de mensagens",
|
||||
"description": "Conversation menu option to enable disappearing messages"
|
||||
"description": "Conversation menu option to enable disappearing messages. Title of the settings section for Disappearing Messages"
|
||||
},
|
||||
"disappearingMessagesDisabled": {
|
||||
"message": "Destruição de mensagens desativada",
|
||||
@ -1940,7 +1972,7 @@
|
||||
"description": "Description for the Note to Self conversation"
|
||||
},
|
||||
"notificationDrawAttention": {
|
||||
"message": "Chame atenção para esta janela quando chega uma notificação",
|
||||
"message": "Chamar atenção para esta janela quando chega uma notificação",
|
||||
"description": "Label text for the setting that controls whether new notifications draw attention to the window"
|
||||
},
|
||||
"hideMenuBar": {
|
||||
@ -1956,7 +1988,7 @@
|
||||
"description": "Label for header when starting a new conversation"
|
||||
},
|
||||
"contactSearchPlaceholder": {
|
||||
"message": "Pesquisar por nome ou número de telefone",
|
||||
"message": "Procurar por nome ou número de telefone",
|
||||
"description": "Placeholder to use when searching for contacts in the composer"
|
||||
},
|
||||
"noContactsFound": {
|
||||
@ -2037,6 +2069,10 @@
|
||||
"message": "Nome do grupo (obrigatório)",
|
||||
"description": "The placeholder for the group name placeholder"
|
||||
},
|
||||
"setGroupMetadata__group-description-placeholder": {
|
||||
"message": "Descrição",
|
||||
"description": "The placeholder for the group description"
|
||||
},
|
||||
"setGroupMetadata__create-group": {
|
||||
"message": "Criar",
|
||||
"description": "The 'create group' button text in the 'set group metadata' left pane screen"
|
||||
@ -2050,7 +2086,7 @@
|
||||
"description": "Shown in the modal when we can't create a group"
|
||||
},
|
||||
"updateGroupAttributes__title": {
|
||||
"message": "Editar nome e fotografia do grupo",
|
||||
"message": "Editar o grupo",
|
||||
"description": "Shown in the modal when we want to update a group"
|
||||
},
|
||||
"updateGroupAttributes__error-message": {
|
||||
@ -2229,15 +2265,15 @@
|
||||
},
|
||||
"message--getDescription--disappearing-media": {
|
||||
"message": "Multimédia de visualização única",
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted."
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted. Also shown when quoting a view once media."
|
||||
},
|
||||
"message--getDescription--disappearing-photo": {
|
||||
"message": "Fotografia de visualização única",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo. Also shown when quoting a view once photo."
|
||||
},
|
||||
"message--getDescription--disappearing-video": {
|
||||
"message": "Vídeo de visualização única",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video. Also shown when quoting a view once video."
|
||||
},
|
||||
"message--deletedForEveryone": {
|
||||
"message": "Esta mensagem foi eliminada.",
|
||||
@ -2352,7 +2388,7 @@
|
||||
"description": "Shown in the emoji picker when a search yields 0 results."
|
||||
},
|
||||
"EmojiPicker--search-placeholder": {
|
||||
"message": "Pesquisar emoji",
|
||||
"message": "Procurar emoji",
|
||||
"description": "Shown as a placeholder inside the emoji picker search field."
|
||||
},
|
||||
"EmojiPicker--skin-tone": {
|
||||
@ -2514,11 +2550,11 @@
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"Keyboard--search": {
|
||||
"message": "Pesquisar",
|
||||
"message": "Procurar",
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"Keyboard--search-in-conversation": {
|
||||
"message": "Pesquisar na conversa",
|
||||
"message": "Procurar na conversa",
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"Keyboard--focus-composer": {
|
||||
@ -2650,7 +2686,7 @@
|
||||
"description": "Shown in the shortcuts guide"
|
||||
},
|
||||
"Keyboard--calling-header": {
|
||||
"message": "A ligar",
|
||||
"message": "Chamadas",
|
||||
"description": "Header of the keyboard shortcuts guide - calling section"
|
||||
},
|
||||
"Keyboard--toggle-audio": {
|
||||
@ -2999,9 +3035,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"MessageRequests--block-and-delete": {
|
||||
"message": "Bloquear e eliminar",
|
||||
"description": "Shown as a button to let the user block and delete a message request"
|
||||
"MessageRequests--block-and-report-spam": {
|
||||
"message": "Reportar spam e bloquear",
|
||||
"description": "Shown as a button to let the user block a message request and report spam"
|
||||
},
|
||||
"MessageRequests--block-and-report-spam-success-toast": {
|
||||
"message": "Reportado como spam e bloqueado.",
|
||||
"description": "Shown in a toast when you successfully block a user and report them as spam"
|
||||
},
|
||||
"MessageRequests--block-direct-confirm-title": {
|
||||
"message": "Bloquear $name$?",
|
||||
@ -3387,7 +3427,17 @@
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--entireScreen": {
|
||||
"message": "Ecrã completo",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
"description": "Title for the select your screen sharing sources modal and 'Entire Screen' source"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--screen": {
|
||||
"message": "Ecrã $id$",
|
||||
"description": "Title for `Screen #N` source in screen sharing sources modal and overlay",
|
||||
"placeholders": {
|
||||
"id": {
|
||||
"content": "$1",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--window": {
|
||||
"message": "Uma janela",
|
||||
@ -4611,6 +4661,42 @@
|
||||
"message": "O link do grupo foi redefinido.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--you": {
|
||||
"message": "Você removeu a descrição do grupo.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--other": {
|
||||
"message": "$memberName$ removeu a descrição do grupo.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--remove--unknown": {
|
||||
"message": "A descrição do grupo foi removida.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--you": {
|
||||
"message": "Você alterou a descrição do grupo.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--other": {
|
||||
"message": "$memberName$ modificou a descrição do grupo.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--change--unknown": {
|
||||
"message": "A descrição do grupo foi alterada.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV1--Migration--disabled": {
|
||||
"message": "Faça o upgrade deste grupo para ativar os recursos novos como @menções e os administradores. Os membros que não partilharam os seus nomes ou fotografias neste grupo serão convidados a juntarem-se. $learnMore$",
|
||||
"description": "Shown instead of composition area when user is forced to migrate a legacy group (GV1).",
|
||||
@ -4797,6 +4883,10 @@
|
||||
"message": "Remover do grupo",
|
||||
"description": "Button text for remove from group button in Group Contact Details modal"
|
||||
},
|
||||
"showChatColorEditor": {
|
||||
"message": "Cor da conversa",
|
||||
"description": "This is a button in the conversation context menu to show the chat color editor"
|
||||
},
|
||||
"showConversationDetails": {
|
||||
"message": "Definições do grupo",
|
||||
"description": "This is a button in the conversation context menu to show group settings"
|
||||
@ -4818,7 +4908,7 @@
|
||||
"description": "This is the label for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--group-info-info": {
|
||||
"message": "Escolha quem pode editar o nome do grupo, o avatar e o temporizador da destruição de mensagens.",
|
||||
"message": "Escolha quem pode editar o nome do grupo, a fotografia, a descrição e o temporizador da destruição de mensagens.",
|
||||
"description": "This is the additional info for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--add-members-label": {
|
||||
@ -5249,10 +5339,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group": {
|
||||
"message": "$count$ membros do grupo tem o mesmo nome. $link$",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": "3"
|
||||
},
|
||||
"link": {
|
||||
"content": "$2",
|
||||
"example": "Tap to review"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name__link": {
|
||||
"message": "Rever pedido",
|
||||
"description": "Shown in the timeline warning when you have a message request from someone with the same name as someone else"
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group__link": {
|
||||
"message": "Clique para rever",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__title": {
|
||||
"message": "Rever pedido",
|
||||
"description": "Title for the contact name spoofing review dialog"
|
||||
@ -5269,6 +5377,46 @@
|
||||
"message": "O seu contacto",
|
||||
"description": "Header in the contact spoofing review dialog, shown above the \"safe\" user"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__title": {
|
||||
"message": "Rever membros",
|
||||
"description": "Title for the contact name spoofing review dialog in groups"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__description": {
|
||||
"message": "$count$ membros do grupo têm nomes similares, reveja os membros abaixo e escolha que ação tomar.",
|
||||
"description": "Description for the group contact spoofing review dialog"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__members-header": {
|
||||
"message": "Membros",
|
||||
"description": "Header in the group contact spoofing review dialog. After this header, there will be a list of members"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__name-change-info": {
|
||||
"message": "Alterou recentemente o seu nome de perfil de $oldName$ para $newName$",
|
||||
"description": "In the group contact spoofing review dialog, this text is shown when someone has changed their name recently",
|
||||
"placeholders": {
|
||||
"oldName": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
},
|
||||
"newName": {
|
||||
"content": "$2",
|
||||
"example": "Doe Jane"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__remove-button": {
|
||||
"message": "Remover do grupo",
|
||||
"description": "When confirming the removal of a group member, show this text in the button"
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__description": {
|
||||
"message": "Remover \"$name$\" deste grupo?",
|
||||
"description": "When confirming the removal of a group member, show this text in the dialog",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CaptchaDialog__title": {
|
||||
"message": "Verifique para continuar a conversar",
|
||||
"description": "Header in the captcha dialog"
|
||||
@ -5304,5 +5452,169 @@
|
||||
"deleteForEveryoneFailed": {
|
||||
"message": "Ocorreu um erro ao tentar eliminar a mensagem para todos. Por favor, tente mais tarde.",
|
||||
"description": "Displayed when delete-for-everyone has failed to send to all recepients"
|
||||
},
|
||||
"ChatColorPicker__delete--title": {
|
||||
"message": "Eliminar cor",
|
||||
"description": "Confirm title for deleting custom color"
|
||||
},
|
||||
"ChatColorPicker__delete--message": {
|
||||
"message": "Esta cor personalizada é utilizada em $num$ conversas. Deseja eliminá-la para todas as conversas?",
|
||||
"description": "Confirm message for deleting custom color",
|
||||
"placeholders": {
|
||||
"num": {
|
||||
"content": "$1",
|
||||
"example": "5"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ChatColorPicker__global-chat-color": {
|
||||
"message": "Cor das conversas globais",
|
||||
"description": "Modal title for the chat color picker and editor for all conversations"
|
||||
},
|
||||
"ChatColorPicker__menu-title": {
|
||||
"message": "Cor da conversa",
|
||||
"description": "View title for the chat color picker and editor"
|
||||
},
|
||||
"ChatColorPicker__reset": {
|
||||
"message": "Repor cor da conversa",
|
||||
"description": "Button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__resetDefault": {
|
||||
"message": "Repor todas as cores das conversas",
|
||||
"description": "Confirmation dialog title for resetting all chat colors or only the global default one"
|
||||
},
|
||||
"ChatColorPicker__resetAll": {
|
||||
"message": "Repor todas as cores das conversas",
|
||||
"description": "Button label for resetting all chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-default": {
|
||||
"message": "Repor padrão",
|
||||
"description": "Button label for resetting only global chat color"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset": {
|
||||
"message": "Reiniciar",
|
||||
"description": "Confirm button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-message": {
|
||||
"message": "Deseja modificar todas as cores das conversas?",
|
||||
"description": "Modal message text for confirming resetting of chat colors"
|
||||
},
|
||||
"ChatColorPicker__custom-color--label": {
|
||||
"message": "Exibir editor de cores personalizadas",
|
||||
"description": "aria-label for custom color editor button"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble1": {
|
||||
"message": "Aqui está uma simulação da cor da conversa.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble2": {
|
||||
"message": "Outra bolha.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble3": {
|
||||
"message": "A cor é visível apenas para si.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__context--edit": {
|
||||
"message": "Editar cor",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--duplicate": {
|
||||
"message": "Duplicar",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--delete": {
|
||||
"message": "Eliminar",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"CustomColorEditor__solid": {
|
||||
"message": "Sólida",
|
||||
"description": "Tab label for selecting solid colors"
|
||||
},
|
||||
"CustomColorEditor__gradient": {
|
||||
"message": "Gradiente",
|
||||
"description": "Tab label for selecting a gradient"
|
||||
},
|
||||
"CustomColorEditor__hue": {
|
||||
"message": "Tom",
|
||||
"description": "Label for the hue slider"
|
||||
},
|
||||
"CustomColorEditor__saturation": {
|
||||
"message": "Saturação",
|
||||
"description": "Label for the saturation slider"
|
||||
},
|
||||
"CustomColorEditor__title": {
|
||||
"message": "Cor personalizada",
|
||||
"description": "Modal title for the custom color editor"
|
||||
},
|
||||
"customDisappearingTimeOption": {
|
||||
"message": "Temporizador personalizado...",
|
||||
"description": "Text for an option in Disappearing Messages menu and Conversation Details Disappearing Messages setting when no user value is available"
|
||||
},
|
||||
"selectedCustomDisappearingTimeOption": {
|
||||
"message": "Temporizador personalizado",
|
||||
"description": "Text for an option in Conversation Details Disappearing Messages setting when user previously selected custom time"
|
||||
},
|
||||
"DisappearingTimeDialog__title": {
|
||||
"message": "Tempo personalizado",
|
||||
"description": "Title for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__body": {
|
||||
"message": "Escolha um temporizador personalizador para a destruição de mensagens.",
|
||||
"description": "Body for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__set": {
|
||||
"message": "Definir",
|
||||
"description": "Text for the dialog button confirming the custom disappearing message timeout"
|
||||
},
|
||||
"DisappearingTimeDialog__seconds": {
|
||||
"message": "Segundos",
|
||||
"description": "Name of the 'seconds' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__minutes": {
|
||||
"message": "Minutos",
|
||||
"description": "Name of the 'minutes' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__hours": {
|
||||
"message": "Horas",
|
||||
"description": "Name of the 'hours' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__days": {
|
||||
"message": "Dias",
|
||||
"description": "Name of the 'days' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__weeks": {
|
||||
"message": "Semanas",
|
||||
"description": "Name of the 'weeks' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"settings__DisappearingMessages__footer": {
|
||||
"message": "Defina um tempo padrão para a destruição de mensagens de todas as conversas novas iniciadas por si.",
|
||||
"description": "Footer for the Disappearing Messages settings section"
|
||||
},
|
||||
"settings__DisappearingMessages__timer__label": {
|
||||
"message": "Temporizador padrão para conversas novas",
|
||||
"description": "Label for the Disapearring Messages default timer setting"
|
||||
},
|
||||
"UniversalTimerNotification__text": {
|
||||
"message": "O tempo para a destruição de mensagens será definido para $timeValue$ quando você enviar mensagens.",
|
||||
"description": "A message displayed when default disappearing message timeout is about to be applied",
|
||||
"placeholders": {
|
||||
"timeValue": {
|
||||
"content": "$1",
|
||||
"example": "1 week"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupDescription__read-more": {
|
||||
"message": "ler mais",
|
||||
"description": "Button text when the group description is too long"
|
||||
},
|
||||
"EditConversationAttributesModal__description-warning": {
|
||||
"message": "As descrições do grupo serão visíveis para os membros deste grupo e para as pessoas que foram convidadas",
|
||||
"description": "Label text shown when editing group description"
|
||||
},
|
||||
"ConversationDetailsHeader--add-group-description": {
|
||||
"message": "Adicionar descrição do grupo...",
|
||||
"description": "Placeholder text in the details header for those that can edit the group description"
|
||||
}
|
||||
}
|
||||
|
||||
@ -2265,15 +2265,15 @@
|
||||
},
|
||||
"message--getDescription--disappearing-media": {
|
||||
"message": "Visa-en-gång media",
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted."
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted. Also shown when quoting a view once media."
|
||||
},
|
||||
"message--getDescription--disappearing-photo": {
|
||||
"message": "Visa-en-gång foto",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo. Also shown when quoting a view once photo."
|
||||
},
|
||||
"message--getDescription--disappearing-video": {
|
||||
"message": "Visa-en-gång video",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video. Also shown when quoting a view once video."
|
||||
},
|
||||
"message--deletedForEveryone": {
|
||||
"message": "Det här meddelandet togs bort.",
|
||||
@ -3427,7 +3427,17 @@
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--entireScreen": {
|
||||
"message": "Hela skärmen",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
"description": "Title for the select your screen sharing sources modal and 'Entire Screen' source"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--screen": {
|
||||
"message": "Skärm $id$",
|
||||
"description": "Title for `Screen #N` source in screen sharing sources modal and overlay",
|
||||
"placeholders": {
|
||||
"id": {
|
||||
"content": "$1",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--window": {
|
||||
"message": "Ett fönster",
|
||||
@ -5469,10 +5479,18 @@
|
||||
"message": "Återställ chattfärg",
|
||||
"description": "Button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__resetDefault": {
|
||||
"message": "Återställ chattfärger",
|
||||
"description": "Confirmation dialog title for resetting all chat colors or only the global default one"
|
||||
},
|
||||
"ChatColorPicker__resetAll": {
|
||||
"message": "Återställ alla chattfärger",
|
||||
"description": "Button label for resetting all chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-default": {
|
||||
"message": "Återställ till standard",
|
||||
"description": "Button label for resetting only global chat color"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset": {
|
||||
"message": "Starta om",
|
||||
"description": "Confirm button label for resetting chat colors"
|
||||
|
||||
@ -175,6 +175,10 @@
|
||||
"message": "Arşivi Görüntüle",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"avatarMenuChatColors": {
|
||||
"message": "Konuşma Rengi",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"loading": {
|
||||
"message": "Yükleniyor...",
|
||||
"description": "Message shown on the loading screen before we've loaded any messages"
|
||||
@ -702,7 +706,7 @@
|
||||
"description": "Item under the Help menu, which opens a small about window"
|
||||
},
|
||||
"screenShareWindow": {
|
||||
"message": "Sharing screen",
|
||||
"message": "Ekran paylaşımı",
|
||||
"description": "Title for screen sharing window"
|
||||
},
|
||||
"speech": {
|
||||
@ -754,7 +758,7 @@
|
||||
}
|
||||
},
|
||||
"noSearchResults--sms-only": {
|
||||
"message": "SMS/MMS contacts are not available on Desktop.",
|
||||
"message": "SMS/MMS kişileri Desktop'ta mevcut değil.",
|
||||
"description": "Shown in the search left pane when no results were found and primary device has SMS/MMS handling enabled"
|
||||
},
|
||||
"noSearchResultsInConversation": {
|
||||
@ -1139,6 +1143,38 @@
|
||||
"message": "Destekle İletişime Geçin",
|
||||
"description": "Shown on explainer dialog available from chat session refreshed timeline events"
|
||||
},
|
||||
"DeliveryIssue--preview": {
|
||||
"message": "Teslim sıkıntısı",
|
||||
"description": "Shown in left pane preview when message delivery issue happens"
|
||||
},
|
||||
"DeliveryIssue--notification": {
|
||||
"message": "$sender$ tarafından gönderilen bir ileti teslim edilemedi",
|
||||
"description": "Shown in timeline when message delivery issue happens",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DeliveryIssue--learnMore": {
|
||||
"message": "Dahasını Öğrenin",
|
||||
"description": "Shown in timeline when message delivery issue happens, to provide access to a popup info dialog"
|
||||
},
|
||||
"DeliveryIssue--title": {
|
||||
"message": "Teslim Sıkıntısı",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events"
|
||||
},
|
||||
"DeliveryIssue--summary": {
|
||||
"message": "$sender$ tarafından gönderilen bir ileti, çıkartma, tepki, okundu bilgisi veya medya size teslim edilemedi. Size doğrudan veya grup içerisinden göndermeye çalışmış olabilirler.",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quoteThumbnailAlt": {
|
||||
"message": "Alıntılanmış iletideki görüntünün önizlemesi",
|
||||
"description": "Used in alt tag of thumbnail images inside of an embedded message quote"
|
||||
@ -1284,15 +1320,15 @@
|
||||
"description": "Button tooltip label for turning on the microphone"
|
||||
},
|
||||
"calling__button--presenting-disabled": {
|
||||
"message": "Presenting disabled",
|
||||
"message": "Sunum yapma devre dışı",
|
||||
"description": "Button tooltip label for when screen sharing is disabled"
|
||||
},
|
||||
"calling__button--presenting-on": {
|
||||
"message": "Start presenting",
|
||||
"message": "Sunmaya başla",
|
||||
"description": "Button tooltip label for starting to share screen"
|
||||
},
|
||||
"calling__button--presenting-off": {
|
||||
"message": "Stop presenting",
|
||||
"message": "Sunmayı durdur",
|
||||
"description": "Button tooltip label for stopping screen sharing"
|
||||
},
|
||||
"calling__your-video-is-off": {
|
||||
@ -1408,15 +1444,15 @@
|
||||
"description": "Label for the \"scroll down\" button in a call's overflow area"
|
||||
},
|
||||
"calling__presenting--notification-title": {
|
||||
"message": "You're presenting to everyone.",
|
||||
"message": "Herkese sunuyorsunuz",
|
||||
"description": "Title for the share screen notification"
|
||||
},
|
||||
"calling__presenting--notification-body": {
|
||||
"message": "Click here to return to the call when you're ready to stop presenting.",
|
||||
"message": "Sunumu durdurmaya hazır olduğunuzda aramaya dönmek için buraya tıklayın.",
|
||||
"description": "Body text for the share screen notification"
|
||||
},
|
||||
"calling__presenting--info": {
|
||||
"message": "Signal is sharing $window$.",
|
||||
"message": "Signal $window$ penceresini paylaşıyor.",
|
||||
"description": "Text that appears in the screen sharing controller to inform person that they are presenting",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
@ -1426,15 +1462,15 @@
|
||||
}
|
||||
},
|
||||
"calling__presenting--stop": {
|
||||
"message": "Stop sharing",
|
||||
"message": "Paylaşmayı durdur",
|
||||
"description": "Button for stopping screen sharing"
|
||||
},
|
||||
"calling__presenting--you-stopped": {
|
||||
"message": "You stopped presenting",
|
||||
"message": "Sunmayı durdurdunuz",
|
||||
"description": "Toast that appears when someone stops presenting"
|
||||
},
|
||||
"calling__presenting--person-ongoing": {
|
||||
"message": "$name$ is presenting",
|
||||
"message": "$name$ sunuyor",
|
||||
"description": "Title of call when someone is presenting",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
@ -1444,7 +1480,7 @@
|
||||
}
|
||||
},
|
||||
"calling__presenting--person-stopped": {
|
||||
"message": "$name$ stopped presenting",
|
||||
"message": "$name$ sunmayı durdurdu",
|
||||
"description": "Toast that appears when someone stops presenting",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
@ -1454,31 +1490,27 @@
|
||||
}
|
||||
},
|
||||
"calling__presenting--permission-title": {
|
||||
"message": "Permission needed",
|
||||
"message": "İzin gerekiyor",
|
||||
"description": "Shown as the title for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--macos-permission-description": {
|
||||
"message": "On an Apple Mac computer using macOS Catalina version 10.15 or later, Signal needs permission to access your computer's screen recording.",
|
||||
"message": "Signal'in bilgisayarınızın ekran kaydına ulaşmak için izne ihtiyacı var.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step1": {
|
||||
"message": "Go to System Preferences and then click Security & Privacy.",
|
||||
"message": "Sistem Özelliklerine gidin.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step2": {
|
||||
"message": "Click Privacy.",
|
||||
"message": "Sol alttaki kilit simgesine tıklayın ve bilgisayarınızın parolasını girin.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step3": {
|
||||
"message": "On the left, click Screen Recording.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step4": {
|
||||
"message": "On the right, check the Signal box.",
|
||||
"message": "Sağ tarafta, Signal'in yanındaki kutuyu seçin. Eğer listede Signal'i göremiyorsanız + düğmesine tıklayarak onu ekleyin. ",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-open": {
|
||||
"message": "Open System Preferences",
|
||||
"message": "Sistem Özelliklerini Aç",
|
||||
"description": "The button that opens your system preferences for the needs screen record permissions modal"
|
||||
},
|
||||
"calling__presenting--permission-cancel": {
|
||||
@ -1510,7 +1542,7 @@
|
||||
"description": "Header for general options on the settings screen"
|
||||
},
|
||||
"spellCheckDescription": {
|
||||
"message": "Enable spell check",
|
||||
"message": "Yazım denetimini etkinleştir",
|
||||
"description": "Description of the spell check setting"
|
||||
},
|
||||
"spellCheckWillBeEnabled": {
|
||||
@ -1522,7 +1554,7 @@
|
||||
"description": "Shown when the user disables spellcheck to indicate that they must restart Signal."
|
||||
},
|
||||
"autoLaunchDescription": {
|
||||
"message": "Open at computer login",
|
||||
"message": "Bilgisayar oturum açıldığında başlat",
|
||||
"description": "Description for the automatic launch setting"
|
||||
},
|
||||
"clearDataHeader": {
|
||||
@ -1801,7 +1833,7 @@
|
||||
},
|
||||
"disappearingMessages": {
|
||||
"message": "Kaybolan iletiler",
|
||||
"description": "Conversation menu option to enable disappearing messages"
|
||||
"description": "Conversation menu option to enable disappearing messages. Title of the settings section for Disappearing Messages"
|
||||
},
|
||||
"disappearingMessagesDisabled": {
|
||||
"message": "Kaybolan iletiler devre dışı",
|
||||
@ -2037,6 +2069,10 @@
|
||||
"message": "Grup adı (gereklidir)",
|
||||
"description": "The placeholder for the group name placeholder"
|
||||
},
|
||||
"setGroupMetadata__group-description-placeholder": {
|
||||
"message": "Açıklama",
|
||||
"description": "The placeholder for the group description"
|
||||
},
|
||||
"setGroupMetadata__create-group": {
|
||||
"message": "Oluştur",
|
||||
"description": "The 'create group' button text in the 'set group metadata' left pane screen"
|
||||
@ -2050,7 +2086,7 @@
|
||||
"description": "Shown in the modal when we can't create a group"
|
||||
},
|
||||
"updateGroupAttributes__title": {
|
||||
"message": "Grup adını ve resmini düzenleyin",
|
||||
"message": "Grubu düzenle",
|
||||
"description": "Shown in the modal when we want to update a group"
|
||||
},
|
||||
"updateGroupAttributes__error-message": {
|
||||
@ -2229,15 +2265,15 @@
|
||||
},
|
||||
"message--getDescription--disappearing-media": {
|
||||
"message": "Tek görümlük İçerik",
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted."
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted. Also shown when quoting a view once media."
|
||||
},
|
||||
"message--getDescription--disappearing-photo": {
|
||||
"message": "Tek görümlük Fotoğraf",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo. Also shown when quoting a view once photo."
|
||||
},
|
||||
"message--getDescription--disappearing-video": {
|
||||
"message": "Tek görümlük Video",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video. Also shown when quoting a view once video."
|
||||
},
|
||||
"message--deletedForEveryone": {
|
||||
"message": "Bu ileti silindi.",
|
||||
@ -2999,9 +3035,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"MessageRequests--block-and-delete": {
|
||||
"message": "Engelle ve Sil",
|
||||
"description": "Shown as a button to let the user block and delete a message request"
|
||||
"MessageRequests--block-and-report-spam": {
|
||||
"message": "İstenmeyen olarak bildir ve Engelle",
|
||||
"description": "Shown as a button to let the user block a message request and report spam"
|
||||
},
|
||||
"MessageRequests--block-and-report-spam-success-toast": {
|
||||
"message": "Gereksiz olarak bildirildi ve engellendi",
|
||||
"description": "Shown in a toast when you successfully block a user and report them as spam"
|
||||
},
|
||||
"MessageRequests--block-direct-confirm-title": {
|
||||
"message": "$name$ engellensin mi?",
|
||||
@ -3378,19 +3418,29 @@
|
||||
"description": "Title for hang up button"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--title": {
|
||||
"message": "Share your screen",
|
||||
"message": "Ekran paylaş",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--confirm": {
|
||||
"message": "Share screen",
|
||||
"message": "Ekran paylaş",
|
||||
"description": "Confirm button for sharing screen modal"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--entireScreen": {
|
||||
"message": "Entire screen",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
"message": "Tüm ekran",
|
||||
"description": "Title for the select your screen sharing sources modal and 'Entire Screen' source"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--screen": {
|
||||
"message": "$id$ Ekranı",
|
||||
"description": "Title for `Screen #N` source in screen sharing sources modal and overlay",
|
||||
"placeholders": {
|
||||
"id": {
|
||||
"content": "$1",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--window": {
|
||||
"message": "A window",
|
||||
"message": "Bir pencere",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
},
|
||||
"callingDeviceSelection__label--video": {
|
||||
@ -4611,6 +4661,42 @@
|
||||
"message": "Grup bağlantısı sıfırlandı.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--you": {
|
||||
"message": "Grup açıklamasını kaldırdınız.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--other": {
|
||||
"message": "$memberName$ grup açıklamasını kaldırdı",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--remove--unknown": {
|
||||
"message": "Grup açıklaması kaldırıldı.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--you": {
|
||||
"message": "Grup tanımını değiştirdiniz.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--other": {
|
||||
"message": "$memberName$ grup açıklamasını değiştirdi",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--change--unknown": {
|
||||
"message": "Grup açıklaması değiştirildi.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV1--Migration--disabled": {
|
||||
"message": "Yöneticiler ve bahsedilmeler gibi yeni özellikleri etkinleştirmek için bu grubu yükseltin. Bu gruba resimlerini veya isimlerini paylaşmayan kişilere gruba katılma daveti gönderilecektir. $learnMore$",
|
||||
"description": "Shown instead of composition area when user is forced to migrate a legacy group (GV1).",
|
||||
@ -4746,15 +4832,15 @@
|
||||
"description": "Aria label for file attachment button in composition area"
|
||||
},
|
||||
"CompositionArea--sms-only__title": {
|
||||
"message": "This person isn’t using Signal",
|
||||
"message": "Bu kişi Signal kullanmıyor",
|
||||
"description": "Title for the composition area for the SMS-only contact"
|
||||
},
|
||||
"CompositionArea--sms-only__body": {
|
||||
"message": "Signal Desktop does not support messaging non-Signal contacts. Ask this person to install Signal for a more secure messaging experience.",
|
||||
"message": "Signal Desktop Signal olmayan kişilerle ileti alışverişini desteklemiyor. Bu kişiye daha güvenli ileti deneyimi için Signal kurmasını söyleyin.",
|
||||
"description": "Body for the composition area for the SMS-only contact"
|
||||
},
|
||||
"CompositionArea--sms-only__spinner-label": {
|
||||
"message": "Checking contact's registration status",
|
||||
"message": "Kişinin kayıt durumu denetleniyor",
|
||||
"description": "Displayed while checking if the contact is SMS-only"
|
||||
},
|
||||
"countMutedConversationsDescription": {
|
||||
@ -4797,6 +4883,10 @@
|
||||
"message": "Gruptan çıkart",
|
||||
"description": "Button text for remove from group button in Group Contact Details modal"
|
||||
},
|
||||
"showChatColorEditor": {
|
||||
"message": "Konuşma rengi",
|
||||
"description": "This is a button in the conversation context menu to show the chat color editor"
|
||||
},
|
||||
"showConversationDetails": {
|
||||
"message": "Grup ayarları",
|
||||
"description": "This is a button in the conversation context menu to show group settings"
|
||||
@ -4818,7 +4908,7 @@
|
||||
"description": "This is the label for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--group-info-info": {
|
||||
"message": "Grup adını, resmini ve kaybolan iletiler zamanlayıcısını kimin düzenleyebileceğini seçin.",
|
||||
"message": "Grup adını, fotoğrafını, açıklamasını ve kaybolan ileti zamanlayıcısını kimlerin düzenleyebileceğini seçin.",
|
||||
"description": "This is the additional info for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--add-members-label": {
|
||||
@ -5236,11 +5326,11 @@
|
||||
"description": "Shown in the message request warning dialog. Gives more information about message requests"
|
||||
},
|
||||
"MessageRequestWarning__dialog__learn-even-more": {
|
||||
"message": "About Message Requests",
|
||||
"message": "İleti İstekleri Hakkında",
|
||||
"description": "Shown in the message request warning dialog. Clicking this button will open a page on Signal's support site"
|
||||
},
|
||||
"ContactSpoofing__same-name": {
|
||||
"message": "Review requests carefully. Signal found another contact with the same name. $link$",
|
||||
"message": "İstekleri dikkatle gözden geçirin. Signal aynı ada sahip başka bir kişi buldu. $link$",
|
||||
"description": "Shown in the timeline warning when you have a message request from someone with the same name as someone else",
|
||||
"placeholders": {
|
||||
"link": {
|
||||
@ -5249,12 +5339,30 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group": {
|
||||
"message": "$count$ grup üyesi aynı ada sahip. $link$",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": "3"
|
||||
},
|
||||
"link": {
|
||||
"content": "$2",
|
||||
"example": "Tap to review"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name__link": {
|
||||
"message": "Review request",
|
||||
"message": "İsteği incele",
|
||||
"description": "Shown in the timeline warning when you have a message request from someone with the same name as someone else"
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group__link": {
|
||||
"message": "İncelemek için tıklayın",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__title": {
|
||||
"message": "Review request",
|
||||
"message": "İsteği incele",
|
||||
"description": "Title for the contact name spoofing review dialog"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__description": {
|
||||
@ -5269,8 +5377,48 @@
|
||||
"message": "Kişiniz",
|
||||
"description": "Header in the contact spoofing review dialog, shown above the \"safe\" user"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__title": {
|
||||
"message": "Üyeleri incele",
|
||||
"description": "Title for the contact name spoofing review dialog in groups"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__description": {
|
||||
"message": "$count$ grup üyesi benzer ada sahip, aşağıdaki üyeleri İnceleyin veya bir işlem seçin.",
|
||||
"description": "Description for the group contact spoofing review dialog"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__members-header": {
|
||||
"message": "Üyeler",
|
||||
"description": "Header in the group contact spoofing review dialog. After this header, there will be a list of members"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__name-change-info": {
|
||||
"message": "Yakın zamanda $oldName$ profil ismini $newName$ şeklinde değiştirdi",
|
||||
"description": "In the group contact spoofing review dialog, this text is shown when someone has changed their name recently",
|
||||
"placeholders": {
|
||||
"oldName": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
},
|
||||
"newName": {
|
||||
"content": "$2",
|
||||
"example": "Doe Jane"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__remove-button": {
|
||||
"message": "Gruptan çıkart",
|
||||
"description": "When confirming the removal of a group member, show this text in the button"
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__description": {
|
||||
"message": "\"$name$\" gruptan çıkarılsın mı?",
|
||||
"description": "When confirming the removal of a group member, show this text in the dialog",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CaptchaDialog__title": {
|
||||
"message": "İleti gönderimine devam etmek için doğrulayın",
|
||||
"message": "İleti göndermeyi sürdürmek için doğrulayın",
|
||||
"description": "Header in the captcha dialog"
|
||||
},
|
||||
"CaptchaDialog__first-paragraph": {
|
||||
@ -5282,27 +5430,191 @@
|
||||
"description": "First paragraph in the captcha dialog"
|
||||
},
|
||||
"CaptchaDialog--can-close__title": {
|
||||
"message": "Continue Without Verifying?",
|
||||
"message": "Doğrulamadan devam et?",
|
||||
"description": "Header in the captcha dialog that can be closed"
|
||||
},
|
||||
"CaptchaDialog--can-close__body": {
|
||||
"message": "If you choose to skip verification, you may miss messages from other people and your messages may fail to send.",
|
||||
"message": "Doğrulamayı atlamayı seçerseniz, diğer kişilerden gelen iletileri kaçırabilir ve ileti göndermekte başarısız olabilirsiniz.",
|
||||
"description": "Body of the captcha dialog that can be closed"
|
||||
},
|
||||
"CaptchaDialog--can_close__skip-verification": {
|
||||
"message": "Skip verification",
|
||||
"message": "Doğrulamayı atla",
|
||||
"description": "Skip button of the captcha dialog that can be closed"
|
||||
},
|
||||
"verificationComplete": {
|
||||
"message": "Verification complete.",
|
||||
"message": "Doğrulama tamamlandı.",
|
||||
"description": "Displayed after successful captcha"
|
||||
},
|
||||
"verificationFailed": {
|
||||
"message": "Verification failed. Please retry later.",
|
||||
"message": "Doğrulama başarısız oldu. Lütfen daha sonra tekrar deneyin.",
|
||||
"description": "Displayed after unsuccessful captcha"
|
||||
},
|
||||
"deleteForEveryoneFailed": {
|
||||
"message": "Failed to delete message for everyone. Please retry later.",
|
||||
"message": "İletinin herkesten silinmesi başarısız oldu. Lütfen daha sonra tekrar deneyin.",
|
||||
"description": "Displayed when delete-for-everyone has failed to send to all recepients"
|
||||
},
|
||||
"ChatColorPicker__delete--title": {
|
||||
"message": "Rengi sil",
|
||||
"description": "Confirm title for deleting custom color"
|
||||
},
|
||||
"ChatColorPicker__delete--message": {
|
||||
"message": "Bu özel renk $num$ sohbette kullanılıyor. Tüm sohbetler için silmek istiyor musunuz?",
|
||||
"description": "Confirm message for deleting custom color",
|
||||
"placeholders": {
|
||||
"num": {
|
||||
"content": "$1",
|
||||
"example": "5"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ChatColorPicker__global-chat-color": {
|
||||
"message": "Genel Sohhet Rengi",
|
||||
"description": "Modal title for the chat color picker and editor for all conversations"
|
||||
},
|
||||
"ChatColorPicker__menu-title": {
|
||||
"message": "Konuşma Rengi",
|
||||
"description": "View title for the chat color picker and editor"
|
||||
},
|
||||
"ChatColorPicker__reset": {
|
||||
"message": "Sohbet rengini sıfırla",
|
||||
"description": "Button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__resetDefault": {
|
||||
"message": "Sohbet Renklerini Sıfırla",
|
||||
"description": "Confirmation dialog title for resetting all chat colors or only the global default one"
|
||||
},
|
||||
"ChatColorPicker__resetAll": {
|
||||
"message": "Tüm sohbet renklerini sıfırla",
|
||||
"description": "Button label for resetting all chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-default": {
|
||||
"message": "Varsayılanı sıfırla",
|
||||
"description": "Button label for resetting only global chat color"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset": {
|
||||
"message": "Sıfırla",
|
||||
"description": "Confirm button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-message": {
|
||||
"message": "Tüm sohbet renklerini değiştirmek ister misiniz?",
|
||||
"description": "Modal message text for confirming resetting of chat colors"
|
||||
},
|
||||
"ChatColorPicker__custom-color--label": {
|
||||
"message": "Özel renk düzenleyiciyi görüntüle",
|
||||
"description": "aria-label for custom color editor button"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble1": {
|
||||
"message": "Sohbet renginin ön izlemesi",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble2": {
|
||||
"message": "Başka baloncuk.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble3": {
|
||||
"message": "Renk yalnızca size gözükür.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__context--edit": {
|
||||
"message": "Rengi düzenle",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--duplicate": {
|
||||
"message": "Kopyala",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--delete": {
|
||||
"message": "Sil",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"CustomColorEditor__solid": {
|
||||
"message": "Düz",
|
||||
"description": "Tab label for selecting solid colors"
|
||||
},
|
||||
"CustomColorEditor__gradient": {
|
||||
"message": "Karışım",
|
||||
"description": "Tab label for selecting a gradient"
|
||||
},
|
||||
"CustomColorEditor__hue": {
|
||||
"message": "Ton",
|
||||
"description": "Label for the hue slider"
|
||||
},
|
||||
"CustomColorEditor__saturation": {
|
||||
"message": "Doygunluk",
|
||||
"description": "Label for the saturation slider"
|
||||
},
|
||||
"CustomColorEditor__title": {
|
||||
"message": "Özel Renk",
|
||||
"description": "Modal title for the custom color editor"
|
||||
},
|
||||
"customDisappearingTimeOption": {
|
||||
"message": "Özel zaman...",
|
||||
"description": "Text for an option in Disappearing Messages menu and Conversation Details Disappearing Messages setting when no user value is available"
|
||||
},
|
||||
"selectedCustomDisappearingTimeOption": {
|
||||
"message": "Özel zaman",
|
||||
"description": "Text for an option in Conversation Details Disappearing Messages setting when user previously selected custom time"
|
||||
},
|
||||
"DisappearingTimeDialog__title": {
|
||||
"message": "Özel Zaman",
|
||||
"description": "Title for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__body": {
|
||||
"message": "Kaybolan iletiler için özel bir zaman seçin.",
|
||||
"description": "Body for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__set": {
|
||||
"message": "Ayarla",
|
||||
"description": "Text for the dialog button confirming the custom disappearing message timeout"
|
||||
},
|
||||
"DisappearingTimeDialog__seconds": {
|
||||
"message": "Saniye",
|
||||
"description": "Name of the 'seconds' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__minutes": {
|
||||
"message": "Dakika",
|
||||
"description": "Name of the 'minutes' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__hours": {
|
||||
"message": "Saat",
|
||||
"description": "Name of the 'hours' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__days": {
|
||||
"message": "Gün",
|
||||
"description": "Name of the 'days' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__weeks": {
|
||||
"message": "Hafta",
|
||||
"description": "Name of the 'weeks' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"settings__DisappearingMessages__footer": {
|
||||
"message": "Tarafınızca başlatılan tüm yeni iletiler için varsayılan kaybolan ileti zamanlayıcısı ayarlayın.",
|
||||
"description": "Footer for the Disappearing Messages settings section"
|
||||
},
|
||||
"settings__DisappearingMessages__timer__label": {
|
||||
"message": "Yeni sohbetler için varsayılan zamanlayıcı",
|
||||
"description": "Label for the Disapearring Messages default timer setting"
|
||||
},
|
||||
"UniversalTimerNotification__text": {
|
||||
"message": "Kişiye ileti gönderdiğinizde kaybolan ileti süresi $timeValue$ olarak ayarlanacaktır.",
|
||||
"description": "A message displayed when default disappearing message timeout is about to be applied",
|
||||
"placeholders": {
|
||||
"timeValue": {
|
||||
"content": "$1",
|
||||
"example": "1 week"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupDescription__read-more": {
|
||||
"message": "devamını oku",
|
||||
"description": "Button text when the group description is too long"
|
||||
},
|
||||
"EditConversationAttributesModal__description-warning": {
|
||||
"message": "Grup tanımları bu grubun üyeleri ve davetli kişiler tarafından görülebilecektir.",
|
||||
"description": "Label text shown when editing group description"
|
||||
},
|
||||
"ConversationDetailsHeader--add-group-description": {
|
||||
"message": "Grup açıklaması ekle",
|
||||
"description": "Placeholder text in the details header for those that can edit the group description"
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,6 +175,10 @@
|
||||
"message": "Переглянути архів",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"avatarMenuChatColors": {
|
||||
"message": "Колір чату",
|
||||
"description": "One of the menu options available in the Avatar Popup menu"
|
||||
},
|
||||
"loading": {
|
||||
"message": "Оновлення…",
|
||||
"description": "Message shown on the loading screen before we've loaded any messages"
|
||||
@ -1139,6 +1143,38 @@
|
||||
"message": "Зверніться в службу підтримки",
|
||||
"description": "Shown on explainer dialog available from chat session refreshed timeline events"
|
||||
},
|
||||
"DeliveryIssue--preview": {
|
||||
"message": "Delivery issue",
|
||||
"description": "Shown in left pane preview when message delivery issue happens"
|
||||
},
|
||||
"DeliveryIssue--notification": {
|
||||
"message": "A message from $sender$ couldn’t be delivered",
|
||||
"description": "Shown in timeline when message delivery issue happens",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DeliveryIssue--learnMore": {
|
||||
"message": "Дізнатися більше",
|
||||
"description": "Shown in timeline when message delivery issue happens, to provide access to a popup info dialog"
|
||||
},
|
||||
"DeliveryIssue--title": {
|
||||
"message": "Delivery Issue",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events"
|
||||
},
|
||||
"DeliveryIssue--summary": {
|
||||
"message": "A message, sticker, reaction, read receipt or media couldn’t be delivered to you from $sender$. They may have tried sending it to you directly, or in a group.",
|
||||
"description": "Shown on explainer dialog available from delivery issue timeline events",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quoteThumbnailAlt": {
|
||||
"message": "Thumbnail of image from quoted message",
|
||||
"description": "Used in alt tag of thumbnail images inside of an embedded message quote"
|
||||
@ -1458,23 +1494,19 @@
|
||||
"description": "Shown as the title for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--macos-permission-description": {
|
||||
"message": "On an Apple Mac computer using macOS Catalina version 10.15 or later, Signal needs permission to access your computer's screen recording.",
|
||||
"message": "Signal needs permission to access your computer's screen recording.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step1": {
|
||||
"message": "Go to System Preferences and then click Security & Privacy.",
|
||||
"message": "Go to System Preferences.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step2": {
|
||||
"message": "Click Privacy.",
|
||||
"message": "Click on the lock icon on the bottom left and enter your computer’s password.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step3": {
|
||||
"message": "On the left, click Screen Recording.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-instruction-step4": {
|
||||
"message": "On the right, check the Signal box.",
|
||||
"message": "On the right, check the box next to Signal. If you don’t see Signal in the list, click the + to add it.",
|
||||
"description": "Shown as the description for the modal that requests screen recording permissions"
|
||||
},
|
||||
"calling__presenting--permission-open": {
|
||||
@ -1546,7 +1578,7 @@
|
||||
"description": "Text describing what exactly will happen if the user clicks the button to delete all data"
|
||||
},
|
||||
"deleteAllDataButton": {
|
||||
"message": "Delete all data",
|
||||
"message": "Видалити усі дані",
|
||||
"description": "Text of the button that deletes all data"
|
||||
},
|
||||
"deleteAllDataProgress": {
|
||||
@ -1801,7 +1833,7 @@
|
||||
},
|
||||
"disappearingMessages": {
|
||||
"message": "Зникаючі повідомлення ",
|
||||
"description": "Conversation menu option to enable disappearing messages"
|
||||
"description": "Conversation menu option to enable disappearing messages. Title of the settings section for Disappearing Messages"
|
||||
},
|
||||
"disappearingMessagesDisabled": {
|
||||
"message": "Зникаючі повідомлення заборонені",
|
||||
@ -2037,6 +2069,10 @@
|
||||
"message": "Ім'я групи (обов'язково)",
|
||||
"description": "The placeholder for the group name placeholder"
|
||||
},
|
||||
"setGroupMetadata__group-description-placeholder": {
|
||||
"message": "Description",
|
||||
"description": "The placeholder for the group description"
|
||||
},
|
||||
"setGroupMetadata__create-group": {
|
||||
"message": "Створити",
|
||||
"description": "The 'create group' button text in the 'set group metadata' left pane screen"
|
||||
@ -2050,7 +2086,7 @@
|
||||
"description": "Shown in the modal when we can't create a group"
|
||||
},
|
||||
"updateGroupAttributes__title": {
|
||||
"message": "Редагувати назву та фото групи",
|
||||
"message": "Редагувати групу",
|
||||
"description": "Shown in the modal when we want to update a group"
|
||||
},
|
||||
"updateGroupAttributes__error-message": {
|
||||
@ -2229,15 +2265,15 @@
|
||||
},
|
||||
"message--getDescription--disappearing-media": {
|
||||
"message": "View-once Media",
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted."
|
||||
"description": "Shown in notifications and in the left pane after view-once message is deleted. Also shown when quoting a view once media."
|
||||
},
|
||||
"message--getDescription--disappearing-photo": {
|
||||
"message": "View-once Photo",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once photo. Also shown when quoting a view once photo."
|
||||
},
|
||||
"message--getDescription--disappearing-video": {
|
||||
"message": "View-once Video",
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video."
|
||||
"description": "Shown in notifications and in the left pane when a message is a view once video. Also shown when quoting a view once video."
|
||||
},
|
||||
"message--deletedForEveryone": {
|
||||
"message": "Це повідомлення було видалено.",
|
||||
@ -2999,9 +3035,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"MessageRequests--block-and-delete": {
|
||||
"message": "Заблокувати і Видалити",
|
||||
"description": "Shown as a button to let the user block and delete a message request"
|
||||
"MessageRequests--block-and-report-spam": {
|
||||
"message": "Report Spam and Block",
|
||||
"description": "Shown as a button to let the user block a message request and report spam"
|
||||
},
|
||||
"MessageRequests--block-and-report-spam-success-toast": {
|
||||
"message": "Reported as spam and blocked.",
|
||||
"description": "Shown in a toast when you successfully block a user and report them as spam"
|
||||
},
|
||||
"MessageRequests--block-direct-confirm-title": {
|
||||
"message": "Заблокувати $name$?",
|
||||
@ -3387,7 +3427,17 @@
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--entireScreen": {
|
||||
"message": "Entire screen",
|
||||
"description": "Title for the select your screen sharing sources modal"
|
||||
"description": "Title for the select your screen sharing sources modal and 'Entire Screen' source"
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--screen": {
|
||||
"message": "Screen $id$",
|
||||
"description": "Title for `Screen #N` source in screen sharing sources modal and overlay",
|
||||
"placeholders": {
|
||||
"id": {
|
||||
"content": "$1",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"calling__SelectPresentingSourcesModal--window": {
|
||||
"message": "A window",
|
||||
@ -4611,6 +4661,42 @@
|
||||
"message": "The group link has been reset.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--you": {
|
||||
"message": "Ви видалили опис групи.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--remove--other": {
|
||||
"message": "$memberName$ removed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--remove--unknown": {
|
||||
"message": "Опис групи видалено.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--you": {
|
||||
"message": "Ви змінили опис групи.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV2--description--change--other": {
|
||||
"message": "$memberName$ changed the group description.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes",
|
||||
"placeholders": {
|
||||
"adminName": {
|
||||
"content": "$1",
|
||||
"example": "Alice"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupV2--description--change--unknown": {
|
||||
"message": "Опис групи змінено.",
|
||||
"description": "Shown in timeline or conversation preview when v2 group changes"
|
||||
},
|
||||
"GroupV1--Migration--disabled": {
|
||||
"message": "Upgrade this group to activate new features like @mentions and admins. Members who have not shared their name or photo in this group will be invited to join. $learnMore$",
|
||||
"description": "Shown instead of composition area when user is forced to migrate a legacy group (GV1).",
|
||||
@ -4797,6 +4883,10 @@
|
||||
"message": "Видалити з групи",
|
||||
"description": "Button text for remove from group button in Group Contact Details modal"
|
||||
},
|
||||
"showChatColorEditor": {
|
||||
"message": "Колір чату",
|
||||
"description": "This is a button in the conversation context menu to show the chat color editor"
|
||||
},
|
||||
"showConversationDetails": {
|
||||
"message": "Налаштування групи",
|
||||
"description": "This is a button in the conversation context menu to show group settings"
|
||||
@ -4818,7 +4908,7 @@
|
||||
"description": "This is the label for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--group-info-info": {
|
||||
"message": "Виберіть, хто може редагувати ім'я й аватар групи та час видалення повідомлень з групи.",
|
||||
"message": "Choose who can edit group name, photo, description, and disappearing messages timer.",
|
||||
"description": "This is the additional info for the 'who can edit the group' panel"
|
||||
},
|
||||
"ConversationDetails--add-members-label": {
|
||||
@ -5249,10 +5339,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group": {
|
||||
"message": "$count$ group members have the same name. $link$",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"content": "$1",
|
||||
"example": "3"
|
||||
},
|
||||
"link": {
|
||||
"content": "$2",
|
||||
"example": "Tap to review"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ContactSpoofing__same-name__link": {
|
||||
"message": "Переглянути запит",
|
||||
"description": "Shown in the timeline warning when you have a message request from someone with the same name as someone else"
|
||||
},
|
||||
"ContactSpoofing__same-name-in-group__link": {
|
||||
"message": "Click to review",
|
||||
"description": "Shown in the timeline warning when you multiple group members have the same name"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__title": {
|
||||
"message": "Переглянути запит",
|
||||
"description": "Title for the contact name spoofing review dialog"
|
||||
@ -5269,6 +5377,46 @@
|
||||
"message": "Серед ваших контактів",
|
||||
"description": "Header in the contact spoofing review dialog, shown above the \"safe\" user"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__title": {
|
||||
"message": "Review members",
|
||||
"description": "Title for the contact name spoofing review dialog in groups"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__description": {
|
||||
"message": "$count$ group members have similar names. Review the members below or choose to take action.",
|
||||
"description": "Description for the group contact spoofing review dialog"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__members-header": {
|
||||
"message": "Учасники",
|
||||
"description": "Header in the group contact spoofing review dialog. After this header, there will be a list of members"
|
||||
},
|
||||
"ContactSpoofingReviewDialog__group__name-change-info": {
|
||||
"message": "Recently changed their profile name from $oldName$ to $newName$",
|
||||
"description": "In the group contact spoofing review dialog, this text is shown when someone has changed their name recently",
|
||||
"placeholders": {
|
||||
"oldName": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
},
|
||||
"newName": {
|
||||
"content": "$2",
|
||||
"example": "Doe Jane"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__remove-button": {
|
||||
"message": "Видалити з групи",
|
||||
"description": "When confirming the removal of a group member, show this text in the button"
|
||||
},
|
||||
"RemoveGroupMemberConfirmation__description": {
|
||||
"message": "Remove \"$name$\" from the group?",
|
||||
"description": "When confirming the removal of a group member, show this text in the dialog",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"content": "$1",
|
||||
"example": "Jane Doe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CaptchaDialog__title": {
|
||||
"message": "Підтвердити для продовження спілкування",
|
||||
"description": "Header in the captcha dialog"
|
||||
@ -5304,5 +5452,169 @@
|
||||
"deleteForEveryoneFailed": {
|
||||
"message": "Не вдалось видалити повідомлення у всіх. Будь ласка, спробуйте пізніше.",
|
||||
"description": "Displayed when delete-for-everyone has failed to send to all recepients"
|
||||
},
|
||||
"ChatColorPicker__delete--title": {
|
||||
"message": "Видалити колір",
|
||||
"description": "Confirm title for deleting custom color"
|
||||
},
|
||||
"ChatColorPicker__delete--message": {
|
||||
"message": "This custom color is used in $num$ chats. Do you want to delete it for all chats?",
|
||||
"description": "Confirm message for deleting custom color",
|
||||
"placeholders": {
|
||||
"num": {
|
||||
"content": "$1",
|
||||
"example": "5"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ChatColorPicker__global-chat-color": {
|
||||
"message": "Global Chat Color",
|
||||
"description": "Modal title for the chat color picker and editor for all conversations"
|
||||
},
|
||||
"ChatColorPicker__menu-title": {
|
||||
"message": "Колір чату",
|
||||
"description": "View title for the chat color picker and editor"
|
||||
},
|
||||
"ChatColorPicker__reset": {
|
||||
"message": "Reset chat color",
|
||||
"description": "Button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__resetDefault": {
|
||||
"message": "Скинути колір чатів",
|
||||
"description": "Confirmation dialog title for resetting all chat colors or only the global default one"
|
||||
},
|
||||
"ChatColorPicker__resetAll": {
|
||||
"message": "Reset all chat colors",
|
||||
"description": "Button label for resetting all chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-default": {
|
||||
"message": "Reset default",
|
||||
"description": "Button label for resetting only global chat color"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset": {
|
||||
"message": "Скинути",
|
||||
"description": "Confirm button label for resetting chat colors"
|
||||
},
|
||||
"ChatColorPicker__confirm-reset-message": {
|
||||
"message": "Бажаєте замінити колір усіх чатів?",
|
||||
"description": "Modal message text for confirming resetting of chat colors"
|
||||
},
|
||||
"ChatColorPicker__custom-color--label": {
|
||||
"message": "Show custom color editor",
|
||||
"description": "aria-label for custom color editor button"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble1": {
|
||||
"message": "Here's a preview of the chat color.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble2": {
|
||||
"message": "Another bubble.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__sampleBubble3": {
|
||||
"message": "Цей колір бачите лише ви.",
|
||||
"description": "An example message bubble for selecting the chat color"
|
||||
},
|
||||
"ChatColorPicker__context--edit": {
|
||||
"message": "Edit color",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--duplicate": {
|
||||
"message": "Створити копію",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"ChatColorPicker__context--delete": {
|
||||
"message": "Видалити",
|
||||
"description": "Option in the custom color bubble context menu"
|
||||
},
|
||||
"CustomColorEditor__solid": {
|
||||
"message": "Суцільний колір",
|
||||
"description": "Tab label for selecting solid colors"
|
||||
},
|
||||
"CustomColorEditor__gradient": {
|
||||
"message": "Градієнт",
|
||||
"description": "Tab label for selecting a gradient"
|
||||
},
|
||||
"CustomColorEditor__hue": {
|
||||
"message": "Відтінок",
|
||||
"description": "Label for the hue slider"
|
||||
},
|
||||
"CustomColorEditor__saturation": {
|
||||
"message": "Насиченість",
|
||||
"description": "Label for the saturation slider"
|
||||
},
|
||||
"CustomColorEditor__title": {
|
||||
"message": "Власний колір",
|
||||
"description": "Modal title for the custom color editor"
|
||||
},
|
||||
"customDisappearingTimeOption": {
|
||||
"message": "Custom time...",
|
||||
"description": "Text for an option in Disappearing Messages menu and Conversation Details Disappearing Messages setting when no user value is available"
|
||||
},
|
||||
"selectedCustomDisappearingTimeOption": {
|
||||
"message": "Custom time",
|
||||
"description": "Text for an option in Conversation Details Disappearing Messages setting when user previously selected custom time"
|
||||
},
|
||||
"DisappearingTimeDialog__title": {
|
||||
"message": "Власний час",
|
||||
"description": "Title for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__body": {
|
||||
"message": "Choose a custom time for disappearing messages.",
|
||||
"description": "Body for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__set": {
|
||||
"message": "Задати",
|
||||
"description": "Text for the dialog button confirming the custom disappearing message timeout"
|
||||
},
|
||||
"DisappearingTimeDialog__seconds": {
|
||||
"message": "Seconds",
|
||||
"description": "Name of the 'seconds' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__minutes": {
|
||||
"message": "Minutes",
|
||||
"description": "Name of the 'minutes' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__hours": {
|
||||
"message": "Hours",
|
||||
"description": "Name of the 'hours' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__days": {
|
||||
"message": "Days",
|
||||
"description": "Name of the 'days' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"DisappearingTimeDialog__weeks": {
|
||||
"message": "Weeks",
|
||||
"description": "Name of the 'weeks' unit select for the custom disappearing message timeout dialog"
|
||||
},
|
||||
"settings__DisappearingMessages__footer": {
|
||||
"message": "Встановіть таймер зникнення повідомлень за замовчуванням для усіх нових чатів, які ви створите.",
|
||||
"description": "Footer for the Disappearing Messages settings section"
|
||||
},
|
||||
"settings__DisappearingMessages__timer__label": {
|
||||
"message": "Default timer for new chats",
|
||||
"description": "Label for the Disapearring Messages default timer setting"
|
||||
},
|
||||
"UniversalTimerNotification__text": {
|
||||
"message": "The disappearing message time will be set to $timeValue$ when you message them.",
|
||||
"description": "A message displayed when default disappearing message timeout is about to be applied",
|
||||
"placeholders": {
|
||||
"timeValue": {
|
||||
"content": "$1",
|
||||
"example": "1 week"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GroupDescription__read-more": {
|
||||
"message": "read more",
|
||||
"description": "Button text when the group description is too long"
|
||||
},
|
||||
"EditConversationAttributesModal__description-warning": {
|
||||
"message": "Опис групи побачать учасники цієї групи та запрошені особи.",
|
||||
"description": "Label text shown when editing group description"
|
||||
},
|
||||
"ConversationDetailsHeader--add-group-description": {
|
||||
"message": "Додати опис групи...",
|
||||
"description": "Placeholder text in the details header for those that can edit the group description"
|
||||
}
|
||||
}
|
||||
|
||||
23
app/menu.js
23
app/menu.js
@ -229,6 +229,17 @@ function updateForMac(template, messages, options) {
|
||||
fileMenu.submenu.pop();
|
||||
fileMenu.submenu.pop();
|
||||
fileMenu.submenu.pop();
|
||||
// And insert "close".
|
||||
fileMenu.submenu.push(
|
||||
{
|
||||
type: 'separator',
|
||||
},
|
||||
{
|
||||
label: messages.windowMenuClose.message,
|
||||
accelerator: 'CmdOrCtrl+W',
|
||||
role: 'close',
|
||||
}
|
||||
);
|
||||
|
||||
// Add the OSX-specific Signal Desktop menu at the far left
|
||||
template.unshift({
|
||||
@ -249,6 +260,13 @@ function updateForMac(template, messages, options) {
|
||||
{
|
||||
type: 'separator',
|
||||
},
|
||||
{
|
||||
label: messages.appMenuServices.message,
|
||||
role: 'services',
|
||||
},
|
||||
{
|
||||
type: 'separator',
|
||||
},
|
||||
{
|
||||
label: messages.appMenuHide.message,
|
||||
role: 'hide',
|
||||
@ -294,11 +312,6 @@ function updateForMac(template, messages, options) {
|
||||
// Replace Window menu
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
template[4].submenu = [
|
||||
{
|
||||
label: messages.windowMenuClose.message,
|
||||
accelerator: 'CmdOrCtrl+W',
|
||||
role: 'close',
|
||||
},
|
||||
{
|
||||
label: messages.windowMenuMinimize.message,
|
||||
accelerator: 'CmdOrCtrl+M',
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
}
|
||||
|
||||
// Do not await, since this can deadlock the queue
|
||||
targetConversation.queueJob(async () => {
|
||||
targetConversation.queueJob('Deletes.onDelete', async () => {
|
||||
window.log.info('Handling DOE for', del.get('targetSentTimestamp'));
|
||||
|
||||
const messages = await window.Signal.Data.getMessagesBySentAt(
|
||||
|
||||
109
js/reactions.js
109
js/reactions.js
@ -65,67 +65,70 @@
|
||||
}
|
||||
|
||||
// awaiting is safe since `onReaction` is never called from inside the queue
|
||||
return await targetConversation.queueJob(async () => {
|
||||
window.log.info(
|
||||
'Handling reaction for',
|
||||
reaction.get('targetTimestamp')
|
||||
);
|
||||
|
||||
const messages = await window.Signal.Data.getMessagesBySentAt(
|
||||
reaction.get('targetTimestamp'),
|
||||
{
|
||||
MessageCollection: Whisper.MessageCollection,
|
||||
}
|
||||
);
|
||||
// Message is fetched inside the conversation queue so we have the
|
||||
// most recent data
|
||||
const targetMessage = messages.find(m => {
|
||||
const contact = m.getContact();
|
||||
|
||||
if (!contact) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const mcid = contact.get('id');
|
||||
const recid = ConversationController.ensureContactIds({
|
||||
uuid: reaction.get('targetAuthorUuid'),
|
||||
});
|
||||
return mcid === recid;
|
||||
});
|
||||
|
||||
if (!targetMessage) {
|
||||
return await targetConversation.queueJob(
|
||||
'Reactions.onReaction',
|
||||
async () => {
|
||||
window.log.info(
|
||||
'No message for reaction',
|
||||
reaction.get('targetAuthorUuid'),
|
||||
'Handling reaction for',
|
||||
reaction.get('targetTimestamp')
|
||||
);
|
||||
|
||||
// Since we haven't received the message for which we are removing a
|
||||
// reaction, we can just remove those pending reactions
|
||||
if (reaction.get('remove')) {
|
||||
this.remove(reaction);
|
||||
const oldReaction = this.where({
|
||||
targetAuthorUuid: reaction.get('targetAuthorUuid'),
|
||||
targetTimestamp: reaction.get('targetTimestamp'),
|
||||
emoji: reaction.get('emoji'),
|
||||
const messages = await window.Signal.Data.getMessagesBySentAt(
|
||||
reaction.get('targetTimestamp'),
|
||||
{
|
||||
MessageCollection: Whisper.MessageCollection,
|
||||
}
|
||||
);
|
||||
// Message is fetched inside the conversation queue so we have the
|
||||
// most recent data
|
||||
const targetMessage = messages.find(m => {
|
||||
const contact = m.getContact();
|
||||
|
||||
if (!contact) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const mcid = contact.get('id');
|
||||
const recid = ConversationController.ensureContactIds({
|
||||
uuid: reaction.get('targetAuthorUuid'),
|
||||
});
|
||||
oldReaction.forEach(r => this.remove(r));
|
||||
return mcid === recid;
|
||||
});
|
||||
|
||||
if (!targetMessage) {
|
||||
window.log.info(
|
||||
'No message for reaction',
|
||||
reaction.get('targetAuthorUuid'),
|
||||
reaction.get('targetTimestamp')
|
||||
);
|
||||
|
||||
// Since we haven't received the message for which we are removing a
|
||||
// reaction, we can just remove those pending reactions
|
||||
if (reaction.get('remove')) {
|
||||
this.remove(reaction);
|
||||
const oldReaction = this.where({
|
||||
targetAuthorUuid: reaction.get('targetAuthorUuid'),
|
||||
targetTimestamp: reaction.get('targetTimestamp'),
|
||||
emoji: reaction.get('emoji'),
|
||||
});
|
||||
oldReaction.forEach(r => this.remove(r));
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
const message = MessageController.register(
|
||||
targetMessage.id,
|
||||
targetMessage
|
||||
);
|
||||
|
||||
const oldReaction = await message.handleReaction(reaction);
|
||||
|
||||
this.remove(reaction);
|
||||
|
||||
return oldReaction;
|
||||
}
|
||||
|
||||
const message = MessageController.register(
|
||||
targetMessage.id,
|
||||
targetMessage
|
||||
);
|
||||
|
||||
const oldReaction = await message.handleReaction(reaction);
|
||||
|
||||
this.remove(reaction);
|
||||
|
||||
return oldReaction;
|
||||
});
|
||||
);
|
||||
} catch (error) {
|
||||
window.log.error(
|
||||
'Reactions.onReaction error:',
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"description": "Private messaging from your desktop",
|
||||
"desktopName": "signal.desktop",
|
||||
"repository": "https://github.com/signalapp/Signal-Desktop.git",
|
||||
"version": "5.5.0-beta.1",
|
||||
"version": "5.5.0",
|
||||
"license": "AGPL-3.0-only",
|
||||
"author": {
|
||||
"name": "Open Whisper Systems",
|
||||
|
||||
@ -17,6 +17,13 @@
|
||||
{
|
||||
"type": "separator"
|
||||
},
|
||||
{
|
||||
"label": "Services",
|
||||
"role": "services"
|
||||
},
|
||||
{
|
||||
"type": "separator"
|
||||
},
|
||||
{
|
||||
"label": "Hide",
|
||||
"role": "hide"
|
||||
@ -51,6 +58,14 @@
|
||||
{
|
||||
"label": "Create/upload sticker pack",
|
||||
"click": null
|
||||
},
|
||||
{
|
||||
"type": "separator"
|
||||
},
|
||||
{
|
||||
"accelerator": "CmdOrCtrl+W",
|
||||
"label": "Close Window",
|
||||
"role": "close"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -153,11 +168,6 @@
|
||||
"label": "&Window",
|
||||
"role": "window",
|
||||
"submenu": [
|
||||
{
|
||||
"label": "Close Window",
|
||||
"accelerator": "CmdOrCtrl+W",
|
||||
"role": "close"
|
||||
},
|
||||
{
|
||||
"label": "Minimize",
|
||||
"accelerator": "CmdOrCtrl+M",
|
||||
|
||||
@ -17,6 +17,13 @@
|
||||
{
|
||||
"type": "separator"
|
||||
},
|
||||
{
|
||||
"label": "Services",
|
||||
"role": "services"
|
||||
},
|
||||
{
|
||||
"type": "separator"
|
||||
},
|
||||
{
|
||||
"label": "Hide",
|
||||
"role": "hide"
|
||||
@ -44,6 +51,14 @@
|
||||
{
|
||||
"label": "Create/upload sticker pack",
|
||||
"click": null
|
||||
},
|
||||
{
|
||||
"type": "separator"
|
||||
},
|
||||
{
|
||||
"accelerator": "CmdOrCtrl+W",
|
||||
"label": "Close Window",
|
||||
"role": "close"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -146,11 +161,6 @@
|
||||
"label": "&Window",
|
||||
"role": "window",
|
||||
"submenu": [
|
||||
{
|
||||
"label": "Close Window",
|
||||
"accelerator": "CmdOrCtrl+W",
|
||||
"role": "close"
|
||||
},
|
||||
{
|
||||
"label": "Minimize",
|
||||
"accelerator": "CmdOrCtrl+M",
|
||||
|
||||
@ -161,7 +161,7 @@ export async function startApp(): Promise<void> {
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const e164 = c.get('e164')!;
|
||||
|
||||
c.queueJob(async () => {
|
||||
c.queueJob('sendDeliveryReceipt', async () => {
|
||||
try {
|
||||
const {
|
||||
wrap,
|
||||
@ -851,7 +851,7 @@ export async function startApp(): Promise<void> {
|
||||
if (conversation) {
|
||||
const receivedAt = Date.now();
|
||||
const receivedAtCounter = window.Signal.Util.incrementMessageCounter();
|
||||
conversation.queueJob(() =>
|
||||
conversation.queueJob('addDeliveryIssue', () =>
|
||||
conversation.addDeliveryIssue({
|
||||
receivedAt,
|
||||
receivedAtCounter,
|
||||
@ -2865,7 +2865,9 @@ export async function startApp(): Promise<void> {
|
||||
);
|
||||
}
|
||||
|
||||
sender.queueJob(() => sender.sendProfileKeyUpdate());
|
||||
sender.queueJob('sendProfileKeyUpdate', () =>
|
||||
sender.sendProfileKeyUpdate()
|
||||
);
|
||||
});
|
||||
},
|
||||
|
||||
@ -3757,7 +3759,7 @@ export async function startApp(): Promise<void> {
|
||||
window.log.warn(
|
||||
`requestResend/${logId}: No content hint, adding error immediately`
|
||||
);
|
||||
conversation.queueJob(async () => {
|
||||
conversation.queueJob('addDeliveryIssue', async () => {
|
||||
conversation.addDeliveryIssue({
|
||||
receivedAt: receivedAtDate,
|
||||
receivedAtCounter,
|
||||
@ -3805,7 +3807,7 @@ export async function startApp(): Promise<void> {
|
||||
|
||||
const receivedAt = Date.now();
|
||||
const receivedAtCounter = window.Signal.Util.incrementMessageCounter();
|
||||
conversation.queueJob(async () => {
|
||||
conversation.queueJob('addChatSessionRefreshed', async () => {
|
||||
conversation.addChatSessionRefreshed({ receivedAt, receivedAtCounter });
|
||||
});
|
||||
}
|
||||
|
||||
@ -351,13 +351,14 @@ export class Message extends React.Component<Props, State> {
|
||||
}
|
||||
};
|
||||
|
||||
public showMenuIfNoSelection = (
|
||||
event: React.MouseEvent<HTMLDivElement>
|
||||
): void => {
|
||||
public showContextMenu = (event: React.MouseEvent<HTMLDivElement>): void => {
|
||||
const selection = window.getSelection();
|
||||
if (selection && !selection.isCollapsed) {
|
||||
return;
|
||||
}
|
||||
if (event.target instanceof HTMLAnchorElement) {
|
||||
return;
|
||||
}
|
||||
this.showMenu(event);
|
||||
};
|
||||
|
||||
@ -2330,7 +2331,7 @@ export class Message extends React.Component<Props, State> {
|
||||
<div
|
||||
className={containerClassnames}
|
||||
style={containerStyles}
|
||||
onContextMenu={this.showMenuIfNoSelection}
|
||||
onContextMenu={this.showContextMenu}
|
||||
>
|
||||
{this.renderAuthor()}
|
||||
{this.renderContents()}
|
||||
|
||||
10
ts/groups.ts
10
ts/groups.ts
@ -1259,7 +1259,7 @@ export async function modifyGroupV2({
|
||||
window.log.info(`modifyGroupV2/${idLog}: Queuing attempt ${attempt}`);
|
||||
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await conversation.queueJob(async () => {
|
||||
await conversation.queueJob('modifyGroupV2', async () => {
|
||||
window.log.info(`modifyGroupV2/${idLog}: Running attempt ${attempt}`);
|
||||
|
||||
const actions = await createGroupChange();
|
||||
@ -1670,7 +1670,7 @@ export async function createGroupV2({
|
||||
}
|
||||
);
|
||||
|
||||
await conversation.queueJob(() => {
|
||||
await conversation.queueJob('storageServiceUploadJob', () => {
|
||||
window.Signal.Services.storageServiceUploadJob();
|
||||
});
|
||||
|
||||
@ -2023,7 +2023,7 @@ export async function initiateMigrationToGroupV2(
|
||||
await maybeFetchNewCredentials();
|
||||
|
||||
try {
|
||||
await conversation.queueJob(async () => {
|
||||
await conversation.queueJob('initiateMigrationToGroupV2', async () => {
|
||||
const ACCESS_ENUM =
|
||||
window.textsecure.protobuf.AccessControl.AccessRequired;
|
||||
|
||||
@ -2310,7 +2310,7 @@ export async function waitThenRespondToGroupV2Migration(
|
||||
// Then wait to process all outstanding messages for this conversation
|
||||
const { conversation } = options;
|
||||
|
||||
await conversation.queueJob(async () => {
|
||||
await conversation.queueJob('waitThenRespondToGroupV2Migration', async () => {
|
||||
try {
|
||||
// And finally try to migrate the group
|
||||
await respondToGroupV2Migration(options);
|
||||
@ -2698,7 +2698,7 @@ export async function waitThenMaybeUpdateGroup(
|
||||
return;
|
||||
}
|
||||
|
||||
await conversation.queueJob(async () => {
|
||||
await conversation.queueJob('waitThenMaybeUpdateGroup', async () => {
|
||||
try {
|
||||
// And finally try to update the group
|
||||
await maybeUpdateGroup(options, { viaSync });
|
||||
|
||||
@ -89,6 +89,8 @@ const { addStickerPackReference } = window.Signal.Data;
|
||||
const THREE_HOURS = 3 * 60 * 60 * 1000;
|
||||
const FIVE_MINUTES = 1000 * 60 * 5;
|
||||
|
||||
const JOB_REPORTING_THRESHOLD_MS = 25;
|
||||
|
||||
const ATTRIBUTES_THAT_DONT_INVALIDATE_PROPS_CACHE = new Set([
|
||||
'profileLastFetchedAt',
|
||||
]);
|
||||
@ -1051,7 +1053,9 @@ export class ConversationModel extends window.Backbone
|
||||
this.setRegistered();
|
||||
|
||||
// If we couldn't apply universal timer before - try it again.
|
||||
this.queueJob(() => this.maybeSetPendingUniversalTimer());
|
||||
this.queueJob('maybeSetPendingUniversalTimer', () =>
|
||||
this.maybeSetPendingUniversalTimer()
|
||||
);
|
||||
}
|
||||
|
||||
isValid(): boolean {
|
||||
@ -1168,7 +1172,7 @@ export class ConversationModel extends window.Backbone
|
||||
return;
|
||||
}
|
||||
|
||||
await this.queueJob(async () => {
|
||||
await this.queueJob('sendTypingMessage', async () => {
|
||||
const recipientId = isDirectConversation(this.attributes)
|
||||
? this.getSendTarget()
|
||||
: undefined;
|
||||
@ -2154,19 +2158,25 @@ export class ConversationModel extends window.Backbone
|
||||
setVerifiedDefault(options?: VerificationOptions): Promise<unknown> {
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const { DEFAULT } = this.verifiedEnum!;
|
||||
return this.queueJob(() => this._setVerified(DEFAULT, options));
|
||||
return this.queueJob('setVerifiedDefault', () =>
|
||||
this._setVerified(DEFAULT, options)
|
||||
);
|
||||
}
|
||||
|
||||
setVerified(options?: VerificationOptions): Promise<unknown> {
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const { VERIFIED } = this.verifiedEnum!;
|
||||
return this.queueJob(() => this._setVerified(VERIFIED, options));
|
||||
return this.queueJob('setVerified', () =>
|
||||
this._setVerified(VERIFIED, options)
|
||||
);
|
||||
}
|
||||
|
||||
setUnverified(options: VerificationOptions): Promise<unknown> {
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const { UNVERIFIED } = this.verifiedEnum!;
|
||||
return this.queueJob(() => this._setVerified(UNVERIFIED, options));
|
||||
return this.queueJob('setUnverified', () =>
|
||||
this._setVerified(UNVERIFIED, options)
|
||||
);
|
||||
}
|
||||
|
||||
async _setVerified(
|
||||
@ -2863,7 +2873,7 @@ export class ConversationModel extends window.Backbone
|
||||
|
||||
// Lastly, we don't send read syncs for any message marked read due to a read
|
||||
// sync. That's a notification explosion we don't need.
|
||||
return this.queueJob(() =>
|
||||
return this.queueJob('onReadMessage', () =>
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
this.markRead(message.get('received_at')!, {
|
||||
sendReadReceipts: false,
|
||||
@ -2936,7 +2946,10 @@ export class ConversationModel extends window.Backbone
|
||||
return null;
|
||||
}
|
||||
|
||||
queueJob(callback: () => unknown | Promise<unknown>): Promise<WhatIsThis> {
|
||||
queueJob(
|
||||
name: string,
|
||||
callback: () => unknown | Promise<unknown>
|
||||
): Promise<WhatIsThis> {
|
||||
this.jobQueue = this.jobQueue || new window.PQueue({ concurrency: 1 });
|
||||
|
||||
const taskWithTimeout = window.textsecure.createTaskWithTimeout(
|
||||
@ -2944,7 +2957,27 @@ export class ConversationModel extends window.Backbone
|
||||
`conversation ${this.idForLogging()}`
|
||||
);
|
||||
|
||||
return this.jobQueue.add(taskWithTimeout);
|
||||
const queuedAt = Date.now();
|
||||
return this.jobQueue.add(async () => {
|
||||
const startedAt = Date.now();
|
||||
const waitTime = startedAt - queuedAt;
|
||||
|
||||
if (waitTime > JOB_REPORTING_THRESHOLD_MS) {
|
||||
window.log.info(
|
||||
`Conversation job ${name} was blocked for ${waitTime}ms`
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
return await taskWithTimeout();
|
||||
} finally {
|
||||
const duration = Date.now() - startedAt;
|
||||
|
||||
if (duration > JOB_REPORTING_THRESHOLD_MS) {
|
||||
window.log.info(`Conversation job ${name} took ${duration}ms`);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
isAdmin(conversationId: string): boolean {
|
||||
@ -3232,7 +3265,7 @@ export class ConversationModel extends window.Backbone
|
||||
const destination = this.getSendTarget()!;
|
||||
const recipients = this.getRecipients();
|
||||
|
||||
return this.queueJob(async () => {
|
||||
return this.queueJob('sendDeleteForEveryone', async () => {
|
||||
window.log.info(
|
||||
'Sending deleteForEveryone to conversation',
|
||||
this.idForLogging(),
|
||||
@ -3362,7 +3395,7 @@ export class ConversationModel extends window.Backbone
|
||||
const destination = this.getSendTarget()!;
|
||||
const recipients = this.getRecipients();
|
||||
|
||||
return this.queueJob(async () => {
|
||||
return this.queueJob('sendReactionMessage', async () => {
|
||||
window.log.info(
|
||||
'Sending reaction to conversation',
|
||||
this.idForLogging(),
|
||||
@ -3559,7 +3592,7 @@ export class ConversationModel extends window.Backbone
|
||||
const destination = this.getSendTarget()!;
|
||||
const recipients = this.getRecipients();
|
||||
|
||||
this.queueJob(async () => {
|
||||
this.queueJob('sendMessage', async () => {
|
||||
const now = timestamp || Date.now();
|
||||
|
||||
await this.maybeApplyUniversalTimer();
|
||||
@ -3756,7 +3789,9 @@ export class ConversationModel extends window.Backbone
|
||||
return;
|
||||
}
|
||||
|
||||
this.queueJob(() => this.maybeSetPendingUniversalTimer());
|
||||
this.queueJob('maybeSetPendingUniversalTimer', () =>
|
||||
this.maybeSetPendingUniversalTimer()
|
||||
);
|
||||
|
||||
const ourConversationId = window.ConversationController.getOurConversationId();
|
||||
if (!ourConversationId) {
|
||||
@ -5018,7 +5053,7 @@ export class ConversationModel extends window.Backbone
|
||||
);
|
||||
this.set({ needsStorageServiceSync: true });
|
||||
|
||||
this.queueJob(() => {
|
||||
this.queueJob('captureChange', () => {
|
||||
Services.storageServiceUploadJob();
|
||||
});
|
||||
}
|
||||
|
||||
@ -3507,7 +3507,7 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const conversation = window.ConversationController.get(conversationId)!;
|
||||
return conversation.queueJob(async () => {
|
||||
return conversation.queueJob('handleDataMessage', async () => {
|
||||
window.log.info(
|
||||
`Starting handleDataMessage for message ${message.idForLogging()} in conversation ${conversation.idForLogging()}`
|
||||
);
|
||||
|
||||
@ -842,9 +842,7 @@ export async function mergeAccountRecord(
|
||||
window.storage.put('primarySendsSms', primarySendsSms);
|
||||
}
|
||||
|
||||
if (typeof universalExpireTimer === 'number') {
|
||||
setUniversalExpireTimer(universalExpireTimer);
|
||||
}
|
||||
setUniversalExpireTimer(universalExpireTimer || 0);
|
||||
|
||||
const PHONE_NUMBER_SHARING_MODE_ENUM =
|
||||
window.textsecure.protobuf.AccountRecord.PhoneNumberSharingMode;
|
||||
|
||||
154
ts/sql/Server.ts
154
ts/sql/Server.ts
@ -36,6 +36,7 @@ import { combineNames } from '../util/combineNames';
|
||||
import { getExpiresAt } from '../services/MessageUpdater';
|
||||
import { isNormalNumber } from '../util/isNormalNumber';
|
||||
import { isNotNil } from '../util/isNotNil';
|
||||
import * as iterables from '../util/iterables';
|
||||
import { ConversationColorType, CustomColorType } from '../types/Colors';
|
||||
|
||||
import {
|
||||
@ -3256,73 +3257,6 @@ function getExpireData(
|
||||
};
|
||||
}
|
||||
|
||||
function updateExpirationTimers(
|
||||
conversationId: string,
|
||||
newestUnreadId: number,
|
||||
messagesWithExpireTimer: Map<
|
||||
string,
|
||||
{
|
||||
id: string;
|
||||
expireTimer: number;
|
||||
}
|
||||
>,
|
||||
readAt?: number
|
||||
) {
|
||||
const db = getInstance();
|
||||
|
||||
const rowsWithSameExpireTimer = new Map();
|
||||
for (const row of messagesWithExpireTimer.values()) {
|
||||
const { expireTimer } = row;
|
||||
const expireTimerRow = rowsWithSameExpireTimer.get(expireTimer);
|
||||
|
||||
if (expireTimerRow) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { expirationStartTimestamp, expiresAt } = getExpireData(
|
||||
expireTimer,
|
||||
readAt
|
||||
);
|
||||
|
||||
rowsWithSameExpireTimer.set(expireTimer, {
|
||||
expirationStartTimestamp,
|
||||
expireTimer,
|
||||
expiresAt,
|
||||
});
|
||||
}
|
||||
|
||||
rowsWithSameExpireTimer.forEach(
|
||||
({ expirationStartTimestamp, expireTimer, expiresAt }) => {
|
||||
db.prepare<Query>(
|
||||
`
|
||||
UPDATE messages
|
||||
SET
|
||||
unread = 0,
|
||||
expires_at = $expiresAt,
|
||||
expirationStartTimestamp = $expirationStartTimestamp,
|
||||
json = json_patch(json, $jsonPatch)
|
||||
WHERE
|
||||
unread = 0 AND
|
||||
conversationId = $conversationId AND
|
||||
received_at <= $newestUnreadId AND
|
||||
expireTimer = $expireTimer
|
||||
`
|
||||
).run({
|
||||
conversationId,
|
||||
expirationStartTimestamp,
|
||||
expireTimer,
|
||||
expiresAt,
|
||||
jsonPatch: JSON.stringify({
|
||||
expirationStartTimestamp,
|
||||
expires_at: expiresAt,
|
||||
unread: 0,
|
||||
}),
|
||||
newestUnreadId,
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
async function getUnreadCountForConversation(
|
||||
conversationId: string
|
||||
): Promise<number> {
|
||||
@ -3372,26 +3306,6 @@ async function getUnreadByConversationAndMarkRead(
|
||||
return [];
|
||||
}
|
||||
|
||||
const messagesWithExpireTimer: Map<
|
||||
string,
|
||||
{
|
||||
id: string;
|
||||
expireTimer: number;
|
||||
}
|
||||
> = new Map();
|
||||
|
||||
rows.forEach(row => {
|
||||
if (
|
||||
row.expireTimer &&
|
||||
(!row.expirationStartTimestamp || !row.expires_at)
|
||||
) {
|
||||
messagesWithExpireTimer.set(row.id, {
|
||||
id: row.id,
|
||||
expireTimer: row.expireTimer,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
db.prepare<Query>(
|
||||
`
|
||||
UPDATE messages
|
||||
@ -3410,34 +3324,58 @@ async function getUnreadByConversationAndMarkRead(
|
||||
unread: 1,
|
||||
});
|
||||
|
||||
if (messagesWithExpireTimer.size) {
|
||||
updateExpirationTimers(
|
||||
conversationId,
|
||||
newestUnreadId,
|
||||
messagesWithExpireTimer,
|
||||
readAt
|
||||
);
|
||||
const rowsWithExpireTimers = iterables.filter(rows, row => row.expireTimer);
|
||||
const rowsNeedingExpirationUpdates = iterables.filter(
|
||||
rowsWithExpireTimers,
|
||||
row =>
|
||||
!row.expirationStartTimestamp ||
|
||||
!row.expires_at ||
|
||||
getExpireData(row.expireTimer, readAt).expirationStartTimestamp <
|
||||
row.expirationStartTimestamp
|
||||
);
|
||||
const expirationStartTimestampUpdates: Iterable<{
|
||||
id: string;
|
||||
expirationStartTimestamp: number;
|
||||
expiresAt: number;
|
||||
}> = iterables.map(rowsNeedingExpirationUpdates, row => ({
|
||||
id: row.id,
|
||||
...getExpireData(row.expireTimer, readAt),
|
||||
}));
|
||||
const stmt = db.prepare<Query>(
|
||||
`
|
||||
UPDATE messages
|
||||
SET
|
||||
expirationStartTimestamp = $expirationStartTimestamp,
|
||||
expires_at = $expiresAt
|
||||
WHERE
|
||||
id = $id;
|
||||
`
|
||||
);
|
||||
const updatedExpireDataByRowId = new Map<
|
||||
string,
|
||||
{
|
||||
expirationStartTimestamp: number;
|
||||
expiresAt: number;
|
||||
}
|
||||
>();
|
||||
for (const update of expirationStartTimestampUpdates) {
|
||||
stmt.run(update);
|
||||
updatedExpireDataByRowId.set(update.id, update);
|
||||
}
|
||||
|
||||
return rows.map(row => {
|
||||
const json = jsonToObject(row.json);
|
||||
const expireAttrs = {};
|
||||
const expiringMessage = messagesWithExpireTimer.get(row.id);
|
||||
if (expiringMessage) {
|
||||
const { expirationStartTimestamp, expiresAt } = getExpireData(
|
||||
expiringMessage.expireTimer,
|
||||
readAt
|
||||
);
|
||||
Object.assign(expireAttrs, {
|
||||
expirationStartTimestamp,
|
||||
expires_at: expiresAt,
|
||||
});
|
||||
}
|
||||
|
||||
const updatedExpireData = updatedExpireDataByRowId.get(row.id);
|
||||
return {
|
||||
unread: false,
|
||||
...pick(json, ['id', 'sent_at', 'source', 'sourceUuid', 'type']),
|
||||
...expireAttrs,
|
||||
...(updatedExpireData
|
||||
? {
|
||||
expirationStartTimestamp:
|
||||
updatedExpireData.expirationStartTimestamp,
|
||||
expires_at: updatedExpireData.expiresAt,
|
||||
}
|
||||
: {}),
|
||||
};
|
||||
});
|
||||
})();
|
||||
|
||||
@ -223,6 +223,20 @@ describe('WebSocket-Resource', () => {
|
||||
this.clock.next();
|
||||
});
|
||||
|
||||
it('optionally disconnects if suspended', function thisNeeded1(done) {
|
||||
const socket = new FakeSocket();
|
||||
|
||||
sinon.stub(socket, 'close').callsFake(() => done());
|
||||
|
||||
new WebSocketResource(socket as WebSocket, {
|
||||
keepalive: true,
|
||||
});
|
||||
|
||||
// Just skip one hour immediately
|
||||
this.clock.setSystemTime(NOW + 3600 * 1000);
|
||||
this.clock.next();
|
||||
});
|
||||
|
||||
it('allows resetting the keepalive timer', function thisNeeded2(done) {
|
||||
const startTime = Date.now();
|
||||
|
||||
|
||||
@ -336,9 +336,18 @@ async function _connectSocket(
|
||||
|
||||
reject(translatedError);
|
||||
});
|
||||
client.on('connectFailed', error => {
|
||||
client.on('connectFailed', e => {
|
||||
clearTimeout(timer);
|
||||
reject(error);
|
||||
|
||||
reject(
|
||||
makeHTTPError(
|
||||
'_connectSocket connectFailed',
|
||||
0,
|
||||
{},
|
||||
e.toString(),
|
||||
stack
|
||||
)
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@ -33,6 +33,8 @@ import { ByteBufferClass } from '../window.d';
|
||||
|
||||
import EventTarget from './EventTarget';
|
||||
|
||||
import { isOlderThan } from '../util/timestamp';
|
||||
|
||||
class Request {
|
||||
verb: string;
|
||||
|
||||
@ -263,6 +265,10 @@ type KeepAliveOptionsType = {
|
||||
disconnect?: boolean;
|
||||
};
|
||||
|
||||
const KEEPALIVE_INTERVAL_MS = 55000; // 55 seconds + 5 seconds for closing the
|
||||
// socket above.
|
||||
const MAX_KEEPALIVE_INTERVAL_MS = 300 * 1000; // 5 minutes
|
||||
|
||||
class KeepAlive {
|
||||
private keepAliveTimer: NodeJS.Timeout | undefined;
|
||||
|
||||
@ -274,6 +280,8 @@ class KeepAlive {
|
||||
|
||||
private wsr: WebSocketResource;
|
||||
|
||||
private lastAliveAt: number = Date.now();
|
||||
|
||||
constructor(
|
||||
websocketResource: WebSocketResource,
|
||||
opts: KeepAliveOptionsType = {}
|
||||
@ -294,9 +302,19 @@ class KeepAlive {
|
||||
public send(): void {
|
||||
this.clearTimers();
|
||||
|
||||
if (isOlderThan(this.lastAliveAt, MAX_KEEPALIVE_INTERVAL_MS)) {
|
||||
window.log.info('WebSocketResources: disconnecting due to stale state');
|
||||
this.wsr.close(
|
||||
3001,
|
||||
`Last keepalive request was too far in the past: ${this.lastAliveAt}`
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.disconnect) {
|
||||
// automatically disconnect if server doesn't ack
|
||||
this.disconnectTimer = setTimeout(() => {
|
||||
window.log.info('WebSocketResources: disconnecting due to no response');
|
||||
this.clearTimers();
|
||||
|
||||
this.wsr.close(3001, 'No response to keepalive request');
|
||||
@ -314,9 +332,11 @@ class KeepAlive {
|
||||
}
|
||||
|
||||
public reset(): void {
|
||||
this.lastAliveAt = Date.now();
|
||||
|
||||
this.clearTimers();
|
||||
|
||||
this.keepAliveTimer = setTimeout(() => this.send(), 55000);
|
||||
this.keepAliveTimer = setTimeout(() => this.send(), KEEPALIVE_INTERVAL_MS);
|
||||
}
|
||||
|
||||
private clearTimers(): void {
|
||||
|
||||
@ -150,7 +150,7 @@ export async function sendContentMessageToGroup({
|
||||
timestamp,
|
||||
contentHint,
|
||||
groupId,
|
||||
sendOptions
|
||||
{ ...sendOptions, online }
|
||||
);
|
||||
}
|
||||
|
||||
@ -438,7 +438,7 @@ export async function sendToGroupViaSenderKey(options: {
|
||||
timestamp,
|
||||
contentHint,
|
||||
groupId,
|
||||
sendOptions
|
||||
{ ...sendOptions, online }
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user