mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-17 02:58:07 +00:00
Add all missing translation keys (not the corresponding translations yet)
This commit is contained in:
parent
715b92ab3f
commit
8d96b08f14
39 changed files with 493 additions and 488 deletions
|
|
@ -240,7 +240,7 @@ final class CoreContext: ObservableObject {
|
|||
}
|
||||
DispatchQueue.main.async {
|
||||
if status == ConfiguringState.Successful {
|
||||
ToastViewModel.shared.toastMessage = "Successful"
|
||||
ToastViewModel.shared.toastMessage = "Success_qr_code_validated"
|
||||
ToastViewModel.shared.displayToast = true
|
||||
self.accounts = accountModels
|
||||
}
|
||||
|
|
@ -298,8 +298,6 @@ final class CoreContext: ObservableObject {
|
|||
} else if state == .Cleared {
|
||||
self.loggingInProgress = false
|
||||
self.loggedIn = false
|
||||
ToastViewModel.shared.toastMessage = "Success_account_logged_out"
|
||||
ToastViewModel.shared.displayToast = true
|
||||
} else {
|
||||
self.loggingInProgress = false
|
||||
self.loggedIn = false
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -641,7 +641,7 @@ class TelecomManager: ObservableObject {
|
|||
if UIApplication.shared.applicationState != .active && (callLog == nil || callLog?.status == .Missed || callLog?.status == .Aborted || callLog?.status == .EarlyAborted) {
|
||||
// Configure the notification's payload.
|
||||
let content = UNMutableNotificationContent()
|
||||
content.title = NSString.localizedUserNotificationString(forKey: NSLocalizedString("Missed call", comment: ""), arguments: nil)
|
||||
content.title = NSString.localizedUserNotificationString(forKey: NSLocalizedString("notification_missed_call_title", comment: ""), arguments: nil)
|
||||
content.body = NSString.localizedUserNotificationString(forKey: displayName, arguments: nil)
|
||||
|
||||
// Deliver the notification.
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ struct LoginFragment: View {
|
|||
self.accountLoginViewModel.login()
|
||||
coreContext.loggingInProgress = true
|
||||
}, label: {
|
||||
Text(coreContext.loggedIn ? "Log out" : "assistant_account_login")
|
||||
Text(coreContext.loggedIn ? "manage_account_delete" : "assistant_account_login")
|
||||
.default_text_style_white_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
@ -293,8 +293,8 @@ struct LoginFragment: View {
|
|||
}
|
||||
|
||||
if self.isShowPopup {
|
||||
let generalTerms = String(format: "[%@](%@)", String(localized: "assistant_dialog_general_terms_label"), String(localized: "https://linphone.org/general-terms"))
|
||||
let privacyPolicy = String(format: "[%@](%@)", String(localized: "assistant_dialog_privacy_policy_label"), String(localized: "https://linphone.org/en/privacy-policy"))
|
||||
let generalTerms = String(format: "[%@](%@)", String(localized: "assistant_dialog_general_terms_label"), "https://www.linphone.org/en/terms-of-use/")
|
||||
let privacyPolicy = String(format: "[%@](%@)", String(localized: "assistant_dialog_privacy_policy_label"), "https://linphone.org/en/privacy-policy")
|
||||
let splitMsg = String(localized: "assistant_dialog_general_terms_and_privacy_policy_message").components(separatedBy: "%@")
|
||||
if splitMsg.count == 3 { // We expect form of STRING %A STRING %@ STRING
|
||||
let contentPopup1 = Text(.init(splitMsg[0]))
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ struct ProfileModeFragment: View {
|
|||
Button(action: {
|
||||
sharedMainViewModel.changeHideProfileMode()
|
||||
}, label: {
|
||||
Text("Continue")
|
||||
Text("dialog_continue")
|
||||
.default_text_style_white_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
@ -156,7 +156,7 @@ struct ProfileModeFragment: View {
|
|||
+ " Etiam velit sapien, egestas sit amet dictum eget, condimentum a ligula."),
|
||||
titleFirstButton: nil,
|
||||
actionFirstButton: {},
|
||||
titleSecondButton: Text("Close"),
|
||||
titleSecondButton: Text("dialog_close"),
|
||||
actionSecondButton: {
|
||||
self.isShowPopup.toggle()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ struct RegisterFragment: View {
|
|||
.default_text_style_600(styleSize: 15)
|
||||
.padding(.bottom)
|
||||
|
||||
Text(String(localized: "Phone number")+"*")
|
||||
Text(String(localized: "phone_number")+"*")
|
||||
.default_text_style_700(styleSize: 15)
|
||||
.padding(.bottom, -5)
|
||||
|
||||
|
|
@ -133,7 +133,7 @@ struct RegisterFragment: View {
|
|||
|
||||
Divider()
|
||||
|
||||
TextField("Phone number", text: $registerViewModel.phoneNumber)
|
||||
TextField("phone_number", text: $registerViewModel.phoneNumber)
|
||||
.default_text_style(styleSize: 15)
|
||||
.disableAutocorrection(true)
|
||||
.autocapitalization(.none)
|
||||
|
|
@ -309,11 +309,11 @@ struct RegisterFragment: View {
|
|||
isShowPopup: $isShowPopup,
|
||||
title: titlePopup,
|
||||
content: contentPopup,
|
||||
titleFirstButton: Text("Cancel"),
|
||||
titleFirstButton: Text("dialog_cancel"),
|
||||
actionFirstButton: {
|
||||
self.isShowPopup = false
|
||||
},
|
||||
titleSecondButton: Text("Continue"),
|
||||
titleSecondButton: Text("dialog_continue"),
|
||||
actionSecondButton: {
|
||||
self.isShowPopup = false
|
||||
registerViewModel.createInProgress = true
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ struct ThirdPartySipAccountLoginFragment: View {
|
|||
}
|
||||
.frame(width: geometry.size.width)
|
||||
|
||||
Text("Use a SIP account")
|
||||
Text("assistant_login_third_party_sip_account")
|
||||
.default_text_style_white_800(styleSize: 20)
|
||||
.padding(.top, 20)
|
||||
}
|
||||
|
|
@ -139,7 +139,7 @@ struct ThirdPartySipAccountLoginFragment: View {
|
|||
)
|
||||
.padding(.bottom)
|
||||
|
||||
Text(String(localized: "Domain")+"*")
|
||||
Text(String(localized: "sip_address_domain")+"*")
|
||||
.default_text_style_700(styleSize: 15)
|
||||
.padding(.bottom, -5)
|
||||
|
||||
|
|
@ -160,11 +160,11 @@ struct ThirdPartySipAccountLoginFragment: View {
|
|||
.padding(.bottom)
|
||||
.focused($isDomainFocused)
|
||||
|
||||
Text(String(localized: "Display Name"))
|
||||
Text(String(localized: "sip_address_display_name"))
|
||||
.default_text_style_700(styleSize: 15)
|
||||
.padding(.bottom, -5)
|
||||
|
||||
TextField("Display Name", text: $accountLoginViewModel.displayName)
|
||||
TextField("sip_address_display_name", text: $accountLoginViewModel.displayName)
|
||||
.default_text_style(styleSize: 15)
|
||||
.disableAutocorrection(true)
|
||||
.autocapitalization(.none)
|
||||
|
|
@ -181,7 +181,7 @@ struct ThirdPartySipAccountLoginFragment: View {
|
|||
.padding(.bottom)
|
||||
.focused($isDisplayNameFocused)
|
||||
|
||||
Text(String(localized: "Transport"))
|
||||
Text(String(localized: "assistant_sip_account_transport_protocol"))
|
||||
.default_text_style_700(styleSize: 15)
|
||||
.padding(.bottom, -5)
|
||||
|
||||
|
|
@ -215,7 +215,7 @@ struct ThirdPartySipAccountLoginFragment: View {
|
|||
Button(action: {
|
||||
self.accountLoginViewModel.login()
|
||||
}, label: {
|
||||
Text(coreContext.loggedIn ? "Log out" : "assistant_account_login")
|
||||
Text(coreContext.loggedIn ? "manage_account_delete" : "assistant_account_login")
|
||||
.default_text_style_white_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ struct ThirdPartySipAccountWarningFragment: View {
|
|||
}
|
||||
.frame(width: geometry.size.width)
|
||||
|
||||
Text("Use a SIP account")
|
||||
Text("assistant_login_third_party_sip_account")
|
||||
.default_text_style_white_800(styleSize: 20)
|
||||
.padding(.top, 20)
|
||||
}
|
||||
|
|
@ -101,9 +101,7 @@ struct ThirdPartySipAccountWarningFragment: View {
|
|||
}
|
||||
.padding(.bottom, 40)
|
||||
|
||||
Text("Some features require a Linphone account, such as group messaging, video conferences...\n\n"
|
||||
+ "These features are hidden when you register with a third party SIP account.\n\n"
|
||||
+ "To enable it in a commercial projet, please contact us. ")
|
||||
Text("assistant_third_party_sip_account_warning_explanation")
|
||||
.default_text_style(styleSize: 15)
|
||||
.multilineTextAlignment(.center)
|
||||
.padding(.bottom)
|
||||
|
|
@ -137,7 +135,7 @@ struct ThirdPartySipAccountWarningFragment: View {
|
|||
Button(action: {
|
||||
dismiss()
|
||||
}, label: {
|
||||
Text("I prefere create an account")
|
||||
Text("assistant_third_party_sip_account_create_linphone_account")
|
||||
.default_text_style_orange_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
@ -156,7 +154,7 @@ struct ThirdPartySipAccountWarningFragment: View {
|
|||
NavigationLink(destination: {
|
||||
ThirdPartySipAccountLoginFragment(accountLoginViewModel: accountLoginViewModel)
|
||||
}, label: {
|
||||
Text("I understand")
|
||||
Text("assistant_third_party_sip_account_warning_ok")
|
||||
.default_text_style_white_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ struct AudioRouteBottomSheet: View {
|
|||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
|
||||
Text(!callViewModel.isHeadPhoneAvailable() ? "Earpiece" : "Headphones")
|
||||
Text(!callViewModel.isHeadPhoneAvailable() ? "call_audio_device_type_earpiece" : "call_audio_device_type_headphones")
|
||||
.default_text_style_white(styleSize: 15)
|
||||
|
||||
Spacer()
|
||||
|
|
@ -87,7 +87,7 @@ struct AudioRouteBottomSheet: View {
|
|||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
|
||||
Text("Speaker")
|
||||
Text("call_audio_device_type_speaker")
|
||||
.default_text_style_white(styleSize: 15)
|
||||
|
||||
Spacer()
|
||||
|
|
@ -121,7 +121,8 @@ struct AudioRouteBottomSheet: View {
|
|||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
|
||||
Text("Bluetooth")
|
||||
Text(String(format: String(localized: "call_audio_device_type_bluetooth"),
|
||||
AVAudioSession.sharedInstance().currentRoute.outputs.first?.portName ?? ""))
|
||||
.default_text_style_white(styleSize: 15)
|
||||
|
||||
Spacer()
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ struct CallStatisticsSheetBottomSheet: View {
|
|||
Spacer()
|
||||
HStack {
|
||||
Spacer()
|
||||
Button("Close") {
|
||||
Button("dialog_close") {
|
||||
callStatisticsSheet = false
|
||||
dismiss()
|
||||
}
|
||||
|
|
@ -50,7 +50,7 @@ struct CallStatisticsSheetBottomSheet: View {
|
|||
.padding(15)
|
||||
}
|
||||
|
||||
Text("Audio")
|
||||
Text("call_stats_audio_title")
|
||||
.default_text_style_white_600(styleSize: 15)
|
||||
.padding(.top, 10)
|
||||
|
||||
|
|
@ -77,7 +77,7 @@ struct CallStatisticsSheetBottomSheet: View {
|
|||
Spacer()
|
||||
|
||||
if callViewModel.callStatsModel.isVideoEnabled {
|
||||
Text("Vidéo")
|
||||
Text("call_stats_video_title")
|
||||
.default_text_style_white_600(styleSize: 15)
|
||||
.padding(.top, 10)
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ struct CallsListFragment: View {
|
|||
}
|
||||
}
|
||||
|
||||
Text("Call list")
|
||||
Text("calls_list_title")
|
||||
.multilineTextAlignment(.leading)
|
||||
.default_text_style_orange_800(styleSize: 16)
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ struct CallsListFragment: View {
|
|||
PopupView(isShowPopup: $isShowPopup,
|
||||
title: Text("calls_list_dialog_merge_into_conference_title"),
|
||||
content: nil,
|
||||
titleFirstButton: Text("Cancel"),
|
||||
titleFirstButton: Text("dialog_cancel"),
|
||||
actionFirstButton: {self.isShowPopup.toggle()},
|
||||
titleSecondButton: Text("calls_list_dialog_merge_into_conference_label"),
|
||||
actionSecondButton: {
|
||||
|
|
@ -171,7 +171,7 @@ struct CallsListFragment: View {
|
|||
HStack {
|
||||
Image((callViewModel.selectedCall!.state == .PausedByRemote
|
||||
|| callViewModel.selectedCall!.state == .Pausing
|
||||
|| callViewModel.selectedCall!.state == .Paused) ? "play" : "pause")
|
||||
|| callViewModel.selectedCall!.state == .Paused) ? String(localized: "call_action_resume_call") : String(localized: "call_action_pause_call"))
|
||||
.resizable()
|
||||
.frame(width: 30, height: 30)
|
||||
|
||||
|
|
@ -217,7 +217,7 @@ struct CallsListFragment: View {
|
|||
.background(Color.redDanger500)
|
||||
.cornerRadius(40)
|
||||
|
||||
Text("Hang up call")
|
||||
Text("call_action_hang_up")
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style_white(styleSize: 15)
|
||||
|
||||
|
|
@ -271,7 +271,7 @@ struct CallsListFragment: View {
|
|||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.lineLimit(1)
|
||||
} else {
|
||||
Text(callViewModel.calls[index].callLog!.conferenceInfo!.subject ?? "Conference Name error")
|
||||
Text(callViewModel.calls[index].callLog!.conferenceInfo!.subject ?? String(localized: "conference_name_error"))
|
||||
.default_text_style(styleSize: 16)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.lineLimit(1)
|
||||
|
|
@ -284,7 +284,7 @@ struct CallsListFragment: View {
|
|||
|| callViewModel.calls[index].state == .Pausing
|
||||
|| callViewModel.calls[index].state == .Paused
|
||||
|| callViewModel.calls[index].state == .Resuming {
|
||||
Text(callViewModel.calls[index].state == .Resuming ? "Resuming" : "Paused")
|
||||
Text(callViewModel.calls[index].state == .Resuming ? String(localized: "call_state_resuming") : String(localized: "call_state_paused"))
|
||||
.default_text_style_300(styleSize: 14)
|
||||
.frame(maxWidth: .infinity, alignment: .trailing)
|
||||
.lineLimit(1)
|
||||
|
|
@ -294,7 +294,7 @@ struct CallsListFragment: View {
|
|||
.resizable()
|
||||
.frame(width: 25, height: 25)
|
||||
} else {
|
||||
Text("Active")
|
||||
Text("call_state_connected")
|
||||
.default_text_style_300(styleSize: 14)
|
||||
.frame(maxWidth: .infinity, alignment: .trailing)
|
||||
.lineLimit(1)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ struct ChangeLayoutBottomSheet: View {
|
|||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
|
||||
Text("Mosaïque")
|
||||
Text("conference_layout_grid")
|
||||
.foregroundStyle(callViewModel.participantList.count > 5 ? Color.gray500 : .white)
|
||||
.default_text_style_white(styleSize: 15)
|
||||
|
||||
|
|
@ -77,7 +77,7 @@ struct ChangeLayoutBottomSheet: View {
|
|||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
|
||||
Text("Participant actif")
|
||||
Text("conference_layout_active_speaker")
|
||||
.default_text_style_white(styleSize: 15)
|
||||
|
||||
Spacer()
|
||||
|
|
@ -109,7 +109,7 @@ struct ChangeLayoutBottomSheet: View {
|
|||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
|
||||
Text("Audio seulement")
|
||||
Text("conference_layout_audio_only")
|
||||
.default_text_style_white(styleSize: 15)
|
||||
|
||||
Spacer()
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ struct MediaEncryptedSheetBottomSheet: View {
|
|||
Spacer()
|
||||
HStack {
|
||||
Spacer()
|
||||
Button("Close") {
|
||||
Button("dialog_close") {
|
||||
mediaEncryptedSheet = false
|
||||
dismiss()
|
||||
}
|
||||
|
|
@ -50,7 +50,7 @@ struct MediaEncryptedSheetBottomSheet: View {
|
|||
.padding(15)
|
||||
}
|
||||
|
||||
Text("Chiffrement du média")
|
||||
Text("call_stats_media_encryption_title")
|
||||
.default_text_style_white_600(styleSize: 15)
|
||||
.padding(.top, 10)
|
||||
|
||||
|
|
@ -92,7 +92,7 @@ struct MediaEncryptedSheetBottomSheet: View {
|
|||
mediaEncryptedSheet = false
|
||||
dismiss()
|
||||
}, label: {
|
||||
Text("Faire la validation à nouveau")
|
||||
Text("call_do_zrtp_sas_validation_again")
|
||||
.default_text_style_white_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
|
|||
|
|
@ -107,13 +107,13 @@ struct ParticipantsListFragment: View {
|
|||
.background(.white)
|
||||
|
||||
if self.isShowPopup {
|
||||
let contentPopup = Text("Etes-vous sûr de vouloir supprimer \(callViewModel.participantList[indexToRemove].name) ?")
|
||||
let contentPopup = Text(String(format: String(localized: "meeting_call_remove_participant_confirmation_message"), callViewModel.participantList[indexToRemove].name))
|
||||
PopupView(isShowPopup: $isShowPopup,
|
||||
title: Text("Supprimer un participant"),
|
||||
title: Text("meeting_call_remove_participant_confirmation_title"),
|
||||
content: contentPopup,
|
||||
titleFirstButton: Text("Non"),
|
||||
titleFirstButton: Text("dialog_no"),
|
||||
actionFirstButton: {self.isShowPopup.toggle()},
|
||||
titleSecondButton: Text("Oui"),
|
||||
titleSecondButton: Text("dialog_yes"),
|
||||
actionSecondButton: {
|
||||
callViewModel.removeParticipant(index: indexToRemove)
|
||||
self.isShowPopup.toggle()
|
||||
|
|
@ -158,7 +158,7 @@ struct ParticipantsListFragment: View {
|
|||
Spacer()
|
||||
|
||||
if callViewModel.myParticipantModel!.isAdmin {
|
||||
Text("Administrateur")
|
||||
Text("conversation_info_participant_is_admin_label")
|
||||
.foregroundStyle(Color.grayMain2c300)
|
||||
.default_text_style(styleSize: 12)
|
||||
.frame(maxWidth: .infinity, alignment: .trailing)
|
||||
|
|
@ -202,7 +202,7 @@ struct ParticipantsListFragment: View {
|
|||
Spacer()
|
||||
|
||||
if callViewModel.participantList[index].isAdmin {
|
||||
Text("Administrateur")
|
||||
Text("conversation_info_participant_is_admin_label")
|
||||
.foregroundStyle(Color.grayMain2c300)
|
||||
.default_text_style(styleSize: 12)
|
||||
.frame(maxWidth: .infinity, alignment: .trailing)
|
||||
|
|
@ -250,7 +250,7 @@ struct ParticipantsListFragment: View {
|
|||
.scaledToFit()
|
||||
.clipped()
|
||||
.padding(.all)
|
||||
Text("No participant for the moment...")
|
||||
Text("meeting_call_remove_no_participants")
|
||||
.default_text_style_800(styleSize: 16)
|
||||
Spacer()
|
||||
Spacer()
|
||||
|
|
|
|||
|
|
@ -470,7 +470,7 @@ struct MeetingWaitingRoomFragment: View {
|
|||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
|
||||
Text(!meetingWaitingRoomViewModel.isHeadPhoneAvailable() ? "Earpiece" : "Headphones")
|
||||
Text(!meetingWaitingRoomViewModel.isHeadPhoneAvailable() ? "call_audio_device_type_earpiece" : "call_audio_device_type_headphones")
|
||||
.default_text_style_white(styleSize: 15)
|
||||
|
||||
Spacer()
|
||||
|
|
@ -536,7 +536,8 @@ struct MeetingWaitingRoomFragment: View {
|
|||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
|
||||
Text("Bluetooth")
|
||||
Text(String(format: String(localized: "call_audio_device_type_bluetooth"),
|
||||
AVAudioSession.sharedInstance().currentRoute.outputs.first?.portName ?? ""))
|
||||
.default_text_style_white(styleSize: 15)
|
||||
|
||||
Spacer()
|
||||
|
|
|
|||
|
|
@ -121,11 +121,11 @@ struct ContactInnerActionsFragment: View {
|
|||
VStack {
|
||||
if contactAvatarModel.friend!.phoneNumbersWithLabel[index].label != nil
|
||||
&& !contactAvatarModel.friend!.phoneNumbersWithLabel[index].label!.isEmpty {
|
||||
Text("Phone (\(contactAvatarModel.friend!.phoneNumbersWithLabel[index].label!)) :")
|
||||
Text(String(localized: "phone_number") + " \(contactAvatarModel.friend!.phoneNumbersWithLabel[index].label!)) :")
|
||||
.default_text_style_700(styleSize: 14)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
} else {
|
||||
Text("Phone :")
|
||||
Text(String(localized: "phone_number") + " :")
|
||||
.default_text_style_700(styleSize: 14)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
}
|
||||
|
|
@ -170,7 +170,7 @@ struct ContactInnerActionsFragment: View {
|
|||
VStack {
|
||||
if contactAvatarModel.friend!.organization != nil
|
||||
&& !contactAvatarModel.friend!.organization!.isEmpty {
|
||||
Text("**Company :** \(contactAvatarModel.friend!.organization!)")
|
||||
Text(.init(String(format:"**%@ :** %@", String(localized: "contact_editor_company"), contactAvatarModel.friend!.organization!)))
|
||||
.default_text_style(styleSize: 14)
|
||||
.padding(.vertical, 15)
|
||||
.padding(.horizontal, 20)
|
||||
|
|
@ -179,7 +179,7 @@ struct ContactInnerActionsFragment: View {
|
|||
|
||||
if contactAvatarModel.friend!.jobTitle != nil
|
||||
&& !contactAvatarModel.friend!.jobTitle!.isEmpty {
|
||||
Text("**Job :** \(contactAvatarModel.friend!.jobTitle!)")
|
||||
Text(.init(String(format:"**%@ :** %@", String(localized: "contact_editor_job_title"), contactAvatarModel.friend!.jobTitle!)))
|
||||
.default_text_style(styleSize: 14)
|
||||
.padding(.top,
|
||||
contactAvatarModel.friend!.organization != nil
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ struct ContactInnerFragment: View {
|
|||
.fullScreenCover(isPresented: $presentingEditContact) {
|
||||
NavigationView {
|
||||
EditContactView(contact: $cnContact)
|
||||
.navigationBarTitle("Edit Contact")
|
||||
.navigationBarTitle("contact_edit_title")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
.edgesIgnoringSafeArea(.vertical)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ struct ContactListBottomSheet: View {
|
|||
Spacer()
|
||||
HStack {
|
||||
Spacer()
|
||||
Button("Close") {
|
||||
Button("dialog_close") {
|
||||
if #available(iOS 16.0, *) {
|
||||
showingSheet.toggle()
|
||||
} else {
|
||||
|
|
@ -147,7 +147,7 @@ struct ContactListBottomSheet: View {
|
|||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
Text(contactViewModel.stringToCopy.prefix(4) == "sip:"
|
||||
? "Block the address" : "Block the number")
|
||||
? "menu_block_address" : "menu_block_number")
|
||||
.default_text_style(styleSize: 16)
|
||||
Spacer()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ struct ContactsListBottomSheet: View {
|
|||
Spacer()
|
||||
HStack {
|
||||
Spacer()
|
||||
Button("Close") {
|
||||
Button("dialog_close") {
|
||||
if #available(iOS 16.0, *) {
|
||||
showingSheet.toggle()
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ struct ContentView: View {
|
|||
.padding(.leading, 10)
|
||||
|
||||
if callViewModel.callsCounter > 1 {
|
||||
Text("\(callViewModel.callsCounter) appels")
|
||||
Text(String(format: String(localized: "calls_count_label"), callViewModel.callsCounter))
|
||||
.default_text_style_white(styleSize: 16)
|
||||
} else {
|
||||
Text("\(callViewModel.displayName)")
|
||||
|
|
@ -104,7 +104,7 @@ struct ContentView: View {
|
|||
Spacer()
|
||||
|
||||
if callViewModel.callsCounter == 1 {
|
||||
Text("\(callViewModel.isPaused || telecomManager.isPausedByRemote ? "En pause" : "Actif")")
|
||||
Text(String(localized: "\(callViewModel.isPaused || telecomManager.isPausedByRemote ? "call_state_paused" : "call_state_connected")"))
|
||||
.default_text_style_white(styleSize: 16)
|
||||
.padding(.trailing, 10)
|
||||
}
|
||||
|
|
@ -142,10 +142,10 @@ struct ContentView: View {
|
|||
.foregroundStyle(self.index == 0 ? Color.orangeMain500 : Color.grayMain2c600)
|
||||
.frame(width: 25, height: 25)
|
||||
if self.index == 0 {
|
||||
Text("Contacts")
|
||||
Text("bottom_navigation_contacts_label")
|
||||
.default_text_style_700(styleSize: 10)
|
||||
} else {
|
||||
Text("Contacts")
|
||||
Text("bottom_navigation_contacts_label")
|
||||
.default_text_style(styleSize: 10)
|
||||
}
|
||||
}
|
||||
|
|
@ -190,10 +190,10 @@ struct ContentView: View {
|
|||
.foregroundStyle(self.index == 1 ? Color.orangeMain500 : Color.grayMain2c600)
|
||||
.frame(width: 25, height: 25)
|
||||
if self.index == 1 {
|
||||
Text("Calls")
|
||||
Text("bottom_navigation_calls_label")
|
||||
.default_text_style_700(styleSize: 10)
|
||||
} else {
|
||||
Text("Calls")
|
||||
Text("bottom_navigation_calls_label")
|
||||
.default_text_style(styleSize: 10)
|
||||
}
|
||||
}
|
||||
|
|
@ -315,7 +315,7 @@ struct ContentView: View {
|
|||
openMenu()
|
||||
}
|
||||
|
||||
Text(index == 0 ? "bottom_navigation_contacts_label" : (index == 1 ? "bottom_navigation_calls_label" : (index == 2 ? "bottom_navigation_conversations_label" : "bottom_navigation_meetings_label")))
|
||||
Text(String(localized: index == 0 ? "bottom_navigation_contacts_label" : (index == 1 ? "bottom_navigation_calls_label" : (index == 2 ? "bottom_navigation_conversations_label" : "bottom_navigation_meetings_label"))))
|
||||
.default_text_style_white_800(styleSize: 20)
|
||||
.padding(.leading, 10)
|
||||
|
||||
|
|
@ -393,7 +393,7 @@ struct ContentView: View {
|
|||
isShowDeleteAllHistoryPopup.toggle()
|
||||
} label: {
|
||||
HStack {
|
||||
Text("Delete all history")
|
||||
Text("menu_delete_history")
|
||||
Spacer()
|
||||
Image("trash-simple-red")
|
||||
.resizable()
|
||||
|
|
@ -671,10 +671,10 @@ struct ContentView: View {
|
|||
.foregroundStyle(self.index == 0 ? Color.orangeMain500 : Color.grayMain2c600)
|
||||
.frame(width: 25, height: 25)
|
||||
if self.index == 0 {
|
||||
Text("Contacts")
|
||||
Text("bottom_navigation_contacts_label")
|
||||
.default_text_style_700(styleSize: 10)
|
||||
} else {
|
||||
Text("Contacts")
|
||||
Text("bottom_navigation_contacts_label")
|
||||
.default_text_style(styleSize: 10)
|
||||
}
|
||||
}
|
||||
|
|
@ -721,10 +721,10 @@ struct ContentView: View {
|
|||
.foregroundStyle(self.index == 1 ? Color.orangeMain500 : Color.grayMain2c600)
|
||||
.frame(width: 25, height: 25)
|
||||
if self.index == 1 {
|
||||
Text("Calls")
|
||||
Text("bottom_navigation_calls_label")
|
||||
.default_text_style_700(styleSize: 9)
|
||||
} else {
|
||||
Text("Calls")
|
||||
Text("bottom_navigation_calls_label")
|
||||
.default_text_style(styleSize: 9)
|
||||
}
|
||||
}
|
||||
|
|
@ -1004,17 +1004,16 @@ struct ContentView: View {
|
|||
|
||||
if isShowDeleteContactPopup {
|
||||
PopupView(isShowPopup: $isShowDeleteContactPopup,
|
||||
title: Text(
|
||||
contactViewModel.selectedFriend != nil
|
||||
? "Delete \(contactViewModel.selectedFriend!.name!)?"
|
||||
title: Text(String(format: String(localized: "contact_dialog_delete_title"), contactViewModel.selectedFriend != nil
|
||||
? contactViewModel.selectedFriend!.name!
|
||||
: (contactViewModel.indexDisplayedFriend != nil
|
||||
? "Delete \(contactsManager.lastSearch[contactViewModel.indexDisplayedFriend!].friend!.name!)?"
|
||||
: "Error Name")),
|
||||
content: Text("This contact will be deleted definitively."),
|
||||
titleFirstButton: Text("Cancel"),
|
||||
? contactsManager.lastSearch[contactViewModel.indexDisplayedFriend!].friend!.name!
|
||||
: "Error Name"))),
|
||||
content: Text("contact_dialog_delete_message"),
|
||||
titleFirstButton: Text("dialog_cancel"),
|
||||
actionFirstButton: {
|
||||
self.isShowDeleteContactPopup.toggle()},
|
||||
titleSecondButton: Text("Ok"),
|
||||
titleSecondButton: Text("dialog_ok"),
|
||||
actionSecondButton: {
|
||||
if contactViewModel.selectedFriendToDelete != nil {
|
||||
if contactViewModel.indexDisplayedFriend != nil {
|
||||
|
|
@ -1046,14 +1045,14 @@ struct ContentView: View {
|
|||
|
||||
if isShowDeleteAllHistoryPopup {
|
||||
PopupView(isShowPopup: $isShowDeleteContactPopup,
|
||||
title: Text("Do you really want to delete all calls history?"),
|
||||
content: Text("All calls will be removed from the history."),
|
||||
titleFirstButton: Text("Cancel"),
|
||||
title: Text("history_dialog_delete_all_call_logs_title"),
|
||||
content: Text("history_dialog_delete_all_call_logs_message"),
|
||||
titleFirstButton: Text("dialog_cancel"),
|
||||
actionFirstButton: {
|
||||
self.isShowDeleteAllHistoryPopup.toggle()
|
||||
historyListViewModel.callLogsAddressToDelete = ""
|
||||
},
|
||||
titleSecondButton: Text("Ok"),
|
||||
titleSecondButton: Text("dialog_ok"),
|
||||
actionSecondButton: {
|
||||
historyListViewModel.removeCallLogs()
|
||||
self.isShowDeleteAllHistoryPopup.toggle()
|
||||
|
|
@ -1071,11 +1070,11 @@ struct ContentView: View {
|
|||
|
||||
if isShowDismissPopup {
|
||||
PopupView(isShowPopup: $isShowDismissPopup,
|
||||
title: Text("Don’t save modifications?"),
|
||||
content: Text("All modifications will be canceled."),
|
||||
titleFirstButton: Text("Cancel"),
|
||||
title: Text("contact_editor_dialog_abort_confirmation_title"),
|
||||
content: Text("contact_editor_dialog_abort_confirmation_message"),
|
||||
titleFirstButton: Text("dialog_cancel"),
|
||||
actionFirstButton: {self.isShowDismissPopup.toggle()},
|
||||
titleSecondButton: Text("Ok"),
|
||||
titleSecondButton: Text("dialog_ok"),
|
||||
actionSecondButton: {
|
||||
if editContactViewModel.selectedEditFriend == nil {
|
||||
self.isShowDismissPopup.toggle()
|
||||
|
|
@ -1155,15 +1154,15 @@ struct ContentView: View {
|
|||
|
||||
if isShowSendCancelMeetingNotificationPopup {
|
||||
PopupView(isShowPopup: $isShowSendCancelMeetingNotificationPopup,
|
||||
title: Text("The meeting will be cancelled"),
|
||||
content: Text("Send notification to participants ?"),
|
||||
titleFirstButton: Text("Cancel for me only"),
|
||||
title: Text("meeting_schedule_cancel_dialog_title"),
|
||||
content: Text("meeting_schedule_cancel_dialog_message"),
|
||||
titleFirstButton: Text("dialog_cancel"),
|
||||
actionFirstButton: {
|
||||
meetingViewModel.displayedMeeting = nil
|
||||
meetingsListViewModel.deleteSelectedMeeting()
|
||||
self.isShowSendCancelMeetingNotificationPopup.toggle(
|
||||
) },
|
||||
titleSecondButton: Text("Send cancellation notifications"),
|
||||
titleSecondButton: Text("dialog_ok"),
|
||||
actionSecondButton: {
|
||||
meetingViewModel.displayedMeeting = nil
|
||||
if let meetingToDelete = self.meetingsListViewModel.selectedMeetingToDelete {
|
||||
|
|
@ -1184,11 +1183,11 @@ struct ContentView: View {
|
|||
isShowPopup: $isShowStartCallGroupPopup,
|
||||
title: Text("conversation_info_confirm_start_group_call_dialog_title"),
|
||||
content: Text("conversation_info_confirm_start_group_call_dialog_message"),
|
||||
titleFirstButton: Text("Cancel"),
|
||||
titleFirstButton: Text("dialog_cancel"),
|
||||
actionFirstButton: {
|
||||
self.isShowStartCallGroupPopup.toggle()
|
||||
},
|
||||
titleSecondButton: Text("Confirm"),
|
||||
titleSecondButton: Text("dialog_ok"),
|
||||
actionSecondButton: {
|
||||
if conversationViewModel.displayedConversation != nil {
|
||||
conversationViewModel.displayedConversation!.createGroupCall()
|
||||
|
|
@ -1208,11 +1207,11 @@ struct ContentView: View {
|
|||
isShowPopup: $isShowStartCallGroupPopup,
|
||||
title: Text("conversation_info_confirm_start_group_call_dialog_title"),
|
||||
content: Text("conversation_info_confirm_start_group_call_dialog_message"),
|
||||
titleFirstButton: Text("Cancel"),
|
||||
titleFirstButton: Text("dialog_cancel"),
|
||||
actionFirstButton: {
|
||||
self.isShowStartCallGroupPopup.toggle()
|
||||
},
|
||||
titleSecondButton: Text("Confirm"),
|
||||
titleSecondButton: Text("dialog_ok"),
|
||||
actionSecondButton: {
|
||||
if conversationViewModel.displayedConversation != nil {
|
||||
conversationViewModel.displayedConversation!.createGroupCall()
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ struct ChatBubbleView: View {
|
|||
|
||||
VStack(spacing: 2) {
|
||||
if !eventLogMessage.message.messageConferenceInfo!.meetingDescription.isEmpty {
|
||||
Text("Description")
|
||||
Text("meeting_schedule_description_title")
|
||||
.default_text_style(styleSize: 14)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
|
|
|
|||
|
|
@ -296,7 +296,7 @@ struct ConversationForwardMessageFragment: View {
|
|||
.frame(width: 45, height: 45)
|
||||
.clipShape(Circle())
|
||||
|
||||
Text("Username error")
|
||||
Text("username_error")
|
||||
.default_text_style(styleSize: 16)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.foregroundStyle(Color.orangeMain500)
|
||||
|
|
|
|||
|
|
@ -1028,7 +1028,7 @@ struct ImdnOrReactionsSheet: View {
|
|||
|
||||
var body: some View {
|
||||
VStack {
|
||||
Picker("Categories", selection: $selectedCategoryIndex) {
|
||||
Picker("picker_categories", selection: $selectedCategoryIndex) {
|
||||
ForEach(0..<conversationViewModel.sheetCategories.count, id: \.self) { index in
|
||||
Text(conversationViewModel.sheetCategories[index].name)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ struct ConversationsListBottomSheet: View {
|
|||
Spacer()
|
||||
HStack {
|
||||
Spacer()
|
||||
Button("Close") {
|
||||
Button("dialog_close") {
|
||||
if #available(iOS 16.0, *) {
|
||||
showingSheet.toggle()
|
||||
} else {
|
||||
|
|
@ -80,7 +80,7 @@ struct ConversationsListBottomSheet: View {
|
|||
.foregroundStyle(Color.grayMain2c500)
|
||||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
Text("Marquer comme non lu")
|
||||
Text("conversation_action_mark_as_read")
|
||||
.default_text_style(styleSize: 16)
|
||||
Spacer()
|
||||
}
|
||||
|
|
@ -118,7 +118,7 @@ struct ConversationsListBottomSheet: View {
|
|||
.foregroundStyle(Color.grayMain2c500)
|
||||
.frame(width: 25, height: 25, alignment: .leading)
|
||||
.padding(.all, 10)
|
||||
Text(conversationsListViewModel.selectedConversation!.isMuted ? "Réactiver les notifications" : "Mettre en sourdine")
|
||||
Text(conversationsListViewModel.selectedConversation!.isMuted ? "conversation_action_unmute" : "conversation_action_mute")
|
||||
.default_text_style(styleSize: 16)
|
||||
Spacer()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ struct StartConversationFragment: View {
|
|||
ScrollView {
|
||||
if !ContactsManager.shared.lastSearch.isEmpty {
|
||||
HStack(alignment: .center) {
|
||||
Text("All contacts")
|
||||
Text("contacts_list_all_contacts_title")
|
||||
.default_text_style_800(styleSize: 16)
|
||||
|
||||
Spacer()
|
||||
|
|
@ -294,7 +294,7 @@ struct StartConversationFragment: View {
|
|||
.frame(width: 45, height: 45)
|
||||
.clipShape(Circle())
|
||||
|
||||
Text("Username error")
|
||||
Text("username_error")
|
||||
.default_text_style(styleSize: 16)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.foregroundStyle(Color.orangeMain500)
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ class HelpView { // TODO (basic debug moved here until halp view is implemented)
|
|||
CoreContext.shared.doOnCoreQueue { _ in
|
||||
Core.resetLogCollection()
|
||||
DispatchQueue.main.async {
|
||||
ToastViewModel.shared.toastMessage = "Success_clear_logs"
|
||||
ToastViewModel.shared.toastMessage = "help_troubleshooting_debug_logs_cleaned_toast_message"
|
||||
ToastViewModel.shared.displayToast = true
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ struct PopupLoadingView: View {
|
|||
.padding(.top)
|
||||
.padding(.bottom)
|
||||
|
||||
Text("Opération en cours...")
|
||||
Text("operation_in_progress_overlay")
|
||||
.tint(Color.grayMain2c600)
|
||||
.default_text_style(styleSize: 15)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ struct PopupViewWithTextField: View {
|
|||
Button(action: {
|
||||
conversationViewModel.isShowConversationInfoPopup = false
|
||||
}, label: {
|
||||
Text("Cancel")
|
||||
Text("dialog_cancel")
|
||||
.default_text_style_orange_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
@ -58,7 +58,7 @@ struct PopupViewWithTextField: View {
|
|||
Button(action: {
|
||||
conversationViewModel.setNewChatRoomSubject()
|
||||
}, label: {
|
||||
Text("Confirm")
|
||||
Text("dialog_ok")
|
||||
.default_text_style_white_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
|
|||
|
|
@ -137,13 +137,13 @@ struct SideMenu: View {
|
|||
showHelp = true
|
||||
}
|
||||
.confirmationDialog("Temp Help", isPresented: $showHelp, titleVisibility: .visible) {
|
||||
Button("Send Logs") {
|
||||
Button("help_troubleshooting_share_logs") {
|
||||
HelpView.sendLogs()
|
||||
}
|
||||
Button("Clear Logs") {
|
||||
Button("help_troubleshooting_clean_logs") {
|
||||
HelpView.clearLogs()
|
||||
}
|
||||
Button("Logout") {
|
||||
Button("manage_account_delete") {
|
||||
HelpView.logout()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,43 +52,43 @@ struct ToastView: View {
|
|||
}
|
||||
|
||||
switch toastViewModel.toastMessage {
|
||||
case "Successful":
|
||||
Text("QR code validated!")
|
||||
case "Success_qr_code_validated":
|
||||
Text("qr_code_validated")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_remove_call_logs":
|
||||
Text("History has been deleted")
|
||||
Text("call_history_deleted_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_clear_logs":
|
||||
Text("Logs cleared")
|
||||
Text("help_troubleshooting_debug_logs_cleaned_toast_message")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_send_logs":
|
||||
Text("Logs URL copied into clipboard")
|
||||
Text("debug_logs_copied_to_clipboard_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_address_copied_into_clipboard":
|
||||
Text("SIP address copied into clipboard")
|
||||
Text("sip_address_copied_to_clipboard_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_message_copied_into_clipboard":
|
||||
Text("Message copied into clipboard")
|
||||
Text("message_copied_to_clipboard_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
|
|
@ -109,105 +109,98 @@ struct ToastView: View {
|
|||
.padding(8)
|
||||
|
||||
case "Failed":
|
||||
Text("Invalid QR code!")
|
||||
Text("assistant_qr_code_invalid_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Invalide URI":
|
||||
Text("Invalide URI")
|
||||
Text("assistant_invalid_uri_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Registration_failed":
|
||||
Text("The user name or password is incorrects")
|
||||
Text("assistant_account_login_forbidden_error")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Unavailable_network":
|
||||
Text("Network is not reachable")
|
||||
Text("network_not_reachable")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_toast_network_connected":
|
||||
Text("Network is now reachable again")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_account_logged_out":
|
||||
Text("Account successfully logged out")
|
||||
Text("network_not_reachable_again")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_toast_call_transfer_successful":
|
||||
Text("Call has been successfully transferred")
|
||||
Text("call_transfer_successful_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_toast_call_transfer_in_progress":
|
||||
Text("Call is being transferred")
|
||||
Text("call_transfer_in_progress_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_toast_meeting_deleted":
|
||||
Text("Successfully removed meeting")
|
||||
Text("meeting_info_deleted_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Failed_toast_call_transfer_failed":
|
||||
Text("Call transfer failed!")
|
||||
Text("call_transfer_failed_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Failed_uri_handler_call_failed":
|
||||
Text("Call failed")
|
||||
Text("uri_handler_call_failed_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Failed_uri_handler_config_failed":
|
||||
Text("Configuration failed")
|
||||
Text("uri_handler_config_failed_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "uri_handler_config_success":
|
||||
Text("Configuration successfully applied")
|
||||
Text("uri_handler_config_success_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Failed_uri_handler_bad_call_address":
|
||||
Text("Unable to call, invalid address")
|
||||
Text("uri_handler_bad_call_address_failed_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Failed_uri_handler_bad_config_address":
|
||||
Text("Unable to retrieve configuration, invalid address")
|
||||
Text("uri_handler_bad_config_address_failed_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
|
|
@ -254,7 +247,7 @@ struct ToastView: View {
|
|||
.foregroundStyle(Color.redDanger500)
|
||||
|
||||
case "Meeting_added_to_calendar":
|
||||
Text("Meeting added to iPhone calendar")
|
||||
Text("meeting_exported_as_calendar_event")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
|
|
@ -268,7 +261,7 @@ struct ToastView: View {
|
|||
.padding(8)
|
||||
|
||||
case "Failed_no_subject_or_participant":
|
||||
Text("A subject and at least one participant is required to create a meeting")
|
||||
Text("meeting_schedule_failed_no_subject_or_participant_toast")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ struct DialerBottomSheet: View {
|
|||
Spacer()
|
||||
HStack {
|
||||
Spacer()
|
||||
Button("Close") {
|
||||
Button("dialog_close") {
|
||||
showingDialer.toggle()
|
||||
dismiss()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ struct HistoryListBottomSheet: View {
|
|||
Spacer()
|
||||
HStack {
|
||||
Spacer()
|
||||
Button("Close") {
|
||||
Button("dialog_close") {
|
||||
if #available(iOS 16.0, *) {
|
||||
showingSheet.toggle()
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ struct StartCallFragment: View {
|
|||
}
|
||||
}
|
||||
|
||||
Text(!callViewModel.isTransferInsteadCall ? "history_call_start_title" : "Transfer call to")
|
||||
Text(!callViewModel.isTransferInsteadCall ? "history_call_start_title" : "call_transfer_current_call_title")
|
||||
.multilineTextAlignment(.leading)
|
||||
.default_text_style_orange_800(styleSize: 16)
|
||||
|
||||
|
|
@ -395,7 +395,7 @@ struct StartCallFragment: View {
|
|||
.frame(width: 45, height: 45)
|
||||
.clipShape(Circle())
|
||||
|
||||
Text("Username error")
|
||||
Text("username_error")
|
||||
.default_text_style(styleSize: 16)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.foregroundStyle(Color.orangeMain500)
|
||||
|
|
|
|||
|
|
@ -148,23 +148,23 @@ class HistoryListViewModel: ObservableObject {
|
|||
switch callStatus {
|
||||
case Call.Status.Missed:
|
||||
if isOutgoing {
|
||||
"Outgoing Call"
|
||||
String(localized: "call_outgoing")
|
||||
} else {
|
||||
"Missed Call"
|
||||
String(localized: "notification_missed_call_title")
|
||||
}
|
||||
|
||||
case Call.Status.Success:
|
||||
if isOutgoing {
|
||||
"Outgoing Call"
|
||||
String(localized: "call_outgoing")
|
||||
} else {
|
||||
"Incoming Call"
|
||||
String(localized: "call_audio_incoming")
|
||||
}
|
||||
|
||||
default:
|
||||
if isOutgoing {
|
||||
"Outgoing Call"
|
||||
String(localized: "call_outgoing")
|
||||
} else {
|
||||
"Incoming Call"
|
||||
String(localized: "call_audio_incoming")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ struct AddParticipantsFragment: View {
|
|||
.multilineTextAlignment(.leading)
|
||||
.default_text_style_orange_800(styleSize: 16)
|
||||
.padding(.top, 20)
|
||||
Text("\($addParticipantsViewModel.participantsToAdd.count) selected participants")
|
||||
Text(String(format: String(localized: "selected_participants_count"), $addParticipantsViewModel.participantsToAdd.count))
|
||||
.default_text_style_300(styleSize: 12)
|
||||
}
|
||||
Spacer()
|
||||
|
|
@ -217,7 +217,7 @@ struct AddParticipantsFragment: View {
|
|||
}
|
||||
|
||||
HStack(alignment: .center) {
|
||||
Text("Suggestions")
|
||||
Text("generic_address_picker_suggestions_list_title")
|
||||
.default_text_style_800(styleSize: 16)
|
||||
|
||||
Spacer()
|
||||
|
|
@ -278,7 +278,7 @@ struct AddParticipantsFragment: View {
|
|||
.frame(width: 45, height: 45)
|
||||
.clipShape(Circle())
|
||||
|
||||
Text("Username error")
|
||||
Text("username_error")
|
||||
.default_text_style(styleSize: 16)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.foregroundStyle(Color.orangeMain500)
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ struct MeetingsListBottomSheet: View {
|
|||
Spacer()
|
||||
HStack {
|
||||
Spacer()
|
||||
Button("Close") {
|
||||
Button("dialog_close") {
|
||||
if #available(iOS 16.0, *) {
|
||||
showingSheet.toggle()
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -412,7 +412,9 @@ struct ScheduleMeetingFragment: View {
|
|||
func getDatePopup(isTimeSelection: Bool) -> some View {
|
||||
GeometryReader { geometry in
|
||||
VStack(alignment: .leading) {
|
||||
Text("Select \(setFromDate ? "start" : "end") \(isTimeSelection ? "time" : "date")")
|
||||
Text(setFromDate ?
|
||||
(isTimeSelection ? String(localized: "meeting_schedule_pick_start_time_title") : String(localized: "meeting_schedule_pick_start_date_title"))
|
||||
: String(localized: "meeting_schedule_pick_end_time_title"))
|
||||
.default_text_style_800(styleSize: 16)
|
||||
.frame(alignment: .leading)
|
||||
.padding(.bottom, 2)
|
||||
|
|
@ -433,7 +435,7 @@ struct ScheduleMeetingFragment: View {
|
|||
|
||||
HStack {
|
||||
Spacer()
|
||||
Text("Cancel")
|
||||
Text("dialog_cancel")
|
||||
.default_text_style_orange_500(styleSize: 16)
|
||||
.onTapGesture {
|
||||
if isTimeSelection {
|
||||
|
|
@ -442,7 +444,7 @@ struct ScheduleMeetingFragment: View {
|
|||
showDatePicker.toggle()
|
||||
}
|
||||
}
|
||||
Text("Ok")
|
||||
Text("dialog_ok")
|
||||
.default_text_style_orange_500(styleSize: 16)
|
||||
.onTapGesture {
|
||||
pickDate()
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ struct WelcomeView: View {
|
|||
NavigationLink(destination: {
|
||||
PermissionsFragment()
|
||||
}, label: {
|
||||
Text("Skip")
|
||||
Text("welcome_carousel_skip")
|
||||
.underline()
|
||||
.default_text_style_600(styleSize: 15)
|
||||
|
||||
|
|
@ -98,7 +98,7 @@ struct WelcomeView: View {
|
|||
NavigationLink(destination: {
|
||||
PermissionsFragment()
|
||||
}, label: {
|
||||
Text("Start")
|
||||
Text("start")
|
||||
.default_text_style_white_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
@ -117,7 +117,7 @@ struct WelcomeView: View {
|
|||
index += 1
|
||||
}
|
||||
}, label: {
|
||||
Text("Next")
|
||||
Text("next")
|
||||
.default_text_style_white_600(styleSize: 20)
|
||||
.frame(height: 35)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ class NotificationService: UNNotificationServiceExtension {
|
|||
|
||||
stopCore()
|
||||
bestAttemptContent.sound = UNNotificationSound(named: UNNotificationSoundName(rawValue: "msg.caf"))
|
||||
bestAttemptContent.title = NSLocalizedString("Message received", comment: "")
|
||||
bestAttemptContent.title = String(localized: "notification_chat_message_received_title")
|
||||
if let subtitle = msgData?.subtitle {
|
||||
bestAttemptContent.subtitle = subtitle
|
||||
}
|
||||
|
|
@ -221,11 +221,11 @@ class NotificationService: UNNotificationServiceExtension {
|
|||
|
||||
var content = ""
|
||||
if message.isConferenceInvitationNew {
|
||||
content = NSLocalizedString("📅 You are invited to a meeting", comment: "")
|
||||
content = String(localized: "message_meeting_invitation_notification")
|
||||
} else if message.isConferenceInvitationUpdate {
|
||||
content = NSLocalizedString("📅 Meeting has been modified", comment: "")
|
||||
content = String(localized: "message_meeting_invitation_updated_notification")
|
||||
} else if message.isConferenceInvitationCancellation {
|
||||
content = NSLocalizedString("📅 Meeting has been cancelled", comment: "")
|
||||
content = String(localized: "message_meeting_invitation_cancelled_notification")
|
||||
} else {
|
||||
content = message.isText ? message.textContent! : "🗻"
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue