Merge branch 'hotfix/2.19.1'

This commit is contained in:
Michael Kirk 2017-11-29 14:07:33 -08:00
commit fd829ba575
14 changed files with 3624 additions and 104 deletions

View file

@ -38,7 +38,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.19.0</string>
<string>2.19.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@ -55,7 +55,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>2.19.0.22</string>
<string>2.19.1.0</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LOGS_EMAIL</key>
@ -103,6 +103,8 @@
<string>Signal needs access to your microphone to make and receive phone calls and record voice messages.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Signal will let you choose which photos from your library to send.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Signal will save photos to your library.</string>
<key>UIAppFonts</key>
<array>
<string>dripicons-v2.ttf</string>

View file

@ -15,6 +15,24 @@ enum SignalAttachmentError: Error {
case invalidFileFormat
}
extension String {
var filenameWithoutExtension: String {
return (self as NSString).deletingPathExtension
}
var fileExtension: String? {
return (self as NSString).pathExtension
}
func appendingFileExtension(_ fileExtension: String) -> String {
guard let result = (self as NSString).appendingPathExtension(fileExtension) else {
owsFail("Failed to append file extension: \(fileExtension) to string: \(self)")
return self
}
return result
}
}
extension SignalAttachmentError: LocalizedError {
public var errorDescription: String {
switch self {
@ -485,6 +503,7 @@ class SignalAttachment: NSObject {
attachment.error = .fileSizeTooLarge
return attachment
}
// Never re-encode animated images (i.e. GIFs) as JPEGs.
Logger.verbose("\(TAG) Sending raw \(attachment.mimeType) to retain any animation")
return attachment
@ -496,6 +515,25 @@ class SignalAttachment: NSObject {
attachment.cachedImage = image
if isInputImageValidOutputImage(image: image, dataSource: dataSource, dataUTI: dataUTI) {
if let sourceFilename = dataSource.sourceFilename,
let sourceFileExtension = sourceFilename.fileExtension,
["heic", "heif"].contains(sourceFileExtension.lowercased()) {
// If a .heic file actually contains jpeg data, update the extension to match.
//
// Here's how that can happen:
// In iOS11, the Photos.app records photos with HEIC UTIType, with the .HEIC extension.
// Since HEIC isn't a valid output format for Signal, we'll detect that and convert to JPEG,
// updating the extension as well. No problem.
// However the problem comes in when you edit an HEIC image in Photos.app - the image is saved
// in the Photos.app as a JPEG, but retains the (now incongruous) HEIC extension in the filename.
assert(dataUTI == kUTTypeJPEG as String)
Logger.verbose("\(self.TAG) changing extension: \(sourceFileExtension) to match jpg uti type")
let baseFilename = sourceFilename.filenameWithoutExtension
dataSource.sourceFilename = baseFilename.appendingFileExtension("jpg")
}
Logger.verbose("\(TAG) Sending raw \(attachment.mimeType)")
return attachment
}
@ -580,7 +618,10 @@ class SignalAttachment: NSObject {
attachment.error = .couldNotConvertToJpeg
return attachment
}
dataSource.sourceFilename = filename
let baseFilename = filename?.filenameWithoutExtension
let jpgFilename = baseFilename?.appendingFileExtension("jpg")
dataSource.sourceFilename = jpgFilename
if UInt(jpgImageData.count) <= kMaxFileSizeImage {
let recompressedAttachment = SignalAttachment(dataSource : dataSource, dataUTI: kUTTypeJPEG as String)

View file

@ -198,18 +198,33 @@ NS_ASSUME_NONNULL_BEGIN
// We don't support shift-return because it is often used for "newline" in other
// messaging apps.
return @[
[UIKeyCommand keyCommandWithInput:@"\r"
modifierFlags:UIKeyModifierCommand
action:@selector(modifiedReturnPressed:)
discoverabilityTitle:@"Send Message"],
[self keyCommandWithInput:@"\r"
modifierFlags:UIKeyModifierCommand
action:@selector(modifiedReturnPressed:)
discoverabilityTitle:@"Send Message"],
// "Alternate" is option.
[UIKeyCommand keyCommandWithInput:@"\r"
modifierFlags:UIKeyModifierAlternate
action:@selector(modifiedReturnPressed:)
discoverabilityTitle:@"Send Message"],
[self keyCommandWithInput:@"\r"
modifierFlags:UIKeyModifierAlternate
action:@selector(modifiedReturnPressed:)
discoverabilityTitle:@"Send Message"],
];
}
- (UIKeyCommand *)keyCommandWithInput:(NSString *)input
modifierFlags:(UIKeyModifierFlags)modifierFlags
action:(SEL)action
discoverabilityTitle:(NSString *)discoverabilityTitle
{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(9, 0)) {
return [UIKeyCommand keyCommandWithInput:input
modifierFlags:modifierFlags
action:action
discoverabilityTitle:discoverabilityTitle];
} else {
return [UIKeyCommand keyCommandWithInput:input modifierFlags:modifierFlags action:action];
}
}
- (void)modifiedReturnPressed:(UIKeyCommand *)sender
{
DDLogInfo(@"%@ modifiedReturnPressed: %@", self.logTag, sender.input);

View file

@ -2734,9 +2734,13 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
}
[modalActivityIndicator dismissWithCompletion:^{
NSString *baseFilename = filename.stringByDeletingPathExtension;
NSString *mp4Filename = [baseFilename stringByAppendingPathExtension:@"mp4"];
DataSource *_Nullable dataSource =
[DataSourcePath dataSourceWithURL:compressedVideoUrl];
[dataSource setSourceFilename:filename];
[dataSource setSourceFilename:mp4Filename];
// Remove temporary file when complete.
[dataSource setShouldDeleteOnDeallocation];
SignalAttachment *attachment =

View file

@ -53,7 +53,7 @@
"APN_MESSAGE_IN_GROUP_DETAILED" = "%@ en el grup %@: %@";
/* Text prompting user to edit their profile name. */
"APP_SETTINGS_EDIT_PROFILE_NAME_PROMPT" = "Enter your name";
"APP_SETTINGS_EDIT_PROFILE_NAME_PROMPT" = "Introduïu el vostre nom";
/* Message format for the 'new app version available' alert. Embeds: {{The latest app version number.}}. */
"APP_UPDATE_NAG_ALERT_MESSAGE_FORMAT" = "Ja és disponible la versió %@ a l'App Store.";
@ -191,7 +191,7 @@
"BLOCK_OFFER_ACTIONSHEET_TITLE_FORMAT" = "Voleu blocar %@?";
/* Label for generic done button. */
"BUTTON_DONE" = "Done";
"BUTTON_DONE" = "Fet";
/* Alert message when calling and permissions for microphone are missing */
"CALL_AUDIO_PERMISSION_MESSAGE" = "El Signal necessita accés al micròfon per a trucar i enregistrar missatges de veu. Podeu donar-li l'accés a la configuració del sistema.";
@ -221,19 +221,19 @@
"CALL_USER_ALERT_TITLE" = "Voleu trucar?";
/* Accessibility label for accepting incoming calls */
"CALL_VIEW_ACCEPT_INCOMING_CALL_LABEL" = "Accept incoming call";
"CALL_VIEW_ACCEPT_INCOMING_CALL_LABEL" = "Accepta trucades";
/* Accessibility label for selection the audio source */
"CALL_VIEW_AUDIO_SOURCE_LABEL" = "Audio";
"CALL_VIEW_AUDIO_SOURCE_LABEL" = "Àudio";
/* Accessibility label for declining incoming calls */
"CALL_VIEW_DECLINE_INCOMING_CALL_LABEL" = "Decline incoming call";
"CALL_VIEW_DECLINE_INCOMING_CALL_LABEL" = "Rebutja trucades";
/* Accessibility label for hang up call */
"CALL_VIEW_HANGUP_LABEL" = "End call";
"CALL_VIEW_HANGUP_LABEL" = "Finalitza la trucada";
/* Accessibility label for muting the microphone */
"CALL_VIEW_MUTE_LABEL" = "Mute";
"CALL_VIEW_MUTE_LABEL" = "Silencia";
/* Reminder to the user of the benefits of enabling CallKit and disabling CallKit privacy. */
"CALL_VIEW_SETTINGS_NAG_DESCRIPTION_ALL" = "Podeu contestar telefonades directament des de la pantalla de bloqueig i veure el nom i el telèfon de les telefonades rebudes si canvieu la configuració.\n\nVegeu la configuració de privadesa per a més detalls.";
@ -248,10 +248,10 @@
"CALL_VIEW_SETTINGS_NAG_SHOW_CALL_SETTINGS" = "Mostra la configuració de privadesa";
/* Accessibility label to switch to audio only */
"CALL_VIEW_SWITCH_TO_AUDIO_LABEL" = "Switch to audio call";
"CALL_VIEW_SWITCH_TO_AUDIO_LABEL" = "Canvia a trucada d'àudio";
/* Accessibility label to switch to video call */
"CALL_VIEW_SWITCH_TO_VIDEO_LABEL" = "Switch to video call";
"CALL_VIEW_SWITCH_TO_VIDEO_LABEL" = "Canvia a trucada de vídeo";
/* notification action */
"CALLBACK_BUTTON_TITLE" = "Torna-li la trucada";
@ -272,13 +272,13 @@
"COMPARE_SAFETY_NUMBER_ACTION" = "Compara'l amb el porta-retalls";
/* Table section header for contact listing when composing a new message */
"COMPOSE_MESSAGE_CONTACT_SECTION_TITLE" = "Contacts";
"COMPOSE_MESSAGE_CONTACT_SECTION_TITLE" = "Contactes";
/* Table section header for group listing when composing a new message */
"COMPOSE_MESSAGE_GROUP_SECTION_TITLE" = "Groups";
"COMPOSE_MESSAGE_GROUP_SECTION_TITLE" = "Grups";
/* Table section header for invite listing when composing a new message */
"COMPOSE_MESSAGE_INVITE_SECTION_TITLE" = "Invite";
"COMPOSE_MESSAGE_INVITE_SECTION_TITLE" = "Convida";
/* Multiline label explaining why compose-screen contact picker is empty. */
"COMPOSE_SCREEN_MISSING_CONTACTS_PERMISSION" = "Per a veure quins dels vostres contactes són usuaris del Signal, permeteu-li l'accés als contactes a la configuració del sistema.";
@ -386,7 +386,7 @@
"CONVERSATION_SETTINGS_VIEW_SHARE_PROFILE_WITH_USER" = "Compartiu el vostre perfil";
/* Message shown in conversation view that offers to add an unknown user to your phone's contacts. */
"CONVERSATION_VIEW_ADD_TO_CONTACTS_OFFER" = "Add to Contacts";
"CONVERSATION_VIEW_ADD_TO_CONTACTS_OFFER" = "Afegeux als contactes";
/* Message shown in conversation view that offers to share your profile with a user. */
"CONVERSATION_VIEW_ADD_USER_TO_PROFILE_WHITELIST_OFFER" = "Share Your Profile With This User";
@ -485,10 +485,10 @@
"EDIT_ITEM_COPY_ACTION" = "Copia";
/* Short name for edit menu item to delete contents of media message. */
"EDIT_ITEM_DELETE_ACTION" = "Delete";
"EDIT_ITEM_DELETE_ACTION" = "Elimina";
/* Short name for edit menu item to show message metadata. */
"EDIT_ITEM_MESSAGE_METADATA_ACTION" = "Info";
"EDIT_ITEM_MESSAGE_METADATA_ACTION" = "Informació";
/* Short name for edit menu item to save contents of media message. */
"EDIT_ITEM_SAVE_ACTION" = "Desa";
@ -653,13 +653,13 @@
"GIF_PICKER_VIEW_MISSING_QUERY" = "Please enter your search.";
/* Title for the 'gif picker' dialog. */
"GIF_PICKER_VIEW_TITLE" = "GIF Search";
"GIF_PICKER_VIEW_TITLE" = "Cerca GIF";
/* Indicates that an error occured while searching. */
"GIF_VIEW_SEARCH_ERROR" = "Error. Tap to Retry.";
"GIF_VIEW_SEARCH_ERROR" = "Error. Toca per a tornar-ho a intentar";
/* Indicates that the user's search had no results. */
"GIF_VIEW_SEARCH_NO_RESULTS" = "No Results.";
"GIF_VIEW_SEARCH_NO_RESULTS" = "No hi ha cap resultat.";
/* Placeholder text for the search field in gif view */
"GIF_VIEW_SEARCH_PLACEHOLDER_TEXT" = "Enter your search";
@ -836,10 +836,10 @@
"MESSAGE_COMPOSEVIEW_TITLE" = "Missatge nou";
/* Label for file size of attachments in the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_ATTACHMENT_FILE_SIZE" = "File Size";
"MESSAGE_METADATA_VIEW_ATTACHMENT_FILE_SIZE" = "Mida del fitxer";
/* Label for the MIME type of attachments in the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_ATTACHMENT_MIME_TYPE" = "MIME type";
"MESSAGE_METADATA_VIEW_ATTACHMENT_MIME_TYPE" = "Tipus MIME";
/* Label for 'missing' attachments in the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_ATTACHMENT_MISSING_FILE" = "Missing Attachment";
@ -878,10 +878,10 @@
"MESSAGE_METADATA_VIEW_SENT_DATE_TIME" = "Sent";
/* Label for the original filename of any attachment in the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_SOURCE_FILENAME" = "Filename";
"MESSAGE_METADATA_VIEW_SOURCE_FILENAME" = "Nom del fitxer";
/* Title for the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_TITLE" = "Message";
"MESSAGE_METADATA_VIEW_TITLE" = "Missatge";
/* message status for message delivered to their recipient. */
"MESSAGE_STATUS_DELIVERED" = "S'ha enviat";
@ -890,10 +890,10 @@
"MESSAGE_STATUS_FAILED" = "No s'ha pogut enviar. Toqueu per a més informació.";
/* message footer for read messages */
"MESSAGE_STATUS_READ" = "Read";
"MESSAGE_STATUS_READ" = "Llegeix";
/* message status while message is sending. */
"MESSAGE_STATUS_SENDING" = "Sending...";
"MESSAGE_STATUS_SENDING" = "S'està enviant...";
/* message footer for sent messages */
"MESSAGE_STATUS_SENT" = "S'ha enviat";
@ -970,7 +970,7 @@
"MUTE_BEHAVIOR_EXPLANATION" = "No rebreu notificacions de converses silenciades.";
/* A button to skip a view. */
"NAVIGATION_ITEM_SKIP_BUTTON" = "Skip";
"NAVIGATION_ITEM_SKIP_BUTTON" = "Omet";
/* No comment provided by engineer. */
"NETWORK_ERROR_RECOVERY" = "Comproveu que esteu connectat i proveu de nou.";
@ -1079,7 +1079,7 @@
"OUTGOING_INCOMPLETE_CALL" = "Trucada feta no contestada";
/* A display format for oversize text messages. */
"OVERSIZE_TEXT_DISPLAY_FORMAT" = "%@";
"OVERSIZE_TEXT_DISPLAY_FORMAT" = "%@...";
/* A format for a label showing an example phone number. Embeds {{the example phone number}}. */
"PHONE_NUMBER_EXAMPLE_FORMAT" = "Exemple: %@";
@ -1184,13 +1184,13 @@
"PROFILE_VIEW_CLEAR_AVATAR" = "Esborra l'avatar";
/* Error message shown when user tries to update profile with a profile name that is too long. */
"PROFILE_VIEW_ERROR_PROFILE_NAME_TOO_LONG" = "Your profile name is too long.";
"PROFILE_VIEW_ERROR_PROFILE_NAME_TOO_LONG" = "El nom del perfil és massa llarg.";
/* Error message shown when a profile update fails. */
"PROFILE_VIEW_ERROR_UPDATE_FAILED" = "Ha fallat l'actualització del perfil.";
/* Default text for the profile name field of the profile view. */
"PROFILE_VIEW_NAME_DEFAULT_TEXT" = "Enter your name";
"PROFILE_VIEW_NAME_DEFAULT_TEXT" = "Introduïu el vostre nom";
/* Label for the profile avatar field of the profile view. */
"PROFILE_VIEW_PROFILE_AVATAR_FIELD" = "Avatar";
@ -1205,10 +1205,10 @@
"PROFILE_VIEW_PROFILE_NAME_FIELD" = "Profile Name";
/* Button to save the profile view in the profile view. */
"PROFILE_VIEW_SAVE_BUTTON" = "Save";
"PROFILE_VIEW_SAVE_BUTTON" = "Desa";
/* Alert title that indicates the user's profile view is being saved. */
"PROFILE_VIEW_SAVING" = "Saving...";
"PROFILE_VIEW_SAVING" = "S'està desant...";
/* Title for the profile view. */
"PROFILE_VIEW_TITLE" = "Perfil";
@ -1574,7 +1574,7 @@
"UNKNOWN_CONTACT_NAME" = "Contacte desconegut";
/* Indicates an unknown or unrecognizable value. */
"UNKNOWN_VALUE" = "Unknown";
"UNKNOWN_VALUE" = "Desconegut";
/* button title for unlinking a device */
"UNLINK_ACTION" = "Desenllaça";
@ -1661,7 +1661,7 @@
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Reenvia el codi via SMS";
/* button text during registration to submit your SMS verification code. */
"VERIFICATION_CHALLENGE_SUBMIT_CODE" = "Submit";
"VERIFICATION_CHALLENGE_SUBMIT_CODE" = "Tramet";
/* Label indicating the phone number currently being verified. */
"VERIFICATION_PHONE_NUMBER_FORMAT" = "Introduïu el codi de verificació que hem enviat a %@.";

File diff suppressed because it is too large Load diff

View file

@ -395,7 +395,7 @@
"CONVERSATION_VIEW_CONTACTS_OFFER_TITLE" = "نام این کاربر در مخاطبین شما نیست.";
/* Indicates that the app is loading more messages in this conversation. */
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Loading More Messages...";
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "نمایش پیام‌های بیشتر…";
/* Indicator on truncated text messages that they can be tapped to see the entire text message. */
"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE" = "برای خواندن، لمس کنید";
@ -551,7 +551,7 @@
"ERROR_DESCRIPTION_MESSAGE_SEND_FAILED_DUE_TO_BLOCK_LIST" = "امکان ارسال پیام به کاربری که مسدود کرده‌اید وجود ندارد.";
/* Error mesage indicating that message send failed due to failed attachment write */
"ERROR_DESCRIPTION_MESSAGE_SEND_FAILED_DUE_TO_FAILED_ATTACHMENT_WRITE" = "Failed due to failed attachment write.";
"ERROR_DESCRIPTION_MESSAGE_SEND_FAILED_DUE_TO_FAILED_ATTACHMENT_WRITE" = "خطا در نوشتن ضمیمه.";
/* Generic error used whenver Signal can't contact the server */
"ERROR_DESCRIPTION_NO_INTERNET" = "امکان برقراری ارتباط سیگنال با اینترنت وجود ندارد. لطفاً از یک شبکه‌ی بیسیم دیگر و یا از اینترنت سیم کارت خود استفاده کنید.";
@ -839,10 +839,10 @@
"MESSAGE_METADATA_VIEW_ATTACHMENT_FILE_SIZE" = "اندازه فایل";
/* Label for the MIME type of attachments in the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_ATTACHMENT_MIME_TYPE" = "MIME type";
"MESSAGE_METADATA_VIEW_ATTACHMENT_MIME_TYPE" = "نوع MIME";
/* Label for 'missing' attachments in the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_ATTACHMENT_MISSING_FILE" = "Missing Attachment";
"MESSAGE_METADATA_VIEW_ATTACHMENT_MISSING_FILE" = "ضمیمه یافت نشد";
/* Label for 'not yet downloaded' attachments in the 'message metadata' view. */
"MESSAGE_METADATA_VIEW_ATTACHMENT_NOT_YET_DOWNLOADED" = "هنوز دانلود نشده";
@ -1505,10 +1505,10 @@
"SETTINGS_VERSION" = "نسخه";
/* action sheet item to open native mail app */
"SHARE_ACTION_MAIL" = "Mail";
"SHARE_ACTION_MAIL" = "ایمیل";
/* action sheet item to open native messages app */
"SHARE_ACTION_MESSAGE" = "Message";
"SHARE_ACTION_MESSAGE" = "پیام";
/* action sheet item */
"SHARE_ACTION_TWEET" = "توییتر";
@ -1574,7 +1574,7 @@
"UNKNOWN_CONTACT_NAME" = "مخاطب ناشناس";
/* Indicates an unknown or unrecognizable value. */
"UNKNOWN_VALUE" = "Unknown";
"UNKNOWN_VALUE" = "ناشناخته";
/* button title for unlinking a device */
"UNLINK_ACTION" = "قطع ارتباط";

View file

@ -1574,7 +1574,7 @@
"UNKNOWN_CONTACT_NAME" = "Tuntematon yhteystieto";
/* Indicates an unknown or unrecognizable value. */
"UNKNOWN_VALUE" = "Unknown";
"UNKNOWN_VALUE" = "Tuntematon";
/* button title for unlinking a device */
"UNLINK_ACTION" = "Poista";

View file

@ -2,7 +2,7 @@
"AB_PERMISSION_MISSING_ACTION_NOT_NOW" = "לא עכשיו";
/* Action sheet item */
"ACCEPT_NEW_IDENTITY_ACTION" = "אשר/י מספר ביטחון חדש";
"ACCEPT_NEW_IDENTITY_ACTION" = "קבל מספר בטיחות חדש";
/* A label for the 'add by phone number' button in the 'add group member' view */
"ADD_GROUP_MEMBER_VIEW_BUTTON" = "הוסף";
@ -203,7 +203,7 @@
"CALL_LABEL" = "חייג";
/* Text shown on call screen in place of remote video */
"CALL_REMOTE_VIDEO_DISABLED" = "Please upgrade to iOS 9 or newer to see remote video.";
"CALL_REMOTE_VIDEO_DISABLED" = "אנא שדרג אל iOS 9 או גרסה חדשה יותר כדי לראות וידאו מרוחק.";
/* Call setup status label after outgoing call times out */
"CALL_SCREEN_STATUS_NO_ANSWER" = "אין מענה.";
@ -221,19 +221,19 @@
"CALL_USER_ALERT_TITLE" = "לחייג?";
/* Accessibility label for accepting incoming calls */
"CALL_VIEW_ACCEPT_INCOMING_CALL_LABEL" = "Accept incoming call";
"CALL_VIEW_ACCEPT_INCOMING_CALL_LABEL" = "קבל שיחה נכנסת";
/* Accessibility label for selection the audio source */
"CALL_VIEW_AUDIO_SOURCE_LABEL" = "Audio";
"CALL_VIEW_AUDIO_SOURCE_LABEL" = "שמע";
/* Accessibility label for declining incoming calls */
"CALL_VIEW_DECLINE_INCOMING_CALL_LABEL" = "Decline incoming call";
"CALL_VIEW_DECLINE_INCOMING_CALL_LABEL" = "דחה שיחה נכנסת";
/* Accessibility label for hang up call */
"CALL_VIEW_HANGUP_LABEL" = "End call";
"CALL_VIEW_HANGUP_LABEL" = "סיים שיחה";
/* Accessibility label for muting the microphone */
"CALL_VIEW_MUTE_LABEL" = "Mute";
"CALL_VIEW_MUTE_LABEL" = "השתק";
/* Reminder to the user of the benefits of enabling CallKit and disabling CallKit privacy. */
"CALL_VIEW_SETTINGS_NAG_DESCRIPTION_ALL" = "ניתן לענות לשיחות ממסך הנעילה ולראות את השם ומספר הטלפון של שיחות נכנסות ע״י שינוי ההגדרות שלך.\n\nראה/י הגדרות פרטיות לפרטים נוספים.";
@ -248,10 +248,10 @@
"CALL_VIEW_SETTINGS_NAG_SHOW_CALL_SETTINGS" = "הראה הגדרות פרטיות";
/* Accessibility label to switch to audio only */
"CALL_VIEW_SWITCH_TO_AUDIO_LABEL" = "Switch to audio call";
"CALL_VIEW_SWITCH_TO_AUDIO_LABEL" = "החלף אל שיחת שמע";
/* Accessibility label to switch to video call */
"CALL_VIEW_SWITCH_TO_VIDEO_LABEL" = "Switch to video call";
"CALL_VIEW_SWITCH_TO_VIDEO_LABEL" = "החלף אל שיחת וידאו";
/* notification action */
"CALLBACK_BUTTON_TITLE" = "חיוג חוזר";
@ -272,13 +272,13 @@
"COMPARE_SAFETY_NUMBER_ACTION" = "השווה ללוח גזירים";
/* Table section header for contact listing when composing a new message */
"COMPOSE_MESSAGE_CONTACT_SECTION_TITLE" = "Contacts";
"COMPOSE_MESSAGE_CONTACT_SECTION_TITLE" = "אנשי קשר";
/* Table section header for group listing when composing a new message */
"COMPOSE_MESSAGE_GROUP_SECTION_TITLE" = "Groups";
"COMPOSE_MESSAGE_GROUP_SECTION_TITLE" = "קבוצות";
/* Table section header for invite listing when composing a new message */
"COMPOSE_MESSAGE_INVITE_SECTION_TITLE" = "Invite";
"COMPOSE_MESSAGE_INVITE_SECTION_TITLE" = "הזמן";
/* Multiline label explaining why compose-screen contact picker is empty. */
"COMPOSE_SCREEN_MISSING_CONTACTS_PERMISSION" = "כדי לראות מי מאנשי הקשר שלך הם משתמשי סיגנל, התר גישה לאנשי הקשר בהגדרות המערכת שלך.";
@ -299,10 +299,10 @@
"CONFIRM_LINK_NEW_DEVICE_ACTION" = "קשר מכשיר חדש";
/* Action sheet body presented when a user's SN have recently changed. Embeds {{contact's name or phone nubmer}} */
"CONFIRM_SENDING_TO_CHANGED_IDENTITY_BODY_FORMAT" = "ייתכן ו%@ התקין מחדש את האפילקציה או החליף מכשיר. אמת את מספר הביטחון שלך עמו כדי להבטיח פרטיות.";
"CONFIRM_SENDING_TO_CHANGED_IDENTITY_BODY_FORMAT" = "ייתכן כי %@ התקין מחדש או החליף מכשירים. וודא את מספר הבטיחות שלך איתו כדי להבטיח פרטיות.";
/* Action sheet title presented when a users's SN have recently changed. Embeds {{contact's name or phone number}} */
"CONFIRM_SENDING_TO_CHANGED_IDENTITY_TITLE_FORMAT" = "מספר הביטחון עם %@ השתנה";
"CONFIRM_SENDING_TO_CHANGED_IDENTITY_TITLE_FORMAT" = "מספר בטיחות עם %@ השתנה";
/* Generic button text to proceed with an action */
"CONFIRMATION_TITLE" = "אישור";
@ -395,10 +395,10 @@
"CONVERSATION_VIEW_CONTACTS_OFFER_TITLE" = "משתמש זה אינו באנשי הקשר שלך.";
/* Indicates that the app is loading more messages in this conversation. */
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Loading More Messages...";
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "טוען עוד הודעות...";
/* Indicator on truncated text messages that they can be tapped to see the entire text message. */
"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE" = "Tap For More";
"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE" = "הקש לעוד";
/* Message shown in conversation view that offers to block an unknown user. */
"CONVERSATION_VIEW_UNKNOWN_CONTACT_BLOCK_OFFER" = "חסום משתמש זה";
@ -485,7 +485,7 @@
"EDIT_ITEM_COPY_ACTION" = "העתק";
/* Short name for edit menu item to delete contents of media message. */
"EDIT_ITEM_DELETE_ACTION" = "Delete";
"EDIT_ITEM_DELETE_ACTION" = "מחק";
/* Short name for edit menu item to show message metadata. */
"EDIT_ITEM_MESSAGE_METADATA_ACTION" = "מידע";
@ -590,16 +590,16 @@
"ERROR_MESSAGE_NO_SESSION" = "אין התחברות זמינה לאיש הקשר הזה.";
/* Shown when signal users safety numbers changed */
"ERROR_MESSAGE_NON_BLOCKING_IDENTITY_CHANGE" = "מספר ביטחון שונה";
"ERROR_MESSAGE_NON_BLOCKING_IDENTITY_CHANGE" = "מספר בטיחות השתנה.";
/* Shown when signal users safety numbers changed, embeds the user's {{name or phone number}} */
"ERROR_MESSAGE_NON_BLOCKING_IDENTITY_CHANGE_FORMAT" = "מספר הביטחון עם %@ השתנה";
"ERROR_MESSAGE_NON_BLOCKING_IDENTITY_CHANGE_FORMAT" = "מספר הבטיחות שלך עם %@ השתנה.";
/* No comment provided by engineer. */
"ERROR_MESSAGE_UNKNOWN_ERROR" = "התרחשה שגיאה לא ידועה";
/* No comment provided by engineer. */
"ERROR_MESSAGE_WRONG_TRUSTED_IDENTITY_KEY" = "מספר ביטחון התשתנה. הקש לאימות.";
"ERROR_MESSAGE_WRONG_TRUSTED_IDENTITY_KEY" = "מספר בטיחות השתנה. הקש כדי לוודא.";
/* Message for the alert indicating the 'export with signal' file had an invalid filename. */
"EXPORT_WITH_SIGNAL_ERROR_MESSAGE_INVALID_FILENAME" = "שם קובץ לא חוקי.";
@ -620,10 +620,10 @@
"FAILED_SENDING_BECAUSE_RATE_LIMIT" = "שגיאות רבות מידי עם איש קשר זה. נסה שוב עוד מספר רגעים.";
/* action sheet header when re-sending message which failed because of untrusted identity keys */
"FAILED_SENDING_BECAUSE_UNTRUSTED_IDENTITY_KEY" = "מספר הביטחון עם %@ השתנה. מומלץ לוודא את המספר לפני השליחה.";
"FAILED_SENDING_BECAUSE_UNTRUSTED_IDENTITY_KEY" = "מספר הבטיחות שלך עם %@ השתנה לאחרונה. מומלץ לוודא לפני שליחה מחדש.";
/* alert title */
"FAILED_VERIFICATION_TITLE" = "שגיאה באימות מספר ביטחון";
"FAILED_VERIFICATION_TITLE" = "נכשל בוידוא מספר בטיחות!";
/* Button that marks user as verified after a successful fingerprint scan. */
"FINGERPRINT_SCAN_VERIFY_BUTTON" = "סמן כמאומת";
@ -644,10 +644,10 @@
"GIF_PICKER_ERROR_FETCH_FAILURE" = "Failed to fetch the requested GIF. Please verify you are online.";
/* Generic error displayed when picking a gif */
"GIF_PICKER_ERROR_GENERIC" = "An unknown error occured.";
"GIF_PICKER_ERROR_GENERIC" = "שגיאה בלתי ידועה התרחשה.";
/* Shown when selected gif couldn't be fetched */
"GIF_PICKER_FAILURE_ALERT_TITLE" = "Unable to Choose GIF";
"GIF_PICKER_FAILURE_ALERT_TITLE" = "לא היה ניתן לבחור GIF";
/* Alert message shown when user tries to search for GIFs without entering any search terms. */
"GIF_PICKER_VIEW_MISSING_QUERY" = "אנא הכנס את חיפושך.";
@ -656,10 +656,10 @@
"GIF_PICKER_VIEW_TITLE" = "חיפוש GIF";
/* Indicates that an error occured while searching. */
"GIF_VIEW_SEARCH_ERROR" = "Error. Tap to Retry.";
"GIF_VIEW_SEARCH_ERROR" = "שגיאה. הקש כדי לנסות שוב.";
/* Indicates that the user's search had no results. */
"GIF_VIEW_SEARCH_NO_RESULTS" = "No Results.";
"GIF_VIEW_SEARCH_NO_RESULTS" = "אין תוצאות.";
/* Placeholder text for the search field in gif view */
"GIF_VIEW_SEARCH_PLACEHOLDER_TEXT" = "הכנס את חיפושך";
@ -692,7 +692,7 @@
"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED" = "בטל אישורים לכולם";
/* Label for the 'reset all no-longer-verified group members' confirmation alert. */
"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED_ALERT_MESSAGE" = "פעולה זו תבטל את האישורים לכל המשתמשים שמספר הביטחון שונה מאז שאומתו לאחרונה.";
"GROUP_MEMBERS_RESET_NO_LONGER_VERIFIED_ALERT_MESSAGE" = "זה ינקה את הוידוא של כל חברי הקבוצה שמספרי הבטיחות שלהם השתנו מאז שוודאו בפעם האחרונה.";
/* Title for the 'members' section of the 'group members' view. */
"GROUP_MEMBERS_SECTION_TITLE_MEMBERS" = "חברים";
@ -755,7 +755,7 @@
"INCOMING_INCOMPLETE_CALL" = "שיחה נכנסת לקויה מאת";
/* info message text shown in conversation view */
"INFO_MESSAGE_MISSED_CALL_DUE_TO_CHANGED_IDENITY" = "שיחה נדחתה בגלל שמספר הביטחון של איש הקשר השתנה.";
"INFO_MESSAGE_MISSED_CALL_DUE_TO_CHANGED_IDENITY" = "שיחה לא נענתה מאחר שמספר הבטיחות של איש הקשר השתנה.";
/* Message for the alert indicating that an audio file is invalid. */
"INVALID_AUDIO_FILE_ALERT_ERROR_MESSAGE" = "קובץ שמע לא חוקי";
@ -1124,7 +1124,7 @@
"PRIVACY_IDENTITY_IS_NOT_VERIFIED_FORMAT" = "You have not marked %@ as verified.";
/* Badge indicating that the user is verified. */
"PRIVACY_IDENTITY_IS_VERIFIED_BADGE" = "Verified";
"PRIVACY_IDENTITY_IS_VERIFIED_BADGE" = "מוודא";
/* Label indicating that the user is verified. Embeds {{the user's name or phone number}}. */
"PRIVACY_IDENTITY_IS_VERIFIED_FORMAT" = "%@ is verified.";
@ -1136,7 +1136,7 @@
"PRIVACY_TAP_TO_SCAN" = "הקש כדי לסרוק";
/* Button that lets user mark another user's identity as unverified. */
"PRIVACY_UNVERIFY_BUTTON" = "Clear Verification";
"PRIVACY_UNVERIFY_BUTTON" = "נקה וידוא";
/* Alert body when verifying with {{contact name}} */
"PRIVACY_VERIFICATION_FAILED_I_HAVE_WRONG_KEY_FOR_THEM" = "This doesn't look like your safety number with %@. Are you verifying the correct contact?";
@ -1163,10 +1163,10 @@
"PRIVACY_VERIFICATION_INSTRUCTIONS" = "If you wish to verify the security of your end-to-end encryption with %@, compare the numbers above with the numbers on their device.\n\nAlternatively, you can scan the code on their phone, or ask them to scan your code.";
/* Navbar title */
"PRIVACY_VERIFICATION_TITLE" = "Verify Safety Number";
"PRIVACY_VERIFICATION_TITLE" = "וודא מספר בטיחות";
/* Button that lets user mark another user's identity as verified. */
"PRIVACY_VERIFY_BUTTON" = "Mark as Verified";
"PRIVACY_VERIFY_BUTTON" = "סמן כמוודא";
/* No comment provided by engineer. */
"PROCEED_BUTTON" = "המשך";
@ -1280,7 +1280,7 @@
"REGISTRATION_TITLE_LABEL" = "מספר הטלפון שלך";
/* Alert view title */
"REGISTRATION_VERIFICATION_FAILED_TITLE" = "Verification Failed";
"REGISTRATION_VERIFICATION_FAILED_TITLE" = "וידוא נכשל";
/* Alert body, during registration */
"REGISTRATION_VERIFICATION_FAILED_WRONG_CODE_DESCRIPTION" = "The numbers you submitted don't match what we sent. Want to double check?";
@ -1289,10 +1289,10 @@
"REGISTRATION_VERIFY_DEVICE" = "שפעל מכשיר זה";
/* Message of alert indicating that users needs to enter a valid phone number to register. */
"REGISTRATION_VIEW_INVALID_PHONE_NUMBER_ALERT_MESSAGE" = "Please enter a valid phone number to register.";
"REGISTRATION_VIEW_INVALID_PHONE_NUMBER_ALERT_MESSAGE" = "אנא הכנס מספר תקף של טלפון כדי להירשם.";
/* Title of alert indicating that users needs to enter a valid phone number to register. */
"REGISTRATION_VIEW_INVALID_PHONE_NUMBER_ALERT_TITLE" = "Invalid Phone Number";
"REGISTRATION_VIEW_INVALID_PHONE_NUMBER_ALERT_TITLE" = "מספר לא תקף של טלפון";
/* Message of alert indicating that users needs to enter a phone number to register. */
"REGISTRATION_VIEW_NO_PHONE_NUMBER_ALERT_MESSAGE" = "אנא הכנס מספר טלפון כדי לרשום אותו.";
@ -1361,7 +1361,7 @@
"SEND_INVITE_SUCCESS" = "הזמנת את חברך להשתמש בסיגנל!";
/* Text for button to send a Signal invite via SMS. %@ is placeholder for the receipient's phone number. */
"SEND_INVITE_VIA_SMS_BUTTON_FORMAT" = "Invite via SMS: %@";
"SEND_INVITE_VIA_SMS_BUTTON_FORMAT" = "הזמן דרך מסרון: %@";
/* No comment provided by engineer. */
"SEND_SMS_CONFIRM_TITLE" = "הזמן חבר דרך SMS (ערוץ לא מבוטח)";
@ -1385,7 +1385,7 @@
"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION" = "עקיפת צנזורה";
/* Label for the 'manual censorship circumvention' country. Embeds {{the manual censorship circumvention country}}. */
"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_COUNTRY_FORMAT" = "Location: %@";
"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_COUNTRY_FORMAT" = "מיקום: %@";
/* Table footer for the 'censorship circumvention' section when censorship circumvention can be manually enabled. */
"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER" = "אם מאופשר, סיגנל ינסה לעקוף צנזורה. אל תאפשר מאפיין זה אלא אם אתה במיקום שבו סיגנל מצונזר.";
@ -1514,7 +1514,7 @@
"SHARE_ACTION_TWEET" = "טוויטר";
/* Action sheet item */
"SHOW_SAFETY_NUMBER_ACTION" = "Show New Safety Number";
"SHOW_SAFETY_NUMBER_ACTION" = "הראה מספר בטיחות חדש";
/* notification action */
"SHOW_THREAD_BUTTON_TITLE" = "הצג שיחה";
@ -1526,7 +1526,7 @@
"SUCCESSFUL_VERIFICATION_DESCRIPTION" = "Your safety number with %@ matches. You can mark this contact as verified.";
/* No comment provided by engineer. */
"SUCCESSFUL_VERIFICATION_TITLE" = "Safety Number Matches!";
"SUCCESSFUL_VERIFICATION_TITLE" = "מספר בטיחות תואם!";
/* {{number of days}} embedded in strings, e.g. 'Alice updated disappearing messages expiration to {{5 days}}'. See other *_TIME_AMOUNT strings */
"TIME_AMOUNT_DAYS" = "%@ ימים";
@ -1574,7 +1574,7 @@
"UNKNOWN_CONTACT_NAME" = "איש קשר בלתי ידוע";
/* Indicates an unknown or unrecognizable value. */
"UNKNOWN_VALUE" = "Unknown";
"UNKNOWN_VALUE" = "בלתי ידוע";
/* button title for unlinking a device */
"UNLINK_ACTION" = "Unlink";
@ -1679,13 +1679,13 @@
"VERIFICATION_STATE_CHANGE_FORMAT_VERIFIED_OTHER_DEVICE" = "You marked %@ as verified on another device.";
/* Generic message indicating that verification state changed for a given user. */
"VERIFICATION_STATE_CHANGE_GENERIC" = "Verification state changed.";
"VERIFICATION_STATE_CHANGE_GENERIC" = "מצב וידוא השתנה.";
/* Label for button or row which allows users to verify the safety number of another user. */
"VERIFY_PRIVACY" = "הראה מספר ביטחון";
"VERIFY_PRIVACY" = "הראה מספר בטיחות";
/* Label for button or row which allows users to verify the safety numbers of multiple users. */
"VERIFY_PRIVACY_MULTIPLE" = "סקור מספר ביטחון";
"VERIFY_PRIVACY_MULTIPLE" = "סקור מספרי בטיחות";
/* Indicates how to cancel a voice message. */
"VOICE_MESSAGE_CANCEL_INSTRUCTIONS" = "החלק כדי לבטל";

View file

@ -371,10 +371,10 @@
"CONVERSATION_SETTINGS_UNMUTE_ACTION" = "消音をやめる";
/* Indicates that user's profile has been shared with a group. */
"CONVERSATION_SETTINGS_VIEW_PROFILE_IS_SHARED_WITH_GROUP" = "私のプロフィールを見れる";
"CONVERSATION_SETTINGS_VIEW_PROFILE_IS_SHARED_WITH_GROUP" = "私のプロフィールを閲覧可能";
/* Indicates that user's profile has been shared with a user. */
"CONVERSATION_SETTINGS_VIEW_PROFILE_IS_SHARED_WITH_USER" = "私のプロフィールを見れる";
"CONVERSATION_SETTINGS_VIEW_PROFILE_IS_SHARED_WITH_USER" = "私のプロフィールを閲覧可能";
/* Button to confirm that user wants to share their profile with a user or group. */
"CONVERSATION_SETTINGS_VIEW_SHARE_PROFILE" = "プロフィールを共有する";
@ -395,7 +395,7 @@
"CONVERSATION_VIEW_CONTACTS_OFFER_TITLE" = "この人は連絡先にいません";
/* Indicates that the app is loading more messages in this conversation. */
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Loading More Messages...";
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "メッセージを読込中";
/* Indicator on truncated text messages that they can be tapped to see the entire text message. */
"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE" = "詳細";
@ -1574,7 +1574,7 @@
"UNKNOWN_CONTACT_NAME" = "不明な連絡先";
/* Indicates an unknown or unrecognizable value. */
"UNKNOWN_VALUE" = "Unknown";
"UNKNOWN_VALUE" = "不明";
/* button title for unlinking a device */
"UNLINK_ACTION" = "登録解除";

View file

@ -395,7 +395,7 @@
"CONVERSATION_VIEW_CONTACTS_OFFER_TITLE" = "Acest utilizator nu se află în lista ta de contacte.";
/* Indicates that the app is loading more messages in this conversation. */
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Loading More Messages...";
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Se încarcă mai multe mesaje...";
/* Indicator on truncated text messages that they can be tapped to see the entire text message. */
"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE" = "Apasă pentru detalii";
@ -1574,7 +1574,7 @@
"UNKNOWN_CONTACT_NAME" = "Contact necunoscut";
/* Indicates an unknown or unrecognizable value. */
"UNKNOWN_VALUE" = "Unknown";
"UNKNOWN_VALUE" = "Necunoscut";
/* button title for unlinking a device */
"UNLINK_ACTION" = "Disociază";

View file

@ -395,7 +395,7 @@
"CONVERSATION_VIEW_CONTACTS_OFFER_TITLE" = "Användaren finns inte bland dina kontakter.";
/* Indicates that the app is loading more messages in this conversation. */
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Loading More Messages...";
"CONVERSATION_VIEW_LOADING_MORE_MESSAGES" = "Hämtar fler meddelanden...";
/* Indicator on truncated text messages that they can be tapped to see the entire text message. */
"CONVERSATION_VIEW_OVERSIZE_TEXT_TAP_FOR_MORE" = "Tryck för mer";
@ -1574,7 +1574,7 @@
"UNKNOWN_CONTACT_NAME" = "Okänd kontakt";
/* Indicates an unknown or unrecognizable value. */
"UNKNOWN_VALUE" = "Unknown";
"UNKNOWN_VALUE" = "Okänt";
/* button title for unlinking a device */
"UNLINK_ACTION" = "Avlänka";

View file

@ -1700,7 +1700,7 @@
"VOICE_MESSAGE_TOO_SHORT_ALERT_TITLE" = "语音消息";
/* Activity indicator title, shown upon returning to the device manager, until you complete the provisioning process on desktop */
"WAITING_TO_COMPLETE_DEVICE_LINK_TEXT" = "Signal桌面版设置成功。";
"WAITING_TO_COMPLETE_DEVICE_LINK_TEXT" = "请完成 Signal 桌面版设置。";
/* No comment provided by engineer. */
"WHISPER_NAV_BAR_TITLE" = "收件箱";

File diff suppressed because it is too large Load diff