From c0a150f3e1a43f4fc9763f30d6062a413321bf5f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 27 Oct 2025 10:24:07 +0000 Subject: [PATCH 01/72] Updated translations from Weblate --- Linphone/CMakeLists.txt | 2 +- Linphone/data/languages/ca.ts | 7432 ++++++++++++++++++ Linphone/data/languages/cs.ts | 7458 +++++++++++++++++++ Linphone/data/languages/de.ts | 942 +-- Linphone/data/languages/en.ts | 818 +- Linphone/data/languages/es.ts | 7432 ++++++++++++++++++ Linphone/data/languages/eu.ts | 7436 ++++++++++++++++++ Linphone/data/languages/{fr_FR.ts => fr.ts} | 820 +- Linphone/data/languages/hu.ts | 7432 ++++++++++++++++++ Linphone/data/languages/mk.ts | 7432 ++++++++++++++++++ Linphone/data/languages/nl.ts | 7432 ++++++++++++++++++ Linphone/data/languages/pt.ts | 7432 ++++++++++++++++++ Linphone/data/languages/pt_BR.ts | 7436 ++++++++++++++++++ Linphone/data/languages/ru.ts | 7458 +++++++++++++++++++ Linphone/data/languages/sk.ts | 7454 ++++++++++++++++++ Linphone/data/languages/uk.ts | 7458 +++++++++++++++++++ Linphone/data/languages/zh_Hans.ts | 7414 ++++++++++++++++++ 17 files changed, 97997 insertions(+), 1291 deletions(-) create mode 100644 Linphone/data/languages/ca.ts create mode 100644 Linphone/data/languages/cs.ts create mode 100644 Linphone/data/languages/es.ts create mode 100644 Linphone/data/languages/eu.ts rename Linphone/data/languages/{fr_FR.ts => fr.ts} (96%) create mode 100644 Linphone/data/languages/hu.ts create mode 100644 Linphone/data/languages/mk.ts create mode 100644 Linphone/data/languages/nl.ts create mode 100644 Linphone/data/languages/pt.ts create mode 100644 Linphone/data/languages/pt_BR.ts create mode 100644 Linphone/data/languages/ru.ts create mode 100644 Linphone/data/languages/sk.ts create mode 100644 Linphone/data/languages/uk.ts create mode 100644 Linphone/data/languages/zh_Hans.ts diff --git a/Linphone/CMakeLists.txt b/Linphone/CMakeLists.txt index 994dcbc84..7e620452e 100644 --- a/Linphone/CMakeLists.txt +++ b/Linphone/CMakeLists.txt @@ -127,7 +127,7 @@ add_subdirectory(core) set(LANGUAGES_DIRECTORY "data/languages") set(I18N_FILENAME i18n.qrc) -set(LANGUAGES en fr_FR de) +set(LANGUAGES en fr de) # Add languages support. add_subdirectory("${LANGUAGES_DIRECTORY}" "data/languages") diff --git a/Linphone/data/languages/ca.ts b/Linphone/data/languages/ca.ts new file mode 100644 index 000000000..b2b7a0fee --- /dev/null +++ b/Linphone/data/languages/ca.ts @@ -0,0 +1,7432 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + Desar + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + Escull el nombre SIP o l'adreça + + + + fps_counter + %1 FPS + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + Connectat + + + + drawer_menu_account_connection_status_refreshing + Actualitzant… + + + + drawer_menu_account_connection_status_progress + Connectant… + + + + drawer_menu_account_connection_status_failed + Error + + + + drawer_menu_account_connection_status_cleared + Deshabilitat + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + Ets en línia i accessible. + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + Error de connexió, comprova la configuració. + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + + + + + AccountListView + + + add_an_account + Add an account + + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + + + + + assistant_account_login_forbidden_error + "Username and password do not match" + + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + + + + + assistant_account_add_error + "Unable to add account." + + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + Edita la informació del teu compte. + + + + manage_account_devices_title + "Vos appareils" + Els teus dispositius + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + Llistat de dispositius connectats al teu compte. Pots esborrar-ne els que ja no utilitzis. + + + + manage_account_add_picture + "Ajouter une image" + Afegeix una imatge + + + + manage_account_edit_picture + "Modifier l'image" + Edita la imatge + + + + manage_account_remove_picture + "Supprimer l'image" + Esborra la imatge + + + + sip_address + Adreçament SIP + + + + sip_address_display_name + "Nom d'affichage + Nom a mostrar + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + El nom que es mostrarà als teus contactes durant els intercanvis. + + + + manage_account_international_prefix + Indicatif international* + Codi internacional* + + + + manage_account_delete + "Déconnecter mon compte" + + + + + manage_account_delete_message + + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + + + + + error + Erreur + Error + + + + manage_account_device_remove + "Supprimer" + + + + + manage_account_device_remove_confirm_dialog + + + + + manage_account_device_last_connection + "Dernière connexion:" + + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + + + + + settings_general_title + "Général" + + + + + settings_account_title + "Paramètres de compte" + + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + Desar + + + + AccountSettingsParametersLayout + + + settings_title + + + + + settings_account_title + + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + Error + + + + information_popup_success_title + + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + + + + + information_popup_error_title + Error + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + + + + + account_settings_transport_title + "Transport" + + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + + + + + account_settings_enable_ice_title + "Activer ICE" + + + + + account_settings_avpf_title + "AVPF" + + + + + account_settings_bundle_mode_title + "Mode bundle" + + + + + account_settings_expire_title + "Expiration (en seconde)" + + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + + + + + contact_list_empty + + + + + AdvancedSettingsLayout + + + settings_system_title + System + + + + + settings_remote_provisioning_title + Remote provisioning + + + + + settings_security_title + Security / Encryption + + + + + settings_advanced_audio_codecs_title + Audio codecs + + + + + settings_advanced_video_codecs_title + Video codecs + + + + + settings_advanced_auto_start_title + Auto start %1 + + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + + + + + information_popup_error_title + Invalid URL format + Error + + + + settings_advanced_invalid_url_message + + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + + + + + settings_advanced_hide_fps_title + + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + + + + + generic_address_picker_contacts_list_title + 'Contacts' + + + + + generic_address_picker_suggestions_list_title + "Suggestions" + + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + + + + + + info_popup_error_title + Error + Error + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + + + + + command_line_arg_order + "Send an order to the application towards a command line" + + + + + command_line_option_show_help + + + + + command_line_option_show_app_version + + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + + + + + command_line_option_minimized + + + + + command_line_option_log_to_stdout + + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + + + + + hide_action + "Cacher" "Afficher" + + + + + show_action + + + + + quit_action + "Quitter" + + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + + + + + password + + + + + cancel + "Annuler + + + + + assistant_account_login + Connexion + + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + + + + + media_encryption_dtls + DTLS + + + + + media_encryption_none + None + + + + + media_encryption_srtp + SRTP + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel Video" + + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + + + + + call_ended_by_user + "Vous avez terminé l'appel" + + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + + + + + conference_call_empty + "En attente d'autres participants…" + + + + + conference_share_link_title + "Partager le lien" + + + + + copied + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + Error + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + + + + + call + "Appel" + + + + + paused_call_or_meeting + "%1 en pause" + + + + + ongoing_call_or_meeting + "%1 en cours" + + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + + + + + call_error_user_not_found_toast + "User was not found" + + + + + call_error_user_busy_toast + "User is busy" + + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + + + + + call_error_io_error_toast + "Unavailable service or network error" + + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + + + + + call_history_empty_title + "Historique d'appel vide" + + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + + + + + call_history_call_list_title + "Appels" + + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + history_list_empty_history + "Aucun appel dans votre historique" + + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + + + + + call_start_group_call_title + "Appel de groupe" + + + + + call_action_start_group_call + "Lancer" + + + + + + + information_popup_error_title + Error + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + menu_copy_sip_address + "Copier l'adresse SIP" + + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + + + + + notification_missed_call_title + "Appel manqué" + + + + + call_outgoing + "Appel sortant" + + + + + call_audio_incoming + "Appel entrant" + + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + + + + + settings_call_enable_tones_title + Tonalités + + + + + settings_call_enable_tones_subtitle + Activer les tonalités + + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + + + + + call_stats_video_title + "Vidéo" + + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + + + + + + information_popup_error_title + Error + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + + + + + call_can_be_trusted_toast + "Appareil authentifié" + + + + + call_dir + + + + + call_ended + Appel terminé + + + + + conference_paused + Meeting paused + + + + + call_paused + Call paused + + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + + + + + call_zrtp_sas_validation_required + Vérification nécessaire + + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + + + + + call_not_encrypted + "Appel non chiffré" + + + + + + call_waiting_for_encryption_info + Waiting for encryption + + + + + call_paused_by_remote + Call paused by remote + + + + + conference_user_is_recording + "You are recording the meeting" + + + + + call_user_is_recording + "You are recording the call" + + + + + conference_remote_is_recording + "Someone is recording the meeting" + + + + + call_remote_recording + "%1 is recording the call" + + + + + call_stop_recording + "Stop recording" + + + + + add + + + + + call_transfer_current_call_title + "Transférer %1 à…" + + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + + + + + call_action_start_new_call + "Nouvel appel" + + + + + + call_action_show_dialer + "Pavé numérique" + + + + + call_action_change_layout + "Modifier la disposition" + + + + + call_action_go_to_calls_list + "Liste d'appel" + + + + + Merger tous les appels + call_action_merge_calls + + + + + + call_action_go_to_settings + "Paramètres" + + + + + conference_action_screen_sharing + "Partage de votre écran" + + + + + conference_share_link_title + Partager le lien de la réunion + + + + + copied + Copié + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + + + conference_participants_list_title + "Participants (%1)" + + + + + + group_call_participant_selected + + + + + + + + meeting_schedule_add_participants_title + + + + + call_encryption_title + Chiffrement + + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + + + + + stop_recording_accessible_name + Stop recording + + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + + + + + + call_action_end_call + "Terminer l'appel" + + + + + + call_action_resume_call + "Reprendre l'appel" + + + + + + call_action_pause_call + "Mettre l'appel en pause" + + + + + + call_action_transfer_call + "Transférer l'appel" + + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + + + + + + call_activate_video_hint + + + + + + call_activate_microphone + "Activer le micro" + + + + + + call_deactivate_microphone + "Désactiver le micro" + + + + + + call_share_screen_hint + Partager l'écran… + + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + + + + + + call_send_reaction_hint + "Envoyer une réaction" + + + + + + call_manage_participants_hint + "Gérer les participants" + + + + + + call_more_options_hint + "Plus d'options…" + + + + + call_action_change_conference_layout + "Modifier la disposition" + + + + + call_action_full_screen + "Mode Plein écran" + + + + + call_action_stop_recording + "Terminer l'enregistrement" + + + + + call_action_record + "Enregistrer l'appel" + + + + + call_activate_speaker_hint + "Activer le son" + + + + + call_deactivate_speaker_hint + "Désactiver le son" + + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + + + + + information_popup_error_title + Error + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + + + + + information_popup_synchronization_success_title + + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + + + + + settings_contacts_carddav_popup_synchronization_error_title + Error + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + + + + + sip_address_display_name + Nom d'affichage + Nom a mostrar + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + + + + + username + + + + + password + + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + + + + + ChangeLayoutForm + + + conference_layout_grid + + + + + conference_layout_active_speaker + + + + + conference_layout_audio_only + + + + + ChatAudioContent + + + + information_popup_error_title + Error + Error + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + + + + + ChatMessageContentCore + + + popup_error_title + Error + Error + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + Error + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + + + + + ics_bubble_participants + %n participant(s) + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + + + + + + + information_popup_error_title + Error + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + + + + + fetch_config_function_description + + + + + call_function_description + + + + + bye_function_description + + + + + accept_function_description + + + + + decline_function_description + + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + Error + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + + + + + Contact + + + information_popup_error_title + Erreur + Error + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + + + + + save + "Enregistrer + Desar + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + + + + + contact_editor_add_image_label + "Ajouter une image" + Afegeix una imatge + + + + contact_details_edit + "Modifier" + + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + + + + + + contact_editor_last_name + "Nom" + + + + + + contact_editor_company + "Entreprise" + + + + + + contact_editor_job_title + "Fonction" + + + + + + sip_address + Adreçament SIP + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + Partager + + + + + information_popup_error_title + Error + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + + + + + information_popup_vcard_creation_title + VCard créée + + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + + + + + contact_sharing_email_title + Partage de contact + + + + + contact_details_delete + "Supprimer" + + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + + + + + contacts_list_empty + "Aucun contact pour le moment" + + + + + contact_new_title + "Nouveau contact" + + + + + create + + + + + contact_edit_title + "Modifier contact" + + + + + save + Desar + + + + contact_dialog_delete_title + Supprimer %1 ?" + + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + + + + + contact_deleted_toast + "Contact supprimé" + + + + + contact_deleted_message + "%1 a été supprimé" + + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + + + + + popup_do_not_show_again + Ne plus afficher + + + + + cancel + + + + + dialog_call + "Appeler" + + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + + + + + dialog_ok + "Ok" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + search_bar_look_for_contact_text + Rechercher un contact + + + + + list_filter_no_result_found + Aucun résultat… + + + + + contact_list_empty + Aucun contact pour le moment + + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel vidéo" + + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + + + + + contact_details_job_title + "Poste :" + + + + + contact_details_medias_title + "Medias" + + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + + + + + contact_details_trust_title + "Confiance" + + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + + + + + contact_details_no_device_found + "Aucun appareil" + + + + + contact_device_without_name + "Appareil inconnu" + + + + + contact_make_call_check_device_trust + "Vérifier" + + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + + + + + contact_details_remove_from_favourites + "Retirer des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + contact_details_share + "Partager" + + + + + information_popup_error_title + Error + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + + + + + contact_details_share_success_title + "VCard créée" + + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + + + + + contact_details_share_email_title + "Partage de contact" + + + + + contact_details_delete + "Supprimer ce contact" + + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + + + + + settings_contacts_carddav_title + + + + + settings_contacts_carddav_subtitle + + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + add + "Ajouter" + + + + + ConversationInfos + + + one_one_infos_call + "Appel" + + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + + + + + settings_debug_clipboard + "Presse-papier" + + + + + settings_debug_email + "E-Mail" + + + + + debug_settings_trace + "Traces %1" + + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + + + + + + information_popup_error_title + Une erreur est survenue. + + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + + + + + settings_debug_delete_logs_title + "Supprimer les traces" + + + + + settings_debug_share_logs_title + "Partager les traces" + + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + + + + + settings_debug_app_version_title + "Version de l'application" + + + + + settings_debug_sdk_version_title + "Version du SDK" + + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + + + + + textfield_error_message_unknown_format + "Format non reconnu" + + + + + Dialog + + + + dialog_confirm + "Confirmer" + + + + + + dialog_cancel + "Annuler" + + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + + + + + call_stats_media_encryption + Media encryption : %1 + + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + + + + + call_zrtp_validation_button_label + "Validation chiffrement" + + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + Deshabilitat + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + Adreçament SIP + + + + + + device_id + "Téléphone" + + + + + information_popup_error_title + Error + + + + information_popup_invalid_address_message + "Adresse invalide" + + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + + + + + group_infos_participant_is_admin + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + + + + + required + "Requis" + + + + + HelpPage + + + help_title + "Aide" + + + + + + help_about_title + "À propos de %1" + + + + + help_about_privacy_policy_title + "Règles de confidentialité" + + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + + + + + help_about_version_title + "Version" + + + + + help_about_gpl_licence_title + "Licences GPLv3" + + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + + + + + help_troubleshooting_title + "Dépannage" + + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + + + + + settings_contacts_ldap_subtitle + + + + + information_popup_success_title + + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + + + + + information_popup_error_title + Error + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + + + + + settings_contacts_ldap_password_title + "Mot de passe" + + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + + + + + settings_contacts_ldap_search_filter_title + "Filtre" + + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + + + + + settings_contacts_ldap_debug_title + "Débogage" + + + + + LoadingPopup + + + cancel + + + + + LoginForm + + + + username + Nom d'utilisateur : username + + + + + + password + Mot de passe + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + + + + + assistant_forgotten_password + "Mot de passe oublié ?" + + + + + LoginLayout + + + + help_about_title + À propos de %1 + + + + + help_about_privacy_policy_title + "Politique de confidentialité" + + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + + + + + help_about_version_title + "Version" + + + + + help_about_licence_title + "Licence" + + + + + help_about_copyright_title + "Copyright + + + + + close + "Fermer" + + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + + + + + assistant_no_account_yet + "Pas encore de compte ?" + + + + + assistant_account_register + "S'inscrire" + + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + + + + + assistant_login_remote_provisioning + "Configuration distante" + + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + + + + + cancel + + + + + validate + "Valider" + + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + + + + + default_account_connection_state_error_toast + + + + + MagicSearchList + + + device_id + + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + + + + + do_not_disturb_accessible_name + "Do not disturb" + + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + + + + + information_popup_error_title + Error + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + + + + + settings_title + + + + + recordings_title + "Enregistrements" + + + + + help_title + "Aide" + + + + + help_quit_title + "Quitter l'application" + + + + + quit_app_question + "Quitter %1 ?" + + + + + drawer_menu_add_account + "Ajouter un compte" + + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + + + + + interoperable + interopérable + + + + + call_transfer_successful_toast_title + "Appel transféré" + + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + + + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + + + + + assistant_register_error_title + "Erreur lors de la création" + + + + + assistant_register_success_title + "Compte créé" + + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + + + + + assistant_register_error_code + "Erreur dans le code de validation" + + + + + information_popup_error_title + Error + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + + + + + meeting_schedule_broadcast_label + "Webinar" + + + + + meeting_schedule_subject_hint + "Ajouter un titre" + + + + + meeting_schedule_description_hint + "Ajouter une description" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + MeetingPage + + + meetings_add + "Créer une réunion" + + + + + meetings_list_empty + "Aucune réunion" + + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + + + + + meeting_schedule_delete_action + "Supprimer" + + + + + back_action + Retour + + + + + meetings_list_title + Réunions + + + + + meetings_search_hint + "Rechercher une réunion" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + meetings_empty_list + "Aucune réunion" + + + + + + meeting_schedule_title + "Nouvelle réunion" + + + + + create + + + + + + + + + + information_popup_error_title + Error + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + + + + + save + Desar + + + + + saved + "Enregistré" + + + + + meeting_info_updated_toast + "Réunion mise à jour" + + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + + + + + meeting_schedule_timezone_title + "Fuseau horaire" + + + + + meeting_info_organizer_label + "Organisateur" + + + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + + + + + + multimedia_settings_camera_title + "Caméra" + + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + + + + + call_start_group_call_title + Appel de groupe + + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + + + + + dialog_accept + "Accepter" + + + + + dialog_deny + "Refuser + + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + + + + + oidc_authentication_granted_message + Authentication granted + + + + + oidc_authentication_not_authenticated_message + Not authenticated + + + + + oidc_authentication_refresh_message + Refreshing token + + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + + + + + oidc_authentication_network_error + Network error + + + + + oidc_authentication_server_error + Server error + + + + + oidc_authentication_token_not_found_error + OAuth token not found + + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + + + + + oidc_authentication_refresh_token_message + Refreshing access token + + + + + oidc_authentication_request_authorization_message + Requesting authorization + + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + + + + + meeting_add_participants_title + "Ajouter des participants" + + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + + + + + contact_presence_button_delete_custom_status + + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + Desar + + + + QObject + + + media_encryption_dtls + + + + + media_encryption_none + + + + + media_encryption_srtp + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + + + + + outgoing + "Sortant" + + + + + conference_layout_active_speaker + "Participant actif" + + + + + conference_layout_grid + "Mosaïque" + + + + + conference_layout_audio_only + "Audio uniquement" + + + + + RegisterCheckingPage + + + email + "email" + + + + + phone_number + "numéro de téléphone" + + + + + confirm_register_title + "Inscription | Confirmer votre %1" + + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + + + + + assistant_already_have_an_account + + + + + assistant_account_login + + + + + assistant_account_register_with_phone_number + + + + + assistant_account_register_with_email + + + + + + username + + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + + + + + + + phone_number + "Numéro de téléphone" + + + + + + email + + + + + + password + + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + + + + + assistant_account_create + "Créer" + + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + + + + + assistant_no_account_yet + Pas encore de compte ? + + + + + assistant_account_register + S'inscrire + + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + + + + + + username + "Nom d'utilisateur" + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + + + + + + sip_address_domain + "Domaine" + + + + + + sip_address_display_name + Nom d'affichage + Nom a mostrar + + + + + transport + "Transport" + + + + + + assistant_account_login + + + + + assistant_account_login_missing_username + + + + + assistant_account_login_missing_password + + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + + + + + login_advanced_parameters_label + Advanced parameters + + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + + + + + screencast_settings_all_screen_label + "Ecran entier" + + + + + screencast_settings_one_window_label + "Fenêtre" + + + + + screencast_settings_screen + "Ecran %1" + + + + + stop + "Stop + + + + + share + "Partager" + + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + + + + + dialog_continue + "Continuer" + + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + + + + + settings_calls_title + "Appels" + + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + + + + + settings_contacts_title + "Contacts" + + + + + settings_meetings_title + "Réunions" + + + + + settings_network_title + "Affichage" "Security" "Réseau" + + + + + settings_advanced_title + "Paramètres avancés" + + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + Desar + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + + + + + conference_participant_paused_text + "En pause" + + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + + + + + group_call_error_no_account + + + + + group_call_error_participants_invite + + + + + group_call_error_creation + + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + nMinute + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + nDay + + + + + + + + nWeek + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + + + + + contact_presence_status_do_not_disturb + + + + + contact_presence_status_offline + + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + Error + + + + information_popup_group_call_not_created_message + + + + + number_of_years + %n an(s) + + + + + + + + number_of_month + "%n mois" + + + + + + + + number_of_weeks + %n semaine(s) + + + + + + + + number_of_days + %n jour(s) + + + + + + + + today + "Aujourd'hui" + + + + + yesterday + "Hier + + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + Error + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + + + + + meeting_waiting_room_join + "Rejoindre" + + + + + + cancel + Cancel + + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + + + + + welcome_page_subtitle + "sur %1" + + + + + welcome_carousel_skip + "Passer" + + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + + + + + welcome_page_2_title + "Sécurisé" + + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + + + + + welcome_page_3_title + "Open Source" + + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + + + + + next + "Suivant" + + + + + start + "Commencer" + + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + + + + + call_zrtp_sas_validation_skip + "Passer" + + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + + + + + call_action_hang_up + "Raccrocher" + + + + + country + + + Afghanistan + + + + + Albania + + + + + Algeria + + + + + AmericanSamoa + + + + + Andorra + + + + + Angola + + + + + Anguilla + + + + + AntiguaAndBarbuda + + + + + Argentina + + + + + Armenia + + + + + Aruba + + + + + Australia + + + + + Austria + + + + + Azerbaijan + + + + + Bahamas + + + + + Bahrain + + + + + Bangladesh + + + + + Barbados + + + + + Belarus + + + + + Belgium + + + + + Belize + + + + + Benin + + + + + Bermuda + + + + + Bhutan + + + + + Bolivia + + + + + BosniaAndHerzegowina + + + + + Botswana + + + + + Brazil + + + + + Brunei + + + + + Bulgaria + + + + + BurkinaFaso + + + + + Burundi + + + + + Cambodia + + + + + Cameroon + + + + + Canada + + + + + CapeVerde + + + + + CaymanIslands + + + + + CentralAfricanRepublic + + + + + Chad + + + + + Chile + + + + + China + + + + + Colombia + + + + + Comoros + + + + + PeoplesRepublicOfCongo + + + + + CookIslands + + + + + CostaRica + + + + + IvoryCoast + + + + + Croatia + + + + + Cuba + + + + + Cyprus + + + + + CzechRepublic + + + + + Denmark + + + + + Djibouti + + + + + Dominica + + + + + DominicanRepublic + + + + + Ecuador + + + + + Egypt + + + + + ElSalvador + + + + + EquatorialGuinea + + + + + Eritrea + + + + + Estonia + + + + + Ethiopia + + + + + FalklandIslands + + + + + FaroeIslands + + + + + Fiji + + + + + Finland + + + + + France + + + + + FrenchGuiana + + + + + FrenchPolynesia + + + + + Gabon + + + + + Gambia + + + + + Georgia + + + + + Germany + + + + + Ghana + + + + + Gibraltar + + + + + Greece + + + + + Greenland + + + + + Grenada + + + + + Guadeloupe + + + + + Guam + + + + + Guatemala + + + + + Guinea + + + + + GuineaBissau + + + + + Guyana + + + + + Haiti + + + + + Honduras + + + + + DemocraticRepublicOfCongo + + + + + HongKong + + + + + Hungary + + + + + Iceland + + + + + India + + + + + Indonesia + + + + + Iran + + + + + Iraq + + + + + Ireland + + + + + Israel + + + + + Italy + + + + + Jamaica + + + + + Japan + + + + + Jordan + + + + + Kazakhstan + + + + + Kenya + + + + + Kiribati + + + + + DemocraticRepublicOfKorea + + + + + RepublicOfKorea + + + + + Kuwait + + + + + Kyrgyzstan + + + + + Laos + + + + + Latvia + + + + + Lebanon + + + + + Lesotho + + + + + Liberia + + + + + Libya + + + + + Liechtenstein + + + + + Lithuania + + + + + Luxembourg + + + + + Macau + + + + + Macedonia + + + + + Madagascar + + + + + Malawi + + + + + Malaysia + + + + + Maldives + + + + + Mali + + + + + Malta + + + + + MarshallIslands + + + + + Martinique + + + + + Mauritania + + + + + Mauritius + + + + + Mayotte + + + + + Mexico + + + + + Micronesia + + + + + Moldova + + + + + Monaco + + + + + Mongolia + + + + + Montenegro + + + + + Montserrat + + + + + Morocco + + + + + Mozambique + + + + + Myanmar + + + + + Namibia + + + + + NauruCountry + + + + + Nepal + + + + + Netherlands + + + + + NewCaledonia + + + + + NewZealand + + + + + Nicaragua + + + + + Niger + + + + + Nigeria + + + + + Niue + + + + + NorfolkIsland + + + + + NorthernMarianaIslands + + + + + Norway + + + + + Oman + + + + + Pakistan + + + + + Palau + + + + + PalestinianTerritories + + + + + Panama + + + + + PapuaNewGuinea + + + + + Paraguay + + + + + Peru + + + + + Philippines + + + + + Poland + + + + + Portugal + + + + + PuertoRico + + + + + Qatar + + + + + Reunion + + + + + Romania + + + + + RussianFederation + + + + + Rwanda + + + + + SaintHelena + + + + + SaintKittsAndNevis + + + + + SaintLucia + + + + + SaintPierreAndMiquelon + + + + + SaintVincentAndTheGrenadines + + + + + Samoa + + + + + SanMarino + + + + + SaoTomeAndPrincipe + + + + + SaudiArabia + + + + + Senegal + + + + + Serbia + + + + + Seychelles + + + + + SierraLeone + + + + + Singapore + + + + + Slovakia + + + + + Slovenia + + + + + SolomonIslands + + + + + Somalia + + + + + SouthAfrica + + + + + Spain + + + + + SriLanka + + + + + Sudan + + + + + Suriname + + + + + Swaziland + + + + + Sweden + + + + + Switzerland + + + + + Syria + + + + + Taiwan + + + + + Tajikistan + + + + + Tanzania + + + + + Thailand + + + + + Togo + + + + + Tokelau + + + + + Tonga + + + + + TrinidadAndTobago + + + + + Tunisia + + + + + Turkey + + + + + Turkmenistan + + + + + TurksAndCaicosIslands + + + + + Tuvalu + + + + + Uganda + + + + + Ukraine + + + + + UnitedArabEmirates + + + + + UnitedKingdom + + + + + UnitedStates + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Vietnam + + + + + WallisAndFutunaIslands + + + + + Yemen + + + + + Zambia + + + + + Zimbabwe + + + + + utils + + + formatYears + '%1 year' + + + + + + + + formatMonths + '%1 month' + + + + + + + + formatWeeks + '%1 week' + + + + + + + + formatDays + '%1 day' + + + + + + + + formatHours + '%1 hour' + + + + + + + + formatMinutes + '%1 minute' + + + + + + + + formatSeconds + '%1 second' + + + + + + + + codec_install + "Installation de codec" + + + + + download_codec + "Télécharger le codec %1 (%2) ?" + + + + + information_popup_success_title + "Succès" + + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + + + + + + + information_popup_error_title + Error + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + + + + + okButton + + + + diff --git a/Linphone/data/languages/cs.ts b/Linphone/data/languages/cs.ts new file mode 100644 index 000000000..95be3c867 --- /dev/null +++ b/Linphone/data/languages/cs.ts @@ -0,0 +1,7458 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + Uložit + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + Vybrat SIP číslo nebo adresu + + + + fps_counter + %1 FPS + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + Připojeno + + + + drawer_menu_account_connection_status_refreshing + Obnovování… + + + + drawer_menu_account_connection_status_progress + Připojování… + + + + drawer_menu_account_connection_status_failed + Chyba + + + + drawer_menu_account_connection_status_cleared + Zakázáno + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + Jste online a dostupní. + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + Chyba připojení, zkontrolujte nastavení. + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + Účet není aktivní, nemůžete přijímat zprávy a hovory. + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + Chyba při načítání zařízení + + + + AccountListView + + + add_an_account + Add an account + Přidat účet + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + K účtu jste již připojeni + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + Nelze použít adresu proxy serveru. Zkontrolujte doménu. + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + Nelze nastavit adresu: `%1`. + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + Nelze uložit nastavení účtu. + + + + assistant_account_login_forbidden_error + "Username and password do not match" + Uživatelské jméno a heslo se neshodují + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + Chyba při připojování + + + + assistant_account_add_error + "Unable to add account." + Nelze přidat účet. + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + Detaily + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + Upravit informace o účtu. + + + + manage_account_devices_title + "Vos appareils" + Vaše zařízení + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + Seznam zařízení připojených k vašemu účtu. Zařízení, která již nechcete používat, můžete odebrat. + + + + manage_account_add_picture + "Ajouter une image" + Přidat obrázek + + + + manage_account_edit_picture + "Modifier l'image" + Upravit obrázek + + + + manage_account_remove_picture + "Supprimer l'image" + Smazat obrázek + + + + sip_address + SIP adresa + + + + sip_address_display_name + "Nom d'affichage + Zobrazené jméno + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + Jméno zobrazené kontaktům při výměně. + + + + manage_account_international_prefix + Indicatif international* + Mezinárodní předvolba* + + + + manage_account_delete + "Déconnecter mon compte" + Odpojit účet + + + + manage_account_delete_message + Váš účet bude z tohoto klienta Linphone odstraněn, ale v ostatních klientech zůstanete připojeni + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + Odhlásit z účtu? + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + Pokud chcete trvale smazat vás účet, jděte na: https://sip.linphone.org + + + + error + Erreur + Chyba + + + + manage_account_device_remove + "Supprimer" + Smazat + + + + manage_account_device_remove_confirm_dialog + Smazat %1? + + + + manage_account_device_last_connection + "Dernière connexion:" + Poslední přihlášení: + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + Můj účet + + + + settings_general_title + "Général" + Hlavní + + + + settings_account_title + "Paramètres de compte" + Nastavení účtu + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + Neuložené změny + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + Máte neuložené změny. Pokud opustíte tuto stránku, vaše změny budou ztraceny. Chcete své změny před pokračováním uložit? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + Neukládat + + + + contact_editor_dialog_abort_confirmation_save + Uložit + + + + AccountSettingsParametersLayout + + + settings_title + Nastavení + + + + settings_account_title + Nastavení účtu + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + Chyba + + + + information_popup_success_title + Hotovo + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + Změny uloženy + + + + information_popup_error_title + Chyba + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + URI adresa serveru hlasových zpráv + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + URI hlasových zpráv + + + + account_settings_transport_title + "Transport" + Transport + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + Adresa STUN serveru + + + + account_settings_enable_ice_title + "Activer ICE" + Zapnout ICE + + + + account_settings_avpf_title + "AVPF" + AVPF + + + + account_settings_bundle_mode_title + "Mode bundle" + Bundle režim + + + + account_settings_expire_title + "Expiration (en seconde)" + Expirace (vteřiny) + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + URI adresa serveru konferenčních hovorů + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + URI adresa serveru videokonferenčních hovorů + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + URL adresa Lime serveru + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + Najít kontakty + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + Nic nenalezeno… + + + + contact_list_empty + V tuto chvíli žádný kontakt + + + + AdvancedSettingsLayout + + + settings_system_title + System + Systém + + + + settings_remote_provisioning_title + Remote provisioning + Vzdálené nastavení + + + + settings_security_title + Security / Encryption + Zabezpečení / šifrování + + + + settings_advanced_audio_codecs_title + Audio codecs + Audio kodeky + + + + settings_advanced_video_codecs_title + Video codecs + Video kodeky + + + + settings_advanced_auto_start_title + Auto start %1 + Autostart %1 + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + URL adresa vzdáleného nastavení + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + Stáhnout a použít + + + + information_popup_error_title + Invalid URL format + Chyba + + + + settings_advanced_invalid_url_message + Neplatný formát URL adresy + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + Šifrování médií + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + Povinné šifrování médií + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + Vytvoření "end to end" šifrovaných schůzek a skupinových hovorů + + + + settings_advanced_hide_fps_title + Skrýt FPS + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + Oblíbené + + + + generic_address_picker_contacts_list_title + 'Contacts' + Kontakty + + + + generic_address_picker_suggestions_list_title + "Suggestions" + Návrhy + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + Opravdu chcete stáhnout a použít vzdálenou konfiguraci z této adresy? + + + + + info_popup_error_title + Error + Chyba + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + Vzdálené nastavení selhalo : %1 + + + + configuration_error_detail + not reachable + nedostupné + + + + application_description + "A free and open source SIP video-phone." + Bezplatný SIP videotelefon s otevřeným zdrojovým kódem. + + + + command_line_arg_order + "Send an order to the application towards a command line" + Odeslání příkazu do aplikace pomocí příkazového řádku + + + + command_line_option_show_help + Zobrazit tuto nápovědu + + + + command_line_option_show_app_version + Zobrazit verzi aplikace + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + Zadejte konfigurační soubor, který má být načten. Bude sloučen s aktuálním nastavením. + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + URL adresa, umístění nebo soubor + + + + command_line_option_minimized + Minimalizovat + + + + command_line_option_log_to_stdout + Zaznamenat do stdout některé ladicí informace za běhu + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + Zaznamenat pouze protokoly z aplikace + + + + hide_action + "Cacher" "Afficher" + Skrýt + + + + show_action + Zobrazit + + + + quit_action + "Quitter" + Ukončit + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + Autentizace je vyžadována + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + Přihlášení k účtu %1 se nezdařilo. Můžete znovu zadat heslo nebo zkontrolovat nastavení účtu. + + + + password + Heslo + + + + cancel + "Annuler + Zrušit + + + + assistant_account_login + Connexion + Připojení + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + Zadejte prosím heslo + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + Záznam ukončen + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + Záznam byl uložen do souboru: %1 + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + Kodek: %1 / %2 kHz + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + Datový tok : %1 %2 kbits/s %3 %4 kbits/s + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + Ztrátovost: %1% %2% + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + Vzrovnávací paměť : %1 ms + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + Rozlišení videa: %1 %2 %3 %4 + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + FPS : %1 %2 %3 %4 + + + + media_encryption_dtls + DTLS + DTLS + + + + media_encryption_none + None + Žádné + + + + media_encryption_srtp + SRTP + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + Post-kvantové ZRTP + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + Připojit ke schůzce + + + + contact_call_action + "Appel" + Volat + + + + contact_message_action + "Message" + Zpráva + + + + contact_video_call_action + "Appel Video" + Videohovor + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + Opustili jste schůzku + + + + call_ended_by_user + "Vous avez terminé l'appel" + Ukončil(a) jste hovor + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + Volající ukončil hovor + + + + conference_call_empty + "En attente d'autres participants…" + Čekání na další účastníky… + + + + conference_share_link_title + "Partager le lien" + Sdílet odkaz + + + + copied + Zkopírováno + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + Odkaz na konferenci byl zkopírován do schránky + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + Chyba + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + Schůzka + + + + call + "Appel" + Volat + + + + paused_call_or_meeting + "%1 en pause" + %1 pozastaveno + + + + ongoing_call_or_meeting + "%1 en cours" + Probíhá %1 + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + Uživatel odmítl hovor + + + + call_error_user_not_found_toast + "User was not found" + Uživatel nebyl nalezen + + + + call_error_user_busy_toast + "User is busy" + Uživatel je zaneprázdněný + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + Uživatel nemůže přijmout váš hovor + + + + call_error_io_error_toast + "Unavailable service or network error" + Nedostupná služba nebo chyba sítě + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + Prodleva serveru + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + Nový hovor + + + + call_history_empty_title + "Historique d'appel vide" + Prázdná historie volání + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + Smazat historii volání? + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + Historie volání bude trvale vymazána. + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + Smazat historii volání? + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + Historie volání s tímto uživatelem bude trvale vymazána. + + + + call_history_call_list_title + "Appels" + Hovory + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + Smazat historii + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + Najít hovor + + + + list_filter_no_result_found + "Aucun résultat…" + Nic nenalezeno… + + + + history_list_empty_history + "Aucun appel dans votre historique" + Žádný hovor v historii + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + Nový hovor + + + + call_start_group_call_title + "Appel de groupe" + Skupinový hovor + + + + call_action_start_group_call + "Lancer" + Start + + + + + + information_popup_error_title + Chyba + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + Pro volání musí být uveden název + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Nejste připojeni + + + + menu_see_existing_contact + "Show contact" + Zobrazit kontakt + + + + menu_add_address_to_contacts + "Add to contacts" + Přidat do kontaktů + + + + menu_copy_sip_address + "Copier l'adresse SIP" + Zkopirovat SIP adresu + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + SIP adresa zkopírována + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + Adresa byla zkopírována do schránky + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + Chyba při kopírování adresy + + + + notification_missed_call_title + "Appel manqué" + Zmeškaný hovor + + + + call_outgoing + "Appel sortant" + Odchozí hovor + + + + call_audio_incoming + "Appel entrant" + Příchozí hovor + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + Zařízení + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + Můžete změnit výstupní zvukové zařízení, mikrofon a kameru. + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + Potlačení ozvěny + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + Potlačuje ozvěnu, aby ji neslyšeli ostatní + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + Zapnutí automatického nahrávání hovorů + + + + settings_call_enable_tones_title + Tonalités + Tóny + + + + settings_call_enable_tones_subtitle + Activer les tonalités + Zapnout tóny + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + Zapnout video + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + Audio + + + + call_stats_video_title + "Vidéo" + Video + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + Probíhá přenos, prosím čekejte + + + + + information_popup_error_title + Chyba + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + Přenos selhal + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + Schůzka nemohla začít kvůli chybě URI. + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + Ukončit všechny aktuální hovory? + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + Okno se brzy zavře. Tím se ukončí všechny aktuální hovory. + + + + call_can_be_trusted_toast + "Appareil authentifié" + Důvěryhodné zařízení + + + + call_dir + Hovor s %1 + + + + call_ended + Appel terminé + Hovor ukončen + + + + conference_paused + Meeting paused + Schůzka pozastavena + + + + call_paused + Call paused + Hovor pozastaven + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + Šifrovaný hovor (SRTP) + + + + call_zrtp_sas_validation_required + Vérification nécessaire + Vyžadováno ověření + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + "End to end" šifrovaný hovor (ZRTP) + + + + call_not_encrypted + "Appel non chiffré" + Nešifrovaný hovor + + + + + call_waiting_for_encryption_info + Waiting for encryption + Čekání na šifrování + + + + call_paused_by_remote + Call paused by remote + Hovor vzdáleně pozastaven + + + + conference_user_is_recording + "You are recording the meeting" + Nahráváte schůzku + + + + call_user_is_recording + "You are recording the call" + Nahráváte hovor + + + + conference_remote_is_recording + "Someone is recording the meeting" + Někdo nahrává schůzku + + + + call_remote_recording + "%1 is recording the call" + %1 nahrává hovor + + + + call_stop_recording + "Stop recording" + Zastavit nahrávání + + + + add + Přidat + + + + call_transfer_current_call_title + "Transférer %1 à…" + Přenos %1 do… + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + Potvrdit přenos + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + Přenesete %1 do %2. + + + + call_action_start_new_call + "Nouvel appel" + Nový hovor + + + + + call_action_show_dialer + "Pavé numérique" + Číselník + + + + call_action_change_layout + "Modifier la disposition" + Změnit vzhled + + + + call_action_go_to_calls_list + "Liste d'appel" + Seznam hovorů + + + + Merger tous les appels + call_action_merge_calls + Sloučení všech hovorů + + + + + call_action_go_to_settings + "Paramètres" + Nastavení + + + + conference_action_screen_sharing + "Partage de votre écran" + Sdílet obrazovku + + + + conference_share_link_title + Partager le lien de la réunion + Sdílet odkaz na schůzku + + + + copied + Copié + Zkopírováno + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + Odkaz na schůzku byl zkopírován do schránky + + + + + + conference_participants_list_title + "Participants (%1)" + Účastníci (%1) + + + + + group_call_participant_selected + + + + + + + + + meeting_schedule_add_participants_title + Přidat účastníky + + + + call_encryption_title + Chiffrement + Šifrování + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + Zastavit + + + + stop_recording_accessible_name + Stop recording + Zastavit nahrávání + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + Statistiky + + + + + call_action_end_call + "Terminer l'appel" + Ukončit hovor + + + + + call_action_resume_call + "Reprendre l'appel" + Obnovit hovor + + + + + call_action_pause_call + "Mettre l'appel en pause" + Postavit hovor + + + + + call_action_transfer_call + "Transférer l'appel" + Přepojení hovoru + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + Spustit nový hovor + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + Zobrazení seznamu hovorů + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + Vypnout video + + + + + call_activate_video_hint + Zapnout video + + + + + call_activate_microphone + "Activer le micro" + Zapnout mikrofon + + + + + call_deactivate_microphone + "Désactiver le micro" + Ztlumit mikrofon + + + + + call_share_screen_hint + Partager l'écran… + Sdílet obrazovku… + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + Zvedněte ruku + + + + + call_send_reaction_hint + "Envoyer une réaction" + Odeslat reakci + + + + + call_manage_participants_hint + "Gérer les participants" + Spravovat účastníky + + + + + call_more_options_hint + "Plus d'options…" + Více možností… + + + + call_action_change_conference_layout + "Modifier la disposition" + Změnit vzhled + + + + call_action_full_screen + "Mode Plein écran" + Režim celé obrazovky + + + + call_action_stop_recording + "Terminer l'enregistrement" + Zastavit záznam + + + + call_action_record + "Enregistrer l'appel" + Nahrát hovor + + + + call_activate_speaker_hint + "Activer le son" + Zapnout reproduktor + + + + call_deactivate_speaker_hint + "Désactiver le son" + Ztlumit reproduktor + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + CardDAV adresář + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + Přidáním adresáře CardDAV můžete synchronizovat kontakty Linphone s adresářem třetí strany. + + + + information_popup_error_title + Chyba + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + Zkontrolujte, zda byly zadány všechny informace. + + + + information_popup_synchronization_success_title + Hotovo + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + Adresář CardDAV je synchronizován. + + + + settings_contacts_carddav_popup_synchronization_error_title + Chyba + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + Chyba synchronizace! + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + Odstranit adresář CardDAV? + + + + sip_address_display_name + Nom d'affichage + Zobrazené jméno + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + URL adresa serveru + + + + username + Uživatelské jméno + + + + password + Heslo + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + Doména ověřování + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + Nově vytvořené kontakty ukládejte zde + + + + ChangeLayoutForm + + + conference_layout_grid + Mřížka + + + + conference_layout_active_speaker + Aktivní mluvčí + + + + conference_layout_audio_only + Pouze zvuk + + + + ChatAudioContent + + + + information_popup_error_title + Error + Chyba + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + Smazat + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + Zkopírováno + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + Smazat + + + + ChatMessageContentCore + + + popup_error_title + Error + Chyba + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + Chyba + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + Připojit se + + + + ics_bubble_participants + %n participant(s) + + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + Konverzace + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + Žádný výsledek… + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + Vytvořit + + + + + + information_popup_error_title + Chyba + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Nejste připojeni + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + Zobrazit + + + + fetch_config_function_description + Stáhnout nastavení + + + + call_function_description + Volat + + + + bye_function_description + Zavěsit + + + + accept_function_description + Přijmout + + + + decline_function_description + Odmítnout + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + Chyba + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + Váš účet je odpojen + + + + Contact + + + information_popup_error_title + Erreur + Chyba + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + URI hlasové schránky není definována. + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + Upravit kontakt + + + + save + "Enregistrer + Uložit + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + Změny budou zahozeny. Chcete pokračovat? + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + Zadejte prosím SIP adresu nebo telefonní číslo + + + + contact_editor_add_image_label + "Ajouter une image" + Přidat obrázek + + + + contact_details_edit + "Modifier" + Upravit + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + Smazat + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + Jméno + + + + + contact_editor_last_name + "Nom" + Příjmení + + + + + contact_editor_company + "Entreprise" + Společnost + + + + + contact_editor_job_title + "Fonction" + Zaměstnání + + + + + sip_address + SIP adresa + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + Telefon + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + Odstranit z oblíbených + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Přidat do oblíbených + + + + Partager + Sdílet + + + + information_popup_error_title + Chyba + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + Vytvoření VCard se nezdařilo + + + + information_popup_vcard_creation_title + VCard créée + VCard vytvořeno + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + VCard byla uložena v %1 + + + + contact_sharing_email_title + Partage de contact + Sdílet kontakt + + + + contact_details_delete + "Supprimer" + Smazat + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + Přidat kontakt + + + + contacts_list_empty + "Aucun contact pour le moment" + Žádný kontakt v tuto chvíli + + + + contact_new_title + "Nouveau contact" + Nový kontakt + + + + create + Vytvořit + + + + contact_edit_title + "Modifier contact" + Upravit kontakt + + + + save + Uložit + + + + contact_dialog_delete_title + Supprimer %1 ?" + Smazat %1? + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + Tento kontakt bude trvale odstaněn. + + + + contact_deleted_toast + "Contact supprimé" + Kontakt odstraněn + + + + contact_deleted_message + "%1 a été supprimé" + %1 byl odstraněn + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + Zvýšit úroveň důvěry + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + Pro zvýšení úrovně důvěryhodnosti je třeba zavolat na zařízení kontaktu a ověřit kód.<br><br>Chystáte se zavolat na "%1", chcete pokračovat? + + + + popup_do_not_show_again + Ne plus afficher + Již nezobrazovat + + + + cancel + Zrušit + + + + dialog_call + "Appeler" + Volat + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + Úroveň důvěry + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + Ověřte zařízení svých kontaktů, abyste se ujistili, že vaše komunikace bude bezpečná a neohrožená. Až budou všechna zařízení ověřena, dosáhnete maximální úrovně důvěryhodnosti. + + + + dialog_ok + "Ok" + Ok + + + + bottom_navigation_contacts_label + "Contacts" + Kontakty + + + + search_bar_look_for_contact_text + Rechercher un contact + Najít kontakt + + + + list_filter_no_result_found + Aucun résultat… + Žádný výsledek… + + + + contact_list_empty + Aucun contact pour le moment + Žádný kontakt v tuto chvíli + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + Upravit + + + + contact_call_action + "Appel" + Volat + + + + contact_message_action + "Message" + Zpráva + + + + contact_video_call_action + "Appel vidéo" + Videohovor + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + Detaily kontaktu + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + Společnost: + + + + contact_details_job_title + "Poste :" + Zaměstnání: + + + + contact_details_medias_title + "Medias" + Média + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + Zobrazit sdílená média + + + + contact_details_trust_title + "Confiance" + Důvěra + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + Úroveň důvěry - ověřená zařízení + + + + contact_details_no_device_found + "Aucun appareil" + Žádné zařízení + + + + contact_device_without_name + "Appareil inconnu" + Neznámé zařízení + + + + contact_make_call_check_device_trust + "Vérifier" + Ověřit + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + Ostatní akce + + + + contact_details_remove_from_favourites + "Retirer des favoris" + Odstranit z oblíbených + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Přidat do oblíbených + + + + contact_details_share + "Partager" + Sdílet + + + + information_popup_error_title + Chyba + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + Vytvoření VCard se nezdařilo + + + + contact_details_share_success_title + "VCard créée" + VCard vytvořeno + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + VCard byla uložena v %1 + + + + contact_details_share_email_title + "Partage de contact" + Sdílet kontakt + + + + contact_details_delete + "Supprimer ce contact" + Smazat kontakt + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + LDAP servery + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + Přidejte servery LDAP, abyste mohli vyhledávat ve vyhledávacím panelu. + + + + settings_contacts_carddav_title + CardDAV adresář + + + + settings_contacts_carddav_subtitle + Přidáním adresáře CardDAV můžete synchronizovat kontakty Linphone s adresářem třetí strany. + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + Přidat LDAP server + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + Upravit LDAP server + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + Přidat CardDAV adresář + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + Upravit CardDAV adresář + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + Hotovo + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + Změny byly uloženy + + + + add + "Ajouter" + Přidat + + + + ConversationInfos + + + one_one_infos_call + "Appel" + Volat + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + Účastníci (%1) + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + Ostatní akce + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + Smazat historii + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + Zobrazit kontakt + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + Smazat historii + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + Najít kontakt + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + Ladicí záznamy budou odstraněny. Chcete pokračovat? + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + Byly nahrány ladící záznamy. Jak chcete odkaz sdílet? + + + + settings_debug_clipboard + "Presse-papier" + Schránka + + + + settings_debug_email + "E-Mail" + E-mail + + + + debug_settings_trace + "Traces %1" + %1 záznamy + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + Sdílení e-mailem se nezdařilo. Pošlete prosím odkaz %1 přímo na adresu %2. + + + + + information_popup_error_title + Une erreur est survenue. + Vyskytla se chyba. + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + Zapnout ladící záznamy + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + Zapnout úplné záznamy + + + + settings_debug_delete_logs_title + "Supprimer les traces" + Smazat ladící záznamy + + + + settings_debug_share_logs_title + "Partager les traces" + Sdílet ladící záznamy + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + Nahrávání záznamů… + + + + settings_debug_app_version_title + "Version de l'application" + Verze aplikace + + + + settings_debug_sdk_version_title + "Version du SDK" + Verze SDK + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + Nahrávání záznamů se nezdařilo. Soubory záznamů můžete sdílet přímo z následující složky: %1 + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + nemůže být prázdné + + + + textfield_error_message_unknown_format + "Format non reconnu" + Neznámý formát + + + + Dialog + + + + dialog_confirm + "Confirmer" + Potvrdit + + + + + dialog_cancel + "Annuler" + Zrušit + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + Šifrování: + + + + call_stats_media_encryption + Media encryption : %1 + Šifrování médií: %1%2 + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + Šifrovací algoritmus: %1 + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + Algoritmus výměny klíčů: %1 + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + Algoritmus hashe: %1 + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + Autentizační algoritmus: %1 + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + SAS algoritmus : %1 + + + + call_zrtp_validation_button_label + "Validation chiffrement" + Ověření šifrování + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + Zakázáno + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + SIP adresa + + + + + + device_id + "Téléphone" + Telefon + + + + information_popup_error_title + Chyba + + + + information_popup_invalid_address_message + "Adresse invalide" + Neplatná adresa + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + Spravovat účastníky + + + + group_infos_participant_is_admin + Administrátor + + + + menu_see_existing_contact + "Show contact" + Zobrazit kontakt + + + + menu_add_address_to_contacts + "Add to contacts" + Přidat do kontaktů + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + Název skupiny + + + + required + "Requis" + Vyžadováno + + + + HelpPage + + + help_title + "Aide" + Nápověda + + + + + help_about_title + "À propos de %1" + Informace o %1 + + + + help_about_privacy_policy_title + "Règles de confidentialité" + Zásady ochrany soukromí + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + Jaké informace %1 shromažďuje a používá + + + + help_about_version_title + "Version" + Verze + + + + help_about_gpl_licence_title + "Licences GPLv3" + Licence GPLv3 + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + Přispějte k překladu %1 + + + + help_troubleshooting_title + "Dépannage" + Řešení potíží + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + LDAP servery + + + + settings_contacts_ldap_subtitle + Přidejte servery LDAP, abyste mohli vyhledávat ve vyhledávacím panelu. + + + + information_popup_success_title + Hotovo + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + LDAP server byl uložen + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + Došlo k chybě, konfigurace LDAP nebyla uložena! + + + + information_popup_error_title + Chyba + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + Smazat LDAP server ? + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + URL adresa serveru (nelze nechat prázdné) + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + Bind DN (identifikátor pro připojení) + + + + settings_contacts_ldap_password_title + "Mot de passe" + Heslo + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + Použít TLS + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + Základ vyhledávání (nelze nechat prázdné) + + + + settings_contacts_ldap_search_filter_title + "Filtre" + Filtr + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + Maximální počet výsledků + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + Zpoždění mezi dvěma dotazy (v milisekundách) + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + Časový limit (v sekundách) + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + Minimální počet znaků dotazu + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + Atributy názvu + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + Atributy SIP + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + Doména SIP + + + + settings_contacts_ldap_debug_title + "Débogage" + Ladění + + + + LoadingPopup + + + cancel + Zrušit + + + + LoginForm + + + + username + Nom d'utilisateur : username + Uživatelské jméno + + + + + password + Mot de passe + Heslo + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + Připojení + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + Zadejte prosím uživatelské jméno + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + Zadejte prosím heslo + + + + assistant_forgotten_password + "Mot de passe oublié ?" + Zapomenuté heslo? + + + + LoginLayout + + + + help_about_title + À propos de %1 + Informace o %1 + + + + help_about_privacy_policy_title + "Politique de confidentialité" + Zásady ochrany soukromí + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + Přečtěte si zásady ochrany soukromí + + + + help_about_version_title + "Version" + Verze + + + + help_about_licence_title + "Licence" + Licence + + + + help_about_copyright_title + "Copyright + Autorská práva + + + + close + "Fermer" + Zavřít + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + Připojení + + + + assistant_no_account_yet + "Pas encore de compte ?" + Zatím žádný účet? + + + + assistant_account_register + "S'inscrire" + Registrace + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + SIP účet třetí strany + + + + assistant_login_remote_provisioning + "Configuration distante" + Vzdálené nastavení + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + Stáhnout vzdálené nastavení + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + Zadejte prosím odkaz na nastavení, který vám byl poskytnut: + + + + cancel + Zrušit + + + + validate + "Valider" + Potvrdit + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + Odkaz pro vzdálené nastavení + + + + default_account_connection_state_error_toast + Chyba při připojování + + + + MagicSearchList + + + device_id + Telefon + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + Hovory + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + Kontakty + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + Konverzace + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + Schůzky + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + Vyhledání kontaktu, volání %1 + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + nebo odeslání zprávy… + + + + do_not_disturb_accessible_name + "Do not disturb" + Nerušit + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + Vypnout režim Nerušit + + + + information_popup_error_title + Chyba + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + URI hlasové schránky není definována. + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + Můj účet + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + Zapnout režim Nerušit + + + + settings_title + Nastavení + + + + recordings_title + "Enregistrements" + Záznamy + + + + help_title + "Aide" + Nápověda + + + + help_quit_title + "Quitter l'application" + Ukončit aplikaci + + + + quit_app_question + "Quitter %1 ?" + Ukončit %1 ? + + + + drawer_menu_add_account + "Ajouter un compte" + Přidat účet + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + Úspěšně připojeno + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + Jste přihlášeni v režimu %1 + + + + interoperable + interopérable + interoperabilní + + + + call_transfer_successful_toast_title + "Appel transféré" + Hovor přesměrován + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + Váš hovor byl přesměrován na vybraný kontakt + + + + information_popup_success_title + Uloženo + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + Změny byly uloženy + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + Ověřte prosím kód captcha na webové stránce + + + + assistant_register_error_title + "Erreur lors de la création" + Chyba během vytváření + + + + assistant_register_success_title + "Compte créé" + Účet vytvořen + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + Účet byl vytvořen. Nyní se můžete přihlásit. + + + + assistant_register_error_code + "Erreur dans le code de validation" + Chyba v ověřovacím kódu + + + + information_popup_error_title + Chyba + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + Schůzka + + + + meeting_schedule_broadcast_label + "Webinar" + Webinář + + + + meeting_schedule_subject_hint + "Ajouter un titre" + Přidat název + + + + meeting_schedule_description_hint + "Ajouter une description" + Přidat popis + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Přidat účastníky + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + Odeslání pozvánky účastníkům + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + Schůzka zrušena + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + Dnes žádná schůzka + + + + meeting_info_delete + "Supprimer la réunion" + Smazat schůzku + + + + MeetingPage + + + meetings_add + "Créer une réunion" + Vytvořit schůzku + + + + meetings_list_empty + "Aucune réunion" + Žádná schůzka + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + Chcete zrušit a smazat tuto schůzku? + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + Chcete tuto schůzku smazat? + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + Zrušit a smazat + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + Pouze smazat + + + + meeting_schedule_delete_action + "Supprimer" + Smazat + + + + back_action + Retour + Zpět + + + + meetings_list_title + Réunions + Schůzky + + + + meetings_search_hint + "Rechercher une réunion" + Najít schůzku + + + + list_filter_no_result_found + "Aucun résultat…" + Žádný výsledek… + + + + meetings_empty_list + "Aucune réunion" + Žádná schůzka + + + + + meeting_schedule_title + "Nouvelle réunion" + Nová schůzka + + + + create + Vytvořit + + + + + + + + + information_popup_error_title + Chyba + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + Vyplňte prosím název a vyberte alespoň jednoho účastníka + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + Konec musí být později než začátek + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + Probíhá vytváření… + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + Schůzka úspěšně vytvořena + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + Vytvoření schůzky selhalo! + + + + save + Uložit + + + + + saved + "Enregistré" + Uloženo + + + + meeting_info_updated_toast + "Réunion mise à jour" + Schůzka upravena + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + Probíhá úprava schůzky… + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + Úprava schůzky selhala! + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Přidat účastníky + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + + meeting_info_delete + "Supprimer la réunion" + Smazat schůzku + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + URI schůzky zkopírováno + + + + meeting_schedule_timezone_title + "Fuseau horaire" + Časová zóna + + + + meeting_info_organizer_label + "Organisateur" + Organizátor + + + + meeting_info_join_title + "Rejoindre la réunion" + Připojit ke schůzce + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + Zobrazení + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + Výchozí režim displeje + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + Jak se zobrazují účastníci schůzek + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + Vyzvánění - příchozí hovory + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + Reproduktory + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + Mikrofon + + + + + multimedia_settings_camera_title + "Caméra" + Kamera + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + Síť + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + Probíhající hovor + + + + call_start_group_call_title + Appel de groupe + Skupinový hovor + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + Příchozí hovor + + + + dialog_accept + "Accepter" + Přijmout + + + + dialog_deny + "Refuser + Odmítnout + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + OAuthHttpServerReplyHandler nenaslouchá + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + Prodleva: není ověřeno + + + + oidc_authentication_granted_message + Authentication granted + Uděleno ověření + + + + oidc_authentication_not_authenticated_message + Not authenticated + Není ověřeno + + + + oidc_authentication_refresh_message + Refreshing token + Obnova tokenu + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + Dočasné přihlášení přijato + + + + oidc_authentication_network_error + Network error + Chyba sítě + + + + oidc_authentication_server_error + Server error + Chyba serveru + + + + oidc_authentication_token_not_found_error + OAuth token not found + OAuth token nenalezen + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + Tajemství OAuth tokenu nebylo nalezeno + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + Zpětné volání OAuth nebylo ověřeno + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + Vyžadování autorizace od prohlížeče + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + Vyžadování přístupového tokenu + + + + oidc_authentication_refresh_token_message + Refreshing access token + Obnova přístupového tokenu + + + + oidc_authentication_request_authorization_message + Requesting authorization + Vyžadování autorizace + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + Vyžadování dočasného přihlášení + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + V konfiguraci služby OpenID nebyl nalezen žádný koncový bod autorizace + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + V konfiguraci OpenID nebyl nalezen žádný koncový bod tokenu + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + Administrátor + + + + meeting_add_participants_title + "Ajouter des participants" + Přidat účastníky + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + Upravit + + + + contact_presence_button_delete_custom_status + Smazat + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + Uložit + + + + QObject + + + media_encryption_dtls + DTLS + + + + media_encryption_none + Žádné + + + + media_encryption_srtp + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + Post-kvantové ZRTP + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + Příchozí + + + + outgoing + "Sortant" + Odchozí + + + + conference_layout_active_speaker + "Participant actif" + Aktivní mluvčí + + + + conference_layout_grid + "Mosaïque" + Mřížka + + + + conference_layout_audio_only + "Audio uniquement" + Pouze zvuk + + + + RegisterCheckingPage + + + email + "email" + e-mail + + + + phone_number + "numéro de téléphone" + telefonní číslo + + + + confirm_register_title + "Inscription | Confirmer votre %1" + Registrace | Potvrzení %1 + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + Zaslali jsme vám ověřovací kód na %1 %2<br> Zadejte jej prosím níže + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + Nedostali jste kód? + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + Znovu odeslat kód + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + Registrace + + + + assistant_already_have_an_account + Již máte účet? + + + + assistant_account_login + Připojení + + + + assistant_account_register_with_phone_number + Registrace s telefonním číslem + + + + assistant_account_register_with_email + Registrace s e-mailem + + + + + username + Uživatelské jméno + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + Doména + + + + + + phone_number + "Numéro de téléphone" + Telefonní číslo + + + + + email + E-mail + + + + + password + Heslo + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + Potvrzení hesla + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + Přijímám %1 a %2 + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + podmínky používání + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + zásady ochrany soukromí + + + + assistant_account_create + "Créer" + Vytvořit + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + Zadejte prosím uživatelské jméno + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + Zadejte prosím heslo + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + Hesla se neshodují + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + Zadejte prosím telefonní číslo + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + Zadejte prosím e-mail + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + SIP účet třetí strany + + + + assistant_no_account_yet + Pas encore de compte ? + Zatím žádný účet? + + + + assistant_account_register + S'inscrire + Registrace + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + Některé funkce, jako jsou skupinové chaty, videokonference atd., vyžadují účet %1. + +Tyto funkce budou skryté, pokud použijete SIP účet třetí strany. + +Chcete-li je povolit v komerčním projektu, kontaktujte nás. + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + Vytvořit účet Linphone + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + Rozumím + + + + + username + "Nom d'utilisateur" + Uživatelské jméno + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + Heslo + + + + + sip_address_domain + "Domaine" + Doména + + + + + sip_address_display_name + Nom d'affichage + Zobrazené jméno + + + + + transport + "Transport" + Transport + + + + + assistant_account_login + Připojení + + + + assistant_account_login_missing_username + Zadejte prosím uživatelské jméno + + + + assistant_account_login_missing_password + Zadejte prosím heslo + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + Zadejte prosím doménu + + + + login_advanced_parameters_label + Advanced parameters + Rozšířené parametry + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + Vyberte obrazovku nebo okno, které chcete sdílet s ostatními účastníky. + + + + screencast_settings_all_screen_label + "Ecran entier" + Celá obrazovka + + + + screencast_settings_one_window_label + "Fenêtre" + Okno + + + + screencast_settings_screen + "Ecran %1" + Obrazovka %1 + + + + stop + "Stop + Zastavit + + + + share + "Partager" + Sdílet + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + Vyberte režim + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + Režim můžete změnit později. + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + Koncové šifrování + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + Tento režim zaručuje důvěrnost veškeré vaší komunikace. Naše technologie koncového šifrování zajišťuje maximální bezpečnost veškeré vaší komunikace. + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + Interoperabilní + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + Tento režim umožňuje využívat všechny funkce Linphone a zároveň je interoperabilní s jakoukoli jinou SIP službou. + + + + dialog_continue + "Continuer" + Pokračovat + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + Šifrovat všechny soubory + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + Upozornění: Jakmile je tato funkce jednou povolena, nelze ji vypnout! + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + Konverzace + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + Nastavení + + + + settings_calls_title + "Appels" + Hovory + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + Konverzace + + + + settings_contacts_title + "Contacts" + Kontakty + + + + settings_meetings_title + "Réunions" + Schůzky + + + + settings_network_title + "Affichage" "Security" "Réseau" + Síť + + + + settings_advanced_title + "Paramètres avancés" + Rozšířené parametry + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + Neuložené změny + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + Máte neuložené změny. Pokud opustíte tuto stránku, vaše změny budou ztraceny. Chcete své změny před pokračováním uložit? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + Neukládat + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + Uložit + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + připojování… + + + + conference_participant_paused_text + "En pause" + Pozastaveno + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + Volající adresa není interpretovatelná SIP adresa : %1 + + + + group_call_error_no_account + Nebyl nalezen žádný výchozí účet, nelze vytvořit skupinový hovor + + + + group_call_error_participants_invite + Nelze pozvat účastníky do skupinového hovoru + + + + group_call_error_creation + Skupinový hovor nelze vytvořit + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + Neznámý název zařízení + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + + nMinute + + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + + nDay + + + + + + + + + nWeek + + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + Zaneprázdněný + + + + contact_presence_status_do_not_disturb + Nerušit + + + + contact_presence_status_offline + Offline + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + Hovor se nepodařilo vytvořit + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + Chyba + + + + information_popup_group_call_not_created_message + Skupinový hovor nelze vytvořit + + + + number_of_years + %n an(s) + + 1 rok + %1 roky + %1 let + + + + + number_of_month + "%n mois" + + 1 měsíc + %1 měsíce + %1 měsíců + + + + + number_of_weeks + %n semaine(s) + + 1 týden + %1 týdny + %1 týdnů + + + + + number_of_days + %n jour(s) + + 1 den + %1 dny + %1 dnů + + + + + today + "Aujourd'hui" + Dnes + + + + yesterday + "Hier + Včera + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + Chyba + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + Připojit se k: + + + + meeting_waiting_room_join + "Rejoindre" + Připojit se + + + + + cancel + Cancel + Zrušit + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + Připojování ke schůzce + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + Za chvíli se připojíte ke schůzce... + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + Vítejte + + + + welcome_page_subtitle + "sur %1" + v %1 + + + + welcome_carousel_skip + "Passer" + Přeskočit + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + <b>Zabezpečená</b>,<br> <b>open source</b> a <b>francouzská</b> komunikační aplikace. + + + + welcome_page_2_title + "Sécurisé" + Zabezpečená + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + Vaše komunikace je zabezpečená díky <br><b>koncovému šifrování</b>. + + + + welcome_page_3_title + "Open Source" + Open Source + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + Aplikace s otevřeným zdrojovým kódem a <b>bezplatná služba</b> <br>od roku <b>2001</b> + + + + next + "Suivant" + Další + + + + start + "Commencer" + Start + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + Kontrola zabezpečení + + + + call_zrtp_sas_validation_skip + "Passer" + Přeskočit + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + Abychom zajistili šifrování, musíme zařízení vašeho kontaktu znovu ověřit. Vyměňte si kódy: + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + Abychom zajistili šifrování, musíme zařízení vašeho kontaktu ověřit. Vyměňte si prosím své kódy: + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + Váš kód: + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + Odpovídající kód: + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + Odpovídající kód nesouhlasí. + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + Důvěrnost vašeho hovoru může být ohrožena! + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + Neshoduje se + + + + call_action_hang_up + "Raccrocher" + Zavěsit + + + + country + + + Afghanistan + Afgánistán + + + + Albania + Albánie + + + + Algeria + Alžírsko + + + + AmericanSamoa + Americká Samoa + + + + Andorra + Andora + + + + Angola + Angola + + + + Anguilla + Anguilla + + + + AntiguaAndBarbuda + Antigua a Barbuda + + + + Argentina + Argentina + + + + Armenia + Arménie + + + + Aruba + Aruba + + + + Australia + Austrálie + + + + Austria + Rakousko + + + + Azerbaijan + Ázerbajdžán + + + + Bahamas + Bahamy + + + + Bahrain + Bahrajn + + + + Bangladesh + Bangladéš + + + + Barbados + Barbados + + + + Belarus + Bělorusko + + + + Belgium + Belgie + + + + Belize + Belize + + + + Benin + Benin + + + + Bermuda + Bermudy + + + + Bhutan + Bhútán + + + + Bolivia + Bolívie + + + + BosniaAndHerzegowina + Bosna a Hercegovina + + + + Botswana + Botswana + + + + Brazil + Brazílie + + + + Brunei + Brunej + + + + Bulgaria + Bulharsko + + + + BurkinaFaso + Burkina Faso + + + + Burundi + Burundi + + + + Cambodia + Kambodža + + + + Cameroon + Kamerun + + + + Canada + Kanada + + + + CapeVerde + Kapverdské ostrovy + + + + CaymanIslands + Kajmanské ostrovy + + + + CentralAfricanRepublic + Středoafrická Republika + + + + Chad + Čad + + + + Chile + Chile + + + + China + Čína + + + + Colombia + Kolumbie + + + + Comoros + Komory + + + + PeoplesRepublicOfCongo + Lidová republika Kongo + + + + CookIslands + Cookovy ostrovy + + + + CostaRica + Kostarika + + + + IvoryCoast + Pobřeží Slonoviny + + + + Croatia + Chorvatsko + + + + Cuba + Kuba + + + + Cyprus + Kypr + + + + CzechRepublic + Česká Republika + + + + Denmark + Dánsko + + + + Djibouti + Džibuti + + + + Dominica + Dominika + + + + DominicanRepublic + Dominikánská Republika + + + + Ecuador + Ekvádor + + + + Egypt + Egypt + + + + ElSalvador + Salvádor + + + + EquatorialGuinea + Rovníková Guinea + + + + Eritrea + Eritrea + + + + Estonia + Estonsko + + + + Ethiopia + Etiopie + + + + FalklandIslands + Falklandské ostrovy + + + + FaroeIslands + Faerské ostrovy + + + + Fiji + Fiji + + + + Finland + Finsko + + + + France + Francie + + + + FrenchGuiana + Francouzská Guinea + + + + FrenchPolynesia + Francouzská Polynésie + + + + Gabon + Gabon + + + + Gambia + Gambie + + + + Georgia + Gruzie + + + + Germany + Německo + + + + Ghana + Ghana + + + + Gibraltar + Gibraltar + + + + Greece + Řecko + + + + Greenland + Grónsko + + + + Grenada + Grenada + + + + Guadeloupe + Guadelupe + + + + Guam + Guam + + + + Guatemala + Guatemala + + + + Guinea + Guinea + + + + GuineaBissau + Guinea-Bissau + + + + Guyana + Guyana + + + + Haiti + Haiti + + + + Honduras + Honduras + + + + DemocraticRepublicOfCongo + Demokratická Republika Kongo + + + + HongKong + Hong Kong + + + + Hungary + Maďarsko + + + + Iceland + Island + + + + India + Indie + + + + Indonesia + Indonésie + + + + Iran + Irán + + + + Iraq + Irák + + + + Ireland + Irsko + + + + Israel + Izrael + + + + Italy + Itálie + + + + Jamaica + Jamajka + + + + Japan + Japonsko + + + + Jordan + Jordánsko + + + + Kazakhstan + Kazachstán + + + + Kenya + Keňa + + + + Kiribati + Kiribati + + + + DemocraticRepublicOfKorea + Korejská lidově demokratická republika + + + + RepublicOfKorea + Korejská republika + + + + Kuwait + Kuwajt + + + + Kyrgyzstan + Kyrgyzstán + + + + Laos + Laos + + + + Latvia + Lotyšsko + + + + Lebanon + Libanon + + + + Lesotho + Lesotho + + + + Liberia + Libérie + + + + Libya + Libye + + + + Liechtenstein + Lichtenštejnsko + + + + Lithuania + Litva + + + + Luxembourg + Lucembursko + + + + Macau + Macao + + + + Macedonia + Makedonie + + + + Madagascar + Madagaskar + + + + Malawi + Malawi + + + + Malaysia + Malajsie + + + + Maldives + Maledivy + + + + Mali + Mali + + + + Malta + Malta + + + + MarshallIslands + Marshalovy ostrovy + + + + Martinique + Martinik + + + + Mauritania + Mauretánie + + + + Mauritius + Mauritius + + + + Mayotte + Mayotte + + + + Mexico + Mexiko + + + + Micronesia + Mikronésie + + + + Moldova + Moldávie + + + + Monaco + Monako + + + + Mongolia + Mongolsko + + + + Montenegro + Černá Hora + + + + Montserrat + Montserrat + + + + Morocco + Maroko + + + + Mozambique + Mozambik + + + + Myanmar + Barma + + + + Namibia + Namibie + + + + NauruCountry + Nauru + + + + Nepal + Nepál + + + + Netherlands + Holandsko + + + + NewCaledonia + Nová Kaledonie + + + + NewZealand + Nový Zéland + + + + Nicaragua + Nikaragua + + + + Niger + Niger + + + + Nigeria + Nigérie + + + + Niue + Niue + + + + NorfolkIsland + Norfolk + + + + NorthernMarianaIslands + Severní marianské ostrovy + + + + Norway + Norsko + + + + Oman + Omán + + + + Pakistan + Pákistán + + + + Palau + Palau + + + + PalestinianTerritories + Palestina + + + + Panama + Panama + + + + PapuaNewGuinea + Papua - Nová Guinea + + + + Paraguay + Paraguay + + + + Peru + Peru + + + + Philippines + Filipíny + + + + Poland + Polsko + + + + Portugal + Portugalsko + + + + PuertoRico + Portoriko + + + + Qatar + Katar + + + + Reunion + Reunion + + + + Romania + Rumunsko + + + + RussianFederation + Rusko + + + + Rwanda + Rwanda + + + + SaintHelena + Svatá Helena + + + + SaintKittsAndNevis + Svatý Kryštof a Nevis + + + + SaintLucia + Svatá Lucie + + + + SaintPierreAndMiquelon + Saint Pierre a Miquelon + + + + SaintVincentAndTheGrenadines + Svatý Vincent a Grenadiny + + + + Samoa + Samoa + + + + SanMarino + San Marino + + + + SaoTomeAndPrincipe + Svatý Tomáš a Princip + + + + SaudiArabia + Saudská Arábie + + + + Senegal + Senegal + + + + Serbia + Srbsko + + + + Seychelles + Seychely + + + + SierraLeone + Sierra Leone + + + + Singapore + Singapur + + + + Slovakia + Slovensko + + + + Slovenia + Slovinsko + + + + SolomonIslands + Solomonské ostrovy + + + + Somalia + Somálsko + + + + SouthAfrica + Jihoafrická Republika + + + + Spain + Španělsko + + + + SriLanka + Sri Lanka + + + + Sudan + Sudán + + + + Suriname + Surinam + + + + Swaziland + Svazijsko + + + + Sweden + Švédsko + + + + Switzerland + Švýcarsko + + + + Syria + Sýrie + + + + Taiwan + Taiwan + + + + Tajikistan + Tádžikistán + + + + Tanzania + Tanzánie + + + + Thailand + Thajsko + + + + Togo + Togo + + + + Tokelau + Tokelau + + + + Tonga + Tonga + + + + TrinidadAndTobago + Trinidad a Tobago + + + + Tunisia + Tunis + + + + Turkey + Turecko + + + + Turkmenistan + Turkmenistán + + + + TurksAndCaicosIslands + Ostrovy Turks a Caicos + + + + Tuvalu + Tuvalu + + + + Uganda + Uganda + + + + Ukraine + Ukrajina + + + + UnitedArabEmirates + Spojené Arabské Emiráty + + + + UnitedKingdom + Velká Británie + + + + UnitedStates + Spojené Státy Americké + + + + Uruguay + Uruguay + + + + Uzbekistan + Uzbekistán + + + + Vanuatu + Vanuatu + + + + Venezuela + Venezuela + + + + Vietnam + Vietnam + + + + WallisAndFutunaIslands + Ostrovy Wallis a Futuna + + + + Yemen + Jemen + + + + Zambia + Zambie + + + + Zimbabwe + Zimbabwe + + + + utils + + + formatYears + '%1 year' + + 1 rok + %1 roky + %1 let + + + + + formatMonths + '%1 month' + + 1 měsíc + %1 měsíce + %1 měsíců + + + + + formatWeeks + '%1 week' + + 1 týden + %1 týdny + %1 týdnů + + + + + formatDays + '%1 day' + + 1 den + %1 dny + %1 dnů + + + + + formatHours + '%1 hour' + + 1 hodina + %1 hodiny + %1 hodin + + + + + formatMinutes + '%1 minute' + + 1 minuta + %1 minuty + %1 minut + + + + + formatSeconds + '%1 second' + + 1 vteřina + %1 vteřiny + %1 vteřin + + + + + codec_install + "Installation de codec" + Instalace kodeku + + + + download_codec + "Télécharger le codec %1 (%2) ?" + Stáhnout kodek %1 (%2) ? + + + + information_popup_success_title + "Succès" + Hotovo + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + Kodek byl úspěšně nainstalován. + + + + + + information_popup_error_title + Chyba + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + Kodek nelze nainstalovat. + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + Kodek nelze uložit. + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + Kodek nelze stáhnout. + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + Probíhá stahování… + + + + okButton + Ok + + + diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 350e3e9d8..ab6438412 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -25,13 +25,13 @@ AbstractWindow - + contact_dialog_pick_phone_number_or_sip_address_title "Choisissez un numéro ou adresse SIP" Telefonnummer oder SIP-Adresse wählen - + fps_counter %1 FPS @@ -98,7 +98,7 @@ add_an_account Add an account - + Konto hinzufügen @@ -188,118 +188,118 @@ AccountSettingsGeneralLayout - + manage_account_details_title "Détails" Details - + manage_account_details_subtitle Éditer les informations de votre compte. Kontoinformationen bearbeiten. - + manage_account_devices_title "Vos appareils" Geräte - + manage_account_devices_subtitle "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." Liste der mit Ihrem Konto verbundenen Geräte. Sie können Geräte entfernen, die Sie nicht mehr verwenden. - + manage_account_add_picture "Ajouter une image" Bild hinzufügen - + manage_account_edit_picture "Modifier l'image" Bild bearbeiten - + manage_account_remove_picture "Supprimer l'image" Bild löschen - + sip_address - SIP-Adresse + SIP-Adresse - + sip_address_display_name "Nom d'affichage Anzeigename - + sip_address_display_name_explaination "Le nom qui sera affiché à vos correspondants lors de vos échanges." Der Name, der Ihren Kontakten während der Kommunikation angezeigt wird. - + manage_account_international_prefix Indicatif international* Internationale Vorwahl* - + manage_account_delete "Déconnecter mon compte" Konto trennen - + manage_account_delete_message Ihr Konto wird aus diesem Linphone-Client entfernt, bleibt jedoch auf Ihren anderen Geräten verbunden - + manage_account_dialog_remove_account_title "Se déconnecter du compte ?" Vom Konto abmelden? - + manage_account_dialog_remove_account_message Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org Wenn Sie Ihr Konto dauerhaft löschen möchten, besuchen Sie: https://sip.linphone.org - + error Erreur Fehler - + manage_account_device_remove "Supprimer" Löschen - + manage_account_device_remove_confirm_dialog %1 löschen? - + manage_account_device_last_connection "Dernière connexion:" Letzte Anmeldung: - + device_last_updated_time_no_info "No information" @@ -352,78 +352,78 @@ AccountSettingsParametersLayout - + settings_title Einstellungen - + settings_account_title Kontoeinstellungen - + info_popup_invalid_registrar_uri_message Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - + info_popup_invalid_outbound_proxy_message Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - + info_popup_error_title - + Fehler - + information_popup_success_title Erfolg - + contact_editor_saved_changes_toast "Modifications sauvegardés" Änderungen gespeichert - + information_popup_error_title - + Fehler - + account_settings_mwi_uri_title "URI du serveur de messagerie vocale" Voicemail-Server-URI - + account_settings_voicemail_uri_title "URI de messagerie vocale" Voicemail-URI - + account_settings_transport_title "Transport" Transport - + account_settings_registrar_uri_title - + account_settings_sip_proxy_url_title Proxy-Server-URL - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." @@ -434,49 +434,49 @@ Ausgehender Proxy-Server - + account_settings_stun_server_url_title "Adresse du serveur STUN" STUN-Server-Adresse - + account_settings_enable_ice_title "Activer ICE" ICE aktivieren - + account_settings_avpf_title "AVPF" AVPF - + account_settings_bundle_mode_title "Mode bundle" Bundle-Modus - + account_settings_expire_title "Expiration (en seconde)" Ablaufzeit (in Sekunden) - + account_settings_conference_factory_uri_title "URI du serveur de conversations" Konferenz-Factory-URI - + account_settings_audio_video_conference_factory_uri_title "URI du serveur de réunions" Video-Konferenz-Factory-URI - + account_settings_lime_server_url_title "URL du serveur d’échange de clés de chiffrement" Lime-Server-URL @@ -602,7 +602,7 @@ settings_advanced_create_endtoend_encrypted_meetings_title Create end to end encrypted meetings and group calls - + Erstelle Ende-zu-Ende verschlüsselte Konferenzen und Gruppenrufe @@ -625,7 +625,7 @@ Kontakte - + generic_address_picker_suggestions_list_title "Suggestions" Vorschläge @@ -644,7 +644,7 @@ info_popup_error_title Error - + Fehler @@ -679,7 +679,7 @@ command_line_option_show_app_version - Zeige App-Version + App-Version anzeigen @@ -727,7 +727,7 @@ Beenden - + mark_all_read_action @@ -735,36 +735,36 @@ AuthenticationDialog - + account_settings_dialog_invalid_password_title "Authentification requise" Authentifizierung erforderlich - + account_settings_dialog_invalid_password_message La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. Die Anmeldung für das Konto %1 ist fehlgeschlagen. Sie können Ihr Passwort erneut eingeben oder die Kontoeinstellungen überprüfen. - + password Passwort - + cancel "Annuler Abbrechen - + assistant_account_login Connexion Anmelden - + assistant_account_login_missing_password Veuillez saisir un mot de passe Bitte Passwort eingeben @@ -827,97 +827,97 @@ media_encryption_dtls DTLS - + DTLS media_encryption_none None - + Nichts media_encryption_srtp SRTP - + SRTP media_encryption_post_quantum "ZRTP - Post quantique" - Post-quantum ZRTP + Post-quantum ZRTP CallForwardSettingsLayout - + settings_call_forward_activation_success - - - + + + settings_call_forward_to_voicemail - + settings_call_forward_deactivation_success - + settings_call_forward_address_timeout - + settings_call_forward_address_cannot_be_empty - + settings_call_forward_address_progress_disabling - + settings_call_forward_address_progress_enabling - + settings_call_forward_activate_title "Forward calls" - + settings_call_forward_activate_subtitle "Enable call forwarding to voicemail or sip address" - + settings_call_forward_destination_choose Forward to destination - + settings_call_forward_to_sipaddress - + settings_call_forward_sipaddress_title SIP Address - + settings_call_forward_sipaddress_placeholder @@ -945,25 +945,25 @@ Offline - + meeting_info_join_title "Rejoindre la réunion" Besprechung beitreten - + contact_call_action "Appel" Anrufen - + contact_message_action "Message" Nachricht - + contact_video_call_action "Appel Video" Videoanruf @@ -972,7 +972,7 @@ CallHistoryListView - + call_name_accessible_button Call %1 @@ -981,42 +981,42 @@ CallLayout - + meeting_event_conference_destroyed "Vous avez quitté la conférence" Sie haben die Besprechung verlassen - + call_ended_by_user "Vous avez terminé l'appel" Sie haben den Anruf beendet - + call_ended_by_remote "Votre correspondant a terminé l'appel" Der Anrufer hat das Gespräch beendet - + conference_call_empty "En attente d'autres participants…" Warten auf weitere Teilnehmer… - + conference_share_link_title "Partager le lien" Link teilen - + copied Kopiert - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Der Besprechungs-Link wurde in die Zwischenablage kopiert @@ -1038,7 +1038,7 @@ info_popup_error_title - + Fehler @@ -1050,49 +1050,49 @@ CallListView - + meeting "Réunion Besprechung - + call "Appel" Anruf - + paused_call_or_meeting "%1 en pause" %1 pausiert - + ongoing_call_or_meeting "%1 en cours" %1 laufend - + transfer_call_name_accessible_name Transfer call %1 - + resume_call_name_accessible_name Resume %1 call - + pause_call_name_accessible_name Pause %1 call - + end_call_name_accessible_name End %1 call @@ -1415,13 +1415,13 @@ settings_call_enable_tones_title Tonalités - Töne + Wählton settings_call_enable_tones_subtitle Activer les tonalités - Töne aktivieren + Wähltöne aktivieren @@ -1471,13 +1471,13 @@ CallStatistics - + call_stats_audio_title "Audio" Audio - + call_stats_video_title "Vidéo" Video @@ -1748,13 +1748,13 @@ call_stop_screen_sharing "Stop sharing" - + Stopp stop_recording_accessible_name Stop recording - + Aufnahme stoppen @@ -1919,86 +1919,86 @@ CarddavSettingsLayout - + settings_contacts_carddav_title Carnet d'adresse CardDAV CardDAV Adressbuch - + settings_contacts_carddav_subtitle "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." Fügen Sie ein CardDAV-Adressbuch hinzu, um Ihre Linphone-Kontakte mit einem Drittanbieter-Adressbuch zu synchronisieren. - + information_popup_error_title Fehler - + settings_contacts_carddav_popup_invalid_error "Vérifiez que toutes les informations ont été saisies." Überprüfen Sie, ob alle Informationen eingegeben wurden. - + information_popup_synchronization_success_title Erfolg - + settings_contacts_carddav_synchronization_success_message "Le carnet d'adresse CardDAV est synchronisé." Das CardDAV-Adressbuch ist synchronisiert. - + settings_contacts_carddav_popup_synchronization_error_title Fehler - + settings_contacts_carddav_popup_synchronization_error_message "Erreur de synchronisation!" Synchronisierungsfehler! - + settings_contacts_delete_carddav_server_title "Supprimer le carnet d'adresse CardDAV ?" CardDAV Adressbuch löschen? - + sip_address_display_name Nom d'affichage Anzeigename - + settings_contacts_carddav_server_url_title "URL du serveur" Server-URL - + username Benutzername - + password Passwort - + settings_contacts_carddav_realm_title Domaine d’authentification Authentifizierungsbereich - + settings_contacts_carddav_use_as_default_title "Stocker ici les contacts nouvellement crées" Neu erstellte Kontakte hier speichern @@ -2007,17 +2007,17 @@ ChangeLayoutForm - + conference_layout_grid Raster - + conference_layout_active_speaker Aktiver Sprecher - + conference_layout_audio_only Nur Audio @@ -2029,7 +2029,7 @@ information_popup_error_title Error - + Fehler @@ -2085,7 +2085,7 @@ chat_room_delete "Delete" - + Löschen @@ -2153,7 +2153,7 @@ chat_message_copied_to_clipboard_title Copied - + Kopiert @@ -2213,7 +2213,7 @@ chat_message_delete "Delete" - + Löschen @@ -2222,7 +2222,7 @@ popup_error_title Error - + Fehler @@ -2242,7 +2242,7 @@ Error adding file ---------- Error - + Fehler @@ -2288,7 +2288,7 @@ Error popup_error_title Error - + Fehler @@ -2366,64 +2366,64 @@ Error ics_bubble_join "Rejoindre" - + Beitreten ChatMessagesListView - - + + popup_info_find_message_title Find message - + info_popup_no_result_message No result found - + info_popup_first_result_message First result reached - + info_popup_last_result_message Last result reached - + chat_message_list_encrypted_header_title End to end encrypted chat - + unencrypted_conversation_warning This conversation is not encrypted ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! - + chat_message_is_writing_info %1 is writing… @@ -2444,74 +2444,74 @@ Error - + chat_dialog_delete_chat_title Supprimer la conversation ? - + chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." - + chat_list_title "Conversations" - + Konversationen - + menu_mark_all_as_read "mark all as read" - + chat_search_in_history "Rechercher une conversation" - + list_filter_no_result_found "Aucun résultat…" - + Kein Ergebnis… - + chat_list_empty_history "Aucune conversation dans votre historique" - + chat_action_start_new_chat "New chat" - + chat_start_group_chat_title "Nouveau groupe" - + chat_action_start_group_chat "Créer" - + Erstellen - - + + information_popup_error_title - + Fehler - + information_popup_chat_creation_failed_message "La création a échoué" @@ -2522,19 +2522,19 @@ Error Der Codec konnte nicht installiert werden. - + group_chat_error_must_have_name "Un nom doit être donné au groupe - + group_call_error_not_connected "Vous n'etes pas connecté" - Sie sind nicht verbunden + Sie sind nicht verbunden - + chat_creation_in_progress Creation de la conversation en cours … @@ -2566,7 +2566,7 @@ Error show_function_description - Anzeigen + Zeigen @@ -2576,22 +2576,22 @@ Error call_function_description - Anrufen + Anrufen bye_function_description - Auflegen + Auflegen accept_function_description - Akzeptieren + Akzeptieren decline_function_description - Ablehnen + Ablehnen @@ -2805,53 +2805,53 @@ Error ContactListItem - + contact_details_remove_from_favourites "Enlever des favoris" Aus Favoriten entfernen - + contact_details_add_to_favourites "Ajouter aux favoris" Zu Favoriten hinzufügen - + Partager Teilen - + information_popup_error_title Fehler - + information_popup_vcard_creation_error La création du fichier vcard a échoué VCard-Erstellung fehlgeschlagen - + information_popup_vcard_creation_title VCard créée VCard erstellt - + information_popup_vcard_creation_success "VCard du contact enregistrée dans %1" VCard in %1 gespeichert - + contact_sharing_email_title Partage de contact Kontakt teilen - + contact_details_delete "Supprimer" Löschen @@ -2875,161 +2875,161 @@ Error ContactPage - + contacts_add "Ajouter un contact" Kontakt hinzufügen - + contacts_list_empty "Aucun contact pour le moment" Zurzeit keine Kontakte - + contact_new_title "Nouveau contact" Neuer Kontakt - + create Erstellen - + contact_edit_title "Modifier contact" Kontakt bearbeiten - + save Speichern - + contact_dialog_delete_title Supprimer %1 ?" %1 löschen? - + contact_dialog_delete_message Ce contact sera définitivement supprimé. Dieser Kontakt wird dauerhaft gelöscht. - + contact_deleted_toast "Contact supprimé" Kontakt gelöscht - + contact_deleted_message "%1 a été supprimé" %1 wurde gelöscht - + contact_dialog_devices_trust_popup_title "Augmenter la confiance" Vertrauenslevel erhöhen - + contact_dialog_devices_trust_popup_message "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" Um das Vertrauenslevel zu erhöhen müssen Sie Ihren Kontakt anrufen und einen Code bestätigen.<br><br>Sie sind dabei, "%1" anzurufen. Möchten Sie fortfahren? - + popup_do_not_show_again Ne plus afficher Nicht mehr anzeigen - + cancel Abbrechen - + dialog_call "Appeler" Anrufen - + contact_dialog_devices_trust_help_title "Niveau de confiance" Vertrauenslevel - + contact_dialog_devices_trust_help_message "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." Überprüfen Sie die Geräte Ihres Kontakts um sicherzustellen, dass Ihre Kommunikation sicher und unkompromittiert ist. Wenn alle Geräte überprüft sind, erreichen Sie das höchste Vertrauenslevel. - + dialog_ok "Ok" Ok - + bottom_navigation_contacts_label "Contacts" Kontakte - + create_contact_accessible_name Create new contact - + search_bar_look_for_contact_text Rechercher un contact Kontakt suchen - + list_filter_no_result_found Aucun résultat… Kein Ergebnis… - + contact_list_empty Aucun contact pour le moment Zurzeit keine Kontakte - + more_info_accessible_name More info %1 - + expand_accessible_name Expand %1 - + shrink_accessible_name Shrink %1 - - + + contact_details_edit Edit ---------- @@ -3037,19 +3037,19 @@ Error Bearbeiten - + contact_call_action "Appel" Anrufen - + contact_message_action "Message" Nachricht - + contact_video_call_action "Appel vidéo" Videoanruf @@ -3075,133 +3075,133 @@ Error Offline - + contact_details_numbers_and_addresses_title "Coordonnées" Kontaktinformationen - + call_adress_accessible_name Call address %1 - + contact_details_company_name "Société :" Unternehmen : - + contact_details_job_title "Poste :" Beruf : - + contact_details_medias_title "Medias" Medien - - + + contact_details_medias_subtitle "Afficher les medias partagés" Geteilte Medien anzeigen - + contact_details_trust_title "Confiance" Vertrauen - + contact_dialog_devices_trust_title "Niveau de confiance - Appareils vérifiés" Vertrauenslevel - Verifizierte Geräte - + contact_details_no_device_found "Aucun appareil" Kein Gerät - + contact_device_without_name "Appareil inconnu" Unbekanntes Gerät - + contact_make_call_check_device_trust "Vérifier" Überprüfen - + verify_device_accessible_name Verify %1 device - + contact_details_actions_title "Autres actions" Weitere Aktionen - + contact_details_remove_from_favourites "Retirer des favoris" Aus Favoriten entfernen - + contact_details_add_to_favourites "Ajouter aux favoris" Zu Favoriten hinzufügen - + contact_details_share "Partager" Teilen - + information_popup_error_title Fehler - + contact_details_share_error_mesage "La création du fichier vcard a échoué" VCard-Erstellung fehlgeschlagen - + contact_details_share_success_title "VCard créée" VCard erstellt - + contact_details_share_success_mesage "VCard du contact enregistrée dans %1" VCard wurde in %1 gespeichert - + contact_details_share_email_title "Partage de contact" Kontakt teilen - + contact_details_delete "Supprimer ce contact" Kontakt löschen @@ -3219,7 +3219,7 @@ Error settings_contacts_ldap_subtitle "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." - LDAP-Server hinzufügen, um in der magischen Suchleiste suchen zu können. + LDAP-Server hinzufügen, um in der magischen Suchleiste suchen zu können. @@ -3303,19 +3303,19 @@ Error ConversationInfos - + one_one_infos_call "Appel" - Anrufen + Anrufen - + one_one_infos_unmute "Sourdine" Unmute - + one_one_infos_mute Stummschalten @@ -3325,121 +3325,121 @@ Error Suchen - + group_infos_participants - Participants (%1) + Teilnehmer (%1) - + group_infos_media_docs Medias & documents Medien & Dokumente - + group_infos_shared_medias Shared medias - + group_infos_shared_docs Shared documents Geteilte Dokumente - + group_infos_other_actions Other actions - Weitere Aktionen + Weitere Aktionen - + group_infos_ephemerals Ephemeral messages : - + group_infos_enable_ephemerals Flüchtige Nachrichten aktivieren - + group_infos_meeting Schedule a meeting Meeting - + group_infos_leave_room Leave chat room - + group_infos_leave_room_toast_title Leave Chat Room ? Chatraum verlassen? - + group_infos_leave_room_toast_message All the messages will be removed from the chat room. Do you want to continue ? Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren? - + group_infos_delete_history Delete history - Verlauf löschen + Verlauf löschen - + group_infos_delete_history_toast_title Delete history ? Verlauf löschen? - + group_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren? - + one_one_infos_open_contact Show contact - Kontakt öffnen + Kontakt anzeigen - + one_one_infos_create_contact Create contact Kontakt erstellen - + one_one_infos_ephemerals Ephemeral messages : - + one_one_infos_enable_ephemerals Flüchtige Nachrichten aktivieren - + one_one_infos_delete_history - Verlauf löschen + Verlauf löschen - + one_one_infos_delete_history_toast_title Delete history ? Verlauf löschen? - + one_one_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren? @@ -3451,98 +3451,98 @@ Error search_bar_look_for_contact_text "Rechercher un contact" - Kontakt suchen + Kontakt suchen DebugSettingsLayout - + settings_debug_clean_logs_message "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" Debug-Logs werden gelöscht. Möchten Sie fortfahren? - + settings_debug_share_logs_message "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " Debug-Logs wurden hochgeladen. Wie möchten Sie den Link teilen? - + settings_debug_clipboard "Presse-papier" Zwischenablage - + settings_debug_email "E-Mail" E-Mail - + debug_settings_trace "Traces %1" %1 Logs - + information_popup_email_sharing_failed "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." E-Mail-Weitergabe fehlgeschlagen. Bitte senden Sie den %1 Link direkt an %2. - - + + information_popup_error_title Une erreur est survenue. Ein Fehler ist aufgetreten. - + settings_debug_enable_logs_title "Activer les traces de débogage" Debug-Logs aktivieren - + settings_debug_enable_full_logs_title "Activer les traces de débogage intégrales" Vollständige Logs aktivieren - + settings_debug_delete_logs_title "Supprimer les traces" Debug-Logs löschen - + settings_debug_share_logs_title "Partager les traces" Debug-Logs teilen - + settings_debug_share_logs_loading_message "Téléversement des traces en cours …" Hochladen der Logs … - + settings_debug_app_version_title "Version de l'application" App-Version - + settings_debug_sdk_version_title "Version du SDK" SDK-Version - + settings_debug_share_logs_error "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" Hochladen der Logs fehlgeschlagen. Sie können die Log-Dateien direkt aus folgendem Verzeichnis teilen: %1 @@ -3551,13 +3551,13 @@ Error DecoratedTextField - + textfield_error_message_cannot_be_empty "ne peut être vide" darf nicht leer sein - + textfield_error_message_unknown_format "Format non reconnu" Unbekanntes Format @@ -3566,15 +3566,15 @@ Error Dialog - - + + dialog_confirm "Confirmer" Bestätigen - - + + dialog_cancel "Annuler" Abbrechen @@ -3583,49 +3583,49 @@ Error EncryptionSettings - + call_stats_media_encryption_title "Encryption :" Verschlüsselung : - + call_stats_media_encryption Media encryption : %1 Medienverschlüsselung : %1%2 - + call_stats_zrtp_cipher_algo "Algorithme de chiffrement : %1" Verschlüsselungsalgorithmus : %1 - + call_stats_zrtp_key_agreement_algo "Algorithme d'accord de clé : %1" Schlüsselaustauschalgorithmus: %1 - + call_stats_zrtp_hash_algo "Algorithme de hachage : %1" Hash-Algorithmus : %1 - + call_stats_zrtp_auth_tag_algo "Algorithme d'authentification : %1" Authentifizierungsalgorithmus : %1 - + call_stats_zrtp_sas_algo "Algorithme SAS : %1" SAS-Algorithmus : %1 - + call_zrtp_validation_button_label "Validation chiffrement" Verschlüsselungsvalidierung @@ -3634,42 +3634,42 @@ Error EphemeralSettings - + title Ephemeral messages - + explanations By enabling ephemeral messages in this chat, messages sent will be automatically deleted after the defined period. - + one_minute 1 minute - + one_hour 1 hour - + one_day 1 day - + one_week 1 week - + disabled Disabled - + custom Custom: @@ -3768,55 +3768,55 @@ Error GroupChatInfoParticipants - + group_infos_participant_is_admin Admin - + group_infos_manage_participants_title "Gérer des participants" Manage Participants - + menu_see_existing_contact "Show contact" Kontakt anzeigen - + menu_add_address_to_contacts "Add to contacts" Zu Kontakten hinzufügen - + group_infos_give_admin_rights Give admin rights - + group_infos_remove_admin_rights Remove admin rights - + group_infos_copy_sip_address Copy SIP Address - + group_infos_remove_participant Remove participant - + group_infos_remove_participants_toast_title Remove participant ? - + group_infos_remove_participants_toast_message Participant will be removed from chat room. @@ -3839,62 +3839,62 @@ Error group_start_dialog_subject_hint "Nom du groupe" - + Gruppenname required "Requis" - Erforderlich + Erforderlich HelpPage - + help_title "Aide" Hilfe - - + + help_about_title "À propos de %1" Über %1 - + help_about_privacy_policy_title "Règles de confidentialité" Datenschutzrichtlinie - + help_about_privacy_policy_subtitle Quelles informations %1 collecte et utilise Welche Informationen sammelt und verwendet %1 - + help_about_version_title "Version" Version - + help_about_gpl_licence_title "Licences GPLv3" GPLv3-Lizenzen - + help_about_contribute_translations_title "Contribuer à la traduction de %1" Zur Übersetzung von %1 beitragen - + help_troubleshooting_title "Dépannage" Fehlerbehebung @@ -4034,7 +4034,7 @@ Error LoadingPopup - + cancel Abbrechen @@ -4280,7 +4280,7 @@ Error do_not_disturb_accessible_name "Do not disturb" - + Nicht stören @@ -4442,7 +4442,7 @@ Error ManageParticipants - + group_infos_manage_participants Participants @@ -4450,37 +4450,37 @@ Error MeetingForm - + meeting_schedule_meeting_label "Réunion" Besprechung - + meeting_schedule_broadcast_label "Webinar" Webinar - + meeting_schedule_subject_hint "Ajouter un titre" Titel hinzufügen - + meeting_schedule_description_hint "Ajouter une description" Beschreibung hinzufügen - + meeting_schedule_add_participants_title "Ajouter des participants" Teilnehmer hinzufügen - + meeting_schedule_send_invitations_title "Envoyer une invitation aux participants" Einladung an Teilnehmer senden @@ -4504,176 +4504,176 @@ Error meeting_info_delete "Supprimer la réunion" - Besprechung löschen + Besprechung löschen MeetingPage - + meetings_add "Créer une réunion" Besprechung erstellen - + meetings_list_empty "Aucune réunion" Keine Besprechungen - + meeting_schedule_cancel_dialog_message "Souhaitez-vous annuler et supprimer cette réunion ?" Möchten Sie diese Besprechung absagen und löschen? - + meeting_schedule_delete_dialog_message Souhaitez-vous supprimer cette réunion ? Möchten Sie diese Besprechung löschen? - + meeting_schedule_cancel_and_delete_action "Annuler et supprimer" Absagen und löschen - + meeting_schedule_delete_only_action "Supprimer seulement" Nur löschen - + meeting_schedule_delete_action "Supprimer" - Löschen + Löschen - + back_action Retour Zurück - + meetings_list_title Réunions Besprechungen - + meetings_search_hint "Rechercher une réunion" Besprechung suchen - + list_filter_no_result_found "Aucun résultat…" Kein Ergebnis… - + meetings_empty_list "Aucune réunion" Keine Besprechungen - - + + meeting_schedule_title "Nouvelle réunion" Neue Besprechung - + create Erstellen - - - - - - + + + + + + information_popup_error_title Fehler - - + + meeting_schedule_mandatory_field_not_filled_toast Veuillez saisir un titre et sélectionner au moins un participant Bitte Titel bestimmen und mindestens einen Teilnehmer auswählen - - + + meeting_schedule_duration_error_toast "La fin de la conférence doit être plus récente que son début" Das Ende der Besprechung muss nach dem Beginn liegen - - + + meeting_schedule_creation_in_progress "Création de la réunion en cours …" Besprechung wird erstellt… - + meeting_info_created_toast "Réunion planifiée avec succès" Besprechung erfolgreich erstellt - + meeting_failed_to_schedule_toast "Échec de création de la réunion !" Besprechung konnte nicht erstellt werden! - + save Speichern - - + + saved "Enregistré" Gespeichert - + meeting_info_updated_toast "Réunion mise à jour" Besprechung geändert - + meeting_schedule_edit_in_progress "Modification de la réunion en cours…" Bersprechung wird geändert… - + meeting_failed_to_edit_toast "Échec de la modification de la réunion !" Besprechung konnte nicht geändert werden! - + meeting_schedule_add_participants_title "Ajouter des participants" Teilnehmer hinzufügen - + meeting_schedule_add_participants_apply Apply @@ -4682,7 +4682,7 @@ Error Hinzufügen - + group_call_participant_selected "%n participant(s) sélectionné(s)" @@ -4691,31 +4691,31 @@ Error - + meeting_info_delete "Supprimer la réunion" Besprechung löschen - + meeting_address_copied_to_clipboard_toast "Adresse de la réunion copiée" Besprechungs-URI kopiert - + meeting_schedule_timezone_title "Fuseau horaire" Zeitzone - + meeting_info_organizer_label "Organisateur" Organisator - + meeting_info_join_title "Rejoindre la réunion" Besprechung beitreten @@ -4724,19 +4724,19 @@ Error MeetingsSettingsLayout - + settings_meetings_display_title "Affichage" Anzeige - + settings_meetings_default_layout_title "Mode d’affichage par défaut" Standardanzeige - + settings_meetings_default_layout_subtitle "Le mode d’affichage des participants en réunions" Wie Teilnehmer in Besprechungen angezeigt werden @@ -4745,7 +4745,7 @@ Error MessageImdnStatusInfos - + message_details_status_title Message status @@ -4754,13 +4754,13 @@ Error MessageReactionsInfos - + message_details_reactions_title Reactions - + click_to_delete_reaction_info Click to delete @@ -4769,13 +4769,13 @@ Error MessageSharedFilesInfos - + no_shared_medias No media - + no_shared_documents No document @@ -4833,13 +4833,13 @@ Error NetworkSettingsLayout - + settings_network_title "Réseau" Netzwerk - + settings_network_allow_ipv6 "Autoriser l'IPv6" IPv6 aktivieren @@ -4862,7 +4862,7 @@ Error call_start_group_call_title Appel de groupe - Gruppenanruf + Gruppenanruf @@ -4877,19 +4877,19 @@ Error NotificationReceivedCall - + call_audio_incoming "Appel entrant" Eingehender Anruf - + dialog_accept "Accepter" Akzeptieren - + dialog_deny "Refuser Ablehnen @@ -4904,30 +4904,30 @@ Error - + new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. - + new_file_message - + new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. - + new_message_alert_accessible_name New message on chatroom %1 @@ -5051,13 +5051,13 @@ Error ParticipantListView - + meeting_participant_is_admin_label "Admin" Admin - + meeting_add_participants_title "Ajouter des participants" Teilnehmer hinzufügen @@ -5066,13 +5066,13 @@ Error PhoneNumberInput - + prefix_phone_number_accessible_name %1 prefix - + number_phone_number_accessible_name %1 number @@ -5113,18 +5113,18 @@ Error contact_presence_button_edit_custom_status - + Bearbeiten contact_presence_button_delete_custom_status - + Löschen PresenceNoteLayout - + contact_presence_note_title @@ -5132,14 +5132,14 @@ Error PresenceSetCustomStatus - + contact_presence_button_set_custom_status_title - + contact_presence_button_save_custom_status - + Speichern @@ -5159,17 +5159,17 @@ Error media_encryption_dtls - + DTLS media_encryption_none - + Nichts media_encryption_srtp - + SRTP @@ -5271,37 +5271,37 @@ Error RegisterCheckingPage - + email "email" Email - + phone_number "numéro de téléphone" Telefonnummer - + confirm_register_title "Inscription | Confirmer votre %1" Registrieren | %1 bestätigen - + assistant_account_creation_confirmation_explanation Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous Wir haben Ihnen einen Bestätigungscode an Ihr %1 %2<br> geschickt. Bitte geben Sie ihn unten ein. - + assistant_account_creation_confirmation_did_not_receive_code "Vous n'avez pas reçu le code ?" Code nicht erhalten? - + assistant_account_creation_confirmation_resend_code "Renvoyer un code" Code erneut senden @@ -5360,7 +5360,7 @@ Error domain - + Domäne @@ -5562,7 +5562,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. login_advanced_parameters_label Advanced parameters - + Erweiterte Einstellungen @@ -5595,37 +5595,37 @@ Pour les activer dans un projet commercial, merci de nous contacter. ScreencastSettings - + screencast_settings_choose_window_text "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" Bitte wählen Sie den Bildschirm oder das Fenster aus, das Sie mit anderen Teilnehmern teilen möchten. - + screencast_settings_all_screen_label "Ecran entier" Vollbild - + screencast_settings_one_window_label "Fenêtre" Fenster - + screencast_settings_screen "Ecran %1" Bildschirm %1 - + stop "Stop Stopp - + share "Partager" Teilen @@ -5649,43 +5649,43 @@ Pour les activer dans un projet commercial, merci de nous contacter. SecurityModePage - + manage_account_choose_mode_title "Choisir votre mode" Modus wählen - + manage_account_choose_mode_message "Vous pourrez changer de mode plus tard." Sie können den Modus später ändern. - + manage_account_e2e_encrypted_mode_default_title "Chiffrement de bout en bout" Ende-zu-Ende-Verschlüsselung - + manage_account_e2e_encrypted_mode_default_summary "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." Dieser Modus garantiert die Vertraulichkeit jeglicher Kommunikation. Unsere Ende-zu-Ende-Verschlüsselungstechnologie sorgt für maximale Sicherheit bei allen Kommunikationen. - + manage_account_e2e_encrypted_mode_interoperable_title "Interoperable" Interoperabel - + manage_account_e2e_encrypted_mode_interoperable_summary "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." Dieser Modus ermöglicht es, alle Funktionen von Linphone zu nutzen, während Sie weiterhin mit jedem anderen SIP-Dienst interoperabel bleiben. - + dialog_continue "Continuer" Fortfahren @@ -5694,13 +5694,13 @@ Pour les activer dans un projet commercial, merci de nous contacter. SecuritySettingsLayout - + settings_security_enable_vfs_title "Chiffrer tous les fichiers" Alle Dateien verschlüsseln - + settings_security_enable_vfs_subtitle "Attention, vous ne pourrez pas revenir en arrière !" Warnung: Einmal aktiviert, kann es nicht mehr deaktiviert werden! @@ -5709,45 +5709,45 @@ Pour les activer dans un projet commercial, merci de nous contacter. SelectedChatView - + chat_view_group_call_toast_message Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! - + reply_to_label Reply to %1 - + shared_medias_title Shared medias - + shared_documents_title Shared documents - + forward_to_title Forward to… - + conversations_title Conversations - + Konversationen @@ -5842,13 +5842,13 @@ Pour les activer dans un projet commercial, merci de nous contacter. Sticker - + conference_participant_joining_text "rejoint…" tritt bei… - + conference_participant_paused_text "En pause" Pausiert @@ -5977,7 +5977,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. Error ---------- Failed to create 1-1 conversation with %1 ! - + Fehler @@ -6073,17 +6073,17 @@ Failed to create 1-1 conversation with %1 ! contact_presence_status_busy - Beschäftigt + Beschäftigt contact_presence_status_do_not_disturb - Nicht stören + Nicht stören contact_presence_status_offline - Offline + Offline @@ -6113,7 +6113,7 @@ Failed to create 1-1 conversation with %1 ! info_popup_error_title Error - + Fehler @@ -6161,32 +6161,32 @@ Failed to create 1-1 conversation with %1 ! WaitingRoom - + meeting_waiting_room_title Participer à : Beitreten : - + meeting_waiting_room_join "Rejoindre" Beitreten - - + + cancel Cancel Abbrechen - + meeting_waiting_room_joining_title "Connexion à la réunion" Verbindung zur Besprechung - + meeting_waiting_room_joining_subtitle "Vous allez rejoindre la réunion dans quelques instants…" Sie werden der Besprechung in wenigen Momenten beitreten... @@ -6195,61 +6195,61 @@ Failed to create 1-1 conversation with %1 ! WelcomePage - + welcome_page_title "Bienvenue" Willkommen - + welcome_page_subtitle "sur %1" auf %1 - + welcome_carousel_skip "Passer" Überspringen - + welcome_page_1_message "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." Eine <b>französische</b>,<br> <b>sichere</b> <b>Open-Source</b> Kommunikationsanwendung. - + welcome_page_2_title "Sécurisé" Gesichert - + welcome_page_2_message "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." Ihre Kommunikation ist dank <br><b>Ende-zu-Ende-Verschlüsselung</b> sicher. - + welcome_page_3_title "Open Source" Open-Source - + welcome_page_3_message "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" Eine Open-Source-Anwendung und ein <b>kostenloser Service</b> <br>seit <b>2001</b> - + next "Suivant" Weiter - + start "Commencer" Start @@ -6258,61 +6258,61 @@ Failed to create 1-1 conversation with %1 ! ZrtpAuthenticationDialog - + call_dialog_zrtp_validate_trust_title Vérification de sécurité Sicherheitsprüfung - + call_zrtp_sas_validation_skip "Passer" Überspringen - + call_dialog_zrtp_validate_trust_warning_message "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" Um die Verschlüsselung zu gewährleisten, müssen wir das Gerät Ihres Kontakts erneut authentifizieren. Tauschen Sie Ihre Codes aus: - + call_dialog_zrtp_validate_trust_message "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " Um die Verschlüsselung zu gewährleisten, müssen wir das Gerät Ihres Kontakts authentifizieren. Bitte tauschen Sie Ihre Codes aus: - + call_dialog_zrtp_validate_trust_local_code_label "Votre code :" Ihr Code : - + call_dialog_zrtp_validate_trust_remote_code_label "Code correspondant :" Code des Kontakts : - + call_dialog_zrtp_validate_trust_letters_do_not_match_text "Le code fourni ne correspond pas." Der angegebene Code stimmt nicht überein. - + call_dialog_zrtp_security_alert_message "La confidentialité de votre appel peut être compromise !" Die Vertraulichkeit Ihres Anrufs könnte gefährdet sein! - + call_dialog_zrtp_validate_trust_letters_do_not_match "Aucune correspondance" Keine Übereinstimmung - + call_action_hang_up "Raccrocher" Auflegen diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 8b31d3f84..d20d254be 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -25,13 +25,13 @@ AbstractWindow - + contact_dialog_pick_phone_number_or_sip_address_title "Choisissez un numéro ou adresse SIP" Choose a SIP number or address - + fps_counter %1 FPS @@ -188,118 +188,118 @@ AccountSettingsGeneralLayout - + manage_account_details_title "Détails" Details - + manage_account_details_subtitle Éditer les informations de votre compte. Edit your account information. - + manage_account_devices_title "Vos appareils" Your devices - + manage_account_devices_subtitle "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." The list of devices connected to your account. You can remove devices you no longer use. - + manage_account_add_picture "Ajouter une image" Add an image - + manage_account_edit_picture "Modifier l'image" Edit image - + manage_account_remove_picture "Supprimer l'image" Delete image - + sip_address SIP address - + sip_address_display_name "Nom d'affichage Display name - + sip_address_display_name_explaination "Le nom qui sera affiché à vos correspondants lors de vos échanges." The name displayed to your contacts during exchanges. - + manage_account_international_prefix Indicatif international* International code* - + manage_account_delete "Déconnecter mon compte" Disconnect my account - + manage_account_delete_message Your account will be removed from this Linphone client, but you will remain connected on your other clients - + manage_account_dialog_remove_account_title "Se déconnecter du compte ?" Log out of the account? - + manage_account_dialog_remove_account_message Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org If you wish to permanently delete your account, go to: https://sip.linphone.org - + error Erreur Error - + manage_account_device_remove "Supprimer" Delete - + manage_account_device_remove_confirm_dialog Delete %1? - + manage_account_device_last_connection "Dernière connexion:" Last login: - + device_last_updated_time_no_info "No information" No information @@ -352,126 +352,126 @@ AccountSettingsParametersLayout - + settings_title Settings - + settings_account_title Account settings - + info_popup_invalid_registrar_uri_message Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - + info_popup_invalid_outbound_proxy_message Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - + info_popup_error_title Error - + information_popup_success_title Success - + contact_editor_saved_changes_toast "Modifications sauvegardés" Changes saved - + information_popup_error_title Error - + account_settings_mwi_uri_title "URI du serveur de messagerie vocale" Voicemail server URI - + account_settings_voicemail_uri_title "URI de messagerie vocale" Voicemail URI - + account_settings_transport_title "Transport" Transport - + account_settings_registrar_uri_title Registrar URI - + account_settings_sip_proxy_url_title Outbound SIP Proxy URI - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it. - + account_settings_stun_server_url_title "Adresse du serveur STUN" STUN server address - + account_settings_enable_ice_title "Activer ICE" Enable ICE - + account_settings_avpf_title "AVPF" AVPF - + account_settings_bundle_mode_title "Mode bundle" Bundle mode - + account_settings_expire_title "Expiration (en seconde)" Expiration (in seconds) - + account_settings_conference_factory_uri_title "URI du serveur de conversations" Conference factory URI - + account_settings_audio_video_conference_factory_uri_title "URI du serveur de réunions" Video conference factory uri - + account_settings_lime_server_url_title "URL du serveur d’échange de clés de chiffrement" Lime server URL @@ -620,7 +620,7 @@ Contacts - + generic_address_picker_suggestions_list_title "Suggestions" Suggestions @@ -722,7 +722,7 @@ Quit - + mark_all_read_action Marquer tout comme lu @@ -730,36 +730,36 @@ AuthenticationDialog - + account_settings_dialog_invalid_password_title "Authentification requise" Authentication required - + account_settings_dialog_invalid_password_message La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. Login failed for account %1. You can enter your password again or check your account settings. - + password Password - + cancel "Annuler Cancel - + assistant_account_login Connexion Connection - + assistant_account_login_missing_password Veuillez saisir un mot de passe Please enter a password @@ -846,73 +846,73 @@ CallForwardSettingsLayout - + settings_call_forward_activate_title "Forward calls" Forward calls - + settings_call_forward_activate_subtitle "Enable call forwarding to voicemail or sip address" Forward calls to voicemail or a Number / SIP Address / number - + settings_call_forward_destination_choose Forward to destination Forward calls to: - - - + + + settings_call_forward_to_voicemail Voicemail - + settings_call_forward_to_sipaddress Number / SIP Address - + settings_call_forward_sipaddress_title SIP Address Number / SIP Address: - + settings_call_forward_sipaddress_placeholder John.doe - + settings_call_forward_address_cannot_be_empty A number or SIP address is mandatory - + settings_call_forward_address_timeout Unable to set call forward, request timeout - + settings_call_forward_address_progress_disabling Disabling call forward - + settings_call_forward_address_progress_enabling Enabling call forward to: - + settings_call_forward_activation_success Call forward activated to : - + settings_call_forward_deactivation_success Call forward deactivated @@ -920,25 +920,25 @@ CallHistoryLayout - + meeting_info_join_title "Rejoindre la réunion" Join meeting - + contact_call_action "Appel" Call - + contact_message_action "Message" Message - + contact_video_call_action "Appel Video" Video call @@ -947,7 +947,7 @@ CallHistoryListView - + call_name_accessible_button Call %1 Call %1 @@ -956,42 +956,42 @@ CallLayout - + meeting_event_conference_destroyed "Vous avez quitté la conférence" You have left the meeting - + call_ended_by_user "Vous avez terminé l'appel" You have ended the call - + call_ended_by_remote "Votre correspondant a terminé l'appel" Your caller has ended the call - + conference_call_empty "En attente d'autres participants…" Waiting for other participants… - + conference_share_link_title "Partager le lien" Share link - + copied Copied - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier The meeting link has been copied to the clipboard @@ -1025,49 +1025,49 @@ CallListView - + meeting "Réunion Meeting - + call "Appel" Call - + paused_call_or_meeting "%1 en pause" %1 paused - + ongoing_call_or_meeting "%1 en cours" Ongoing %1 - + transfer_call_name_accessible_name Transfer call %1 Transfer call %1 - + resume_call_name_accessible_name Resume %1 call Resume %1 call - + pause_call_name_accessible_name Pause %1 call Pause %1 call - + end_call_name_accessible_name End %1 call End %1 call @@ -1428,13 +1428,13 @@ CallStatistics - + call_stats_audio_title "Audio" Audio - + call_stats_video_title "Vidéo" Video @@ -1876,86 +1876,86 @@ CarddavSettingsLayout - + settings_contacts_carddav_title Carnet d'adresse CardDAV CardDAV address book - + settings_contacts_carddav_subtitle "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." Add a CardDAV address book to sync your Linphone contacts with a third-party address book. - + information_popup_error_title Error - + settings_contacts_carddav_popup_invalid_error "Vérifiez que toutes les informations ont été saisies." Check that all information has been entered. - + information_popup_synchronization_success_title Success - + settings_contacts_carddav_synchronization_success_message "Le carnet d'adresse CardDAV est synchronisé." The CardDAV address book is synchronized. - + settings_contacts_carddav_popup_synchronization_error_title Error - + settings_contacts_carddav_popup_synchronization_error_message "Erreur de synchronisation!" Synchronization error ! - + settings_contacts_delete_carddav_server_title "Supprimer le carnet d'adresse CardDAV ?" Delete CardDAV address book? - + sip_address_display_name Nom d'affichage Display name - + settings_contacts_carddav_server_url_title "URL du serveur" Server URL - + username Username - + password Password - + settings_contacts_carddav_realm_title Domaine d’authentification Authentication realm - + settings_contacts_carddav_use_as_default_title "Stocker ici les contacts nouvellement crées" Store newly created contacts here @@ -1964,17 +1964,17 @@ ChangeLayoutForm - + conference_layout_grid Grid - + conference_layout_active_speaker Active speaker - + conference_layout_audio_only Audio only @@ -2329,44 +2329,44 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message Find message - + info_popup_no_result_message No result found No result found - + info_popup_first_result_message First result reached First result reached - + info_popup_last_result_message Last result reached Last result reached - + chat_message_list_encrypted_header_title End to end encrypted chat End to end encrypted chat - + unencrypted_conversation_warning This conversation is not encrypted ! This conversation is not encrypted ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. @@ -2374,7 +2374,7 @@ Error Only your correspondent can decrypt them. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! @@ -2382,7 +2382,7 @@ Only your correspondent can decrypt them. may sure you don't share any sensitive information ! - + chat_message_is_writing_info %1 is writing… %1 is writing… @@ -2403,92 +2403,92 @@ Only your correspondent can decrypt them. No conversation - + chat_dialog_delete_chat_title Supprimer la conversation ? Delete conversation ? - + chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." This conversation and all its messages will be deleted. - + chat_list_title "Conversations" Conversations - + menu_mark_all_as_read "mark all as read" Mark all as read - + chat_search_in_history "Rechercher une conversation" Search for a chat - + list_filter_no_result_found "Aucun résultat…" No result… - + chat_list_empty_history "Aucune conversation dans votre historique" No conversation in history - + chat_action_start_new_chat "New chat" New conversation - + chat_start_group_chat_title "Nouveau groupe" New group - + chat_action_start_group_chat "Créer" Create - - + + information_popup_error_title Error - + information_popup_chat_creation_failed_message "La création a échoué" Creation failed - + group_chat_error_must_have_name "Un nom doit être donné au groupe A name must be set for the group - + group_call_error_not_connected "Vous n'etes pas connecté" You are not connected - + chat_creation_in_progress Creation de la conversation en cours … Chat creation pending… @@ -2734,53 +2734,53 @@ Only your correspondent can decrypt them. ContactListItem - + contact_details_remove_from_favourites "Enlever des favoris" Remove from favorites - + contact_details_add_to_favourites "Ajouter aux favoris" Add to favorites - + Partager Share - + information_popup_error_title Error - + information_popup_vcard_creation_error La création du fichier vcard a échoué VCard creation failed - + information_popup_vcard_creation_title VCard créée VCard created - + information_popup_vcard_creation_success "VCard du contact enregistrée dans %1" VCard has been saved in %1 - + contact_sharing_email_title Partage de contact Share contact - + contact_details_delete "Supprimer" Delete @@ -2804,161 +2804,161 @@ Only your correspondent can decrypt them. ContactPage - + contacts_add "Ajouter un contact" Add a contact - + contacts_list_empty "Aucun contact pour le moment" No contact at the moment - + contact_new_title "Nouveau contact" New contact - + create Create - + contact_edit_title "Modifier contact" Edit contact - + save Save - + contact_dialog_delete_title Supprimer %1 ?" Delete %1? - + contact_dialog_delete_message Ce contact sera définitivement supprimé. This contact will be permanently deleted. - + contact_deleted_toast "Contact supprimé" Contact deleted - + contact_deleted_message "%1 a été supprimé" %1 has been deleted - + contact_dialog_devices_trust_popup_title "Augmenter la confiance" Increase trust level - + contact_dialog_devices_trust_popup_message "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" To increase trust level you must call your contact's devices and validate a code.<br><br>You are about to call "%1" do you want to continue? - + popup_do_not_show_again Ne plus afficher Do not show again - + cancel Cancel - + dialog_call "Appeler" Call - + contact_dialog_devices_trust_help_title "Niveau de confiance" Trust level - + contact_dialog_devices_trust_help_message "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." Verify your contact's devices to confirm that your communications will be secure and uncompromised. When all are verified, you will reach the maximum trust level. - + dialog_ok "Ok" Ok - + bottom_navigation_contacts_label "Contacts" Contacts - + search_bar_look_for_contact_text Rechercher un contact Find contact - + list_filter_no_result_found Aucun résultat… No result… - + contact_list_empty Aucun contact pour le moment No contact at the moment - + expand_accessible_name Expand %1 Expand %1 - + shrink_accessible_name Shrink %1 Shrink %1 - + create_contact_accessible_name Create new contact Create new contact - + more_info_accessible_name More info %1 More info %1 - - + + contact_details_edit Edit ---------- @@ -2966,151 +2966,151 @@ Only your correspondent can decrypt them. Edit - + contact_call_action "Appel" Call - + contact_message_action "Message" Message - + contact_video_call_action "Appel vidéo" Video call - + contact_details_numbers_and_addresses_title "Coordonnées" Contact details - + call_adress_accessible_name Call address %1 Call address %1 - + contact_details_company_name "Société :" Company : - + contact_details_job_title "Poste :" Job : - + contact_details_medias_title "Medias" Medias - - + + contact_details_medias_subtitle "Afficher les medias partagés" Show shared media - + contact_details_trust_title "Confiance" Trust - + contact_dialog_devices_trust_title "Niveau de confiance - Appareils vérifiés" Trust Level - Verified Devices - + contact_details_no_device_found "Aucun appareil" No device - + contact_device_without_name "Appareil inconnu" Unknown device - + contact_make_call_check_device_trust "Vérifier" Verify - + verify_device_accessible_name Verify %1 device Verify %1 device - + contact_details_actions_title "Autres actions" Other actions - + contact_details_remove_from_favourites "Retirer des favoris" Remove from favorites - + contact_details_add_to_favourites "Ajouter aux favoris" Add to favorites - + contact_details_share "Partager" Share - + information_popup_error_title Error - + contact_details_share_error_mesage "La création du fichier vcard a échoué" VCard creation failed - + contact_details_share_success_title "VCard créée" VCard created - + contact_details_share_success_mesage "VCard du contact enregistrée dans %1" VCard has been saved in %1 - + contact_details_share_email_title "Partage de contact" Share contact - + contact_details_delete "Supprimer ce contact" Delete contact @@ -3212,138 +3212,138 @@ Only your correspondent can decrypt them. ConversationInfos - + one_one_infos_call "Appel" Call - + one_one_infos_unmute "Sourdine" Unmute - + one_one_infos_mute Mute - + group_infos_participants Participants (%1) - + group_infos_media_docs Medias & documents Medias & documents - + group_infos_shared_medias Shared medias Shared medias - + group_infos_shared_docs Shared documents Shared documents - + group_infos_other_actions Other actions Other actions - + group_infos_ephemerals Ephemeral messages : - + group_infos_enable_ephemerals Enable ephemeral messages - + group_infos_meeting Schedule a meeting Schedule a meeting - + group_infos_leave_room Leave chat room Leave Chat Room - + group_infos_leave_room_toast_title Leave Chat Room ? Leave Chat Room ? - + group_infos_leave_room_toast_message All the messages will be removed from the chat room. Do you want to continue ? All the messages will be removed from the chat room. Do you want to continue ? - + group_infos_delete_history Delete history Delete history - + group_infos_delete_history_toast_title Delete history ? Delete history ? - + group_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? All the messages will be removed from the chat room. Do you want to continue ? - + one_one_infos_open_contact Show contact Show contact - + one_one_infos_create_contact Create contact Create contact - + one_one_infos_ephemerals Ephemeral messages : - + one_one_infos_enable_ephemerals Enable ephemeral messages - + one_one_infos_delete_history Delete history - + one_one_infos_delete_history_toast_title Delete history ? Delete history ? - + one_one_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? All the messages will be removed from the chat room. Do you want to continue ? @@ -3361,92 +3361,92 @@ Only your correspondent can decrypt them. DebugSettingsLayout - + settings_debug_clean_logs_message "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" Debug traces will be deleted. Do you wish to continue? - + settings_debug_share_logs_message "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " Debug traces have been uploaded. How would you like to share the link? - + settings_debug_clipboard "Presse-papier" Clipboard - + settings_debug_email "E-Mail" E-Mail - + debug_settings_trace "Traces %1" %1 traces - + information_popup_email_sharing_failed "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." Email sharing failed. Please send the %1 link directly to %2. - - + + information_popup_error_title Une erreur est survenue. An error has occurred. - + settings_debug_enable_logs_title "Activer les traces de débogage" Enable debug traces - + settings_debug_enable_full_logs_title "Activer les traces de débogage intégrales" Enable full logs - + settings_debug_delete_logs_title "Supprimer les traces" Delete debug traces - + settings_debug_share_logs_title "Partager les traces" Share debug traces - + settings_debug_share_logs_loading_message "Téléversement des traces en cours …" Uploading traces… - + settings_debug_app_version_title "Version de l'application" App version - + settings_debug_sdk_version_title "Version du SDK" SDK version - + settings_debug_share_logs_error "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" Uploading traces failed. You can share trace files directly from the following directory: %1 @@ -3455,13 +3455,13 @@ Only your correspondent can decrypt them. DecoratedTextField - + textfield_error_message_cannot_be_empty "ne peut être vide" can not be empty - + textfield_error_message_unknown_format "Format non reconnu" Unknown format @@ -3470,15 +3470,15 @@ Only your correspondent can decrypt them. Dialog - - + + dialog_confirm "Confirmer" Confirm - - + + dialog_cancel "Annuler" Cancel @@ -3487,49 +3487,49 @@ Only your correspondent can decrypt them. EncryptionSettings - + call_stats_media_encryption_title "Encryption :" Encryption : - + call_stats_media_encryption Media encryption : %1 Media encryption : %1%2 - + call_stats_zrtp_cipher_algo "Algorithme de chiffrement : %1" Encryption algorithm : %1 - + call_stats_zrtp_key_agreement_algo "Algorithme d'accord de clé : %1" Key agreement algorithm: %1 - + call_stats_zrtp_hash_algo "Algorithme de hachage : %1" Hash algorithm : %1 - + call_stats_zrtp_auth_tag_algo "Algorithme d'authentification : %1" Authentication algorithm : %1 - + call_stats_zrtp_sas_algo "Algorithme SAS : %1" SAS algorithm : %1 - + call_zrtp_validation_button_label "Validation chiffrement" Encryption validation @@ -3538,42 +3538,42 @@ Only your correspondent can decrypt them. EphemeralSettings - + title Ephemeral messages - + explanations By enabling ephemeral messages in this chat, messages sent will be automatically deleted after the defined period. - + one_minute 1 minute - + one_hour 1 hour - + one_day 1 day - + one_week 1 week - + disabled Disabled - + custom Custom: @@ -3674,55 +3674,55 @@ Expiration : %1 GroupChatInfoParticipants - + group_infos_manage_participants_title "Gérer des participants" Manage participants - + group_infos_participant_is_admin Admin - + menu_see_existing_contact "Show contact" Show contact - + menu_add_address_to_contacts "Add to contacts" Add to contacts - + group_infos_give_admin_rights Give admin rights - + group_infos_remove_admin_rights Remove admin rights - + group_infos_copy_sip_address Copy SIP Address - + group_infos_remove_participant Remove participant - + group_infos_remove_participants_toast_title Remove participant ? - + group_infos_remove_participants_toast_message Participant will be removed from chat room. @@ -3752,50 +3752,50 @@ Expiration : %1 HelpPage - + help_title "Aide" Help - - + + help_about_title "À propos de %1" About %1 - + help_about_privacy_policy_title "Règles de confidentialité" Privacy Policy - + help_about_privacy_policy_subtitle Quelles informations %1 collecte et utilise What information does %1 collect and use - + help_about_version_title "Version" Version - + help_about_gpl_licence_title "Licences GPLv3" GPLv3 licences - + help_about_contribute_translations_title "Contribuer à la traduction de %1" Contribute to the translation of %1 - + help_troubleshooting_title "Dépannage" Troubleshooting @@ -3935,7 +3935,7 @@ Expiration : %1 LoadingPopup - + cancel Cancel @@ -4343,7 +4343,7 @@ Expiration : %1 ManageParticipants - + group_infos_manage_participants Participants @@ -4351,37 +4351,37 @@ Expiration : %1 MeetingForm - + meeting_schedule_meeting_label "Réunion" Meeting - + meeting_schedule_broadcast_label "Webinar" Webinar - + meeting_schedule_subject_hint "Ajouter un titre" Add a title - + meeting_schedule_description_hint "Ajouter une description" Add a description - + meeting_schedule_add_participants_title "Ajouter des participants" Add participants - + meeting_schedule_send_invitations_title "Envoyer une invitation aux participants" Send an invitation to participants @@ -4411,175 +4411,175 @@ Expiration : %1 MeetingPage - + meetings_add "Créer une réunion" Create meeting - + meetings_list_empty "Aucune réunion" No meeting - + meeting_schedule_cancel_dialog_message "Souhaitez-vous annuler et supprimer cette réunion ?" Would you like to cancel and delete this meeting? - + meeting_schedule_delete_dialog_message Souhaitez-vous supprimer cette réunion ? Would you like to delete this meeting? - + meeting_schedule_cancel_and_delete_action "Annuler et supprimer" Cancel and delete - + meeting_schedule_delete_only_action "Supprimer seulement" Delete only - + meeting_schedule_delete_action "Supprimer" Delete - + back_action Retour Back - + meetings_list_title Réunions Meetings - + meetings_search_hint "Rechercher une réunion" Find meeting - + list_filter_no_result_found "Aucun résultat…" No result… - + meetings_empty_list "Aucune réunion" No meeting - - + + meeting_schedule_title "Nouvelle réunion" New meeting - + create Create - - - - - - + + + + + + information_popup_error_title Error - - + + meeting_schedule_mandatory_field_not_filled_toast Veuillez saisir un titre et sélectionner au moins un participant Please fill the title and select at least one participant - - + + meeting_schedule_duration_error_toast "La fin de la conférence doit être plus récente que son début" The end of the conference must be more recent than its beginning - - + + meeting_schedule_creation_in_progress "Création de la réunion en cours …" Creation in progress… - + meeting_info_created_toast "Réunion planifiée avec succès" Meeting successfully created - + meeting_failed_to_schedule_toast "Échec de création de la réunion !" Failed to create meeting! - + save Save - - + + saved "Enregistré" Saved - + meeting_info_updated_toast "Réunion mise à jour" Meeting updated - + meeting_schedule_edit_in_progress "Modification de la réunion en cours…" Meeting update in progress… - + meeting_failed_to_edit_toast "Échec de la modification de la réunion !" Failed to update meeting ! - + meeting_schedule_add_participants_title "Ajouter des participants" Add participants - + meeting_schedule_add_participants_apply Apply - + group_call_participant_selected "%n participant(s) sélectionné(s)" @@ -4588,31 +4588,31 @@ Expiration : %1 - + meeting_info_delete "Supprimer la réunion" Delete meeting - + meeting_address_copied_to_clipboard_toast "Adresse de la réunion copiée" Meeting URI copied - + meeting_schedule_timezone_title "Fuseau horaire" Timezone - + meeting_info_organizer_label "Organisateur" Organizer - + meeting_info_join_title "Rejoindre la réunion" Join meeting @@ -4621,19 +4621,19 @@ Expiration : %1 MeetingsSettingsLayout - + settings_meetings_display_title "Affichage" Display - + settings_meetings_default_layout_title "Mode d’affichage par défaut" Default display mode - + settings_meetings_default_layout_subtitle "Le mode d’affichage des participants en réunions" How participants are displayed in meetings @@ -4642,7 +4642,7 @@ Expiration : %1 MessageImdnStatusInfos - + message_details_status_title Message status Message status @@ -4651,13 +4651,13 @@ Expiration : %1 MessageReactionsInfos - + message_details_reactions_title Reactions Reactions - + click_to_delete_reaction_info Click to delete Click to delete @@ -4666,13 +4666,13 @@ Expiration : %1 MessageSharedFilesInfos - + no_shared_medias No media No media - + no_shared_documents No document No document @@ -4730,13 +4730,13 @@ Expiration : %1 NetworkSettingsLayout - + settings_network_title "Réseau" Network - + settings_network_allow_ipv6 "Autoriser l'IPv6" Enable IPv6 @@ -4769,19 +4769,19 @@ Expiration : %1 NotificationReceivedCall - + call_audio_incoming "Appel entrant" Incoming call - + dialog_accept "Accepter" Accept - + dialog_deny "Refuser Decline @@ -4796,30 +4796,30 @@ Expiration : %1 New call from %1 - + new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. Voice message received! - + new_file_message File received! - + new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. Conference invitation received ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. New messages received ! - + new_message_alert_accessible_name New message on chatroom %1 New message on chatroom %1 @@ -4943,13 +4943,13 @@ Expiration : %1 ParticipantListView - + meeting_participant_is_admin_label "Admin" Admin - + meeting_add_participants_title "Ajouter des participants" Add participants @@ -4958,13 +4958,13 @@ Expiration : %1 PhoneNumberInput - + prefix_phone_number_accessible_name %1 prefix %1 prefix - + number_phone_number_accessible_name %1 number %1 number @@ -5016,7 +5016,7 @@ Expiration : %1 PresenceNoteLayout - + contact_presence_note_title Custom message @@ -5024,12 +5024,12 @@ Expiration : %1 PresenceSetCustomStatus - + contact_presence_button_set_custom_status_title Set a custom status message - + contact_presence_button_save_custom_status Save @@ -5151,37 +5151,37 @@ Expiration : %1 RegisterCheckingPage - + email "email" email - + phone_number "numéro de téléphone" phone number - + confirm_register_title "Inscription | Confirmer votre %1" Register | Confirm your %1 - + assistant_account_creation_confirmation_explanation Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous We have sent you a verification code to your %1 %2<br> Please enter it below - + assistant_account_creation_confirmation_did_not_receive_code "Vous n'avez pas reçu le code ?" Didn't receive the code? - + assistant_account_creation_confirmation_resend_code "Renvoyer un code" Resend code @@ -5475,37 +5475,37 @@ To enable them in a commercial project, please contact us. ScreencastSettings - + screencast_settings_choose_window_text "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" Please choose the screen or window you would like to share with other participants. - + screencast_settings_all_screen_label "Ecran entier" Full screen - + screencast_settings_one_window_label "Fenêtre" Window - + screencast_settings_screen "Ecran %1" Screen %1 - + stop "Stop Stop - + share "Partager" Share @@ -5529,43 +5529,43 @@ To enable them in a commercial project, please contact us. SecurityModePage - + manage_account_choose_mode_title "Choisir votre mode" Choose your mode - + manage_account_choose_mode_message "Vous pourrez changer de mode plus tard." You can change the mode later. - + manage_account_e2e_encrypted_mode_default_title "Chiffrement de bout en bout" End to end encryption - + manage_account_e2e_encrypted_mode_default_summary "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." This mode guarantees the confidentiality of all your communications. Our end-to-end encryption technology ensures maximum security for all your communications. - + manage_account_e2e_encrypted_mode_interoperable_title "Interoperable" Interoperable - + manage_account_e2e_encrypted_mode_interoperable_summary "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." This mode allows you to benefit from all the features of Linphone, while remaining interoperable with any other SIP service. - + dialog_continue "Continuer" Continue @@ -5574,13 +5574,13 @@ To enable them in a commercial project, please contact us. SecuritySettingsLayout - + settings_security_enable_vfs_title "Chiffrer tous les fichiers" Encrypt all files - + settings_security_enable_vfs_subtitle "Attention, vous ne pourrez pas revenir en arrière !" Warning: once enabled it can't be disabled! @@ -5589,42 +5589,42 @@ To enable them in a commercial project, please contact us. SelectedChatView - + chat_view_group_call_toast_message Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! This conversation is not encrypted ! - + reply_to_label Reply to %1 Reply to %1 - + shared_medias_title Shared medias Shared medias - + shared_documents_title Shared documents Shared documents - + forward_to_title Forward to… Froward to… - + conversations_title Conversations Conversations @@ -5717,13 +5717,13 @@ To enable them in a commercial project, please contact us. Sticker - + conference_participant_joining_text "rejoint…" joining… - + conference_participant_paused_text "En pause" Paused @@ -6036,32 +6036,32 @@ Failed to create 1-1 conversation with %1 ! WaitingRoom - + meeting_waiting_room_title Participer à : Join : - + meeting_waiting_room_join "Rejoindre" Join - - + + cancel Cancel Cancel - + meeting_waiting_room_joining_title "Connexion à la réunion" Connection to meeting - + meeting_waiting_room_joining_subtitle "Vous allez rejoindre la réunion dans quelques instants…" You will be joining the meeting in a few moments... @@ -6070,61 +6070,61 @@ Failed to create 1-1 conversation with %1 ! WelcomePage - + welcome_page_title "Bienvenue" Welcome - + welcome_page_subtitle "sur %1" on %1 - + welcome_carousel_skip "Passer" Skip - + welcome_page_1_message "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." A <b>secured</b>,<br> <b>open source</b> and <b>French</b> communication application. - + welcome_page_2_title "Sécurisé" Secured - + welcome_page_2_message "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." Your communications are secure thanks to <br><b>End-to-end encryption</b>. - + welcome_page_3_title "Open Source" Open Source - + welcome_page_3_message "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" An open source application and a <b>free service</b> <br>since <b>2001</b> - + next "Suivant" Next - + start "Commencer" Start @@ -6133,61 +6133,61 @@ Failed to create 1-1 conversation with %1 ! ZrtpAuthenticationDialog - + call_dialog_zrtp_validate_trust_title Vérification de sécurité Security check - + call_zrtp_sas_validation_skip "Passer" Skip - + call_dialog_zrtp_validate_trust_warning_message "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" To ensure encryption, we need to re-authenticate your contact's device. Exchange your codes: - + call_dialog_zrtp_validate_trust_message "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " To ensure encryption, we need to authenticate your contact's device. Please exchange your codes: - + call_dialog_zrtp_validate_trust_local_code_label "Votre code :" Your code : - + call_dialog_zrtp_validate_trust_remote_code_label "Code correspondant :" Corresponding code : - + call_dialog_zrtp_validate_trust_letters_do_not_match_text "Le code fourni ne correspond pas." The provided code does not match. - + call_dialog_zrtp_security_alert_message "La confidentialité de votre appel peut être compromise !" The confidentiality of your call may be compromised! - + call_dialog_zrtp_validate_trust_letters_do_not_match "Aucune correspondance" No match - + call_action_hang_up "Raccrocher" Hang up diff --git a/Linphone/data/languages/es.ts b/Linphone/data/languages/es.ts new file mode 100644 index 000000000..abe506b67 --- /dev/null +++ b/Linphone/data/languages/es.ts @@ -0,0 +1,7432 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + + + + + fps_counter + + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + + + + + drawer_menu_account_connection_status_refreshing + + + + + drawer_menu_account_connection_status_progress + + + + + drawer_menu_account_connection_status_failed + + + + + drawer_menu_account_connection_status_cleared + + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + + + + + AccountListView + + + add_an_account + Add an account + + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + + + + + assistant_account_login_forbidden_error + "Username and password do not match" + + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + + + + + assistant_account_add_error + "Unable to add account." + + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + + + + + manage_account_devices_title + "Vos appareils" + + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + + + + + manage_account_add_picture + "Ajouter une image" + + + + + manage_account_edit_picture + "Modifier l'image" + + + + + manage_account_remove_picture + "Supprimer l'image" + + + + + sip_address + + + + + sip_address_display_name + "Nom d'affichage + + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + + + + + manage_account_international_prefix + Indicatif international* + + + + + manage_account_delete + "Déconnecter mon compte" + + + + + manage_account_delete_message + + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + + + + + error + Erreur + + + + + manage_account_device_remove + "Supprimer" + + + + + manage_account_device_remove_confirm_dialog + + + + + manage_account_device_last_connection + "Dernière connexion:" + + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + + + + + settings_general_title + "Général" + + + + + settings_account_title + "Paramètres de compte" + + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + + + + + AccountSettingsParametersLayout + + + settings_title + + + + + settings_account_title + + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + + + + + information_popup_success_title + + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + + + + + information_popup_error_title + + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + + + + + account_settings_transport_title + "Transport" + + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + + + + + account_settings_enable_ice_title + "Activer ICE" + + + + + account_settings_avpf_title + "AVPF" + + + + + account_settings_bundle_mode_title + "Mode bundle" + + + + + account_settings_expire_title + "Expiration (en seconde)" + + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + + + + + contact_list_empty + + + + + AdvancedSettingsLayout + + + settings_system_title + System + + + + + settings_remote_provisioning_title + Remote provisioning + + + + + settings_security_title + Security / Encryption + + + + + settings_advanced_audio_codecs_title + Audio codecs + + + + + settings_advanced_video_codecs_title + Video codecs + + + + + settings_advanced_auto_start_title + Auto start %1 + + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + + + + + information_popup_error_title + Invalid URL format + + + + + settings_advanced_invalid_url_message + + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + + + + + settings_advanced_hide_fps_title + + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + + + + + generic_address_picker_contacts_list_title + 'Contacts' + + + + + generic_address_picker_suggestions_list_title + "Suggestions" + + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + + + + + + info_popup_error_title + Error + + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + + + + + command_line_arg_order + "Send an order to the application towards a command line" + + + + + command_line_option_show_help + + + + + command_line_option_show_app_version + + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + + + + + command_line_option_minimized + + + + + command_line_option_log_to_stdout + + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + + + + + hide_action + "Cacher" "Afficher" + + + + + show_action + + + + + quit_action + "Quitter" + + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + + + + + password + + + + + cancel + "Annuler + + + + + assistant_account_login + Connexion + + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + + + + + media_encryption_dtls + DTLS + + + + + media_encryption_none + None + + + + + media_encryption_srtp + SRTP + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel Video" + + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + + + + + call_ended_by_user + "Vous avez terminé l'appel" + + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + + + + + conference_call_empty + "En attente d'autres participants…" + + + + + conference_share_link_title + "Partager le lien" + + + + + copied + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + + + + + call + "Appel" + + + + + paused_call_or_meeting + "%1 en pause" + + + + + ongoing_call_or_meeting + "%1 en cours" + + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + + + + + call_error_user_not_found_toast + "User was not found" + + + + + call_error_user_busy_toast + "User is busy" + + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + + + + + call_error_io_error_toast + "Unavailable service or network error" + + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + + + + + call_history_empty_title + "Historique d'appel vide" + + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + + + + + call_history_call_list_title + "Appels" + + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + history_list_empty_history + "Aucun appel dans votre historique" + + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + + + + + call_start_group_call_title + "Appel de groupe" + + + + + call_action_start_group_call + "Lancer" + + + + + + + information_popup_error_title + + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + menu_copy_sip_address + "Copier l'adresse SIP" + + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + + + + + notification_missed_call_title + "Appel manqué" + + + + + call_outgoing + "Appel sortant" + + + + + call_audio_incoming + "Appel entrant" + + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + + + + + settings_call_enable_tones_title + Tonalités + + + + + settings_call_enable_tones_subtitle + Activer les tonalités + + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + + + + + call_stats_video_title + "Vidéo" + + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + + + + + + information_popup_error_title + + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + + + + + call_can_be_trusted_toast + "Appareil authentifié" + + + + + call_dir + + + + + call_ended + Appel terminé + + + + + conference_paused + Meeting paused + + + + + call_paused + Call paused + + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + + + + + call_zrtp_sas_validation_required + Vérification nécessaire + + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + + + + + call_not_encrypted + "Appel non chiffré" + + + + + + call_waiting_for_encryption_info + Waiting for encryption + + + + + call_paused_by_remote + Call paused by remote + + + + + conference_user_is_recording + "You are recording the meeting" + + + + + call_user_is_recording + "You are recording the call" + + + + + conference_remote_is_recording + "Someone is recording the meeting" + + + + + call_remote_recording + "%1 is recording the call" + + + + + call_stop_recording + "Stop recording" + + + + + add + + + + + call_transfer_current_call_title + "Transférer %1 à…" + + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + + + + + call_action_start_new_call + "Nouvel appel" + + + + + + call_action_show_dialer + "Pavé numérique" + + + + + call_action_change_layout + "Modifier la disposition" + + + + + call_action_go_to_calls_list + "Liste d'appel" + + + + + Merger tous les appels + call_action_merge_calls + + + + + + call_action_go_to_settings + "Paramètres" + + + + + conference_action_screen_sharing + "Partage de votre écran" + + + + + conference_share_link_title + Partager le lien de la réunion + + + + + copied + Copié + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + + + conference_participants_list_title + "Participants (%1)" + + + + + + group_call_participant_selected + + + + + + + + meeting_schedule_add_participants_title + + + + + call_encryption_title + Chiffrement + + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + + + + + stop_recording_accessible_name + Stop recording + + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + + + + + + call_action_end_call + "Terminer l'appel" + + + + + + call_action_resume_call + "Reprendre l'appel" + + + + + + call_action_pause_call + "Mettre l'appel en pause" + + + + + + call_action_transfer_call + "Transférer l'appel" + + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + + + + + + call_activate_video_hint + + + + + + call_activate_microphone + "Activer le micro" + + + + + + call_deactivate_microphone + "Désactiver le micro" + + + + + + call_share_screen_hint + Partager l'écran… + + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + + + + + + call_send_reaction_hint + "Envoyer une réaction" + + + + + + call_manage_participants_hint + "Gérer les participants" + + + + + + call_more_options_hint + "Plus d'options…" + + + + + call_action_change_conference_layout + "Modifier la disposition" + + + + + call_action_full_screen + "Mode Plein écran" + + + + + call_action_stop_recording + "Terminer l'enregistrement" + + + + + call_action_record + "Enregistrer l'appel" + + + + + call_activate_speaker_hint + "Activer le son" + + + + + call_deactivate_speaker_hint + "Désactiver le son" + + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + + + + + information_popup_error_title + + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + + + + + information_popup_synchronization_success_title + + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + + + + + settings_contacts_carddav_popup_synchronization_error_title + + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + + + + + sip_address_display_name + Nom d'affichage + + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + + + + + username + + + + + password + + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + + + + + ChangeLayoutForm + + + conference_layout_grid + + + + + conference_layout_active_speaker + + + + + conference_layout_audio_only + + + + + ChatAudioContent + + + + information_popup_error_title + Error + + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + + + + + ChatMessageContentCore + + + popup_error_title + Error + + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + + + + + ics_bubble_participants + %n participant(s) + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + + + + + + + information_popup_error_title + + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + + + + + fetch_config_function_description + + + + + call_function_description + + + + + bye_function_description + + + + + accept_function_description + + + + + decline_function_description + + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + + + + + Contact + + + information_popup_error_title + Erreur + + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + + + + + save + "Enregistrer + + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + + + + + contact_editor_add_image_label + "Ajouter une image" + + + + + contact_details_edit + "Modifier" + + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + + + + + + contact_editor_last_name + "Nom" + + + + + + contact_editor_company + "Entreprise" + + + + + + contact_editor_job_title + "Fonction" + + + + + + sip_address + + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + Partager + + + + + information_popup_error_title + + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + + + + + information_popup_vcard_creation_title + VCard créée + + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + + + + + contact_sharing_email_title + Partage de contact + + + + + contact_details_delete + "Supprimer" + + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + + + + + contacts_list_empty + "Aucun contact pour le moment" + + + + + contact_new_title + "Nouveau contact" + + + + + create + + + + + contact_edit_title + "Modifier contact" + + + + + save + + + + + contact_dialog_delete_title + Supprimer %1 ?" + + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + + + + + contact_deleted_toast + "Contact supprimé" + + + + + contact_deleted_message + "%1 a été supprimé" + + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + + + + + popup_do_not_show_again + Ne plus afficher + + + + + cancel + + + + + dialog_call + "Appeler" + + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + + + + + dialog_ok + "Ok" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + search_bar_look_for_contact_text + Rechercher un contact + + + + + list_filter_no_result_found + Aucun résultat… + + + + + contact_list_empty + Aucun contact pour le moment + + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel vidéo" + + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + + + + + contact_details_job_title + "Poste :" + + + + + contact_details_medias_title + "Medias" + + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + + + + + contact_details_trust_title + "Confiance" + + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + + + + + contact_details_no_device_found + "Aucun appareil" + + + + + contact_device_without_name + "Appareil inconnu" + + + + + contact_make_call_check_device_trust + "Vérifier" + + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + + + + + contact_details_remove_from_favourites + "Retirer des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + contact_details_share + "Partager" + + + + + information_popup_error_title + + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + + + + + contact_details_share_success_title + "VCard créée" + + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + + + + + contact_details_share_email_title + "Partage de contact" + + + + + contact_details_delete + "Supprimer ce contact" + + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + + + + + settings_contacts_carddav_title + + + + + settings_contacts_carddav_subtitle + + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + add + "Ajouter" + + + + + ConversationInfos + + + one_one_infos_call + "Appel" + + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + + + + + settings_debug_clipboard + "Presse-papier" + + + + + settings_debug_email + "E-Mail" + + + + + debug_settings_trace + "Traces %1" + + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + + + + + + information_popup_error_title + Une erreur est survenue. + + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + + + + + settings_debug_delete_logs_title + "Supprimer les traces" + + + + + settings_debug_share_logs_title + "Partager les traces" + + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + + + + + settings_debug_app_version_title + "Version de l'application" + + + + + settings_debug_sdk_version_title + "Version du SDK" + + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + + + + + textfield_error_message_unknown_format + "Format non reconnu" + + + + + Dialog + + + + dialog_confirm + "Confirmer" + + + + + + dialog_cancel + "Annuler" + + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + + + + + call_stats_media_encryption + Media encryption : %1 + + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + + + + + call_zrtp_validation_button_label + "Validation chiffrement" + + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + + + + + + + device_id + "Téléphone" + + + + + information_popup_error_title + + + + + information_popup_invalid_address_message + "Adresse invalide" + + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + + + + + group_infos_participant_is_admin + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + + + + + required + "Requis" + + + + + HelpPage + + + help_title + "Aide" + + + + + + help_about_title + "À propos de %1" + + + + + help_about_privacy_policy_title + "Règles de confidentialité" + + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + + + + + help_about_version_title + "Version" + + + + + help_about_gpl_licence_title + "Licences GPLv3" + + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + + + + + help_troubleshooting_title + "Dépannage" + + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + + + + + settings_contacts_ldap_subtitle + + + + + information_popup_success_title + + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + + + + + information_popup_error_title + + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + + + + + settings_contacts_ldap_password_title + "Mot de passe" + + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + + + + + settings_contacts_ldap_search_filter_title + "Filtre" + + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + + + + + settings_contacts_ldap_debug_title + "Débogage" + + + + + LoadingPopup + + + cancel + + + + + LoginForm + + + + username + Nom d'utilisateur : username + + + + + + password + Mot de passe + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + + + + + assistant_forgotten_password + "Mot de passe oublié ?" + + + + + LoginLayout + + + + help_about_title + À propos de %1 + + + + + help_about_privacy_policy_title + "Politique de confidentialité" + + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + + + + + help_about_version_title + "Version" + + + + + help_about_licence_title + "Licence" + + + + + help_about_copyright_title + "Copyright + + + + + close + "Fermer" + + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + + + + + assistant_no_account_yet + "Pas encore de compte ?" + + + + + assistant_account_register + "S'inscrire" + + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + + + + + assistant_login_remote_provisioning + "Configuration distante" + + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + + + + + cancel + + + + + validate + "Valider" + + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + + + + + default_account_connection_state_error_toast + + + + + MagicSearchList + + + device_id + + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + + + + + do_not_disturb_accessible_name + "Do not disturb" + + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + + + + + information_popup_error_title + + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + + + + + settings_title + + + + + recordings_title + "Enregistrements" + + + + + help_title + "Aide" + + + + + help_quit_title + "Quitter l'application" + + + + + quit_app_question + "Quitter %1 ?" + + + + + drawer_menu_add_account + "Ajouter un compte" + + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + + + + + interoperable + interopérable + + + + + call_transfer_successful_toast_title + "Appel transféré" + + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + + + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + + + + + assistant_register_error_title + "Erreur lors de la création" + + + + + assistant_register_success_title + "Compte créé" + + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + + + + + assistant_register_error_code + "Erreur dans le code de validation" + + + + + information_popup_error_title + + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + + + + + meeting_schedule_broadcast_label + "Webinar" + + + + + meeting_schedule_subject_hint + "Ajouter un titre" + + + + + meeting_schedule_description_hint + "Ajouter une description" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + MeetingPage + + + meetings_add + "Créer une réunion" + + + + + meetings_list_empty + "Aucune réunion" + + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + + + + + meeting_schedule_delete_action + "Supprimer" + + + + + back_action + Retour + + + + + meetings_list_title + Réunions + + + + + meetings_search_hint + "Rechercher une réunion" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + meetings_empty_list + "Aucune réunion" + + + + + + meeting_schedule_title + "Nouvelle réunion" + + + + + create + + + + + + + + + + information_popup_error_title + + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + + + + + save + + + + + + saved + "Enregistré" + + + + + meeting_info_updated_toast + "Réunion mise à jour" + + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + + + + + meeting_schedule_timezone_title + "Fuseau horaire" + + + + + meeting_info_organizer_label + "Organisateur" + + + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + + + + + + multimedia_settings_camera_title + "Caméra" + + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + + + + + call_start_group_call_title + Appel de groupe + + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + + + + + dialog_accept + "Accepter" + + + + + dialog_deny + "Refuser + + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + + + + + oidc_authentication_granted_message + Authentication granted + + + + + oidc_authentication_not_authenticated_message + Not authenticated + + + + + oidc_authentication_refresh_message + Refreshing token + + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + + + + + oidc_authentication_network_error + Network error + + + + + oidc_authentication_server_error + Server error + + + + + oidc_authentication_token_not_found_error + OAuth token not found + + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + + + + + oidc_authentication_refresh_token_message + Refreshing access token + + + + + oidc_authentication_request_authorization_message + Requesting authorization + + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + + + + + meeting_add_participants_title + "Ajouter des participants" + + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + + + + + contact_presence_button_delete_custom_status + + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + + + + + QObject + + + media_encryption_dtls + + + + + media_encryption_none + + + + + media_encryption_srtp + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + + + + + outgoing + "Sortant" + + + + + conference_layout_active_speaker + "Participant actif" + + + + + conference_layout_grid + "Mosaïque" + + + + + conference_layout_audio_only + "Audio uniquement" + + + + + RegisterCheckingPage + + + email + "email" + + + + + phone_number + "numéro de téléphone" + + + + + confirm_register_title + "Inscription | Confirmer votre %1" + + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + + + + + assistant_already_have_an_account + + + + + assistant_account_login + + + + + assistant_account_register_with_phone_number + + + + + assistant_account_register_with_email + + + + + + username + + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + + + + + + + phone_number + "Numéro de téléphone" + + + + + + email + + + + + + password + + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + + + + + assistant_account_create + "Créer" + + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + + + + + assistant_no_account_yet + Pas encore de compte ? + + + + + assistant_account_register + S'inscrire + + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + + + + + + username + "Nom d'utilisateur" + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + + + + + + sip_address_domain + "Domaine" + + + + + + sip_address_display_name + Nom d'affichage + + + + + + transport + "Transport" + + + + + + assistant_account_login + + + + + assistant_account_login_missing_username + + + + + assistant_account_login_missing_password + + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + + + + + login_advanced_parameters_label + Advanced parameters + + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + + + + + screencast_settings_all_screen_label + "Ecran entier" + + + + + screencast_settings_one_window_label + "Fenêtre" + + + + + screencast_settings_screen + "Ecran %1" + + + + + stop + "Stop + + + + + share + "Partager" + + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + + + + + dialog_continue + "Continuer" + + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + + + + + settings_calls_title + "Appels" + + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + + + + + settings_contacts_title + "Contacts" + + + + + settings_meetings_title + "Réunions" + + + + + settings_network_title + "Affichage" "Security" "Réseau" + + + + + settings_advanced_title + "Paramètres avancés" + + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + + + + + conference_participant_paused_text + "En pause" + + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + + + + + group_call_error_no_account + + + + + group_call_error_participants_invite + + + + + group_call_error_creation + + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + nMinute + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + nDay + + + + + + + + nWeek + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + + + + + contact_presence_status_do_not_disturb + + + + + contact_presence_status_offline + + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + + + + + information_popup_group_call_not_created_message + + + + + number_of_years + %n an(s) + + + + + + + + number_of_month + "%n mois" + + + + + + + + number_of_weeks + %n semaine(s) + + + + + + + + number_of_days + %n jour(s) + + + + + + + + today + "Aujourd'hui" + + + + + yesterday + "Hier + + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + + + + + meeting_waiting_room_join + "Rejoindre" + + + + + + cancel + Cancel + + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + + + + + welcome_page_subtitle + "sur %1" + + + + + welcome_carousel_skip + "Passer" + + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + + + + + welcome_page_2_title + "Sécurisé" + + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + + + + + welcome_page_3_title + "Open Source" + + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + + + + + next + "Suivant" + + + + + start + "Commencer" + + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + + + + + call_zrtp_sas_validation_skip + "Passer" + + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + + + + + call_action_hang_up + "Raccrocher" + + + + + country + + + Afghanistan + + + + + Albania + + + + + Algeria + + + + + AmericanSamoa + + + + + Andorra + + + + + Angola + + + + + Anguilla + + + + + AntiguaAndBarbuda + + + + + Argentina + + + + + Armenia + + + + + Aruba + + + + + Australia + + + + + Austria + + + + + Azerbaijan + + + + + Bahamas + + + + + Bahrain + + + + + Bangladesh + + + + + Barbados + + + + + Belarus + + + + + Belgium + + + + + Belize + + + + + Benin + + + + + Bermuda + + + + + Bhutan + + + + + Bolivia + + + + + BosniaAndHerzegowina + + + + + Botswana + + + + + Brazil + + + + + Brunei + + + + + Bulgaria + + + + + BurkinaFaso + + + + + Burundi + + + + + Cambodia + + + + + Cameroon + + + + + Canada + + + + + CapeVerde + + + + + CaymanIslands + + + + + CentralAfricanRepublic + + + + + Chad + + + + + Chile + + + + + China + + + + + Colombia + + + + + Comoros + + + + + PeoplesRepublicOfCongo + + + + + CookIslands + + + + + CostaRica + + + + + IvoryCoast + + + + + Croatia + + + + + Cuba + + + + + Cyprus + + + + + CzechRepublic + + + + + Denmark + + + + + Djibouti + + + + + Dominica + + + + + DominicanRepublic + + + + + Ecuador + + + + + Egypt + + + + + ElSalvador + + + + + EquatorialGuinea + + + + + Eritrea + + + + + Estonia + + + + + Ethiopia + + + + + FalklandIslands + + + + + FaroeIslands + + + + + Fiji + + + + + Finland + + + + + France + + + + + FrenchGuiana + + + + + FrenchPolynesia + + + + + Gabon + + + + + Gambia + + + + + Georgia + + + + + Germany + + + + + Ghana + + + + + Gibraltar + + + + + Greece + + + + + Greenland + + + + + Grenada + + + + + Guadeloupe + + + + + Guam + + + + + Guatemala + + + + + Guinea + + + + + GuineaBissau + + + + + Guyana + + + + + Haiti + + + + + Honduras + + + + + DemocraticRepublicOfCongo + + + + + HongKong + + + + + Hungary + + + + + Iceland + + + + + India + + + + + Indonesia + + + + + Iran + + + + + Iraq + + + + + Ireland + + + + + Israel + + + + + Italy + + + + + Jamaica + + + + + Japan + + + + + Jordan + + + + + Kazakhstan + + + + + Kenya + + + + + Kiribati + + + + + DemocraticRepublicOfKorea + + + + + RepublicOfKorea + + + + + Kuwait + + + + + Kyrgyzstan + + + + + Laos + + + + + Latvia + + + + + Lebanon + + + + + Lesotho + + + + + Liberia + + + + + Libya + + + + + Liechtenstein + + + + + Lithuania + + + + + Luxembourg + + + + + Macau + + + + + Macedonia + + + + + Madagascar + + + + + Malawi + + + + + Malaysia + + + + + Maldives + + + + + Mali + + + + + Malta + + + + + MarshallIslands + + + + + Martinique + + + + + Mauritania + + + + + Mauritius + + + + + Mayotte + + + + + Mexico + + + + + Micronesia + + + + + Moldova + + + + + Monaco + + + + + Mongolia + + + + + Montenegro + + + + + Montserrat + + + + + Morocco + + + + + Mozambique + + + + + Myanmar + + + + + Namibia + + + + + NauruCountry + + + + + Nepal + + + + + Netherlands + + + + + NewCaledonia + + + + + NewZealand + + + + + Nicaragua + + + + + Niger + + + + + Nigeria + + + + + Niue + + + + + NorfolkIsland + + + + + NorthernMarianaIslands + + + + + Norway + + + + + Oman + + + + + Pakistan + + + + + Palau + + + + + PalestinianTerritories + + + + + Panama + + + + + PapuaNewGuinea + + + + + Paraguay + + + + + Peru + + + + + Philippines + + + + + Poland + + + + + Portugal + + + + + PuertoRico + + + + + Qatar + + + + + Reunion + + + + + Romania + + + + + RussianFederation + + + + + Rwanda + + + + + SaintHelena + + + + + SaintKittsAndNevis + + + + + SaintLucia + + + + + SaintPierreAndMiquelon + + + + + SaintVincentAndTheGrenadines + + + + + Samoa + + + + + SanMarino + + + + + SaoTomeAndPrincipe + + + + + SaudiArabia + + + + + Senegal + + + + + Serbia + + + + + Seychelles + + + + + SierraLeone + + + + + Singapore + + + + + Slovakia + + + + + Slovenia + + + + + SolomonIslands + + + + + Somalia + + + + + SouthAfrica + + + + + Spain + + + + + SriLanka + + + + + Sudan + + + + + Suriname + + + + + Swaziland + + + + + Sweden + + + + + Switzerland + + + + + Syria + + + + + Taiwan + + + + + Tajikistan + + + + + Tanzania + + + + + Thailand + + + + + Togo + + + + + Tokelau + + + + + Tonga + + + + + TrinidadAndTobago + + + + + Tunisia + + + + + Turkey + + + + + Turkmenistan + + + + + TurksAndCaicosIslands + + + + + Tuvalu + + + + + Uganda + + + + + Ukraine + + + + + UnitedArabEmirates + + + + + UnitedKingdom + + + + + UnitedStates + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Vietnam + + + + + WallisAndFutunaIslands + + + + + Yemen + + + + + Zambia + + + + + Zimbabwe + + + + + utils + + + formatYears + '%1 year' + + + + + + + + formatMonths + '%1 month' + + + + + + + + formatWeeks + '%1 week' + + + + + + + + formatDays + '%1 day' + + + + + + + + formatHours + '%1 hour' + + + + + + + + formatMinutes + '%1 minute' + + + + + + + + formatSeconds + '%1 second' + + + + + + + + codec_install + "Installation de codec" + + + + + download_codec + "Télécharger le codec %1 (%2) ?" + + + + + information_popup_success_title + "Succès" + + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + + + + + + + information_popup_error_title + + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + + + + + okButton + + + + diff --git a/Linphone/data/languages/eu.ts b/Linphone/data/languages/eu.ts new file mode 100644 index 000000000..4b04d8856 --- /dev/null +++ b/Linphone/data/languages/eu.ts @@ -0,0 +1,7436 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + Gorde + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + Aukeratu SIP zenbakia edo helbidea + + + + fps_counter + %1 FPS + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + Konektatuta + + + + drawer_menu_account_connection_status_refreshing + Freskatzen… + + + + drawer_menu_account_connection_status_progress + Konektatzen… + + + + drawer_menu_account_connection_status_failed + Errorea + + + + drawer_menu_account_connection_status_cleared + Desgaituta + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + Online eta eskuragarri zaude. + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + Konexio errorea, konprobatu zure ezarpenak. + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + Kontua desgaituta, ez dituzu dei edo mezuak jasoko. + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + Errorea gailak lortzerakoan + + + + AccountListView + + + add_an_account + Add an account + Gehitu kontua + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + Kontua iada konektatuta dago + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + Ezin izan da proxy helbidea sortu. Mesedez egiaztatu domeinu izena. + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + Ezin izan da `%1` helbidea konfiguratu. + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + Ezin izan dira kontuko ezarpenak konfiguratu. + + + + assistant_account_login_forbidden_error + "Username and password do not match" + Erabiltzaile eta pasahitza ez datoz bat + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + Errorea konektatzerakoan + + + + assistant_account_add_error + "Unable to add account." + Ezin izan da kontua gehitu. + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + Xehetasunak + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + Editatu zure kontuko informazioa. + + + + manage_account_devices_title + "Vos appareils" + Zure gailuak + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + Zure kontura lotutako gailu zerrenda. Erabiltzen ez dituzun gailuak ezabatu ditzakezu. + + + + manage_account_add_picture + "Ajouter une image" + Gehitu irudia + + + + manage_account_edit_picture + "Modifier l'image" + Editatu irudia + + + + manage_account_remove_picture + "Supprimer l'image" + Ezabatu irudia + + + + sip_address + SIP helbidea + + + + sip_address_display_name + "Nom d'affichage + Erakusteko izena + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + Trukeetan zure kontaktuei erakutsiko zaien izena. + + + + manage_account_international_prefix + Indicatif international* + Kode internazionala* + + + + manage_account_delete + "Déconnecter mon compte" + Deskonektatu nire kontua + + + + manage_account_delete_message + Zure kontua Linphone bezero honetatik kenduko da, baina beste bezero batzuekin konektatuta jarraituko duzu + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + Deskonektatu kontua? + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + Zure kontua betiko ezabatu nahi baduzu, jo hona: https://sip.linphone.org + + + + error + Erreur + Errorea + + + + manage_account_device_remove + "Supprimer" + Ezabatu + + + + manage_account_device_remove_confirm_dialog + Ezabatu %1? + + + + manage_account_device_last_connection + "Dernière connexion:" + Azken konexioa: + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + Nire kontua + + + + settings_general_title + "Général" + Orokorra + + + + settings_account_title + "Paramètres de compte" + Kontuaren ezarpenak + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + Gorde gabeko aldaketak + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + Gorde gabeko aldaketak dituzu. Orrialde honetatik irteten bazara, egindako aldaketak galdu egingo dira. Aldaketak gorde nahi dituzu jarraitu aurretik? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + Ez gorde + + + + contact_editor_dialog_abort_confirmation_save + Gorde + + + + AccountSettingsParametersLayout + + + settings_title + Ezarpenak + + + + settings_account_title + Kontuaren ezarpenak + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + Errorea + + + + information_popup_success_title + Ondo joan da + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + Aldaketak gordeta + + + + information_popup_error_title + Errorea + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + Ahots-postontziaren zerbitzariaren URIa + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + Ahots-postontziaren URIa + + + + account_settings_transport_title + "Transport" + Garraiatu + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + STUN zerbitzariaren helbidea + + + + account_settings_enable_ice_title + "Activer ICE" + Aktibatu ICE + + + + account_settings_avpf_title + "AVPF" + AVPF + + + + account_settings_bundle_mode_title + "Mode bundle" + Bundle modua + + + + account_settings_expire_title + "Expiration (en seconde)" + Iraungipena (segundotan) + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + Konferentzia fabrikako URIa + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + Bideo-konferentzia fabrikako URI + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + Lime zerbitzariko URLa + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + Bilatu kontaktuak + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + Ez da emaitzarik aurkitu… + + + + contact_list_empty + Ez dago kontakturik momentuz + + + + AdvancedSettingsLayout + + + settings_system_title + System + Sistema + + + + settings_remote_provisioning_title + Remote provisioning + Urruneko hornikuntza + + + + settings_security_title + Security / Encryption + Segurtasuna / Enkriptazioa + + + + settings_advanced_audio_codecs_title + Audio codecs + Audio kodekak + + + + settings_advanced_video_codecs_title + Video codecs + Bideo kodekak + + + + settings_advanced_auto_start_title + Auto start %1 + Hasi automatikoki %1 + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + Urruneko hornikuntzaren URLa + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + Deskargatu eta aplikatu + + + + information_popup_error_title + Invalid URL format + Errorea + + + + settings_advanced_invalid_url_message + Url formatu baliogabea + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + Media zifratzea + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + Nahitaezko multimedia enkriptazioa + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + Sortu muturretik muturrerako enkriptatutako bilerak eta talde-deiak + + + + settings_advanced_hide_fps_title + Ezkutatu FPS + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + Gogokoak + + + + generic_address_picker_contacts_list_title + 'Contacts' + Kontaktuak + + + + generic_address_picker_suggestions_list_title + "Suggestions" + Proposamenak + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + Helbide honetatik urruneko hornidura deskargatu eta aplikatu nahi duzu? + + + + + info_popup_error_title + Error + Errorea + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + Urruneko hornidurak huts egin du: %1 + + + + configuration_error_detail + not reachable + ez dago eskuragarri + + + + application_description + "A free and open source SIP video-phone." + Doako eta kode irekiko SIP bideo-telefono bat. + + + + command_line_arg_order + "Send an order to the application towards a command line" + Bidali eskaera bat aplikaziora komando-lerro bidez + + + + command_line_option_show_help + Erakutsi laguntza hau + + + + command_line_option_show_app_version + Erakutsi app bertsioa + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + Zehaztu zein linephone konfigurazio-fitxategi eskuratu nahi duzun. Uneko konfigurazioarekin bateratuko da. + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + URL, path edo fitxategia + + + + command_line_option_minimized + Txikitu + + + + command_line_option_log_to_stdout + Exekutatzen ari den bitartean, arazketa-informazio batzuk irteera estandarrean erregistratu + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + Inprimatu soilik aplikazioko log-ak + + + + hide_action + "Cacher" "Afficher" + Ezkutatu + + + + show_action + Erakutsi + + + + quit_action + "Quitter" + Itxi + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + Autentikatzea beharrezkoa + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + %1 kontuaren saioa hasteak huts egin du. Pasahitza berriro sartu edo kontuaren ezarpenak egiaztatu ditzakezu. + + + + password + Pasahitza + + + + cancel + "Annuler + Utzi + + + + assistant_account_login + Connexion + Konexioa + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + Mesedez idatzi pasahitza + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + Grabazioa bukatuta + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + Grabazioa %1 fitxategian gorde da + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + Kodeka: %1 / %2 kHz + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + Banda zabalera: %1 %2 kbits/s %3 %4 kbits/s + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + Galera tasa: %1% %2% + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + Jitter buffer: %1 ms + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + Bideo bereizmena: %1 %2 %3 %4 + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + FPS : %1 %2 %3 %4 + + + + media_encryption_dtls + DTLS + DTLS + + + + media_encryption_none + None + None + + + + media_encryption_srtp + SRTP + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + ZRTP Post quantum-a + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + Batu bilerara + + + + contact_call_action + "Appel" + Deitu + + + + contact_message_action + "Message" + Mezua + + + + contact_video_call_action + "Appel Video" + Bideo deia + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + Bilera utzi duzu + + + + call_ended_by_user + "Vous avez terminé l'appel" + Deia moztu duzu + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + Deitzaileak deia amaitu du + + + + conference_call_empty + "En attente d'autres participants…" + Beste partaideen zain… + + + + conference_share_link_title + "Partager le lien" + Partekatu esteka + + + + copied + Kopiatuta + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + Bilerako esteka arbelera kopiatu da + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + Errorea + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + Bilera + + + + call + "Appel" + Deitu + + + + paused_call_or_meeting + "%1 en pause" + %1 pausatua + + + + ongoing_call_or_meeting + "%1 en cours" + Martxan %1 + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + Erabiltzaileak deia ukatu du + + + + call_error_user_not_found_toast + "User was not found" + Erabiltzailea ez da aurkitu + + + + call_error_user_busy_toast + "User is busy" + Erabiltzailea okupatuta dago + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + Erabiltzaileak ezin du zure deia jaso + + + + call_error_io_error_toast + "Unavailable service or network error" + Zerbitzuz kanpo edo sareko errorea + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + Zerbitzariaren denbora-muga + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + Dei berria + + + + call_history_empty_title + "Historique d'appel vide" + Hustu deien historiala + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + Ezabatu deien historiala? + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + Deien historiala betiko ezabatuko da. + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + Ezabatu deien historiala? + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + Erabiltzaile honekin egindako deien historia betirako ezabatuko da. + + + + call_history_call_list_title + "Appels" + Deiak + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + Ezabatu historiala + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + Bilatu deia + + + + list_filter_no_result_found + "Aucun résultat…" + Ez da emaitzarik aurkitu… + + + + history_list_empty_history + "Aucun appel dans votre historique" + Ez dago deirik historialean + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + Dei berria + + + + call_start_group_call_title + "Appel de groupe" + Talde deia + + + + call_action_start_group_call + "Lancer" + Hasi + + + + + + information_popup_error_title + Errorea + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + Izen bat eman behar da deirako + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Ez zaude konektatuta + + + + menu_see_existing_contact + "Show contact" + Erakutsi kontaktua + + + + menu_add_address_to_contacts + "Add to contacts" + Gehitu kontaktuetara + + + + menu_copy_sip_address + "Copier l'adresse SIP" + Kopiatu SIP helbidea + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + SIP helbidea kopiatuta + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + Helbidea arbelera kopiatu da + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + Errorea helbidea kopiatzerakoan + + + + notification_missed_call_title + "Appel manqué" + Dei galdua + + + + call_outgoing + "Appel sortant" + Irteerako deia + + + + call_audio_incoming + "Appel entrant" + Sarrerako deia + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + Gailuak + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + Audio irteera, mikrofono eta kamera gailuak alda ditzakezu. + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + Echo ezabatzailea + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + Beste pertsonak echo-a entzutea saihesten du + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + Gaitu dei grabatze automatikoa + + + + settings_call_enable_tones_title + Tonalités + Tonuak + + + + settings_call_enable_tones_subtitle + Activer les tonalités + Gaitu tonuak + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + Gaitu bideoa + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + Audioa + + + + call_stats_video_title + "Vidéo" + Bideoa + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + Transferentzia egiten ari da; itxaron, mesedez + + + + + information_popup_error_title + Errorea + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + Transferentziak huts egin du + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + Bilera URI errore baten ondorioz hasi daiteke. + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + Bukatu momentuko dei guztiak? + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + Leihoa ixtera zoaz. Honek dei guztiak moztuko ditu. + + + + call_can_be_trusted_toast + "Appareil authentifié" + Gailu fidagarria + + + + call_dir + %1 deia + + + + call_ended + Appel terminé + Deia bukatuta + + + + conference_paused + Meeting paused + Bilera pausatua + + + + call_paused + Call paused + Deia pausatua + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + Puntutik punturako dei zifratua + + + + call_zrtp_sas_validation_required + Vérification nécessaire + Baliozkotzea beharrezkoa da + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + Puntutik puntura enkriptatutako deia + + + + call_not_encrypted + "Appel non chiffré" + Zifratu gabeko deia + + + + + call_waiting_for_encryption_info + Waiting for encryption + Enkriptatzeko zain + + + + call_paused_by_remote + Call paused by remote + Beste aldeak pausatutako deia + + + + conference_user_is_recording + "You are recording the meeting" + Bilera grabatzen ari zara + + + + call_user_is_recording + "You are recording the call" + Deia grabatzen ari zara + + + + conference_remote_is_recording + "Someone is recording the meeting" + Norbait bilera grabatzen ari da + + + + call_remote_recording + "%1 is recording the call" + %1 deia grabatzen ari da + + + + call_stop_recording + "Stop recording" + Gelditu grabazioa + + + + add + Gehitu + + + + call_transfer_current_call_title + "Transférer %1 à…" + Transferitu %1… + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + Berretsi transferentzia + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + %1-tik %2-ra transferitzera zoaz. + + + + call_action_start_new_call + "Nouvel appel" + Dei berria + + + + + call_action_show_dialer + "Pavé numérique" + Zenbakizko teklatua + + + + call_action_change_layout + "Modifier la disposition" + Aldatu diseinua + + + + call_action_go_to_calls_list + "Liste d'appel" + Dei zerrenda + + + + Merger tous les appels + call_action_merge_calls + Batu dei guztiak + + + + + call_action_go_to_settings + "Paramètres" + Ezarpenak + + + + conference_action_screen_sharing + "Partage de votre écran" + Partekatu zure pantaila + + + + conference_share_link_title + Partager le lien de la réunion + Partekatu bileraren esteka + + + + copied + Copié + Kopiatuta + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + Bilerako esteka arbelera kopiatu da + + + + + + conference_participants_list_title + "Participants (%1)" + Partaideak (%1) + + + + + group_call_participant_selected + + + + + + + + meeting_schedule_add_participants_title + Gehitu partaideak + + + + call_encryption_title + Chiffrement + Enkriptatzea + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + Gelditu + + + + stop_recording_accessible_name + Stop recording + Gelditu grabazioa + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + Estatistikak + + + + + call_action_end_call + "Terminer l'appel" + Bukatu deia + + + + + call_action_resume_call + "Reprendre l'appel" + Itzuli deira + + + + + call_action_pause_call + "Mettre l'appel en pause" + Pausatu deia + + + + + call_action_transfer_call + "Transférer l'appel" + Transferitu deia + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + Hasi dei berria + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + Ikusi dei zerrenda + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + Itzali bideoa + + + + + call_activate_video_hint + Gaitu bideoa + + + + + call_activate_microphone + "Activer le micro" + Aktibatu mikrofonoa + + + + + call_deactivate_microphone + "Désactiver le micro" + Isildu mikrofonoa + + + + + call_share_screen_hint + Partager l'écran… + Partekatu pantaila… + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + Jaso eskua + + + + + call_send_reaction_hint + "Envoyer une réaction" + Bidali erreakzioa + + + + + call_manage_participants_hint + "Gérer les participants" + Kudeatu partaideak + + + + + call_more_options_hint + "Plus d'options…" + Aukera gehiago… + + + + call_action_change_conference_layout + "Modifier la disposition" + Aldatu diseinua + + + + call_action_full_screen + "Mode Plein écran" + Pantaila osoko modua + + + + call_action_stop_recording + "Terminer l'enregistrement" + Bukatu grabazioa + + + + call_action_record + "Enregistrer l'appel" + Grabatu deia + + + + call_activate_speaker_hint + "Activer le son" + Aktibatu hizlaria + + + + call_deactivate_speaker_hint + "Désactiver le son" + Isilarazi hizlaria + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + CardDAV helbide-liburua + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + Gehitu CardDAV helbide-liburua zure Linphone kontaktuak hirugarrenen helbide-liburu batekin sinkronizatzeko. + + + + information_popup_error_title + Errorea + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + Ziurtatu informazio guztia sartuta dagoela. + + + + information_popup_synchronization_success_title + Ondo joan da + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + CardDAV helbide-liburua sinkronizatuta dago. + + + + settings_contacts_carddav_popup_synchronization_error_title + Errorea + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + Sinkronizazio-errorea! + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + Ezabatu CardDAV helbide-liburua? + + + + sip_address_display_name + Nom d'affichage + Erakusteko izena + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + Zerbitzariko URLa + + + + username + Erabiltzaile izena + + + + password + Pasahitza + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + Autentifikazioaren eremua + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + Gorde hemen berriki sortutako kontaktuak + + + + ChangeLayoutForm + + + conference_layout_grid + Sareta + + + + conference_layout_active_speaker + Hizlari aktiboa + + + + conference_layout_audio_only + Audioa soilik + + + + ChatAudioContent + + + + information_popup_error_title + Error + Errorea + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + Ezabatu + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + Kopiatuta + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + Ezabatu + + + + ChatMessageContentCore + + + popup_error_title + Error + Errorea + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + Errorea + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + Batu + + + + ics_bubble_participants + %n participant(s) + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + Elkarrizketak + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + Ez dago emaitzarik… + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + Sortu + + + + + + information_popup_error_title + Errorea + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Ez zaude konektatuta + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + Erakutsi + + + + fetch_config_function_description + Eskuratu konfigurazioa + + + + call_function_description + Deitu + + + + bye_function_description + Eskegi + + + + accept_function_description + Onartu + + + + decline_function_description + Ukatu + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + Errorea + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + Zure kontua deskonektatuta dago + + + + Contact + + + information_popup_error_title + Erreur + Errorea + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + Ahots-postontziaren URIa ez dago definituta. + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + Editatu kontaktua + + + + save + "Enregistrer + Gorde + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + Aldaketak baztertuko dira. Aurrera egin nahi duzu? + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + Mesedez, idatzi SIP helbidea edo telefono zenbakia + + + + contact_editor_add_image_label + "Ajouter une image" + Gehitu irudia + + + + contact_details_edit + "Modifier" + Editatu + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + Ezabatu + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + Izena + + + + + contact_editor_last_name + "Nom" + Abizena + + + + + contact_editor_company + "Entreprise" + Enpresa + + + + + contact_editor_job_title + "Fonction" + Lanpostua + + + + + sip_address + SIP helbidea + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + Telefonoa + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + Ezabatu gogokoetatik + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Gehitu gogokoetara + + + + Partager + Partekatu + + + + information_popup_error_title + Errorea + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + VCard sortzeak huts egin du + + + + information_popup_vcard_creation_title + VCard créée + VCard sortuta + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + VCard ondo gorde da %1 + + + + contact_sharing_email_title + Partage de contact + Partekatu kontaktua + + + + contact_details_delete + "Supprimer" + Ezabatu + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + Gehitu kontaktua + + + + contacts_list_empty + "Aucun contact pour le moment" + Momentu honetan ez dago kontakturik + + + + contact_new_title + "Nouveau contact" + Kontaktu berria + + + + create + Sortu + + + + contact_edit_title + "Modifier contact" + Editatu kontaktua + + + + save + Gorde + + + + contact_dialog_delete_title + Supprimer %1 ?" + Ezabatu %1? + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + Kontaktu hau betiko ezabatuko da. + + + + contact_deleted_toast + "Contact supprimé" + Kontaktua ezabatuta + + + + contact_deleted_message + "%1 a été supprimé" + %1 ezabatu egin da + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + Konfiantza-maila handitu + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + Konfiantza-maila handitzeko, zure kontaktuaren gailuetara deitu eta kode bat baliozkotu behar duzu.<br><br>"% 1" deitzear zaude, jarraitu nahi duzu? + + + + popup_do_not_show_again + Ne plus afficher + Ez erakutsi berriz + + + + cancel + Utzi + + + + dialog_call + "Appeler" + Deitu + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + Konfiantza maila + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + Egiaztatu zure kontaktuaren gailuak zuen arteko komunikazioak seguruak eta konpromisorik gabekoak izango direla baieztatzeko. Guztiak egiaztatzean, konfiantza maila handiena lortuko duzu. + + + + dialog_ok + "Ok" + Ok + + + + bottom_navigation_contacts_label + "Contacts" + Kontaktuak + + + + search_bar_look_for_contact_text + Rechercher un contact + Bilatu kontaktua + + + + list_filter_no_result_found + Aucun résultat… + Ez dago emaitzarik… + + + + contact_list_empty + Aucun contact pour le moment + Momentu honetan ez dago kontakturik + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + Editatu + + + + contact_call_action + "Appel" + Deitu + + + + contact_message_action + "Message" + Mezua + + + + contact_video_call_action + "Appel vidéo" + Bideo deia + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + Kontaktuaren xehetasunak + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + Enpresa: + + + + contact_details_job_title + "Poste :" + Lanpostua: + + + + contact_details_medias_title + "Medias" + Multimedia + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + Erakutsi partekatutako media + + + + contact_details_trust_title + "Confiance" + Konfiatu + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + Konfiantza maila - Egiaztatutako gailuak + + + + contact_details_no_device_found + "Aucun appareil" + Ez dago gailurik + + + + contact_device_without_name + "Appareil inconnu" + Gailu ezezaguna + + + + contact_make_call_check_device_trust + "Vérifier" + Egiaztatu + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + Beste ekintza batzuk + + + + contact_details_remove_from_favourites + "Retirer des favoris" + Ezabatu gogokoetatik + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Gehitu gogokoetara + + + + contact_details_share + "Partager" + Partekatu + + + + information_popup_error_title + Errorea + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + VCard sortzeak huts egin du + + + + contact_details_share_success_title + "VCard créée" + VCard sortuta + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + VCard ondo gorde da %1 + + + + contact_details_share_email_title + "Partage de contact" + Partekatu kontaktua + + + + contact_details_delete + "Supprimer ce contact" + Ezabatu kontaktua + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + LDAP zerbitzariak + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + Gehitu zure LDAP zerbitzariak bilaketa magikoaren barran bilatu ahal izateko. + + + + settings_contacts_carddav_title + CardDAV helbide-liburua + + + + settings_contacts_carddav_subtitle + Gehitu CardDAV helbide-liburua zure Linphone kontaktuak hirugarrenen helbide-liburu batekin sinkronizatzeko. + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + Gehitu LDAP zerbitzaria + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + Editatu LDAP zerbitzaria + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + Gehitu CardDAV helbide-liburua + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + Editatu CardDAV helbide-liburua + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + Ondo joan da + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + Aldaketak gorde dira + + + + add + "Ajouter" + Gehitu + + + + ConversationInfos + + + one_one_infos_call + "Appel" + Deitu + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + Partaideak (%1) + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + Beste ekintza batzuk + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + Ezabatu historiala + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + Erakutsi kontaktua + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + Ezabatu historiala + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + Bilatu kontaktua + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + Arazketa-aztarnak ezabatuko dira. Jarraitu nahi duzu? + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + Arazketa-aztarnak igo dira. Nola partekatu nahi duzu esteka? + + + + settings_debug_clipboard + "Presse-papier" + Arbela + + + + settings_debug_email + "E-Mail" + E-mail + + + + debug_settings_trace + "Traces %1" + %1 aztarnak + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + Email partekatzeak huts egin du. Mesedez, bidali %1 esteka honi: %2. + + + + + information_popup_error_title + Une erreur est survenue. + Errore bat gertatu da. + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + Gaitu arazketa-aztarnak + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + Gaitu log osoak + + + + settings_debug_delete_logs_title + "Supprimer les traces" + Ezabatu arazketa aztarnak + + + + settings_debug_share_logs_title + "Partager les traces" + Partekatu arazketa-aztarnak + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + Aztarnak igotzen… + + + + settings_debug_app_version_title + "Version de l'application" + App bertsioa + + + + settings_debug_sdk_version_title + "Version du SDK" + SDK bertsioa + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + Aztarnak igotzeak huts egin du. Aztarnen fitxategiak zuzenean parteka ditzakezu karpeta honetatik: %1 + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + ezin da hutsik egon + + + + textfield_error_message_unknown_format + "Format non reconnu" + Formatu ezezaguna + + + + Dialog + + + + dialog_confirm + "Confirmer" + Konfirmatu + + + + + dialog_cancel + "Annuler" + Utzi + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + Enkriptatzea: + + + + call_stats_media_encryption + Media encryption : %1 + Media enkriptatzea: %1%2 + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + Enkriptatze algoritmoa: %1 + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + Gako-adostasun algoritmoa: %1 + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + Hash algoritmoa: %1 + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + Autentikazio algoritmoa: %1 + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + SAS algoritmoa: %1 + + + + call_zrtp_validation_button_label + "Validation chiffrement" + Enkriptazioaren balidazioa + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + Desgaituta + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + SIP helbidea + + + + + + device_id + "Téléphone" + Telefonoa + + + + information_popup_error_title + Errorea + + + + information_popup_invalid_address_message + "Adresse invalide" + Helbide baliogabea + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + Kudeatu partaideak + + + + group_infos_participant_is_admin + Admin + + + + menu_see_existing_contact + "Show contact" + Erakutsi kontaktua + + + + menu_add_address_to_contacts + "Add to contacts" + Gehitu kontaktuetara + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + Talde izena + + + + required + "Requis" + Derrigorra + + + + HelpPage + + + help_title + "Aide" + Laguntza + + + + + help_about_title + "À propos de %1" + %1-(r)i buruz + + + + help_about_privacy_policy_title + "Règles de confidentialité" + Pribatutasun politika + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + Zer informazio biltzen eta erabiltzen du %1-(e)k + + + + help_about_version_title + "Version" + Bertsioa + + + + help_about_gpl_licence_title + "Licences GPLv3" + GPLv3 lizentziak + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + Lagundu %1 itzultzen + + + + help_troubleshooting_title + "Dépannage" + Arazo konpontzea + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + LDAP zerbitzariak + + + + settings_contacts_ldap_subtitle + Gehitu zure LDAP zerbitzariak bilaketa magikoaren barran bilatu ahal izateko. + + + + information_popup_success_title + Ondo joan da + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + LDAP zerbitzaria gorde da + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + Errore bat gertatu da, LDAP konfigurazioa ez da gorde! + + + + information_popup_error_title + Errorea + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + Ezabatu LDAP zerbitzaria? + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + Zerbitzariko URLa (ezin da hutsik egon) + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + Lotu DN + + + + settings_contacts_ldap_password_title + "Mot de passe" + Pasahitza + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + Erabili TLS + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + Ikerketa oinarria (ezin da hutsik egon) + + + + settings_contacts_ldap_search_filter_title + "Filtre" + Iragazi + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + Emaitzak gehienez + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + Bi kontsulten arteko atzerapena (milisegundotan) + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + Denbora-muga (segundotan) + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + Kontsultarako gutxieneko karaktere kopurua + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + Izenaren atributuak + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + SIP atributuak + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + SIP domeinua + + + + settings_contacts_ldap_debug_title + "Débogage" + Araztu + + + + LoadingPopup + + + cancel + Utzi + + + + LoginForm + + + + username + Nom d'utilisateur : username + Erabiltzaile izena + + + + + password + Mot de passe + Pasahitza + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + Konexioa + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + Mesedez idatzi erabiltzaile izena + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + Mesedez idatzi pasahitza + + + + assistant_forgotten_password + "Mot de passe oublié ?" + Pasahitza ahaztu duzu? + + + + LoginLayout + + + + help_about_title + À propos de %1 + %1-(r)i buruz + + + + help_about_privacy_policy_title + "Politique de confidentialité" + Pribatutasun politika + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + Bisitatu gure pribatutasun politika + + + + help_about_version_title + "Version" + Bertsioa + + + + help_about_licence_title + "Licence" + Lizentzia + + + + help_about_copyright_title + "Copyright + Copyright + + + + close + "Fermer" + Itxi + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + Konexioa + + + + assistant_no_account_yet + "Pas encore de compte ?" + Ez daukazu konturik oraindik? + + + + assistant_account_register + "S'inscrire" + Erregistratu + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + Hirugarrenen SIP kontua + + + + assistant_login_remote_provisioning + "Configuration distante" + Urruneko hornikuntza + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + Deskargatu urruneko konfigurazioa + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + Mesedez, sartu hemen eman zaizun konfigurazio-esteka: + + + + cancel + Utzi + + + + validate + "Valider" + Konfirmatu + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + Urruneko hornikuntza-esteka + + + + default_account_connection_state_error_toast + Errorea konektatzerakoan + + + + MagicSearchList + + + device_id + Telefonoa + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + Deiak + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + Kontaktuak + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + Elkarrizketak + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + Bilerak + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + Bilatu kontaktua, deitu %1 + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + edo bidali mezua… + + + + do_not_disturb_accessible_name + "Do not disturb" + Ez molestatu + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + Desgaitu ez molestatzeko modua + + + + information_popup_error_title + Errorea + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + Ahots-postontziaren URIa ez dago definituta. + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + Nire kontua + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + Gaitu ez molestatzeko modua + + + + settings_title + Ezarpenak + + + + recordings_title + "Enregistrements" + Grabazioak + + + + help_title + "Aide" + Laguntza + + + + help_quit_title + "Quitter l'application" + Itxi app-a + + + + quit_app_question + "Quitter %1 ?" + Itxi %1? + + + + drawer_menu_add_account + "Ajouter un compte" + Gehitu kontua + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + Ondo konektatuta + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + %1 moduan login eginda zaude + + + + interoperable + interopérable + elkarreragilea + + + + call_transfer_successful_toast_title + "Appel transféré" + Desbideratutako deia + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + Zure korrespontsala hautatutako kontaktuari transferitu zaio + + + + information_popup_success_title + Gordeta + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + Aldaketak gorde dira + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + Mesedez, baliozkotu captcha web orrian + + + + assistant_register_error_title + "Erreur lors de la création" + Errorea sortzerakoan + + + + assistant_register_success_title + "Compte créé" + Kontua sortu da + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + Kontua sortu da. Orain login egin dezakezu. + + + + assistant_register_error_code + "Erreur dans le code de validation" + Errorea baliozkotze kodean + + + + information_popup_error_title + Errorea + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + Bilera + + + + meeting_schedule_broadcast_label + "Webinar" + Webinar-a + + + + meeting_schedule_subject_hint + "Ajouter un titre" + Gehitu izenburua + + + + meeting_schedule_description_hint + "Ajouter une description" + Gehitu deskribapena + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Gehitu partaideak + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + Bidali gonbidapena parte-hartzaileei + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + Bilera bertan behera utzi da + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + Ez dago bilerarik gaur + + + + meeting_info_delete + "Supprimer la réunion" + Ezabatu bilera + + + + MeetingPage + + + meetings_add + "Créer une réunion" + Sortu bilera + + + + meetings_list_empty + "Aucune réunion" + Ez dago bilerarik + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + Bilera hau bertan behera utzi eta ezabatu nahi duzu? + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + Bilera hau ezabatu nahi duzu? + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + Utzi bertan behera eta ezabatu + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + Soilik ezabatu + + + + meeting_schedule_delete_action + "Supprimer" + Ezabatu + + + + back_action + Retour + Atzera + + + + meetings_list_title + Réunions + Bilerak + + + + meetings_search_hint + "Rechercher une réunion" + Bilatu bilera + + + + list_filter_no_result_found + "Aucun résultat…" + Ez dago emaitzarik… + + + + meetings_empty_list + "Aucune réunion" + Ez dago bilerarik + + + + + meeting_schedule_title + "Nouvelle réunion" + Bilera berria + + + + create + Sortu + + + + + + + + + information_popup_error_title + Errorea + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + Mesedez, bete izenburua eta hautatu gutxienez parte-hartzaile bat + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + Konferentziaren amaiera hasiera baino berriago izan behar da + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + Sorkuntza martxan… + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + Bilera behar bezala sortu da + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + Bilera sortzeak huts egin du! + + + + save + Gorde + + + + + saved + "Enregistré" + Gordeta + + + + meeting_info_updated_toast + "Réunion mise à jour" + Bilera eguneratuta + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + Bileraren eguneraketa martxan… + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + Bilera eguneratzeak huts egin du! + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Gehitu partaideak + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + meeting_info_delete + "Supprimer la réunion" + Ezabatu bilera + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + Bileraren URIa kopiatu da + + + + meeting_schedule_timezone_title + "Fuseau horaire" + Timezone-a + + + + meeting_info_organizer_label + "Organisateur" + Antolatzailea + + + + meeting_info_join_title + "Rejoindre la réunion" + Batu bilerara + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + Erakutsi + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + Defektuzko bistaratze modua + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + Nola agertzen diren parte-hartzaileak bileretan + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + Dei tonua - Sarrerako deiak + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + Hizlariak + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + Mikrofonoa + + + + + multimedia_settings_camera_title + "Caméra" + Kamera + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + Sarea + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + Deia martxan + + + + call_start_group_call_title + Appel de groupe + Talde deia + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + Sarrerako deia + + + + dialog_accept + "Accepter" + Onartu + + + + dialog_deny + "Refuser + Ukatu + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + OAuthHttpServerReplyHandler-ek ez du entzuten + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + Timeout: Autentikatu gabe + + + + oidc_authentication_granted_message + Authentication granted + Autentikazioa eginda + + + + oidc_authentication_not_authenticated_message + Not authenticated + Autentifikatu gabea + + + + oidc_authentication_refresh_message + Refreshing token + Token-a freskatzen + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + Aldi baterako kredentzialak jasota + + + + oidc_authentication_network_error + Network error + Sareko errorea + + + + oidc_authentication_server_error + Server error + Zerbitzariko errorea + + + + oidc_authentication_token_not_found_error + OAuth token not found + Ez da OAuth tokena aurkitu + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + Ez da OAuth token secret-a aurkitu + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + OAuth-en atzera-deia ez da egiaztatu + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + Nabigatzaileari baimena eskatzen + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + Sarbide tokena eskatzen + + + + oidc_authentication_refresh_token_message + Refreshing access token + Sarbide tokena eguneratzen + + + + oidc_authentication_request_authorization_message + Requesting authorization + Baimena eskatzen + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + Aldi baterako egiaztagiriak eskatzen + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + Ez da autorizazio endpoint-ik aurkitu OpenID konfigurazioan + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + Ez da token endpointik aurkitu OpenID konfigurazioan + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + Admin + + + + meeting_add_participants_title + "Ajouter des participants" + Gehitu partaideak + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + Editatu + + + + contact_presence_button_delete_custom_status + Ezabatu + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + Gorde + + + + QObject + + + media_encryption_dtls + DTLS + + + + media_encryption_none + None + + + + media_encryption_srtp + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + ZRTP Post quantum-a + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + Sarrerakoa + + + + outgoing + "Sortant" + Kanporakoa + + + + conference_layout_active_speaker + "Participant actif" + Hizlari aktiboa + + + + conference_layout_grid + "Mosaïque" + Sareta + + + + conference_layout_audio_only + "Audio uniquement" + Audioa soilik + + + + RegisterCheckingPage + + + email + "email" + email + + + + phone_number + "numéro de téléphone" + telefono zenbakia + + + + confirm_register_title + "Inscription | Confirmer votre %1" + Erregistratu | Berretsi zure %1 + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + Egiaztatzeko mezua bidali da hona: %1 %2<br> Mesedez, idatzi behean + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + Ez duzu kodea jaso? + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + Berbidali kodea + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + Erregistratu + + + + assistant_already_have_an_account + Baduzu kontua iadanik? + + + + assistant_account_login + Konexioa + + + + assistant_account_register_with_phone_number + Erregistratu telefono zenbakiarekin + + + + assistant_account_register_with_email + Erregistratu emailarekin + + + + + username + Erabiltzaile izena + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + Domeinua + + + + + + phone_number + "Numéro de téléphone" + Telefono zenbakia + + + + + email + Email + + + + + password + Pasahitza + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + Konfirmatu pasahitza + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + %1 eta %2 onartzen ditut + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + erabilera baldintzak + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + pribatutasun politika + + + + assistant_account_create + "Créer" + Sortu + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + Mesedez idatzi erabiltzaile izena + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + Mesedez idatzi pasahitza + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + Pasahitzak ez datoz bat + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + Mesedez idatzi telefono zenbaki bat + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + Mesedez idatzi helbide elektroniko bat + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + Hirugarrenen SIP kontua + + + + assistant_no_account_yet + Pas encore de compte ? + Ez daukazu konturik oraindik? + + + + assistant_account_register + S'inscrire + Erregistratu + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + Ezaugarri batzuk, hala nola talde-txatak, bideokonferentziak, etab. %1 kontua eskatzen dute. + +Ezaugarri horiek ezkutatu egingo dira hirugarrenen SIP kontu bat erabiltzen baduzu. + +Proiektu komertzial batean gaitzeko, jarri gurekin harremanetan. + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + Sortu linphone kontua + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + Ulertzen dut + + + + + username + "Nom d'utilisateur" + Erabiltzaile izena + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + Pasahitza + + + + + sip_address_domain + "Domaine" + Domeinua + + + + + sip_address_display_name + Nom d'affichage + Erakusteko izena + + + + + transport + "Transport" + Garraiatu + + + + + assistant_account_login + Konexioa + + + + assistant_account_login_missing_username + Mesedez idatzi erabiltzaile izena + + + + assistant_account_login_missing_password + Mesedez idatzi pasahitza + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + Mesedez idatzi domeinu bat + + + + login_advanced_parameters_label + Advanced parameters + Ezarpen aurreratuak + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + Mesedez, aukeratu beste parte-hartzaileekin partekatu nahi duzun pantaila edo leihoa. + + + + screencast_settings_all_screen_label + "Ecran entier" + Pantaila osoa + + + + screencast_settings_one_window_label + "Fenêtre" + Leihoa + + + + screencast_settings_screen + "Ecran %1" + %1 pantaila + + + + stop + "Stop + Gelditu + + + + share + "Partager" + Partekatu + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + Aukeratu zure modua + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + Aurrerago modua aldatu ahal izango duzu. + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + Puntutik punturako enkriptazioa + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + Modu honek zure komunikazio guztien konfidentzialtasuna bermatzen du. Gure end-to-end enkriptazio teknologiak zure komunikazio guztien segurtasun handiena bermatzen du. + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + Elkarreragile + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + Modu honek Linphone-en ezaugarri guztiak baliatzeko aukera ematen dizu, beste edozein SIP zerbitzurekin elkarreragingarria izaten jarraituz. + + + + dialog_continue + "Continuer" + Jarraitu + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + Enkriptatu fitxategi guztiak + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + Adi: behin gaituta ezin da desgaitu! + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + Elkarrizketak + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + Ezarpenak + + + + settings_calls_title + "Appels" + Deiak + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + Elkarrizketak + + + + settings_contacts_title + "Contacts" + Kontaktuak + + + + settings_meetings_title + "Réunions" + Bilerak + + + + settings_network_title + "Affichage" "Security" "Réseau" + Sarea + + + + settings_advanced_title + "Paramètres avancés" + Ezarpen aurreratuak + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + Gorde gabeko aldaketak + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + Gorde gabeko aldaketak dituzu. Orrialde honetatik irteten bazara, egindako aldaketak galdu egingo dira. Aldaketak gorde nahi dituzu jarraitu aurretik? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + Ez gorde + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + Gorde + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + batzen… + + + + conference_participant_paused_text + "En pause" + Pausatua + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + Deiaren helbidea ez da SIP helbide interpretagarria: %1 + + + + group_call_error_no_account + Ez da defektuzko konturik aurkitu, ezin da talde-deia sortu + + + + group_call_error_participants_invite + Ezin izan dira parte-hartzaileak talde-deialdira gonbidatu + + + + group_call_error_creation + Ezin izan da taldeko deia sortu + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + Gailu izen ezezaguna + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + nMinute + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + nDay + + + + + + + + nWeek + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + Okupatuta + + + + contact_presence_status_do_not_disturb + Ez molestatu + + + + contact_presence_status_offline + Lineaz kanpo + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + Ezin izan da deia sortu + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + Errorea + + + + information_popup_group_call_not_created_message + Ezin izan da taldeko deia sortu + + + + number_of_years + %n an(s) + + urte bat + %1 urte + + + + + number_of_month + "%n mois" + + hilabete bat + % hilabete + + + + + number_of_weeks + %n semaine(s) + + aste bat + %1 aste + + + + + number_of_days + %n jour(s) + + egun bat + %1 egun + + + + + today + "Aujourd'hui" + Gaur + + + + yesterday + "Hier + Atzo + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + Errorea + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + Batu: + + + + meeting_waiting_room_join + "Rejoindre" + Batu + + + + + cancel + Cancel + Utzi + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + Bilerarako konexioa + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + Momentu batetik bestera batuko zara bilerara... + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + Ongi etorri + + + + welcome_page_subtitle + "sur %1" + %1(e)n + + + + welcome_carousel_skip + "Passer" + Salto egin + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + Komunikazio aplikazio <b>Frantses</b> <br> <b>segurua</b> eta <b>software librekoa</b>. + + + + welcome_page_2_title + "Sécurisé" + Segurua + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + Komunikazioak seguruak dira <br><b>Muturretik muturrerako enkriptatzeari</b> esker. + + + + welcome_page_3_title + "Open Source" + Software librea + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + Kode irekiko aplikazio bat eta <b>doako zerbitzu bat</b> <br><b>2001etik</b> + + + + next + "Suivant" + Hurrengoa + + + + start + "Commencer" + Hasi + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + Segurtasun-kontrola + + + + call_zrtp_sas_validation_skip + "Passer" + Salto egin + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + Enkriptatzea bermatzeko, zure kontaktuaren gailua berriro autentifikatu behar dugu. Trukatu zure kodeak: + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + Enkriptatzea bermatzeko, zure kontaktuaren gailua autentifikatu behar dugu. Mesedez, trukatu zure kodeak: + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + Zure kodea: + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + Dagokion kodea: + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + Emandako kodea ez dator bat. + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + Zure deiaren konfidentzialtasuna arriskuan jar daiteke! + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + Ez dago bategiterik + + + + call_action_hang_up + "Raccrocher" + Eskegi + + + + country + + + Afghanistan + Afganistan + + + + Albania + Albania + + + + Algeria + Algeria + + + + AmericanSamoa + Samoa amerikarra + + + + Andorra + Andorra + + + + Angola + Angola + + + + Anguilla + Anguilla + + + + AntiguaAndBarbuda + Antigua eta Barbuda + + + + Argentina + Argentina + + + + Armenia + Armenia + + + + Aruba + Aruba + + + + Australia + Australia + + + + Austria + Austria + + + + Azerbaijan + Azerbaijan + + + + Bahamas + Bahamak + + + + Bahrain + Bahrain + + + + Bangladesh + Bangladesh + + + + Barbados + Barbados + + + + Belarus + Bielorrusia + + + + Belgium + Belgika + + + + Belize + Belize + + + + Benin + Benin + + + + Bermuda + Bermuda + + + + Bhutan + Bhutan + + + + Bolivia + Bolivia + + + + BosniaAndHerzegowina + Bosnia eta Wina + + + + Botswana + Botswana + + + + Brazil + Brasil + + + + Brunei + Brunei + + + + Bulgaria + Bulgaria + + + + BurkinaFaso + Burkina Faso + + + + Burundi + Burundi + + + + Cambodia + Kanbodia + + + + Cameroon + Kamerun + + + + Canada + Kanada + + + + CapeVerde + Cabo Verde + + + + CaymanIslands + Cayman uharteak + + + + CentralAfricanRepublic + Afrika Erdiko Errepublika + + + + Chad + Txad + + + + Chile + Txile + + + + China + Txina + + + + Colombia + Kolonbia + + + + Comoros + Komoreak + + + + PeoplesRepublicOfCongo + Kongoko Herri Errepublika + + + + CookIslands + Cook uharteak + + + + CostaRica + Costa Rica + + + + IvoryCoast + Boli Kosta + + + + Croatia + Kroazia + + + + Cuba + Kuba + + + + Cyprus + Zipre + + + + CzechRepublic + Txekiar Errepublika + + + + Denmark + Danimarka + + + + Djibouti + Djibuti + + + + Dominica + Dominika + + + + DominicanRepublic + Dominikar Errepublika + + + + Ecuador + Ekuador + + + + Egypt + Egipto + + + + ElSalvador + El Salvador + + + + EquatorialGuinea + Ekuatore Ginea + + + + Eritrea + Eritrea + + + + Estonia + Estonia + + + + Ethiopia + Etiopia + + + + FalklandIslands + Falkland uharteak + + + + FaroeIslands + Faroe uharteak + + + + Fiji + Fiji + + + + Finland + Finlandia + + + + France + Frantzia + + + + FrenchGuiana + Guyana Frantsesa + + + + FrenchPolynesia + Polinesia Frantsesa + + + + Gabon + Gabon + + + + Gambia + Ganbia + + + + Georgia + Georgia + + + + Germany + Alemania + + + + Ghana + Ghana + + + + Gibraltar + Gibraltar + + + + Greece + Grezia + + + + Greenland + Groenlandia + + + + Grenada + Grenada + + + + Guadeloupe + Guadalupe + + + + Guam + Guam + + + + Guatemala + Guatemala + + + + Guinea + Ginea + + + + GuineaBissau + Ginea Bissau + + + + Guyana + Guyana + + + + Haiti + Haiti + + + + Honduras + Honduras + + + + DemocraticRepublicOfCongo + Kongoko Errepublika Demokratikoa + + + + HongKong + Hong Kong + + + + Hungary + Hungaria + + + + Iceland + Islandia + + + + India + India + + + + Indonesia + Indonesia + + + + Iran + Iran + + + + Iraq + Irak + + + + Ireland + Irlanda + + + + Israel + Israel + + + + Italy + Italia + + + + Jamaica + Jamaika + + + + Japan + Japonia + + + + Jordan + Jordania + + + + Kazakhstan + Kazakhstan + + + + Kenya + Kenya + + + + Kiribati + Kiribati + + + + DemocraticRepublicOfKorea + Koreako Errepublika Demokratikoa + + + + RepublicOfKorea + Koreako Errepublika + + + + Kuwait + Kuwait + + + + Kyrgyzstan + Kirgizistan + + + + Laos + Laos + + + + Latvia + Letonia + + + + Lebanon + Libano + + + + Lesotho + Lesotho + + + + Liberia + Liberia + + + + Libya + Libia + + + + Liechtenstein + Liechtenstein + + + + Lithuania + Lituania + + + + Luxembourg + Luxenburgo + + + + Macau + Macao + + + + Macedonia + Mazedonia + + + + Madagascar + Madagascar + + + + Malawi + Malawi + + + + Malaysia + Malaysia + + + + Maldives + Maldivak + + + + Mali + Mali + + + + Malta + Malta + + + + MarshallIslands + Marshall Islands + + + + Martinique + Martinika + + + + Mauritania + Mauritania + + + + Mauritius + Maurizio + + + + Mayotte + Mayotte + + + + Mexico + Mexiko + + + + Micronesia + Mikronesia + + + + Moldova + Moldavia + + + + Monaco + Monako + + + + Mongolia + Mongolia + + + + Montenegro + Montenegro + + + + Montserrat + Montserrat + + + + Morocco + Maroko + + + + Mozambique + Mozambike + + + + Myanmar + Myanmar + + + + Namibia + Namibia + + + + NauruCountry + Nauru Herrialdea + + + + Nepal + Nepal + + + + Netherlands + Herbehereak + + + + NewCaledonia + Kaledonia berria + + + + NewZealand + Zelanda berria + + + + Nicaragua + Nikaragua + + + + Niger + Niger + + + + Nigeria + Nigeria + + + + Niue + Niue + + + + NorfolkIsland + Norfolk uhartea + + + + NorthernMarianaIslands + Iparraldeko Mariana uharteak + + + + Norway + Norvegia + + + + Oman + Oman + + + + Pakistan + Pakistan + + + + Palau + Palau + + + + PalestinianTerritories + Palestina + + + + Panama + Panama + + + + PapuaNewGuinea + Papua Ginea Berria + + + + Paraguay + Paraguai + + + + Peru + Peru + + + + Philippines + Filipinak + + + + Poland + Plonia + + + + Portugal + Portugal + + + + PuertoRico + Puerto Rico + + + + Qatar + Qatar + + + + Reunion + Batzar + + + + Romania + Errumania + + + + RussianFederation + Errusiar federazioa + + + + Rwanda + Ruanda + + + + SaintHelena + Santa Helena + + + + SaintKittsAndNevis + Saint Kitts eta Nevis + + + + SaintLucia + Santa Luzia + + + + SaintPierreAndMiquelon + Saint-Pierre eta Mikelune + + + + SaintVincentAndTheGrenadines + Saint-Vincent eta Grenadinak + + + + Samoa + Samoa + + + + SanMarino + San Marino + + + + SaoTomeAndPrincipe + Sao Tome eta Principe + + + + SaudiArabia + Saudi Arabia + + + + Senegal + Senegal + + + + Serbia + Serbia + + + + Seychelles + Seychelleak + + + + SierraLeone + Sierra Leona + + + + Singapore + Singapur + + + + Slovakia + Eslovakia + + + + Slovenia + Eslovenia + + + + SolomonIslands + Salomon uharteak + + + + Somalia + Somalia + + + + SouthAfrica + Hego Afrika + + + + Spain + Espainia + + + + SriLanka + Sri Lanka + + + + Sudan + Sudan + + + + Suriname + Surinam + + + + Swaziland + Eswatini + + + + Sweden + Suedia + + + + Switzerland + Suitza + + + + Syria + Siria + + + + Taiwan + Taiwan + + + + Tajikistan + Tajikistan + + + + Tanzania + Tanzania + + + + Thailand + Tailandia + + + + Togo + Togo + + + + Tokelau + Tokelau + + + + Tonga + Tonga + + + + TrinidadAndTobago + Trinidad eta Tobago + + + + Tunisia + Tunisia + + + + Turkey + Turkia + + + + Turkmenistan + Turkmenistan + + + + TurksAndCaicosIslands + Turk eta Caico uharteak + + + + Tuvalu + Tuvalu + + + + Uganda + Uganda + + + + Ukraine + Ukraina + + + + UnitedArabEmirates + Arabiar Emirerri Batuak + + + + UnitedKingdom + Erresuma Batua + + + + UnitedStates + Ameriketako Estatu Batuak + + + + Uruguay + Uruguai + + + + Uzbekistan + Uzbekistan + + + + Vanuatu + Vanuatu + + + + Venezuela + Venezuela + + + + Vietnam + Vietnam + + + + WallisAndFutunaIslands + Wallis eta Futuna uharteak + + + + Yemen + Yemen + + + + Zambia + Zambia + + + + Zimbabwe + Zimbabwe + + + + utils + + + formatYears + '%1 year' + + urte bat + %1 urte + + + + + formatMonths + '%1 month' + + hilabete bat + % hilabete + + + + + formatWeeks + '%1 week' + + aste bat + %1 aste + + + + + formatDays + '%1 day' + + egun bat + %1 egun + + + + + formatHours + '%1 hour' + + ordu bat + %1 ordu + + + + + formatMinutes + '%1 minute' + + minutu bat + %1 minutu + + + + + formatSeconds + '%1 second' + + segundu bat + %1 segundu + + + + + codec_install + "Installation de codec" + Kodek instalazioa + + + + download_codec + "Télécharger le codec %1 (%2) ?" + Deskargatu %1 kodeka (%2)? + + + + information_popup_success_title + "Succès" + Ondo joan da + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + Kodeka behar bezala instalatu da. + + + + + + information_popup_error_title + Errorea + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + Ezin izan da kodeka instalatu. + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + Ezin izan da kodeka gorde. + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + Ezin izan da kodeka deskargatu. + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + Deskargatzen… + + + + okButton + Ok + + + diff --git a/Linphone/data/languages/fr_FR.ts b/Linphone/data/languages/fr.ts similarity index 96% rename from Linphone/data/languages/fr_FR.ts rename to Linphone/data/languages/fr.ts index ef526f11e..c6c66486e 100644 --- a/Linphone/data/languages/fr_FR.ts +++ b/Linphone/data/languages/fr.ts @@ -1,6 +1,6 @@ - + AbstractSettingsLayout @@ -25,13 +25,13 @@ AbstractWindow - + contact_dialog_pick_phone_number_or_sip_address_title "Choisissez un numéro ou adresse SIP" Choisissez un numéro ou adresse SIP - + fps_counter %1 FPS @@ -188,118 +188,118 @@ AccountSettingsGeneralLayout - + manage_account_details_title "Détails" Détails - + manage_account_details_subtitle Éditer les informations de votre compte. Éditer les informations de votre compte. - + manage_account_devices_title "Vos appareils" Vos appareils - + manage_account_devices_subtitle "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus. - + manage_account_add_picture "Ajouter une image" Ajouter une image - + manage_account_edit_picture "Modifier l'image" Modifier l'image - + manage_account_remove_picture "Supprimer l'image" Supprimer l'image - + sip_address Adresse SIP - + sip_address_display_name "Nom d'affichage Nom d'affichage - + sip_address_display_name_explaination "Le nom qui sera affiché à vos correspondants lors de vos échanges." Le nom qui sera affiché à vos correspondants lors de vos échanges. - + manage_account_international_prefix Indicatif international* Indicatif international* - + manage_account_delete "Déconnecter mon compte" Déconnecter mon compte - + manage_account_delete_message Votre compte sera retiré de ce client linphone, mais vous restez connecté sur vos autres clients - + manage_account_dialog_remove_account_title "Se déconnecter du compte ?" Se déconnecter du compte ? - + manage_account_dialog_remove_account_message Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org - + error Erreur Erreur - + manage_account_device_remove "Supprimer" Supprimer - + manage_account_device_remove_confirm_dialog Supprimer %1 ? - + manage_account_device_last_connection "Dernière connexion:" Dernière connexion: - + device_last_updated_time_no_info "No information" Pas d'information @@ -352,126 +352,126 @@ AccountSettingsParametersLayout - + settings_title Paramètres - + settings_account_title Paramètres de compte - + info_popup_invalid_registrar_uri_message Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) La registrar URI est invalide. Veuillez vous assurer qu'elle respecte le format suivant : sip:<host>:<port>;transport=<transport> (:<port> est facultatif) - + info_popup_invalid_outbound_proxy_message Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) L'uri du proxy sip sortant est invalide. Veuillez vous assurer qu'elle respecte le format suivant : sip:<host>:<port>;transport=<transport> (:<port> est facultatif) - + info_popup_error_title Erreur - + information_popup_success_title Succès - + contact_editor_saved_changes_toast "Modifications sauvegardés" Modifications sauvegardés - + information_popup_error_title Erreur - + account_settings_mwi_uri_title "URI du serveur de messagerie vocale" URI du serveur de messagerie vocale - + account_settings_voicemail_uri_title "URI de messagerie vocale" URI de messagerie vocale - + account_settings_transport_title "Transport" Transport - + account_settings_registrar_uri_title Registrar URI - + account_settings_sip_proxy_url_title URL du proxy SIP sortant - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." Si ce champ est rempli, l’outbound proxy sera activé automatiquement. Laissez-le vide pour le désactiver. - + account_settings_stun_server_url_title "Adresse du serveur STUN" Adresse du serveur STUN - + account_settings_enable_ice_title "Activer ICE" Activer ICE - + account_settings_avpf_title "AVPF" AVPF - + account_settings_bundle_mode_title "Mode bundle" Mode bundle - + account_settings_expire_title "Expiration (en seconde)" Expiration (en seconde) - + account_settings_conference_factory_uri_title "URI du serveur de conversations" URI du serveur de conversations - + account_settings_audio_video_conference_factory_uri_title "URI du serveur de réunions" URI du serveur de réunions - + account_settings_lime_server_url_title "URL du serveur d’échange de clés de chiffrement" URL du serveur d’échange de clés de chiffrement @@ -620,7 +620,7 @@ Contacts - + generic_address_picker_suggestions_list_title "Suggestions" Suggestions @@ -722,7 +722,7 @@ Quitter - + mark_all_read_action Mark all as read @@ -730,36 +730,36 @@ AuthenticationDialog - + account_settings_dialog_invalid_password_title "Authentification requise" Authentification requise - + account_settings_dialog_invalid_password_message La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. - + password Mot de passe - + cancel "Annuler Annuler - + assistant_account_login Connexion Connexion - + assistant_account_login_missing_password Veuillez saisir un mot de passe Veuillez saisir un mot de passe @@ -846,73 +846,73 @@ CallForwardSettingsLayout - + settings_call_forward_activation_success Transfert d'appel activé vers : %1 - - - + + + settings_call_forward_to_voicemail Boîte vocale - + settings_call_forward_deactivation_success Transfert d'appel désactivé - + settings_call_forward_address_timeout Impossible d'établir le transfert d'appel, la requête a expiré - + settings_call_forward_address_cannot_be_empty Une adresse ou un numéro de téléphone est nécessaire - + settings_call_forward_address_progress_disabling Désactiver le transfert d'appel - + settings_call_forward_address_progress_enabling Activer le transfert d'appel pour : - + settings_call_forward_activate_title "Forward calls" Transférer les appels - + settings_call_forward_activate_subtitle "Enable call forwarding to voicemail or sip address" Transférer les appels vers une boîte vocale ou un numéro / une adresse SIP - + settings_call_forward_destination_choose Forward to destination Transférer les appels vers : - + settings_call_forward_to_sipaddress Adresse SIP - + settings_call_forward_sipaddress_title SIP Address Addresse SIP - + settings_call_forward_sipaddress_placeholder John.doe @@ -920,25 +920,25 @@ CallHistoryLayout - + meeting_info_join_title "Rejoindre la réunion" Rejoindre la réunion - + contact_call_action "Appel" Appel - + contact_message_action "Message" Message - + contact_video_call_action "Appel Video" Appel Vidéo @@ -947,7 +947,7 @@ CallHistoryListView - + call_name_accessible_button Call %1 Appeler %1 @@ -956,42 +956,42 @@ CallLayout - + meeting_event_conference_destroyed "Vous avez quitté la conférence" Vous avez quitté la conférence - + call_ended_by_user "Vous avez terminé l'appel" Vous avez terminé l'appel - + call_ended_by_remote "Votre correspondant a terminé l'appel" Votre correspondant a terminé l'appel - + conference_call_empty "En attente d'autres participants…" En attente d'autres participants… - + conference_share_link_title "Partager le lien" Partager le lien - + copied Copié - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Le lien de la réunion a été copié dans le presse-papier @@ -1025,49 +1025,49 @@ CallListView - + meeting "Réunion Réunion - + call "Appel" Appel - + paused_call_or_meeting "%1 en pause" %1 en pause - + ongoing_call_or_meeting "%1 en cours" %1 en cours - + transfer_call_name_accessible_name Transfer call %1 Transférer l'appel %1 - + resume_call_name_accessible_name Resume %1 call Reprendre l'appel %1 - + pause_call_name_accessible_name Pause %1 call Mettre l'appel %1 en pause - + end_call_name_accessible_name End %1 call Terminer l'appel %1 @@ -1428,13 +1428,13 @@ CallStatistics - + call_stats_audio_title "Audio" Audio - + call_stats_video_title "Vidéo" Vidéo @@ -1876,86 +1876,86 @@ CarddavSettingsLayout - + settings_contacts_carddav_title Carnet d'adresse CardDAV Carnet d'adresse CardDAV - + settings_contacts_carddav_subtitle "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers. - + information_popup_error_title Erreur - + settings_contacts_carddav_popup_invalid_error "Vérifiez que toutes les informations ont été saisies." Vérifiez que toutes les informations ont été saisies. - + information_popup_synchronization_success_title Succès - + settings_contacts_carddav_synchronization_success_message "Le carnet d'adresse CardDAV est synchronisé." Le carnet d'adresse CardDAV est synchronisé. - + settings_contacts_carddav_popup_synchronization_error_title Erreur - + settings_contacts_carddav_popup_synchronization_error_message "Erreur de synchronisation!" Erreur de synchronisation! - + settings_contacts_delete_carddav_server_title "Supprimer le carnet d'adresse CardDAV ?" Supprimer le carnet d'adresse CardDAV ? - + sip_address_display_name Nom d'affichage Nom d'affichage - + settings_contacts_carddav_server_url_title "URL du serveur" URL du serveur - + username Nom d'utilisateur - + password Mot de passe - + settings_contacts_carddav_realm_title Domaine d’authentification Domaine d’authentification - + settings_contacts_carddav_use_as_default_title "Stocker ici les contacts nouvellement crées" Stocker ici les contacts nouvellement crées @@ -1964,17 +1964,17 @@ ChangeLayoutForm - + conference_layout_grid Mosaïque - + conference_layout_active_speaker Intervenant actif - + conference_layout_audio_only Audio uniquement @@ -2329,44 +2329,44 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message Trouver un message - + info_popup_no_result_message No result found Aucun résultat trouvé - + info_popup_first_result_message First result reached Premier résultat atteint - + info_popup_last_result_message Last result reached Dernier résultat atteint - + chat_message_list_encrypted_header_title End to end encrypted chat Conversation chiffrée de bout en bout - + unencrypted_conversation_warning This conversation is not encrypted ! Cette conversation n'est pas chiffrée ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. @@ -2374,7 +2374,7 @@ Error en bout. Seul votre correspondant peut les déchiffrer. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! @@ -2382,7 +2382,7 @@ en bout. Seul votre correspondant peut les déchiffrer. assurez-vous de ne pas partager d’informations sensibles ! - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… @@ -2403,92 +2403,92 @@ en bout. Seul votre correspondant peut les déchiffrer. Aucune conversation - + chat_dialog_delete_chat_title Supprimer la conversation ? Supprimer la conversation ? - + chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." La conversation et tous ses messages seront supprimés. - + chat_list_title "Conversations" Conversations - + menu_mark_all_as_read "mark all as read" Tout marquer comme lu - + chat_search_in_history "Rechercher une conversation" Rechercher une conversation - + list_filter_no_result_found "Aucun résultat…" Aucun résultat… - + chat_list_empty_history "Aucune conversation dans votre historique" Aucune conversation dans votre historique - + chat_action_start_new_chat "New chat" Nouvelle conversation - + chat_start_group_chat_title "Nouveau groupe" Nouveau groupe - + chat_action_start_group_chat "Créer" Créer - - + + information_popup_error_title Erreur - + information_popup_chat_creation_failed_message "La création a échoué" La création a échoué - + group_chat_error_must_have_name "Un nom doit être donné au groupe Un nom doit être donné au groupe - + group_call_error_not_connected "Vous n'etes pas connecté" Vous n'êtes pas connecté - + chat_creation_in_progress Creation de la conversation en cours … Création de la conversation en cours… @@ -2734,53 +2734,53 @@ en bout. Seul votre correspondant peut les déchiffrer. ContactListItem - + contact_details_remove_from_favourites "Enlever des favoris" Enlever des favoris - + contact_details_add_to_favourites "Ajouter aux favoris" Ajouter aux favoris - + Partager Partager - + information_popup_error_title Erreur - + information_popup_vcard_creation_error La création du fichier vcard a échoué La création du fichier vcard a échoué - + information_popup_vcard_creation_title VCard créée VCard créée - + information_popup_vcard_creation_success "VCard du contact enregistrée dans %1" VCard du contact enregistrée dans %1 - + contact_sharing_email_title Partage de contact Partage de contact - + contact_details_delete "Supprimer" Supprimer @@ -2804,161 +2804,161 @@ en bout. Seul votre correspondant peut les déchiffrer. ContactPage - + contacts_add "Ajouter un contact" Ajouter un contact - + contacts_list_empty "Aucun contact pour le moment" Aucun contact pour le moment - + contact_new_title "Nouveau contact" Nouveau contact - + create Créer - + contact_edit_title "Modifier contact" Modifier contact - + save Enregistrer - + contact_dialog_delete_title Supprimer %1 ?" Supprimer %1 ? - + contact_dialog_delete_message Ce contact sera définitivement supprimé. Ce contact sera définitivement supprimé. - + contact_deleted_toast "Contact supprimé" Contact supprimé - + contact_deleted_message "%1 a été supprimé" %1 a été supprimé - + contact_dialog_devices_trust_popup_title "Augmenter la confiance" Augmenter la confiance - + contact_dialog_devices_trust_popup_message "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ? - + popup_do_not_show_again Ne plus afficher Ne plus afficher - + cancel Annuler - + dialog_call "Appeler" Appeler - + contact_dialog_devices_trust_help_title "Niveau de confiance" Niveau de confiance - + contact_dialog_devices_trust_help_message "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal. - + dialog_ok "Ok" Ok - + bottom_navigation_contacts_label "Contacts" Contacts - + search_bar_look_for_contact_text Rechercher un contact Rechercher un contact - + list_filter_no_result_found Aucun résultat… Aucun résultat… - + contact_list_empty Aucun contact pour le moment Aucun contact pour le moment - + expand_accessible_name Expand %1 Étendre %1 - + shrink_accessible_name Shrink %1 Réduire %1 - + create_contact_accessible_name Create new contact Créer un nouveau contact - + more_info_accessible_name More info %1 Plus d'information %1 - - + + contact_details_edit Edit ---------- @@ -2966,151 +2966,151 @@ en bout. Seul votre correspondant peut les déchiffrer. Éditer - + contact_call_action "Appel" Appel - + contact_message_action "Message" Message - + contact_video_call_action "Appel vidéo" Appel vidéo - + contact_details_numbers_and_addresses_title "Coordonnées" Coordonnées - + call_adress_accessible_name Call address %1 Appeller l'adresse %1 - + contact_details_company_name "Société :" Société : - + contact_details_job_title "Poste :" Poste : - + contact_details_medias_title "Medias" Medias - - + + contact_details_medias_subtitle "Afficher les medias partagés" Afficher les medias partagés - + contact_details_trust_title "Confiance" Confiance - + contact_dialog_devices_trust_title "Niveau de confiance - Appareils vérifiés" Niveau de confiance - Appareils vérifiés - + contact_details_no_device_found "Aucun appareil" Aucun appareil - + contact_device_without_name "Appareil inconnu" Appareil inconnu - + contact_make_call_check_device_trust "Vérifier" Vérifier - + verify_device_accessible_name Verify %1 device Vérifier l'appareil %1 - + contact_details_actions_title "Autres actions" Autres actions - + contact_details_remove_from_favourites "Retirer des favoris" Retirer des favoris - + contact_details_add_to_favourites "Ajouter aux favoris" Ajouter aux favoris - + contact_details_share "Partager" Partager - + information_popup_error_title Erreur - + contact_details_share_error_mesage "La création du fichier vcard a échoué" La création du fichier vcard a échoué - + contact_details_share_success_title "VCard créée" VCard créée - + contact_details_share_success_mesage "VCard du contact enregistrée dans %1" VCard du contact enregistrée dans %1 - + contact_details_share_email_title "Partage de contact" Partage de contact - + contact_details_delete "Supprimer ce contact" Supprimer ce contact @@ -3212,138 +3212,138 @@ en bout. Seul votre correspondant peut les déchiffrer. ConversationInfos - + one_one_infos_call "Appel" Appel - + one_one_infos_unmute "Sourdine" Réactiver les notifications - + one_one_infos_mute Sourdine - + group_infos_participants Participants (%1) - + group_infos_media_docs Medias & documents Medias & documents - + group_infos_shared_medias Shared medias Médias partagés - + group_infos_shared_docs Shared documents Documents partagés - + group_infos_other_actions Other actions Autres actions - + group_infos_ephemerals Messages éphémères : - + group_infos_enable_ephemerals Activer les messages éphémères - + group_infos_meeting Schedule a meeting Programmer une réunion - + group_infos_leave_room Leave chat room Quitter la conversation - + group_infos_leave_room_toast_title Leave Chat Room ? Quitter la conversation ? - + group_infos_leave_room_toast_message All the messages will be removed from the chat room. Do you want to continue ? Vous ne recevrez ni pourrez envoyer des messages dans cette conversation, quitter ? - + group_infos_delete_history Delete history Supprimer l'historique - + group_infos_delete_history_toast_title Delete history ? Supprimer l'historique ? - + group_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? Tous les messages seront supprimés. Souhaitez-vous continuer ? - + one_one_infos_open_contact Show contact Voir le contact - + one_one_infos_create_contact Create contact Créer un contact - + one_one_infos_ephemerals Messages éphémères : - + one_one_infos_enable_ephemerals Activer les messages éphémères - + one_one_infos_delete_history Supprimer l'historique - + one_one_infos_delete_history_toast_title Delete history ? Supprimer l'historique ? - + one_one_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? Tous les messages seront supprimés. Souhaitez-vous continuer ? @@ -3361,92 +3361,92 @@ en bout. Seul votre correspondant peut les déchiffrer. DebugSettingsLayout - + settings_debug_clean_logs_message "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" Les traces de débogage seront supprimées. Souhaitez-vous continuer ? - + settings_debug_share_logs_message "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? - + settings_debug_clipboard "Presse-papier" Presse-papier - + settings_debug_email "E-Mail" E-Mail - + debug_settings_trace "Traces %1" Traces %1 - + information_popup_email_sharing_failed "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2. - - + + information_popup_error_title Une erreur est survenue. Une erreur est survenue. - + settings_debug_enable_logs_title "Activer les traces de débogage" Activer les traces de débogage - + settings_debug_enable_full_logs_title "Activer les traces de débogage intégrales" Activer les traces de débogage intégrales - + settings_debug_delete_logs_title "Supprimer les traces" Supprimer les traces - + settings_debug_share_logs_title "Partager les traces" Partager les traces - + settings_debug_share_logs_loading_message "Téléversement des traces en cours …" Téléversement des traces en cours… - + settings_debug_app_version_title "Version de l'application" Version de l'application - + settings_debug_sdk_version_title "Version du SDK" Version du SDK - + settings_debug_share_logs_error "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1 @@ -3455,13 +3455,13 @@ en bout. Seul votre correspondant peut les déchiffrer. DecoratedTextField - + textfield_error_message_cannot_be_empty "ne peut être vide" ne peut être vide - + textfield_error_message_unknown_format "Format non reconnu" Format non reconnu @@ -3470,15 +3470,15 @@ en bout. Seul votre correspondant peut les déchiffrer. Dialog - - + + dialog_confirm "Confirmer" Confirmer - - + + dialog_cancel "Annuler" Annuler @@ -3487,49 +3487,49 @@ en bout. Seul votre correspondant peut les déchiffrer. EncryptionSettings - + call_stats_media_encryption_title "Encryption :" Chiffrement : - + call_stats_media_encryption Media encryption : %1 Chiffrement du média : %1 - + call_stats_zrtp_cipher_algo "Algorithme de chiffrement : %1" Algorithme de chiffrement : %1 - + call_stats_zrtp_key_agreement_algo "Algorithme d'accord de clé : %1" Algorithme d'accord de clé : %1 - + call_stats_zrtp_hash_algo "Algorithme de hachage : %1" Algorithme de hachage : %1 - + call_stats_zrtp_auth_tag_algo "Algorithme d'authentification : %1" Algorithme d'authentification : %1 - + call_stats_zrtp_sas_algo "Algorithme SAS : %1" Algorithme SAS : %1 - + call_zrtp_validation_button_label "Validation chiffrement" Validation chiffrement @@ -3538,42 +3538,42 @@ en bout. Seul votre correspondant peut les déchiffrer. EphemeralSettings - + title Messages éphémères - + explanations En activant les messages éphémères dans cette discussion, les messages envoyés seront automatiquement détruits après le délai défini. - + one_minute 1 minute - + one_hour 1 heure - + one_day 1 jour - + one_week 1 semaine - + disabled Désactivé - + custom Personnalisé: @@ -3674,55 +3674,55 @@ Expiration : %1 GroupChatInfoParticipants - + group_infos_manage_participants_title "Gérer des participants" Gérer les participants - + group_infos_participant_is_admin Admin - + menu_see_existing_contact "Show contact" Voir le contact - + menu_add_address_to_contacts "Add to contacts" Ajouter aux contacts - + group_infos_give_admin_rights Donner les droits admins - + group_infos_remove_admin_rights Retirer les droits admins - + group_infos_copy_sip_address Copier l’adresse SIP - + group_infos_remove_participant Retirer le participant - + group_infos_remove_participants_toast_title Retirer le participant ? - + group_infos_remove_participants_toast_message La participant sere retiré de la conversation @@ -3752,50 +3752,50 @@ Expiration : %1 HelpPage - + help_title "Aide" Aide - - + + help_about_title "À propos de %1" À propos de %1 - + help_about_privacy_policy_title "Règles de confidentialité" Règles de confidentialité - + help_about_privacy_policy_subtitle Quelles informations %1 collecte et utilise Quelles informations %1 collecte et utilise - + help_about_version_title "Version" Version - + help_about_gpl_licence_title "Licences GPLv3" Licences GPLv3 - + help_about_contribute_translations_title "Contribuer à la traduction de %1" Contribuer à la traduction de %1 - + help_troubleshooting_title "Dépannage" Dépannage @@ -3935,7 +3935,7 @@ Expiration : %1 LoadingPopup - + cancel Annuler @@ -4343,7 +4343,7 @@ Expiration : %1 ManageParticipants - + group_infos_manage_participants Participants @@ -4351,37 +4351,37 @@ Expiration : %1 MeetingForm - + meeting_schedule_meeting_label "Réunion" Réunion - + meeting_schedule_broadcast_label "Webinar" Webinar - + meeting_schedule_subject_hint "Ajouter un titre" Ajouter un titre - + meeting_schedule_description_hint "Ajouter une description" Ajouter une description - + meeting_schedule_add_participants_title "Ajouter des participants" Ajouter des participants - + meeting_schedule_send_invitations_title "Envoyer une invitation aux participants" Envoyer une invitation aux participants @@ -4411,175 +4411,175 @@ Expiration : %1 MeetingPage - + meetings_add "Créer une réunion" Créer une réunion - + meetings_list_empty "Aucune réunion" Aucune réunion - + meeting_schedule_cancel_dialog_message "Souhaitez-vous annuler et supprimer cette réunion ?" Souhaitez-vous annuler et supprimer cette réunion ? - + meeting_schedule_delete_dialog_message Souhaitez-vous supprimer cette réunion ? Souhaitez-vous supprimer cette réunion ? - + meeting_schedule_cancel_and_delete_action "Annuler et supprimer" Annuler et supprimer - + meeting_schedule_delete_only_action "Supprimer seulement" Supprimer seulement - + meeting_schedule_delete_action "Supprimer" Supprimer - + back_action Retour Retour - + meetings_list_title Réunions Réunions - + meetings_search_hint "Rechercher une réunion" Rechercher une réunion - + list_filter_no_result_found "Aucun résultat…" Aucun résultat… - + meetings_empty_list "Aucune réunion" Aucune réunion - - + + meeting_schedule_title "Nouvelle réunion" Nouvelle réunion - + create Créer - - - - - - + + + + + + information_popup_error_title Erreur - - + + meeting_schedule_mandatory_field_not_filled_toast Veuillez saisir un titre et sélectionner au moins un participant Veuillez saisir un titre et sélectionner au moins un participant - - + + meeting_schedule_duration_error_toast "La fin de la conférence doit être plus récente que son début" La fin de la conférence doit être plus récente que son début - - + + meeting_schedule_creation_in_progress "Création de la réunion en cours …" Création de la réunion en cours… - + meeting_info_created_toast "Réunion planifiée avec succès" Réunion planifiée avec succès - + meeting_failed_to_schedule_toast "Échec de création de la réunion !" Échec de création de la réunion ! - + save Enregistrer - - + + saved "Enregistré" Enregistré - + meeting_info_updated_toast "Réunion mise à jour" Réunion mise à jour - + meeting_schedule_edit_in_progress "Modification de la réunion en cours…" Modification de la réunion en cours… - + meeting_failed_to_edit_toast "Échec de la modification de la réunion !" Échec de la modification de la réunion ! - + meeting_schedule_add_participants_title "Ajouter des participants" Ajouter des participants - + meeting_schedule_add_participants_apply Appliquer - + group_call_participant_selected "%n participant(s) sélectionné(s)" @@ -4588,31 +4588,31 @@ Expiration : %1 - + meeting_info_delete "Supprimer la réunion" Supprimer la réunion - + meeting_address_copied_to_clipboard_toast "Adresse de la réunion copiée" Adresse de la réunion copiée - + meeting_schedule_timezone_title "Fuseau horaire" Fuseau horaire - + meeting_info_organizer_label "Organisateur" Organisateur - + meeting_info_join_title "Rejoindre la réunion" Rejoindre la réunion @@ -4621,19 +4621,19 @@ Expiration : %1 MeetingsSettingsLayout - + settings_meetings_display_title "Affichage" Affichage - + settings_meetings_default_layout_title "Mode d’affichage par défaut" Mode d’affichage par défaut - + settings_meetings_default_layout_subtitle "Le mode d’affichage des participants en réunions" Le mode d’affichage des participants en réunions @@ -4642,7 +4642,7 @@ Expiration : %1 MessageImdnStatusInfos - + message_details_status_title Message status Statut du message @@ -4651,13 +4651,13 @@ Expiration : %1 MessageReactionsInfos - + message_details_reactions_title Reactions Réactions - + click_to_delete_reaction_info Click to delete Appuyez pour supprimer @@ -4666,13 +4666,13 @@ Expiration : %1 MessageSharedFilesInfos - + no_shared_medias No media Aucun média - + no_shared_documents No document Aucun document @@ -4730,13 +4730,13 @@ Expiration : %1 NetworkSettingsLayout - + settings_network_title "Réseau" Réseau - + settings_network_allow_ipv6 "Autoriser l'IPv6" Autoriser l'IPv6 @@ -4769,19 +4769,19 @@ Expiration : %1 NotificationReceivedCall - + call_audio_incoming "Appel entrant" Appel entrant - + dialog_accept "Accepter" Accepter - + dialog_deny "Refuser Refuser @@ -4796,30 +4796,30 @@ Expiration : %1 Nouvel appel de %1 - + new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. Message vocal reçu ! - + new_file_message Fichier reçu ! - + new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. Nouvelle invitation à une conférence ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. Nouveaux messages reçus ! - + new_message_alert_accessible_name New message on chatroom %1 Nouveau message sur la conversation %1 @@ -4943,13 +4943,13 @@ Expiration : %1 ParticipantListView - + meeting_participant_is_admin_label "Admin" Admin - + meeting_add_participants_title "Ajouter des participants" Ajouter des participants @@ -4958,13 +4958,13 @@ Expiration : %1 PhoneNumberInput - + prefix_phone_number_accessible_name %1 prefix %1 préfix - + number_phone_number_accessible_name %1 number %1 indicatif téléphonique @@ -5016,7 +5016,7 @@ Expiration : %1 PresenceNoteLayout - + contact_presence_note_title Message personnalisé @@ -5024,12 +5024,12 @@ Expiration : %1 PresenceSetCustomStatus - + contact_presence_button_set_custom_status_title Définir un statut personnalisé - + contact_presence_button_save_custom_status Enregistrer @@ -5151,37 +5151,37 @@ Expiration : %1 RegisterCheckingPage - + email "email" email - + phone_number "numéro de téléphone" numéro de téléphone - + confirm_register_title "Inscription | Confirmer votre %1" Inscription | Confirmer votre %1 - + assistant_account_creation_confirmation_explanation Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous - + assistant_account_creation_confirmation_did_not_receive_code "Vous n'avez pas reçu le code ?" Vous n'avez pas reçu le code ? - + assistant_account_creation_confirmation_resend_code "Renvoyer un code" Renvoyer un code @@ -5475,37 +5475,37 @@ Pour les activer dans un projet commercial, merci de nous contacter. ScreencastSettings - + screencast_settings_choose_window_text "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants - + screencast_settings_all_screen_label "Ecran entier" Écran entier - + screencast_settings_one_window_label "Fenêtre" Fenêtre - + screencast_settings_screen "Ecran %1" Écran %1 - + stop "Stop Stop - + share "Partager" Partager @@ -5529,43 +5529,43 @@ Pour les activer dans un projet commercial, merci de nous contacter. SecurityModePage - + manage_account_choose_mode_title "Choisir votre mode" Choisir votre mode - + manage_account_choose_mode_message "Vous pourrez changer de mode plus tard." Vous pourrez changer de mode plus tard. - + manage_account_e2e_encrypted_mode_default_title "Chiffrement de bout en bout" Chiffrement de bout en bout - + manage_account_e2e_encrypted_mode_default_summary "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges. - + manage_account_e2e_encrypted_mode_interoperable_title "Interoperable" Interopérable - + manage_account_e2e_encrypted_mode_interoperable_summary "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP. - + dialog_continue "Continuer" Continuer @@ -5574,13 +5574,13 @@ Pour les activer dans un projet commercial, merci de nous contacter. SecuritySettingsLayout - + settings_security_enable_vfs_title "Chiffrer tous les fichiers" Chiffrer tous les fichiers - + settings_security_enable_vfs_subtitle "Attention, vous ne pourrez pas revenir en arrière !" Attention, vous ne pourrez pas revenir en arrière ! @@ -5589,42 +5589,42 @@ Pour les activer dans un projet commercial, merci de nous contacter. SelectedChatView - + chat_view_group_call_toast_message Démarrer un appel de groupe ? - + unencrypted_conversation_warning This conversation is not encrypted ! Cette conversation n'est pas chiffrée ! - + reply_to_label Reply to %1 Réponse à %1 - + shared_medias_title Shared medias Médias partagés - + shared_documents_title Shared documents Documents partagés - + forward_to_title Forward to… Transférer à… - + conversations_title Conversations Conversations @@ -5717,13 +5717,13 @@ Pour les activer dans un projet commercial, merci de nous contacter. Sticker - + conference_participant_joining_text "rejoint…" rejoint… - + conference_participant_paused_text "En pause" En pause @@ -6036,32 +6036,32 @@ Failed to create 1-1 conversation with %1 ! WaitingRoom - + meeting_waiting_room_title Participer à : Participer à : - + meeting_waiting_room_join "Rejoindre" Rejoindre - - + + cancel Cancel Annuler - + meeting_waiting_room_joining_title "Connexion à la réunion" Connexion à la réunion - + meeting_waiting_room_joining_subtitle "Vous allez rejoindre la réunion dans quelques instants…" Vous allez rejoindre la réunion dans quelques instants… @@ -6070,61 +6070,61 @@ Failed to create 1-1 conversation with %1 ! WelcomePage - + welcome_page_title "Bienvenue" Bienvenue - + welcome_page_subtitle "sur %1" sur %1 - + welcome_carousel_skip "Passer" Passer - + welcome_page_1_message "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>. - + welcome_page_2_title "Sécurisé" Sécurisé - + welcome_page_2_message "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>. - + welcome_page_3_title "Open Source" Open Source - + welcome_page_3_message "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b> - + next "Suivant" Suivant - + start "Commencer" Commencer @@ -6133,61 +6133,61 @@ Failed to create 1-1 conversation with %1 ! ZrtpAuthenticationDialog - + call_dialog_zrtp_validate_trust_title Vérification de sécurité Vérification de sécurité - + call_zrtp_sas_validation_skip "Passer" Passer - + call_dialog_zrtp_validate_trust_warning_message "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes : - + call_dialog_zrtp_validate_trust_message "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : - + call_dialog_zrtp_validate_trust_local_code_label "Votre code :" Votre code : - + call_dialog_zrtp_validate_trust_remote_code_label "Code correspondant :" Code correspondant : - + call_dialog_zrtp_validate_trust_letters_do_not_match_text "Le code fourni ne correspond pas." Le code fourni ne correspond pas. - + call_dialog_zrtp_security_alert_message "La confidentialité de votre appel peut être compromise !" La confidentialité de votre appel peut être compromise ! - + call_dialog_zrtp_validate_trust_letters_do_not_match "Aucune correspondance" Aucune correspondance - + call_action_hang_up "Raccrocher" Raccrocher diff --git a/Linphone/data/languages/hu.ts b/Linphone/data/languages/hu.ts new file mode 100644 index 000000000..1e3ed8a1a --- /dev/null +++ b/Linphone/data/languages/hu.ts @@ -0,0 +1,7432 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + + + + + fps_counter + + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + + + + + drawer_menu_account_connection_status_refreshing + + + + + drawer_menu_account_connection_status_progress + + + + + drawer_menu_account_connection_status_failed + + + + + drawer_menu_account_connection_status_cleared + + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + + + + + AccountListView + + + add_an_account + Add an account + + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + + + + + assistant_account_login_forbidden_error + "Username and password do not match" + + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + + + + + assistant_account_add_error + "Unable to add account." + + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + + + + + manage_account_devices_title + "Vos appareils" + + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + + + + + manage_account_add_picture + "Ajouter une image" + + + + + manage_account_edit_picture + "Modifier l'image" + + + + + manage_account_remove_picture + "Supprimer l'image" + + + + + sip_address + + + + + sip_address_display_name + "Nom d'affichage + + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + + + + + manage_account_international_prefix + Indicatif international* + + + + + manage_account_delete + "Déconnecter mon compte" + + + + + manage_account_delete_message + + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + + + + + error + Erreur + + + + + manage_account_device_remove + "Supprimer" + + + + + manage_account_device_remove_confirm_dialog + + + + + manage_account_device_last_connection + "Dernière connexion:" + + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + + + + + settings_general_title + "Général" + + + + + settings_account_title + "Paramètres de compte" + + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + + + + + AccountSettingsParametersLayout + + + settings_title + + + + + settings_account_title + + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + + + + + information_popup_success_title + + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + + + + + information_popup_error_title + + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + + + + + account_settings_transport_title + "Transport" + + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + + + + + account_settings_enable_ice_title + "Activer ICE" + + + + + account_settings_avpf_title + "AVPF" + + + + + account_settings_bundle_mode_title + "Mode bundle" + + + + + account_settings_expire_title + "Expiration (en seconde)" + + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + + + + + contact_list_empty + + + + + AdvancedSettingsLayout + + + settings_system_title + System + + + + + settings_remote_provisioning_title + Remote provisioning + + + + + settings_security_title + Security / Encryption + + + + + settings_advanced_audio_codecs_title + Audio codecs + + + + + settings_advanced_video_codecs_title + Video codecs + + + + + settings_advanced_auto_start_title + Auto start %1 + + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + + + + + information_popup_error_title + Invalid URL format + + + + + settings_advanced_invalid_url_message + + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + + + + + settings_advanced_hide_fps_title + + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + + + + + generic_address_picker_contacts_list_title + 'Contacts' + + + + + generic_address_picker_suggestions_list_title + "Suggestions" + + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + + + + + + info_popup_error_title + Error + + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + + + + + command_line_arg_order + "Send an order to the application towards a command line" + + + + + command_line_option_show_help + + + + + command_line_option_show_app_version + + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + + + + + command_line_option_minimized + + + + + command_line_option_log_to_stdout + + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + + + + + hide_action + "Cacher" "Afficher" + + + + + show_action + + + + + quit_action + "Quitter" + + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + + + + + password + + + + + cancel + "Annuler + + + + + assistant_account_login + Connexion + + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + + + + + media_encryption_dtls + DTLS + + + + + media_encryption_none + None + + + + + media_encryption_srtp + SRTP + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel Video" + + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + + + + + call_ended_by_user + "Vous avez terminé l'appel" + + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + + + + + conference_call_empty + "En attente d'autres participants…" + + + + + conference_share_link_title + "Partager le lien" + + + + + copied + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + + + + + call + "Appel" + + + + + paused_call_or_meeting + "%1 en pause" + + + + + ongoing_call_or_meeting + "%1 en cours" + + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + + + + + call_error_user_not_found_toast + "User was not found" + + + + + call_error_user_busy_toast + "User is busy" + + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + + + + + call_error_io_error_toast + "Unavailable service or network error" + + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + + + + + call_history_empty_title + "Historique d'appel vide" + + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + + + + + call_history_call_list_title + "Appels" + + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + history_list_empty_history + "Aucun appel dans votre historique" + + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + + + + + call_start_group_call_title + "Appel de groupe" + + + + + call_action_start_group_call + "Lancer" + + + + + + + information_popup_error_title + + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + menu_copy_sip_address + "Copier l'adresse SIP" + + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + + + + + notification_missed_call_title + "Appel manqué" + + + + + call_outgoing + "Appel sortant" + + + + + call_audio_incoming + "Appel entrant" + + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + + + + + settings_call_enable_tones_title + Tonalités + + + + + settings_call_enable_tones_subtitle + Activer les tonalités + + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + + + + + call_stats_video_title + "Vidéo" + + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + + + + + + information_popup_error_title + + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + + + + + call_can_be_trusted_toast + "Appareil authentifié" + + + + + call_dir + + + + + call_ended + Appel terminé + + + + + conference_paused + Meeting paused + + + + + call_paused + Call paused + + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + + + + + call_zrtp_sas_validation_required + Vérification nécessaire + + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + + + + + call_not_encrypted + "Appel non chiffré" + + + + + + call_waiting_for_encryption_info + Waiting for encryption + + + + + call_paused_by_remote + Call paused by remote + + + + + conference_user_is_recording + "You are recording the meeting" + + + + + call_user_is_recording + "You are recording the call" + + + + + conference_remote_is_recording + "Someone is recording the meeting" + + + + + call_remote_recording + "%1 is recording the call" + + + + + call_stop_recording + "Stop recording" + + + + + add + + + + + call_transfer_current_call_title + "Transférer %1 à…" + + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + + + + + call_action_start_new_call + "Nouvel appel" + + + + + + call_action_show_dialer + "Pavé numérique" + + + + + call_action_change_layout + "Modifier la disposition" + + + + + call_action_go_to_calls_list + "Liste d'appel" + + + + + Merger tous les appels + call_action_merge_calls + + + + + + call_action_go_to_settings + "Paramètres" + + + + + conference_action_screen_sharing + "Partage de votre écran" + + + + + conference_share_link_title + Partager le lien de la réunion + + + + + copied + Copié + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + + + conference_participants_list_title + "Participants (%1)" + + + + + + group_call_participant_selected + + + + + + + + meeting_schedule_add_participants_title + + + + + call_encryption_title + Chiffrement + + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + + + + + stop_recording_accessible_name + Stop recording + + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + + + + + + call_action_end_call + "Terminer l'appel" + + + + + + call_action_resume_call + "Reprendre l'appel" + + + + + + call_action_pause_call + "Mettre l'appel en pause" + + + + + + call_action_transfer_call + "Transférer l'appel" + + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + + + + + + call_activate_video_hint + + + + + + call_activate_microphone + "Activer le micro" + + + + + + call_deactivate_microphone + "Désactiver le micro" + + + + + + call_share_screen_hint + Partager l'écran… + + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + + + + + + call_send_reaction_hint + "Envoyer une réaction" + + + + + + call_manage_participants_hint + "Gérer les participants" + + + + + + call_more_options_hint + "Plus d'options…" + + + + + call_action_change_conference_layout + "Modifier la disposition" + + + + + call_action_full_screen + "Mode Plein écran" + + + + + call_action_stop_recording + "Terminer l'enregistrement" + + + + + call_action_record + "Enregistrer l'appel" + + + + + call_activate_speaker_hint + "Activer le son" + + + + + call_deactivate_speaker_hint + "Désactiver le son" + + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + + + + + information_popup_error_title + + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + + + + + information_popup_synchronization_success_title + + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + + + + + settings_contacts_carddav_popup_synchronization_error_title + + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + + + + + sip_address_display_name + Nom d'affichage + + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + + + + + username + + + + + password + + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + + + + + ChangeLayoutForm + + + conference_layout_grid + + + + + conference_layout_active_speaker + + + + + conference_layout_audio_only + + + + + ChatAudioContent + + + + information_popup_error_title + Error + + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + + + + + ChatMessageContentCore + + + popup_error_title + Error + + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + + + + + ics_bubble_participants + %n participant(s) + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + + + + + + + information_popup_error_title + + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + + + + + fetch_config_function_description + + + + + call_function_description + + + + + bye_function_description + + + + + accept_function_description + + + + + decline_function_description + + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + + + + + Contact + + + information_popup_error_title + Erreur + + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + + + + + save + "Enregistrer + + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + + + + + contact_editor_add_image_label + "Ajouter une image" + + + + + contact_details_edit + "Modifier" + + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + + + + + + contact_editor_last_name + "Nom" + + + + + + contact_editor_company + "Entreprise" + + + + + + contact_editor_job_title + "Fonction" + + + + + + sip_address + + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + Partager + + + + + information_popup_error_title + + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + + + + + information_popup_vcard_creation_title + VCard créée + + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + + + + + contact_sharing_email_title + Partage de contact + + + + + contact_details_delete + "Supprimer" + + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + + + + + contacts_list_empty + "Aucun contact pour le moment" + + + + + contact_new_title + "Nouveau contact" + + + + + create + + + + + contact_edit_title + "Modifier contact" + + + + + save + + + + + contact_dialog_delete_title + Supprimer %1 ?" + + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + + + + + contact_deleted_toast + "Contact supprimé" + + + + + contact_deleted_message + "%1 a été supprimé" + + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + + + + + popup_do_not_show_again + Ne plus afficher + + + + + cancel + + + + + dialog_call + "Appeler" + + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + + + + + dialog_ok + "Ok" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + search_bar_look_for_contact_text + Rechercher un contact + + + + + list_filter_no_result_found + Aucun résultat… + + + + + contact_list_empty + Aucun contact pour le moment + + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel vidéo" + + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + + + + + contact_details_job_title + "Poste :" + + + + + contact_details_medias_title + "Medias" + + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + + + + + contact_details_trust_title + "Confiance" + + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + + + + + contact_details_no_device_found + "Aucun appareil" + + + + + contact_device_without_name + "Appareil inconnu" + + + + + contact_make_call_check_device_trust + "Vérifier" + + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + + + + + contact_details_remove_from_favourites + "Retirer des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + contact_details_share + "Partager" + + + + + information_popup_error_title + + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + + + + + contact_details_share_success_title + "VCard créée" + + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + + + + + contact_details_share_email_title + "Partage de contact" + + + + + contact_details_delete + "Supprimer ce contact" + + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + + + + + settings_contacts_carddav_title + + + + + settings_contacts_carddav_subtitle + + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + add + "Ajouter" + + + + + ConversationInfos + + + one_one_infos_call + "Appel" + + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + + + + + settings_debug_clipboard + "Presse-papier" + + + + + settings_debug_email + "E-Mail" + + + + + debug_settings_trace + "Traces %1" + + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + + + + + + information_popup_error_title + Une erreur est survenue. + + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + + + + + settings_debug_delete_logs_title + "Supprimer les traces" + + + + + settings_debug_share_logs_title + "Partager les traces" + + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + + + + + settings_debug_app_version_title + "Version de l'application" + + + + + settings_debug_sdk_version_title + "Version du SDK" + + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + + + + + textfield_error_message_unknown_format + "Format non reconnu" + + + + + Dialog + + + + dialog_confirm + "Confirmer" + + + + + + dialog_cancel + "Annuler" + + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + + + + + call_stats_media_encryption + Media encryption : %1 + + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + + + + + call_zrtp_validation_button_label + "Validation chiffrement" + + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + + + + + + + device_id + "Téléphone" + + + + + information_popup_error_title + + + + + information_popup_invalid_address_message + "Adresse invalide" + + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + + + + + group_infos_participant_is_admin + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + + + + + required + "Requis" + + + + + HelpPage + + + help_title + "Aide" + + + + + + help_about_title + "À propos de %1" + + + + + help_about_privacy_policy_title + "Règles de confidentialité" + + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + + + + + help_about_version_title + "Version" + + + + + help_about_gpl_licence_title + "Licences GPLv3" + + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + + + + + help_troubleshooting_title + "Dépannage" + + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + + + + + settings_contacts_ldap_subtitle + + + + + information_popup_success_title + + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + + + + + information_popup_error_title + + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + + + + + settings_contacts_ldap_password_title + "Mot de passe" + + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + + + + + settings_contacts_ldap_search_filter_title + "Filtre" + + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + + + + + settings_contacts_ldap_debug_title + "Débogage" + + + + + LoadingPopup + + + cancel + + + + + LoginForm + + + + username + Nom d'utilisateur : username + + + + + + password + Mot de passe + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + + + + + assistant_forgotten_password + "Mot de passe oublié ?" + + + + + LoginLayout + + + + help_about_title + À propos de %1 + + + + + help_about_privacy_policy_title + "Politique de confidentialité" + + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + + + + + help_about_version_title + "Version" + + + + + help_about_licence_title + "Licence" + + + + + help_about_copyright_title + "Copyright + + + + + close + "Fermer" + + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + + + + + assistant_no_account_yet + "Pas encore de compte ?" + + + + + assistant_account_register + "S'inscrire" + + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + + + + + assistant_login_remote_provisioning + "Configuration distante" + + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + + + + + cancel + + + + + validate + "Valider" + + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + + + + + default_account_connection_state_error_toast + + + + + MagicSearchList + + + device_id + + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + + + + + do_not_disturb_accessible_name + "Do not disturb" + + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + + + + + information_popup_error_title + + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + + + + + settings_title + + + + + recordings_title + "Enregistrements" + + + + + help_title + "Aide" + + + + + help_quit_title + "Quitter l'application" + + + + + quit_app_question + "Quitter %1 ?" + + + + + drawer_menu_add_account + "Ajouter un compte" + + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + + + + + interoperable + interopérable + + + + + call_transfer_successful_toast_title + "Appel transféré" + + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + + + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + + + + + assistant_register_error_title + "Erreur lors de la création" + + + + + assistant_register_success_title + "Compte créé" + + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + + + + + assistant_register_error_code + "Erreur dans le code de validation" + + + + + information_popup_error_title + + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + + + + + meeting_schedule_broadcast_label + "Webinar" + + + + + meeting_schedule_subject_hint + "Ajouter un titre" + + + + + meeting_schedule_description_hint + "Ajouter une description" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + MeetingPage + + + meetings_add + "Créer une réunion" + + + + + meetings_list_empty + "Aucune réunion" + + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + + + + + meeting_schedule_delete_action + "Supprimer" + + + + + back_action + Retour + + + + + meetings_list_title + Réunions + + + + + meetings_search_hint + "Rechercher une réunion" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + meetings_empty_list + "Aucune réunion" + + + + + + meeting_schedule_title + "Nouvelle réunion" + + + + + create + + + + + + + + + + information_popup_error_title + + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + + + + + save + + + + + + saved + "Enregistré" + + + + + meeting_info_updated_toast + "Réunion mise à jour" + + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + + + + + meeting_schedule_timezone_title + "Fuseau horaire" + + + + + meeting_info_organizer_label + "Organisateur" + + + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + + + + + + multimedia_settings_camera_title + "Caméra" + + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + + + + + call_start_group_call_title + Appel de groupe + + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + + + + + dialog_accept + "Accepter" + + + + + dialog_deny + "Refuser + + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + + + + + oidc_authentication_granted_message + Authentication granted + + + + + oidc_authentication_not_authenticated_message + Not authenticated + + + + + oidc_authentication_refresh_message + Refreshing token + + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + + + + + oidc_authentication_network_error + Network error + + + + + oidc_authentication_server_error + Server error + + + + + oidc_authentication_token_not_found_error + OAuth token not found + + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + + + + + oidc_authentication_refresh_token_message + Refreshing access token + + + + + oidc_authentication_request_authorization_message + Requesting authorization + + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + + + + + meeting_add_participants_title + "Ajouter des participants" + + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + + + + + contact_presence_button_delete_custom_status + + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + + + + + QObject + + + media_encryption_dtls + + + + + media_encryption_none + + + + + media_encryption_srtp + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + + + + + outgoing + "Sortant" + + + + + conference_layout_active_speaker + "Participant actif" + + + + + conference_layout_grid + "Mosaïque" + + + + + conference_layout_audio_only + "Audio uniquement" + + + + + RegisterCheckingPage + + + email + "email" + + + + + phone_number + "numéro de téléphone" + + + + + confirm_register_title + "Inscription | Confirmer votre %1" + + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + + + + + assistant_already_have_an_account + + + + + assistant_account_login + + + + + assistant_account_register_with_phone_number + + + + + assistant_account_register_with_email + + + + + + username + + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + + + + + + + phone_number + "Numéro de téléphone" + + + + + + email + + + + + + password + + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + + + + + assistant_account_create + "Créer" + + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + + + + + assistant_no_account_yet + Pas encore de compte ? + + + + + assistant_account_register + S'inscrire + + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + + + + + + username + "Nom d'utilisateur" + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + + + + + + sip_address_domain + "Domaine" + + + + + + sip_address_display_name + Nom d'affichage + + + + + + transport + "Transport" + + + + + + assistant_account_login + + + + + assistant_account_login_missing_username + + + + + assistant_account_login_missing_password + + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + + + + + login_advanced_parameters_label + Advanced parameters + + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + + + + + screencast_settings_all_screen_label + "Ecran entier" + + + + + screencast_settings_one_window_label + "Fenêtre" + + + + + screencast_settings_screen + "Ecran %1" + + + + + stop + "Stop + + + + + share + "Partager" + + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + + + + + dialog_continue + "Continuer" + + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + + + + + settings_calls_title + "Appels" + + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + + + + + settings_contacts_title + "Contacts" + + + + + settings_meetings_title + "Réunions" + + + + + settings_network_title + "Affichage" "Security" "Réseau" + + + + + settings_advanced_title + "Paramètres avancés" + + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + + + + + conference_participant_paused_text + "En pause" + + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + + + + + group_call_error_no_account + + + + + group_call_error_participants_invite + + + + + group_call_error_creation + + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + nMinute + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + nDay + + + + + + + + nWeek + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + + + + + contact_presence_status_do_not_disturb + + + + + contact_presence_status_offline + + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + + + + + information_popup_group_call_not_created_message + + + + + number_of_years + %n an(s) + + + + + + + + number_of_month + "%n mois" + + + + + + + + number_of_weeks + %n semaine(s) + + + + + + + + number_of_days + %n jour(s) + + + + + + + + today + "Aujourd'hui" + + + + + yesterday + "Hier + + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + + + + + meeting_waiting_room_join + "Rejoindre" + + + + + + cancel + Cancel + + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + + + + + welcome_page_subtitle + "sur %1" + + + + + welcome_carousel_skip + "Passer" + + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + + + + + welcome_page_2_title + "Sécurisé" + + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + + + + + welcome_page_3_title + "Open Source" + + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + + + + + next + "Suivant" + + + + + start + "Commencer" + + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + + + + + call_zrtp_sas_validation_skip + "Passer" + + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + + + + + call_action_hang_up + "Raccrocher" + + + + + country + + + Afghanistan + + + + + Albania + + + + + Algeria + + + + + AmericanSamoa + + + + + Andorra + + + + + Angola + + + + + Anguilla + + + + + AntiguaAndBarbuda + + + + + Argentina + + + + + Armenia + + + + + Aruba + + + + + Australia + + + + + Austria + + + + + Azerbaijan + + + + + Bahamas + + + + + Bahrain + + + + + Bangladesh + + + + + Barbados + + + + + Belarus + + + + + Belgium + + + + + Belize + + + + + Benin + + + + + Bermuda + + + + + Bhutan + + + + + Bolivia + + + + + BosniaAndHerzegowina + + + + + Botswana + + + + + Brazil + + + + + Brunei + + + + + Bulgaria + + + + + BurkinaFaso + + + + + Burundi + + + + + Cambodia + + + + + Cameroon + + + + + Canada + + + + + CapeVerde + + + + + CaymanIslands + + + + + CentralAfricanRepublic + + + + + Chad + + + + + Chile + + + + + China + + + + + Colombia + + + + + Comoros + + + + + PeoplesRepublicOfCongo + + + + + CookIslands + + + + + CostaRica + + + + + IvoryCoast + + + + + Croatia + + + + + Cuba + + + + + Cyprus + + + + + CzechRepublic + + + + + Denmark + + + + + Djibouti + + + + + Dominica + + + + + DominicanRepublic + + + + + Ecuador + + + + + Egypt + + + + + ElSalvador + + + + + EquatorialGuinea + + + + + Eritrea + + + + + Estonia + + + + + Ethiopia + + + + + FalklandIslands + + + + + FaroeIslands + + + + + Fiji + + + + + Finland + + + + + France + + + + + FrenchGuiana + + + + + FrenchPolynesia + + + + + Gabon + + + + + Gambia + + + + + Georgia + + + + + Germany + + + + + Ghana + + + + + Gibraltar + + + + + Greece + + + + + Greenland + + + + + Grenada + + + + + Guadeloupe + + + + + Guam + + + + + Guatemala + + + + + Guinea + + + + + GuineaBissau + + + + + Guyana + + + + + Haiti + + + + + Honduras + + + + + DemocraticRepublicOfCongo + + + + + HongKong + + + + + Hungary + + + + + Iceland + + + + + India + + + + + Indonesia + + + + + Iran + + + + + Iraq + + + + + Ireland + + + + + Israel + + + + + Italy + + + + + Jamaica + + + + + Japan + + + + + Jordan + + + + + Kazakhstan + + + + + Kenya + + + + + Kiribati + + + + + DemocraticRepublicOfKorea + + + + + RepublicOfKorea + + + + + Kuwait + + + + + Kyrgyzstan + + + + + Laos + + + + + Latvia + + + + + Lebanon + + + + + Lesotho + + + + + Liberia + + + + + Libya + + + + + Liechtenstein + + + + + Lithuania + + + + + Luxembourg + + + + + Macau + + + + + Macedonia + + + + + Madagascar + + + + + Malawi + + + + + Malaysia + + + + + Maldives + + + + + Mali + + + + + Malta + + + + + MarshallIslands + + + + + Martinique + + + + + Mauritania + + + + + Mauritius + + + + + Mayotte + + + + + Mexico + + + + + Micronesia + + + + + Moldova + + + + + Monaco + + + + + Mongolia + + + + + Montenegro + + + + + Montserrat + + + + + Morocco + + + + + Mozambique + + + + + Myanmar + + + + + Namibia + + + + + NauruCountry + + + + + Nepal + + + + + Netherlands + + + + + NewCaledonia + + + + + NewZealand + + + + + Nicaragua + + + + + Niger + + + + + Nigeria + + + + + Niue + + + + + NorfolkIsland + + + + + NorthernMarianaIslands + + + + + Norway + + + + + Oman + + + + + Pakistan + + + + + Palau + + + + + PalestinianTerritories + + + + + Panama + + + + + PapuaNewGuinea + + + + + Paraguay + + + + + Peru + + + + + Philippines + + + + + Poland + + + + + Portugal + + + + + PuertoRico + + + + + Qatar + + + + + Reunion + + + + + Romania + + + + + RussianFederation + + + + + Rwanda + + + + + SaintHelena + + + + + SaintKittsAndNevis + + + + + SaintLucia + + + + + SaintPierreAndMiquelon + + + + + SaintVincentAndTheGrenadines + + + + + Samoa + + + + + SanMarino + + + + + SaoTomeAndPrincipe + + + + + SaudiArabia + + + + + Senegal + + + + + Serbia + + + + + Seychelles + + + + + SierraLeone + + + + + Singapore + + + + + Slovakia + + + + + Slovenia + + + + + SolomonIslands + + + + + Somalia + + + + + SouthAfrica + + + + + Spain + + + + + SriLanka + + + + + Sudan + + + + + Suriname + + + + + Swaziland + + + + + Sweden + + + + + Switzerland + + + + + Syria + + + + + Taiwan + + + + + Tajikistan + + + + + Tanzania + + + + + Thailand + + + + + Togo + + + + + Tokelau + + + + + Tonga + + + + + TrinidadAndTobago + + + + + Tunisia + + + + + Turkey + + + + + Turkmenistan + + + + + TurksAndCaicosIslands + + + + + Tuvalu + + + + + Uganda + + + + + Ukraine + + + + + UnitedArabEmirates + + + + + UnitedKingdom + + + + + UnitedStates + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Vietnam + + + + + WallisAndFutunaIslands + + + + + Yemen + + + + + Zambia + + + + + Zimbabwe + + + + + utils + + + formatYears + '%1 year' + + + + + + + + formatMonths + '%1 month' + + + + + + + + formatWeeks + '%1 week' + + + + + + + + formatDays + '%1 day' + + + + + + + + formatHours + '%1 hour' + + + + + + + + formatMinutes + '%1 minute' + + + + + + + + formatSeconds + '%1 second' + + + + + + + + codec_install + "Installation de codec" + + + + + download_codec + "Télécharger le codec %1 (%2) ?" + + + + + information_popup_success_title + "Succès" + + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + + + + + + + information_popup_error_title + + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + + + + + okButton + + + + diff --git a/Linphone/data/languages/mk.ts b/Linphone/data/languages/mk.ts new file mode 100644 index 000000000..cbffaa64c --- /dev/null +++ b/Linphone/data/languages/mk.ts @@ -0,0 +1,7432 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + + + + + fps_counter + + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + + + + + drawer_menu_account_connection_status_refreshing + + + + + drawer_menu_account_connection_status_progress + + + + + drawer_menu_account_connection_status_failed + + + + + drawer_menu_account_connection_status_cleared + + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + + + + + AccountListView + + + add_an_account + Add an account + + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + + + + + assistant_account_login_forbidden_error + "Username and password do not match" + + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + + + + + assistant_account_add_error + "Unable to add account." + + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + + + + + manage_account_devices_title + "Vos appareils" + + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + + + + + manage_account_add_picture + "Ajouter une image" + + + + + manage_account_edit_picture + "Modifier l'image" + + + + + manage_account_remove_picture + "Supprimer l'image" + + + + + sip_address + + + + + sip_address_display_name + "Nom d'affichage + + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + + + + + manage_account_international_prefix + Indicatif international* + + + + + manage_account_delete + "Déconnecter mon compte" + + + + + manage_account_delete_message + + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + + + + + error + Erreur + + + + + manage_account_device_remove + "Supprimer" + + + + + manage_account_device_remove_confirm_dialog + + + + + manage_account_device_last_connection + "Dernière connexion:" + + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + + + + + settings_general_title + "Général" + + + + + settings_account_title + "Paramètres de compte" + + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + + + + + AccountSettingsParametersLayout + + + settings_title + + + + + settings_account_title + + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + + + + + information_popup_success_title + + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + + + + + information_popup_error_title + + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + + + + + account_settings_transport_title + "Transport" + + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + + + + + account_settings_enable_ice_title + "Activer ICE" + + + + + account_settings_avpf_title + "AVPF" + + + + + account_settings_bundle_mode_title + "Mode bundle" + + + + + account_settings_expire_title + "Expiration (en seconde)" + + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + + + + + contact_list_empty + + + + + AdvancedSettingsLayout + + + settings_system_title + System + + + + + settings_remote_provisioning_title + Remote provisioning + + + + + settings_security_title + Security / Encryption + + + + + settings_advanced_audio_codecs_title + Audio codecs + + + + + settings_advanced_video_codecs_title + Video codecs + + + + + settings_advanced_auto_start_title + Auto start %1 + + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + + + + + information_popup_error_title + Invalid URL format + + + + + settings_advanced_invalid_url_message + + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + + + + + settings_advanced_hide_fps_title + + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + + + + + generic_address_picker_contacts_list_title + 'Contacts' + + + + + generic_address_picker_suggestions_list_title + "Suggestions" + + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + + + + + + info_popup_error_title + Error + + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + + + + + command_line_arg_order + "Send an order to the application towards a command line" + + + + + command_line_option_show_help + + + + + command_line_option_show_app_version + + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + + + + + command_line_option_minimized + + + + + command_line_option_log_to_stdout + + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + + + + + hide_action + "Cacher" "Afficher" + + + + + show_action + + + + + quit_action + "Quitter" + + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + + + + + password + + + + + cancel + "Annuler + + + + + assistant_account_login + Connexion + + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + + + + + media_encryption_dtls + DTLS + + + + + media_encryption_none + None + + + + + media_encryption_srtp + SRTP + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel Video" + + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + + + + + call_ended_by_user + "Vous avez terminé l'appel" + + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + + + + + conference_call_empty + "En attente d'autres participants…" + + + + + conference_share_link_title + "Partager le lien" + + + + + copied + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + + + + + call + "Appel" + + + + + paused_call_or_meeting + "%1 en pause" + + + + + ongoing_call_or_meeting + "%1 en cours" + + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + + + + + call_error_user_not_found_toast + "User was not found" + + + + + call_error_user_busy_toast + "User is busy" + + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + + + + + call_error_io_error_toast + "Unavailable service or network error" + + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + + + + + call_history_empty_title + "Historique d'appel vide" + + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + + + + + call_history_call_list_title + "Appels" + + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + history_list_empty_history + "Aucun appel dans votre historique" + + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + + + + + call_start_group_call_title + "Appel de groupe" + + + + + call_action_start_group_call + "Lancer" + + + + + + + information_popup_error_title + + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + menu_copy_sip_address + "Copier l'adresse SIP" + + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + + + + + notification_missed_call_title + "Appel manqué" + + + + + call_outgoing + "Appel sortant" + + + + + call_audio_incoming + "Appel entrant" + + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + + + + + settings_call_enable_tones_title + Tonalités + + + + + settings_call_enable_tones_subtitle + Activer les tonalités + + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + + + + + call_stats_video_title + "Vidéo" + + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + + + + + + information_popup_error_title + + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + + + + + call_can_be_trusted_toast + "Appareil authentifié" + + + + + call_dir + + + + + call_ended + Appel terminé + + + + + conference_paused + Meeting paused + + + + + call_paused + Call paused + + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + + + + + call_zrtp_sas_validation_required + Vérification nécessaire + + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + + + + + call_not_encrypted + "Appel non chiffré" + + + + + + call_waiting_for_encryption_info + Waiting for encryption + + + + + call_paused_by_remote + Call paused by remote + + + + + conference_user_is_recording + "You are recording the meeting" + + + + + call_user_is_recording + "You are recording the call" + + + + + conference_remote_is_recording + "Someone is recording the meeting" + + + + + call_remote_recording + "%1 is recording the call" + + + + + call_stop_recording + "Stop recording" + + + + + add + + + + + call_transfer_current_call_title + "Transférer %1 à…" + + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + + + + + call_action_start_new_call + "Nouvel appel" + + + + + + call_action_show_dialer + "Pavé numérique" + + + + + call_action_change_layout + "Modifier la disposition" + + + + + call_action_go_to_calls_list + "Liste d'appel" + + + + + Merger tous les appels + call_action_merge_calls + + + + + + call_action_go_to_settings + "Paramètres" + + + + + conference_action_screen_sharing + "Partage de votre écran" + + + + + conference_share_link_title + Partager le lien de la réunion + + + + + copied + Copié + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + + + conference_participants_list_title + "Participants (%1)" + + + + + + group_call_participant_selected + + + + + + + + meeting_schedule_add_participants_title + + + + + call_encryption_title + Chiffrement + + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + + + + + stop_recording_accessible_name + Stop recording + + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + + + + + + call_action_end_call + "Terminer l'appel" + + + + + + call_action_resume_call + "Reprendre l'appel" + + + + + + call_action_pause_call + "Mettre l'appel en pause" + + + + + + call_action_transfer_call + "Transférer l'appel" + + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + + + + + + call_activate_video_hint + + + + + + call_activate_microphone + "Activer le micro" + + + + + + call_deactivate_microphone + "Désactiver le micro" + + + + + + call_share_screen_hint + Partager l'écran… + + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + + + + + + call_send_reaction_hint + "Envoyer une réaction" + + + + + + call_manage_participants_hint + "Gérer les participants" + + + + + + call_more_options_hint + "Plus d'options…" + + + + + call_action_change_conference_layout + "Modifier la disposition" + + + + + call_action_full_screen + "Mode Plein écran" + + + + + call_action_stop_recording + "Terminer l'enregistrement" + + + + + call_action_record + "Enregistrer l'appel" + + + + + call_activate_speaker_hint + "Activer le son" + + + + + call_deactivate_speaker_hint + "Désactiver le son" + + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + + + + + information_popup_error_title + + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + + + + + information_popup_synchronization_success_title + + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + + + + + settings_contacts_carddav_popup_synchronization_error_title + + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + + + + + sip_address_display_name + Nom d'affichage + + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + + + + + username + + + + + password + + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + + + + + ChangeLayoutForm + + + conference_layout_grid + + + + + conference_layout_active_speaker + + + + + conference_layout_audio_only + + + + + ChatAudioContent + + + + information_popup_error_title + Error + + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + + + + + ChatMessageContentCore + + + popup_error_title + Error + + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + + + + + ics_bubble_participants + %n participant(s) + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + + + + + + + information_popup_error_title + + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + + + + + fetch_config_function_description + + + + + call_function_description + + + + + bye_function_description + + + + + accept_function_description + + + + + decline_function_description + + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + + + + + Contact + + + information_popup_error_title + Erreur + + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + + + + + save + "Enregistrer + + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + + + + + contact_editor_add_image_label + "Ajouter une image" + + + + + contact_details_edit + "Modifier" + + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + + + + + + contact_editor_last_name + "Nom" + + + + + + contact_editor_company + "Entreprise" + + + + + + contact_editor_job_title + "Fonction" + + + + + + sip_address + + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + Partager + + + + + information_popup_error_title + + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + + + + + information_popup_vcard_creation_title + VCard créée + + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + + + + + contact_sharing_email_title + Partage de contact + + + + + contact_details_delete + "Supprimer" + + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + + + + + contacts_list_empty + "Aucun contact pour le moment" + + + + + contact_new_title + "Nouveau contact" + + + + + create + + + + + contact_edit_title + "Modifier contact" + + + + + save + + + + + contact_dialog_delete_title + Supprimer %1 ?" + + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + + + + + contact_deleted_toast + "Contact supprimé" + + + + + contact_deleted_message + "%1 a été supprimé" + + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + + + + + popup_do_not_show_again + Ne plus afficher + + + + + cancel + + + + + dialog_call + "Appeler" + + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + + + + + dialog_ok + "Ok" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + search_bar_look_for_contact_text + Rechercher un contact + + + + + list_filter_no_result_found + Aucun résultat… + + + + + contact_list_empty + Aucun contact pour le moment + + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel vidéo" + + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + + + + + contact_details_job_title + "Poste :" + + + + + contact_details_medias_title + "Medias" + + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + + + + + contact_details_trust_title + "Confiance" + + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + + + + + contact_details_no_device_found + "Aucun appareil" + + + + + contact_device_without_name + "Appareil inconnu" + + + + + contact_make_call_check_device_trust + "Vérifier" + + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + + + + + contact_details_remove_from_favourites + "Retirer des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + contact_details_share + "Partager" + + + + + information_popup_error_title + + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + + + + + contact_details_share_success_title + "VCard créée" + + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + + + + + contact_details_share_email_title + "Partage de contact" + + + + + contact_details_delete + "Supprimer ce contact" + + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + + + + + settings_contacts_carddav_title + + + + + settings_contacts_carddav_subtitle + + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + add + "Ajouter" + + + + + ConversationInfos + + + one_one_infos_call + "Appel" + + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + + + + + settings_debug_clipboard + "Presse-papier" + + + + + settings_debug_email + "E-Mail" + + + + + debug_settings_trace + "Traces %1" + + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + + + + + + information_popup_error_title + Une erreur est survenue. + + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + + + + + settings_debug_delete_logs_title + "Supprimer les traces" + + + + + settings_debug_share_logs_title + "Partager les traces" + + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + + + + + settings_debug_app_version_title + "Version de l'application" + + + + + settings_debug_sdk_version_title + "Version du SDK" + + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + + + + + textfield_error_message_unknown_format + "Format non reconnu" + + + + + Dialog + + + + dialog_confirm + "Confirmer" + + + + + + dialog_cancel + "Annuler" + + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + + + + + call_stats_media_encryption + Media encryption : %1 + + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + + + + + call_zrtp_validation_button_label + "Validation chiffrement" + + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + + + + + + + device_id + "Téléphone" + + + + + information_popup_error_title + + + + + information_popup_invalid_address_message + "Adresse invalide" + + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + + + + + group_infos_participant_is_admin + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + + + + + required + "Requis" + + + + + HelpPage + + + help_title + "Aide" + + + + + + help_about_title + "À propos de %1" + + + + + help_about_privacy_policy_title + "Règles de confidentialité" + + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + + + + + help_about_version_title + "Version" + + + + + help_about_gpl_licence_title + "Licences GPLv3" + + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + + + + + help_troubleshooting_title + "Dépannage" + + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + + + + + settings_contacts_ldap_subtitle + + + + + information_popup_success_title + + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + + + + + information_popup_error_title + + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + + + + + settings_contacts_ldap_password_title + "Mot de passe" + + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + + + + + settings_contacts_ldap_search_filter_title + "Filtre" + + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + + + + + settings_contacts_ldap_debug_title + "Débogage" + + + + + LoadingPopup + + + cancel + + + + + LoginForm + + + + username + Nom d'utilisateur : username + + + + + + password + Mot de passe + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + + + + + assistant_forgotten_password + "Mot de passe oublié ?" + + + + + LoginLayout + + + + help_about_title + À propos de %1 + + + + + help_about_privacy_policy_title + "Politique de confidentialité" + + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + + + + + help_about_version_title + "Version" + + + + + help_about_licence_title + "Licence" + + + + + help_about_copyright_title + "Copyright + + + + + close + "Fermer" + + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + + + + + assistant_no_account_yet + "Pas encore de compte ?" + + + + + assistant_account_register + "S'inscrire" + + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + + + + + assistant_login_remote_provisioning + "Configuration distante" + + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + + + + + cancel + + + + + validate + "Valider" + + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + + + + + default_account_connection_state_error_toast + + + + + MagicSearchList + + + device_id + + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + + + + + do_not_disturb_accessible_name + "Do not disturb" + + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + + + + + information_popup_error_title + + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + + + + + settings_title + + + + + recordings_title + "Enregistrements" + + + + + help_title + "Aide" + + + + + help_quit_title + "Quitter l'application" + + + + + quit_app_question + "Quitter %1 ?" + + + + + drawer_menu_add_account + "Ajouter un compte" + + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + + + + + interoperable + interopérable + + + + + call_transfer_successful_toast_title + "Appel transféré" + + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + + + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + + + + + assistant_register_error_title + "Erreur lors de la création" + + + + + assistant_register_success_title + "Compte créé" + + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + + + + + assistant_register_error_code + "Erreur dans le code de validation" + + + + + information_popup_error_title + + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + + + + + meeting_schedule_broadcast_label + "Webinar" + + + + + meeting_schedule_subject_hint + "Ajouter un titre" + + + + + meeting_schedule_description_hint + "Ajouter une description" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + MeetingPage + + + meetings_add + "Créer une réunion" + + + + + meetings_list_empty + "Aucune réunion" + + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + + + + + meeting_schedule_delete_action + "Supprimer" + + + + + back_action + Retour + + + + + meetings_list_title + Réunions + + + + + meetings_search_hint + "Rechercher une réunion" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + meetings_empty_list + "Aucune réunion" + + + + + + meeting_schedule_title + "Nouvelle réunion" + + + + + create + + + + + + + + + + information_popup_error_title + + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + + + + + save + + + + + + saved + "Enregistré" + + + + + meeting_info_updated_toast + "Réunion mise à jour" + + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + + + + + meeting_schedule_timezone_title + "Fuseau horaire" + + + + + meeting_info_organizer_label + "Organisateur" + + + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + + + + + + multimedia_settings_camera_title + "Caméra" + + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + + + + + call_start_group_call_title + Appel de groupe + + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + + + + + dialog_accept + "Accepter" + + + + + dialog_deny + "Refuser + + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + + + + + oidc_authentication_granted_message + Authentication granted + + + + + oidc_authentication_not_authenticated_message + Not authenticated + + + + + oidc_authentication_refresh_message + Refreshing token + + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + + + + + oidc_authentication_network_error + Network error + + + + + oidc_authentication_server_error + Server error + + + + + oidc_authentication_token_not_found_error + OAuth token not found + + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + + + + + oidc_authentication_refresh_token_message + Refreshing access token + + + + + oidc_authentication_request_authorization_message + Requesting authorization + + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + + + + + meeting_add_participants_title + "Ajouter des participants" + + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + + + + + contact_presence_button_delete_custom_status + + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + + + + + QObject + + + media_encryption_dtls + + + + + media_encryption_none + + + + + media_encryption_srtp + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + + + + + outgoing + "Sortant" + + + + + conference_layout_active_speaker + "Participant actif" + + + + + conference_layout_grid + "Mosaïque" + + + + + conference_layout_audio_only + "Audio uniquement" + + + + + RegisterCheckingPage + + + email + "email" + + + + + phone_number + "numéro de téléphone" + + + + + confirm_register_title + "Inscription | Confirmer votre %1" + + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + + + + + assistant_already_have_an_account + + + + + assistant_account_login + + + + + assistant_account_register_with_phone_number + + + + + assistant_account_register_with_email + + + + + + username + + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + + + + + + + phone_number + "Numéro de téléphone" + + + + + + email + + + + + + password + + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + + + + + assistant_account_create + "Créer" + + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + + + + + assistant_no_account_yet + Pas encore de compte ? + + + + + assistant_account_register + S'inscrire + + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + + + + + + username + "Nom d'utilisateur" + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + + + + + + sip_address_domain + "Domaine" + + + + + + sip_address_display_name + Nom d'affichage + + + + + + transport + "Transport" + + + + + + assistant_account_login + + + + + assistant_account_login_missing_username + + + + + assistant_account_login_missing_password + + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + + + + + login_advanced_parameters_label + Advanced parameters + + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + + + + + screencast_settings_all_screen_label + "Ecran entier" + + + + + screencast_settings_one_window_label + "Fenêtre" + + + + + screencast_settings_screen + "Ecran %1" + + + + + stop + "Stop + + + + + share + "Partager" + + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + + + + + dialog_continue + "Continuer" + + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + + + + + settings_calls_title + "Appels" + + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + + + + + settings_contacts_title + "Contacts" + + + + + settings_meetings_title + "Réunions" + + + + + settings_network_title + "Affichage" "Security" "Réseau" + + + + + settings_advanced_title + "Paramètres avancés" + + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + + + + + conference_participant_paused_text + "En pause" + + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + + + + + group_call_error_no_account + + + + + group_call_error_participants_invite + + + + + group_call_error_creation + + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + nMinute + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + nDay + + + + + + + + nWeek + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + + + + + contact_presence_status_do_not_disturb + + + + + contact_presence_status_offline + + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + + + + + information_popup_group_call_not_created_message + + + + + number_of_years + %n an(s) + + + + + + + + number_of_month + "%n mois" + + + + + + + + number_of_weeks + %n semaine(s) + + + + + + + + number_of_days + %n jour(s) + + + + + + + + today + "Aujourd'hui" + + + + + yesterday + "Hier + + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + + + + + meeting_waiting_room_join + "Rejoindre" + + + + + + cancel + Cancel + + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + + + + + welcome_page_subtitle + "sur %1" + + + + + welcome_carousel_skip + "Passer" + + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + + + + + welcome_page_2_title + "Sécurisé" + + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + + + + + welcome_page_3_title + "Open Source" + + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + + + + + next + "Suivant" + + + + + start + "Commencer" + + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + + + + + call_zrtp_sas_validation_skip + "Passer" + + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + + + + + call_action_hang_up + "Raccrocher" + + + + + country + + + Afghanistan + + + + + Albania + + + + + Algeria + + + + + AmericanSamoa + + + + + Andorra + + + + + Angola + + + + + Anguilla + + + + + AntiguaAndBarbuda + + + + + Argentina + + + + + Armenia + + + + + Aruba + + + + + Australia + + + + + Austria + + + + + Azerbaijan + + + + + Bahamas + + + + + Bahrain + + + + + Bangladesh + + + + + Barbados + + + + + Belarus + + + + + Belgium + + + + + Belize + + + + + Benin + + + + + Bermuda + + + + + Bhutan + + + + + Bolivia + + + + + BosniaAndHerzegowina + + + + + Botswana + + + + + Brazil + + + + + Brunei + + + + + Bulgaria + + + + + BurkinaFaso + + + + + Burundi + + + + + Cambodia + + + + + Cameroon + + + + + Canada + + + + + CapeVerde + + + + + CaymanIslands + + + + + CentralAfricanRepublic + + + + + Chad + + + + + Chile + + + + + China + + + + + Colombia + + + + + Comoros + + + + + PeoplesRepublicOfCongo + + + + + CookIslands + + + + + CostaRica + + + + + IvoryCoast + + + + + Croatia + + + + + Cuba + + + + + Cyprus + + + + + CzechRepublic + + + + + Denmark + + + + + Djibouti + + + + + Dominica + + + + + DominicanRepublic + + + + + Ecuador + + + + + Egypt + + + + + ElSalvador + + + + + EquatorialGuinea + + + + + Eritrea + + + + + Estonia + + + + + Ethiopia + + + + + FalklandIslands + + + + + FaroeIslands + + + + + Fiji + + + + + Finland + + + + + France + + + + + FrenchGuiana + + + + + FrenchPolynesia + + + + + Gabon + + + + + Gambia + + + + + Georgia + + + + + Germany + + + + + Ghana + + + + + Gibraltar + + + + + Greece + + + + + Greenland + + + + + Grenada + + + + + Guadeloupe + + + + + Guam + + + + + Guatemala + + + + + Guinea + + + + + GuineaBissau + + + + + Guyana + + + + + Haiti + + + + + Honduras + + + + + DemocraticRepublicOfCongo + + + + + HongKong + + + + + Hungary + + + + + Iceland + + + + + India + + + + + Indonesia + + + + + Iran + + + + + Iraq + + + + + Ireland + + + + + Israel + + + + + Italy + + + + + Jamaica + + + + + Japan + + + + + Jordan + + + + + Kazakhstan + + + + + Kenya + + + + + Kiribati + + + + + DemocraticRepublicOfKorea + + + + + RepublicOfKorea + + + + + Kuwait + + + + + Kyrgyzstan + + + + + Laos + + + + + Latvia + + + + + Lebanon + + + + + Lesotho + + + + + Liberia + + + + + Libya + + + + + Liechtenstein + + + + + Lithuania + + + + + Luxembourg + + + + + Macau + + + + + Macedonia + + + + + Madagascar + + + + + Malawi + + + + + Malaysia + + + + + Maldives + + + + + Mali + + + + + Malta + + + + + MarshallIslands + + + + + Martinique + + + + + Mauritania + + + + + Mauritius + + + + + Mayotte + + + + + Mexico + + + + + Micronesia + + + + + Moldova + + + + + Monaco + + + + + Mongolia + + + + + Montenegro + + + + + Montserrat + + + + + Morocco + + + + + Mozambique + + + + + Myanmar + + + + + Namibia + + + + + NauruCountry + + + + + Nepal + + + + + Netherlands + + + + + NewCaledonia + + + + + NewZealand + + + + + Nicaragua + + + + + Niger + + + + + Nigeria + + + + + Niue + + + + + NorfolkIsland + + + + + NorthernMarianaIslands + + + + + Norway + + + + + Oman + + + + + Pakistan + + + + + Palau + + + + + PalestinianTerritories + + + + + Panama + + + + + PapuaNewGuinea + + + + + Paraguay + + + + + Peru + + + + + Philippines + + + + + Poland + + + + + Portugal + + + + + PuertoRico + + + + + Qatar + + + + + Reunion + + + + + Romania + + + + + RussianFederation + + + + + Rwanda + + + + + SaintHelena + + + + + SaintKittsAndNevis + + + + + SaintLucia + + + + + SaintPierreAndMiquelon + + + + + SaintVincentAndTheGrenadines + + + + + Samoa + + + + + SanMarino + + + + + SaoTomeAndPrincipe + + + + + SaudiArabia + + + + + Senegal + + + + + Serbia + + + + + Seychelles + + + + + SierraLeone + + + + + Singapore + + + + + Slovakia + + + + + Slovenia + + + + + SolomonIslands + + + + + Somalia + + + + + SouthAfrica + + + + + Spain + + + + + SriLanka + + + + + Sudan + + + + + Suriname + + + + + Swaziland + + + + + Sweden + + + + + Switzerland + + + + + Syria + + + + + Taiwan + + + + + Tajikistan + + + + + Tanzania + + + + + Thailand + + + + + Togo + + + + + Tokelau + + + + + Tonga + + + + + TrinidadAndTobago + + + + + Tunisia + + + + + Turkey + + + + + Turkmenistan + + + + + TurksAndCaicosIslands + + + + + Tuvalu + + + + + Uganda + + + + + Ukraine + + + + + UnitedArabEmirates + + + + + UnitedKingdom + + + + + UnitedStates + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Vietnam + + + + + WallisAndFutunaIslands + + + + + Yemen + + + + + Zambia + + + + + Zimbabwe + + + + + utils + + + formatYears + '%1 year' + + + + + + + + formatMonths + '%1 month' + + + + + + + + formatWeeks + '%1 week' + + + + + + + + formatDays + '%1 day' + + + + + + + + formatHours + '%1 hour' + + + + + + + + formatMinutes + '%1 minute' + + + + + + + + formatSeconds + '%1 second' + + + + + + + + codec_install + "Installation de codec" + + + + + download_codec + "Télécharger le codec %1 (%2) ?" + + + + + information_popup_success_title + "Succès" + + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + + + + + + + information_popup_error_title + + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + + + + + okButton + + + + diff --git a/Linphone/data/languages/nl.ts b/Linphone/data/languages/nl.ts new file mode 100644 index 000000000..676498636 --- /dev/null +++ b/Linphone/data/languages/nl.ts @@ -0,0 +1,7432 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + + + + + fps_counter + + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + + + + + drawer_menu_account_connection_status_refreshing + + + + + drawer_menu_account_connection_status_progress + + + + + drawer_menu_account_connection_status_failed + + + + + drawer_menu_account_connection_status_cleared + + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + + + + + AccountListView + + + add_an_account + Add an account + + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + + + + + assistant_account_login_forbidden_error + "Username and password do not match" + + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + + + + + assistant_account_add_error + "Unable to add account." + + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + + + + + manage_account_devices_title + "Vos appareils" + + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + + + + + manage_account_add_picture + "Ajouter une image" + + + + + manage_account_edit_picture + "Modifier l'image" + + + + + manage_account_remove_picture + "Supprimer l'image" + + + + + sip_address + + + + + sip_address_display_name + "Nom d'affichage + + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + + + + + manage_account_international_prefix + Indicatif international* + + + + + manage_account_delete + "Déconnecter mon compte" + + + + + manage_account_delete_message + + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + + + + + error + Erreur + + + + + manage_account_device_remove + "Supprimer" + + + + + manage_account_device_remove_confirm_dialog + + + + + manage_account_device_last_connection + "Dernière connexion:" + + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + + + + + settings_general_title + "Général" + + + + + settings_account_title + "Paramètres de compte" + + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + + + + + AccountSettingsParametersLayout + + + settings_title + + + + + settings_account_title + + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + + + + + information_popup_success_title + + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + + + + + information_popup_error_title + + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + + + + + account_settings_transport_title + "Transport" + + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + + + + + account_settings_enable_ice_title + "Activer ICE" + + + + + account_settings_avpf_title + "AVPF" + + + + + account_settings_bundle_mode_title + "Mode bundle" + + + + + account_settings_expire_title + "Expiration (en seconde)" + + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + + + + + contact_list_empty + + + + + AdvancedSettingsLayout + + + settings_system_title + System + + + + + settings_remote_provisioning_title + Remote provisioning + + + + + settings_security_title + Security / Encryption + + + + + settings_advanced_audio_codecs_title + Audio codecs + + + + + settings_advanced_video_codecs_title + Video codecs + + + + + settings_advanced_auto_start_title + Auto start %1 + + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + + + + + information_popup_error_title + Invalid URL format + + + + + settings_advanced_invalid_url_message + + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + + + + + settings_advanced_hide_fps_title + + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + + + + + generic_address_picker_contacts_list_title + 'Contacts' + + + + + generic_address_picker_suggestions_list_title + "Suggestions" + + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + + + + + + info_popup_error_title + Error + + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + + + + + command_line_arg_order + "Send an order to the application towards a command line" + + + + + command_line_option_show_help + + + + + command_line_option_show_app_version + + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + + + + + command_line_option_minimized + + + + + command_line_option_log_to_stdout + + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + + + + + hide_action + "Cacher" "Afficher" + + + + + show_action + + + + + quit_action + "Quitter" + + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + + + + + password + + + + + cancel + "Annuler + + + + + assistant_account_login + Connexion + + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + + + + + media_encryption_dtls + DTLS + + + + + media_encryption_none + None + + + + + media_encryption_srtp + SRTP + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel Video" + + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + + + + + call_ended_by_user + "Vous avez terminé l'appel" + + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + + + + + conference_call_empty + "En attente d'autres participants…" + + + + + conference_share_link_title + "Partager le lien" + + + + + copied + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + + + + + call + "Appel" + + + + + paused_call_or_meeting + "%1 en pause" + + + + + ongoing_call_or_meeting + "%1 en cours" + + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + + + + + call_error_user_not_found_toast + "User was not found" + + + + + call_error_user_busy_toast + "User is busy" + + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + + + + + call_error_io_error_toast + "Unavailable service or network error" + + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + + + + + call_history_empty_title + "Historique d'appel vide" + + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + + + + + call_history_call_list_title + "Appels" + + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + history_list_empty_history + "Aucun appel dans votre historique" + + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + + + + + call_start_group_call_title + "Appel de groupe" + + + + + call_action_start_group_call + "Lancer" + + + + + + + information_popup_error_title + + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + menu_copy_sip_address + "Copier l'adresse SIP" + + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + + + + + notification_missed_call_title + "Appel manqué" + + + + + call_outgoing + "Appel sortant" + + + + + call_audio_incoming + "Appel entrant" + + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + + + + + settings_call_enable_tones_title + Tonalités + + + + + settings_call_enable_tones_subtitle + Activer les tonalités + + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + + + + + call_stats_video_title + "Vidéo" + + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + + + + + + information_popup_error_title + + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + + + + + call_can_be_trusted_toast + "Appareil authentifié" + + + + + call_dir + + + + + call_ended + Appel terminé + + + + + conference_paused + Meeting paused + + + + + call_paused + Call paused + + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + + + + + call_zrtp_sas_validation_required + Vérification nécessaire + + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + + + + + call_not_encrypted + "Appel non chiffré" + + + + + + call_waiting_for_encryption_info + Waiting for encryption + + + + + call_paused_by_remote + Call paused by remote + + + + + conference_user_is_recording + "You are recording the meeting" + + + + + call_user_is_recording + "You are recording the call" + + + + + conference_remote_is_recording + "Someone is recording the meeting" + + + + + call_remote_recording + "%1 is recording the call" + + + + + call_stop_recording + "Stop recording" + + + + + add + + + + + call_transfer_current_call_title + "Transférer %1 à…" + + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + + + + + call_action_start_new_call + "Nouvel appel" + + + + + + call_action_show_dialer + "Pavé numérique" + + + + + call_action_change_layout + "Modifier la disposition" + + + + + call_action_go_to_calls_list + "Liste d'appel" + + + + + Merger tous les appels + call_action_merge_calls + + + + + + call_action_go_to_settings + "Paramètres" + + + + + conference_action_screen_sharing + "Partage de votre écran" + + + + + conference_share_link_title + Partager le lien de la réunion + + + + + copied + Copié + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + + + conference_participants_list_title + "Participants (%1)" + + + + + + group_call_participant_selected + + + + + + + + meeting_schedule_add_participants_title + + + + + call_encryption_title + Chiffrement + + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + + + + + stop_recording_accessible_name + Stop recording + + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + + + + + + call_action_end_call + "Terminer l'appel" + + + + + + call_action_resume_call + "Reprendre l'appel" + + + + + + call_action_pause_call + "Mettre l'appel en pause" + + + + + + call_action_transfer_call + "Transférer l'appel" + + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + + + + + + call_activate_video_hint + + + + + + call_activate_microphone + "Activer le micro" + + + + + + call_deactivate_microphone + "Désactiver le micro" + + + + + + call_share_screen_hint + Partager l'écran… + + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + + + + + + call_send_reaction_hint + "Envoyer une réaction" + + + + + + call_manage_participants_hint + "Gérer les participants" + + + + + + call_more_options_hint + "Plus d'options…" + + + + + call_action_change_conference_layout + "Modifier la disposition" + + + + + call_action_full_screen + "Mode Plein écran" + + + + + call_action_stop_recording + "Terminer l'enregistrement" + + + + + call_action_record + "Enregistrer l'appel" + + + + + call_activate_speaker_hint + "Activer le son" + + + + + call_deactivate_speaker_hint + "Désactiver le son" + + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + + + + + information_popup_error_title + + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + + + + + information_popup_synchronization_success_title + + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + + + + + settings_contacts_carddav_popup_synchronization_error_title + + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + + + + + sip_address_display_name + Nom d'affichage + + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + + + + + username + + + + + password + + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + + + + + ChangeLayoutForm + + + conference_layout_grid + + + + + conference_layout_active_speaker + + + + + conference_layout_audio_only + + + + + ChatAudioContent + + + + information_popup_error_title + Error + + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + + + + + ChatMessageContentCore + + + popup_error_title + Error + + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + + + + + ics_bubble_participants + %n participant(s) + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + + + + + + + information_popup_error_title + + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + + + + + fetch_config_function_description + + + + + call_function_description + + + + + bye_function_description + + + + + accept_function_description + + + + + decline_function_description + + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + + + + + Contact + + + information_popup_error_title + Erreur + + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + + + + + save + "Enregistrer + + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + + + + + contact_editor_add_image_label + "Ajouter une image" + + + + + contact_details_edit + "Modifier" + + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + + + + + + contact_editor_last_name + "Nom" + + + + + + contact_editor_company + "Entreprise" + + + + + + contact_editor_job_title + "Fonction" + + + + + + sip_address + + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + Partager + + + + + information_popup_error_title + + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + + + + + information_popup_vcard_creation_title + VCard créée + + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + + + + + contact_sharing_email_title + Partage de contact + + + + + contact_details_delete + "Supprimer" + + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + + + + + contacts_list_empty + "Aucun contact pour le moment" + + + + + contact_new_title + "Nouveau contact" + + + + + create + + + + + contact_edit_title + "Modifier contact" + + + + + save + + + + + contact_dialog_delete_title + Supprimer %1 ?" + + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + + + + + contact_deleted_toast + "Contact supprimé" + + + + + contact_deleted_message + "%1 a été supprimé" + + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + + + + + popup_do_not_show_again + Ne plus afficher + + + + + cancel + + + + + dialog_call + "Appeler" + + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + + + + + dialog_ok + "Ok" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + search_bar_look_for_contact_text + Rechercher un contact + + + + + list_filter_no_result_found + Aucun résultat… + + + + + contact_list_empty + Aucun contact pour le moment + + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel vidéo" + + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + + + + + contact_details_job_title + "Poste :" + + + + + contact_details_medias_title + "Medias" + + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + + + + + contact_details_trust_title + "Confiance" + + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + + + + + contact_details_no_device_found + "Aucun appareil" + + + + + contact_device_without_name + "Appareil inconnu" + + + + + contact_make_call_check_device_trust + "Vérifier" + + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + + + + + contact_details_remove_from_favourites + "Retirer des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + contact_details_share + "Partager" + + + + + information_popup_error_title + + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + + + + + contact_details_share_success_title + "VCard créée" + + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + + + + + contact_details_share_email_title + "Partage de contact" + + + + + contact_details_delete + "Supprimer ce contact" + + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + + + + + settings_contacts_carddav_title + + + + + settings_contacts_carddav_subtitle + + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + add + "Ajouter" + + + + + ConversationInfos + + + one_one_infos_call + "Appel" + + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + + + + + settings_debug_clipboard + "Presse-papier" + + + + + settings_debug_email + "E-Mail" + + + + + debug_settings_trace + "Traces %1" + + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + + + + + + information_popup_error_title + Une erreur est survenue. + + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + + + + + settings_debug_delete_logs_title + "Supprimer les traces" + + + + + settings_debug_share_logs_title + "Partager les traces" + + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + + + + + settings_debug_app_version_title + "Version de l'application" + + + + + settings_debug_sdk_version_title + "Version du SDK" + + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + + + + + textfield_error_message_unknown_format + "Format non reconnu" + + + + + Dialog + + + + dialog_confirm + "Confirmer" + + + + + + dialog_cancel + "Annuler" + + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + + + + + call_stats_media_encryption + Media encryption : %1 + + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + + + + + call_zrtp_validation_button_label + "Validation chiffrement" + + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + + + + + + + device_id + "Téléphone" + + + + + information_popup_error_title + + + + + information_popup_invalid_address_message + "Adresse invalide" + + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + + + + + group_infos_participant_is_admin + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + + + + + required + "Requis" + + + + + HelpPage + + + help_title + "Aide" + + + + + + help_about_title + "À propos de %1" + + + + + help_about_privacy_policy_title + "Règles de confidentialité" + + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + + + + + help_about_version_title + "Version" + + + + + help_about_gpl_licence_title + "Licences GPLv3" + + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + + + + + help_troubleshooting_title + "Dépannage" + + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + + + + + settings_contacts_ldap_subtitle + + + + + information_popup_success_title + + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + + + + + information_popup_error_title + + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + + + + + settings_contacts_ldap_password_title + "Mot de passe" + + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + + + + + settings_contacts_ldap_search_filter_title + "Filtre" + + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + + + + + settings_contacts_ldap_debug_title + "Débogage" + + + + + LoadingPopup + + + cancel + + + + + LoginForm + + + + username + Nom d'utilisateur : username + + + + + + password + Mot de passe + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + + + + + assistant_forgotten_password + "Mot de passe oublié ?" + + + + + LoginLayout + + + + help_about_title + À propos de %1 + + + + + help_about_privacy_policy_title + "Politique de confidentialité" + + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + + + + + help_about_version_title + "Version" + + + + + help_about_licence_title + "Licence" + + + + + help_about_copyright_title + "Copyright + + + + + close + "Fermer" + + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + + + + + assistant_no_account_yet + "Pas encore de compte ?" + + + + + assistant_account_register + "S'inscrire" + + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + + + + + assistant_login_remote_provisioning + "Configuration distante" + + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + + + + + cancel + + + + + validate + "Valider" + + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + + + + + default_account_connection_state_error_toast + + + + + MagicSearchList + + + device_id + + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + + + + + do_not_disturb_accessible_name + "Do not disturb" + + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + + + + + information_popup_error_title + + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + + + + + settings_title + + + + + recordings_title + "Enregistrements" + + + + + help_title + "Aide" + + + + + help_quit_title + "Quitter l'application" + + + + + quit_app_question + "Quitter %1 ?" + + + + + drawer_menu_add_account + "Ajouter un compte" + + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + + + + + interoperable + interopérable + + + + + call_transfer_successful_toast_title + "Appel transféré" + + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + + + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + + + + + assistant_register_error_title + "Erreur lors de la création" + + + + + assistant_register_success_title + "Compte créé" + + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + + + + + assistant_register_error_code + "Erreur dans le code de validation" + + + + + information_popup_error_title + + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + + + + + meeting_schedule_broadcast_label + "Webinar" + + + + + meeting_schedule_subject_hint + "Ajouter un titre" + + + + + meeting_schedule_description_hint + "Ajouter une description" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + MeetingPage + + + meetings_add + "Créer une réunion" + + + + + meetings_list_empty + "Aucune réunion" + + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + + + + + meeting_schedule_delete_action + "Supprimer" + + + + + back_action + Retour + + + + + meetings_list_title + Réunions + + + + + meetings_search_hint + "Rechercher une réunion" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + meetings_empty_list + "Aucune réunion" + + + + + + meeting_schedule_title + "Nouvelle réunion" + + + + + create + + + + + + + + + + information_popup_error_title + + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + + + + + save + + + + + + saved + "Enregistré" + + + + + meeting_info_updated_toast + "Réunion mise à jour" + + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + + + + + meeting_schedule_timezone_title + "Fuseau horaire" + + + + + meeting_info_organizer_label + "Organisateur" + + + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + + + + + + multimedia_settings_camera_title + "Caméra" + + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + + + + + call_start_group_call_title + Appel de groupe + + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + + + + + dialog_accept + "Accepter" + + + + + dialog_deny + "Refuser + + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + + + + + oidc_authentication_granted_message + Authentication granted + + + + + oidc_authentication_not_authenticated_message + Not authenticated + + + + + oidc_authentication_refresh_message + Refreshing token + + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + + + + + oidc_authentication_network_error + Network error + + + + + oidc_authentication_server_error + Server error + + + + + oidc_authentication_token_not_found_error + OAuth token not found + + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + + + + + oidc_authentication_refresh_token_message + Refreshing access token + + + + + oidc_authentication_request_authorization_message + Requesting authorization + + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + + + + + meeting_add_participants_title + "Ajouter des participants" + + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + + + + + contact_presence_button_delete_custom_status + + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + + + + + QObject + + + media_encryption_dtls + + + + + media_encryption_none + + + + + media_encryption_srtp + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + + + + + outgoing + "Sortant" + + + + + conference_layout_active_speaker + "Participant actif" + + + + + conference_layout_grid + "Mosaïque" + + + + + conference_layout_audio_only + "Audio uniquement" + + + + + RegisterCheckingPage + + + email + "email" + + + + + phone_number + "numéro de téléphone" + + + + + confirm_register_title + "Inscription | Confirmer votre %1" + + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + + + + + assistant_already_have_an_account + + + + + assistant_account_login + + + + + assistant_account_register_with_phone_number + + + + + assistant_account_register_with_email + + + + + + username + + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + + + + + + + phone_number + "Numéro de téléphone" + + + + + + email + + + + + + password + + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + + + + + assistant_account_create + "Créer" + + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + + + + + assistant_no_account_yet + Pas encore de compte ? + + + + + assistant_account_register + S'inscrire + + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + + + + + + username + "Nom d'utilisateur" + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + + + + + + sip_address_domain + "Domaine" + + + + + + sip_address_display_name + Nom d'affichage + + + + + + transport + "Transport" + + + + + + assistant_account_login + + + + + assistant_account_login_missing_username + + + + + assistant_account_login_missing_password + + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + + + + + login_advanced_parameters_label + Advanced parameters + + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + + + + + screencast_settings_all_screen_label + "Ecran entier" + + + + + screencast_settings_one_window_label + "Fenêtre" + + + + + screencast_settings_screen + "Ecran %1" + + + + + stop + "Stop + + + + + share + "Partager" + + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + + + + + dialog_continue + "Continuer" + + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + + + + + settings_calls_title + "Appels" + + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + + + + + settings_contacts_title + "Contacts" + + + + + settings_meetings_title + "Réunions" + + + + + settings_network_title + "Affichage" "Security" "Réseau" + + + + + settings_advanced_title + "Paramètres avancés" + + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + + + + + conference_participant_paused_text + "En pause" + + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + + + + + group_call_error_no_account + + + + + group_call_error_participants_invite + + + + + group_call_error_creation + + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + nMinute + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + nDay + + + + + + + + nWeek + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + + + + + contact_presence_status_do_not_disturb + + + + + contact_presence_status_offline + + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + + + + + information_popup_group_call_not_created_message + + + + + number_of_years + %n an(s) + + + + + + + + number_of_month + "%n mois" + + + + + + + + number_of_weeks + %n semaine(s) + + + + + + + + number_of_days + %n jour(s) + + + + + + + + today + "Aujourd'hui" + + + + + yesterday + "Hier + + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + + + + + meeting_waiting_room_join + "Rejoindre" + + + + + + cancel + Cancel + + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + + + + + welcome_page_subtitle + "sur %1" + + + + + welcome_carousel_skip + "Passer" + + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + + + + + welcome_page_2_title + "Sécurisé" + + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + + + + + welcome_page_3_title + "Open Source" + + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + + + + + next + "Suivant" + + + + + start + "Commencer" + + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + + + + + call_zrtp_sas_validation_skip + "Passer" + + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + + + + + call_action_hang_up + "Raccrocher" + + + + + country + + + Afghanistan + + + + + Albania + + + + + Algeria + + + + + AmericanSamoa + + + + + Andorra + + + + + Angola + + + + + Anguilla + + + + + AntiguaAndBarbuda + + + + + Argentina + + + + + Armenia + + + + + Aruba + + + + + Australia + + + + + Austria + + + + + Azerbaijan + + + + + Bahamas + + + + + Bahrain + + + + + Bangladesh + + + + + Barbados + + + + + Belarus + + + + + Belgium + + + + + Belize + + + + + Benin + + + + + Bermuda + + + + + Bhutan + + + + + Bolivia + + + + + BosniaAndHerzegowina + + + + + Botswana + + + + + Brazil + + + + + Brunei + + + + + Bulgaria + + + + + BurkinaFaso + + + + + Burundi + + + + + Cambodia + + + + + Cameroon + + + + + Canada + + + + + CapeVerde + + + + + CaymanIslands + + + + + CentralAfricanRepublic + + + + + Chad + + + + + Chile + + + + + China + + + + + Colombia + + + + + Comoros + + + + + PeoplesRepublicOfCongo + + + + + CookIslands + + + + + CostaRica + + + + + IvoryCoast + + + + + Croatia + + + + + Cuba + + + + + Cyprus + + + + + CzechRepublic + + + + + Denmark + + + + + Djibouti + + + + + Dominica + + + + + DominicanRepublic + + + + + Ecuador + + + + + Egypt + + + + + ElSalvador + + + + + EquatorialGuinea + + + + + Eritrea + + + + + Estonia + + + + + Ethiopia + + + + + FalklandIslands + + + + + FaroeIslands + + + + + Fiji + + + + + Finland + + + + + France + + + + + FrenchGuiana + + + + + FrenchPolynesia + + + + + Gabon + + + + + Gambia + + + + + Georgia + + + + + Germany + + + + + Ghana + + + + + Gibraltar + + + + + Greece + + + + + Greenland + + + + + Grenada + + + + + Guadeloupe + + + + + Guam + + + + + Guatemala + + + + + Guinea + + + + + GuineaBissau + + + + + Guyana + + + + + Haiti + + + + + Honduras + + + + + DemocraticRepublicOfCongo + + + + + HongKong + + + + + Hungary + + + + + Iceland + + + + + India + + + + + Indonesia + + + + + Iran + + + + + Iraq + + + + + Ireland + + + + + Israel + + + + + Italy + + + + + Jamaica + + + + + Japan + + + + + Jordan + + + + + Kazakhstan + + + + + Kenya + + + + + Kiribati + + + + + DemocraticRepublicOfKorea + + + + + RepublicOfKorea + + + + + Kuwait + + + + + Kyrgyzstan + + + + + Laos + + + + + Latvia + + + + + Lebanon + + + + + Lesotho + + + + + Liberia + + + + + Libya + + + + + Liechtenstein + + + + + Lithuania + + + + + Luxembourg + + + + + Macau + + + + + Macedonia + + + + + Madagascar + + + + + Malawi + + + + + Malaysia + + + + + Maldives + + + + + Mali + + + + + Malta + + + + + MarshallIslands + + + + + Martinique + + + + + Mauritania + + + + + Mauritius + + + + + Mayotte + + + + + Mexico + + + + + Micronesia + + + + + Moldova + + + + + Monaco + + + + + Mongolia + + + + + Montenegro + + + + + Montserrat + + + + + Morocco + + + + + Mozambique + + + + + Myanmar + + + + + Namibia + + + + + NauruCountry + + + + + Nepal + + + + + Netherlands + + + + + NewCaledonia + + + + + NewZealand + + + + + Nicaragua + + + + + Niger + + + + + Nigeria + + + + + Niue + + + + + NorfolkIsland + + + + + NorthernMarianaIslands + + + + + Norway + + + + + Oman + + + + + Pakistan + + + + + Palau + + + + + PalestinianTerritories + + + + + Panama + + + + + PapuaNewGuinea + + + + + Paraguay + + + + + Peru + + + + + Philippines + + + + + Poland + + + + + Portugal + + + + + PuertoRico + + + + + Qatar + + + + + Reunion + + + + + Romania + + + + + RussianFederation + + + + + Rwanda + + + + + SaintHelena + + + + + SaintKittsAndNevis + + + + + SaintLucia + + + + + SaintPierreAndMiquelon + + + + + SaintVincentAndTheGrenadines + + + + + Samoa + + + + + SanMarino + + + + + SaoTomeAndPrincipe + + + + + SaudiArabia + + + + + Senegal + + + + + Serbia + + + + + Seychelles + + + + + SierraLeone + + + + + Singapore + + + + + Slovakia + + + + + Slovenia + + + + + SolomonIslands + + + + + Somalia + + + + + SouthAfrica + + + + + Spain + + + + + SriLanka + + + + + Sudan + + + + + Suriname + + + + + Swaziland + + + + + Sweden + + + + + Switzerland + + + + + Syria + + + + + Taiwan + + + + + Tajikistan + + + + + Tanzania + + + + + Thailand + + + + + Togo + + + + + Tokelau + + + + + Tonga + + + + + TrinidadAndTobago + + + + + Tunisia + + + + + Turkey + + + + + Turkmenistan + + + + + TurksAndCaicosIslands + + + + + Tuvalu + + + + + Uganda + + + + + Ukraine + + + + + UnitedArabEmirates + + + + + UnitedKingdom + + + + + UnitedStates + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Vietnam + + + + + WallisAndFutunaIslands + + + + + Yemen + + + + + Zambia + + + + + Zimbabwe + + + + + utils + + + formatYears + '%1 year' + + + + + + + + formatMonths + '%1 month' + + + + + + + + formatWeeks + '%1 week' + + + + + + + + formatDays + '%1 day' + + + + + + + + formatHours + '%1 hour' + + + + + + + + formatMinutes + '%1 minute' + + + + + + + + formatSeconds + '%1 second' + + + + + + + + codec_install + "Installation de codec" + + + + + download_codec + "Télécharger le codec %1 (%2) ?" + + + + + information_popup_success_title + "Succès" + + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + + + + + + + information_popup_error_title + + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + + + + + okButton + + + + diff --git a/Linphone/data/languages/pt.ts b/Linphone/data/languages/pt.ts new file mode 100644 index 000000000..4d54f70fa --- /dev/null +++ b/Linphone/data/languages/pt.ts @@ -0,0 +1,7432 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + Gravar + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + Escolha um número ou endereço SIP + + + + fps_counter + %1 FPS + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + Conectado + + + + drawer_menu_account_connection_status_refreshing + Atualizando… + + + + drawer_menu_account_connection_status_progress + Conectando… + + + + drawer_menu_account_connection_status_failed + Erro + + + + drawer_menu_account_connection_status_cleared + Desabilitado + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + Você está online e alcançável. + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + Erro de conexão, verifique suas configurações. + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + Conta desabilitada, você não irá receber ligações ou mensagens. + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + Erro ao recuperar dispositivos + + + + AccountListView + + + add_an_account + Add an account + + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + A conta já está conectada + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + Impossível criar endereço proxy. Por favor verifique o nome do domínio. + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + Impossível configurar o endereço: `%1`. + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + Impossível configurar os parâmetros da conta. + + + + assistant_account_login_forbidden_error + "Username and password do not match" + Usuário e a senha não correspondem + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + Erro durante a conexão + + + + assistant_account_add_error + "Unable to add account." + Impossível adicionar conta. + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + Detalhes + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + Edite as informações de sua conta. + + + + manage_account_devices_title + "Vos appareils" + Seus dispositivos + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + A lista de dispositivos conectados em sua conta. Você pode remover dispositivos fora de uso. + + + + manage_account_add_picture + "Ajouter une image" + Adicione uma imagem + + + + manage_account_edit_picture + "Modifier l'image" + Edite sua imagem + + + + manage_account_remove_picture + "Supprimer l'image" + Apague a imagem + + + + sip_address + Endereço SIP + + + + sip_address_display_name + "Nom d'affichage + Nome de exibição + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + O nome exibido para seus contatos. + + + + manage_account_international_prefix + Indicatif international* + Código internacional* + + + + manage_account_delete + "Déconnecter mon compte" + Desconecte minha conta + + + + manage_account_delete_message + Sua conta será desconectada deste cliente Linphone, mas você permanecerá conectado em outros aplicativos + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + Sair da sua conta? + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + Se você deseja apagar sua conta permanentemente, acesse: https://sip.linphone.org + + + + error + Erreur + Erro + + + + manage_account_device_remove + "Supprimer" + Apagar + + + + manage_account_device_remove_confirm_dialog + Apagar %1? + + + + manage_account_device_last_connection + "Dernière connexion:" + Última conexão: + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + Minha conta + + + + settings_general_title + "Général" + Geral + + + + settings_account_title + "Paramètres de compte" + Parâmetros de conta + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + Modificações não salvas + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + Você tem modificações que não foram salvas. Se você deixar esta página, suas modificações serão perdidas. Você gostaria de salvar suas modificações antes de continuar? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + Não gravar + + + + contact_editor_dialog_abort_confirmation_save + Gravar + + + + AccountSettingsParametersLayout + + + settings_title + Ajustes + + + + settings_account_title + Parâmetros de conta + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + Erro + + + + information_popup_success_title + Sucesso + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + Modificações gravadas + + + + information_popup_error_title + Erro + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + URI do servidor de correio de voz + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + URI Correio de voz + + + + account_settings_transport_title + "Transport" + Transporte + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + Endereço do servidor STUN + + + + account_settings_enable_ice_title + "Activer ICE" + Habilitar ICE + + + + account_settings_avpf_title + "AVPF" + AVPF + + + + account_settings_bundle_mode_title + "Mode bundle" + Modo bundle + + + + account_settings_expire_title + "Expiration (en seconde)" + Expiração (em segundos) + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + URI do servidor de conferência + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + URI do servidor de conferência em vídeo + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + URL do servidor Lime + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + Localizar contatos + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + Nenhum resultado encontrado… + + + + contact_list_empty + Nenhum contato neste momento + + + + AdvancedSettingsLayout + + + settings_system_title + System + Sistema + + + + settings_remote_provisioning_title + Remote provisioning + Provisionamento remoto + + + + settings_security_title + Security / Encryption + Segurança / Criptografia + + + + settings_advanced_audio_codecs_title + Audio codecs + Codecs de áudio + + + + settings_advanced_video_codecs_title + Video codecs + Codecs de vídeo + + + + settings_advanced_auto_start_title + Auto start %1 + Auto iniciar %1 + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + URL para provisionamento remoto + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + Fazer o download e aplicar + + + + information_popup_error_title + Invalid URL format + Erro + + + + settings_advanced_invalid_url_message + Formato de URL inválido + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + Criptografia de mídia + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + Criptografia de mídia mandatória + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + Criar reuniões e ligações em grupo usando criptografia fim a fim + + + + settings_advanced_hide_fps_title + Esconder FPS + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + Favoritos + + + + generic_address_picker_contacts_list_title + 'Contacts' + Contatos + + + + generic_address_picker_suggestions_list_title + "Suggestions" + Sugestões + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + Você quer fazer o download e aplicar o provisionamento remoto deste endereço? + + + + + info_popup_error_title + Error + Erro + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + O provisionamento remoto falhou: %1 + + + + configuration_error_detail + not reachable + Não alcançável + + + + application_description + "A free and open source SIP video-phone." + Um cliente SIP para vídeo chamada livre e de código aberto. + + + + command_line_arg_order + "Send an order to the application towards a command line" + Enviar uma ordem para o aplicativo por meio da linha de comando + + + + command_line_option_show_help + Mostrar esta ajuda + + + + command_line_option_show_app_version + Mostrar versão da aplicação + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + Especifique o arquivo de configuração do Linphone a ser obtido. Ele será mesclado com a configuração atual. + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + URL, caminho ou arquivo + + + + command_line_option_minimized + Minimizar + + + + command_line_option_log_to_stdout + Registrar no stdout algumas informações de depuração durante a execução + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + Imprimir somente logs do aplicativo + + + + hide_action + "Cacher" "Afficher" + esconder + + + + show_action + Mostrar + + + + quit_action + "Quitter" + Sair + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + Autenticação necessária + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + Falha no login da conta %1. Você pode digitar sua senha novamente ou verificar as configurações da sua conta. + + + + password + Senha + + + + cancel + "Annuler + Cancelar + + + + assistant_account_login + Connexion + Conexão + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + Por favor, digite uma senha + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + Gravação encerrada + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + A gravação foi salva no arquivo: %1 + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + Codec: %1 / %2 kHz + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + Largura de banda : %1 %2 kbits/s %3 %4 kbits/s + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + Taxa de perda: %1% %2% + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + Buffer de jitter: %1 ms + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + Resolução de vídeo: %1 %2 %3 %4 + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + FPS : %1 %2 %3 %4 + + + + media_encryption_dtls + DTLS + DTLS + + + + media_encryption_none + None + Nenhum + + + + media_encryption_srtp + SRTP + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + ZRTP pós-quântico + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + Participar da reunião + + + + contact_call_action + "Appel" + Chamar + + + + contact_message_action + "Message" + Mensagem + + + + contact_video_call_action + "Appel Video" + Video chamada + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + Você saiu da reunião + + + + call_ended_by_user + "Vous avez terminé l'appel" + Você encerrou a chamada + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + Seu chamador encerrou a chamada + + + + conference_call_empty + "En attente d'autres participants…" + Esperando por outros participantes… + + + + conference_share_link_title + "Partager le lien" + Compartilhar link + + + + copied + Copiado + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + O link da reunião foi copiado para a área de transferência + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + Erro + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + Reunião + + + + call + "Appel" + Chamar + + + + paused_call_or_meeting + "%1 en pause" + %1 em pausa + + + + ongoing_call_or_meeting + "%1 en cours" + %1 em andamento + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + Ligação recusada pelo usuário + + + + call_error_user_not_found_toast + "User was not found" + Usuário não encontrado + + + + call_error_user_busy_toast + "User is busy" + O usuário está ocupado + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + O usuário não pode aceitar sua ligação + + + + call_error_io_error_toast + "Unavailable service or network error" + + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + Nova chamada + + + + call_history_empty_title + "Historique d'appel vide" + + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + Histórico de ligações com esse usuário será permanentemente deletado. + + + + call_history_call_list_title + "Appels" + Ligações + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + Deletar histórico + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + Encontrar chamada + + + + list_filter_no_result_found + "Aucun résultat…" + Nenhum resultado encontrado… + + + + history_list_empty_history + "Aucun appel dans votre historique" + Sem ligação no histórico + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + Nova chamada + + + + call_start_group_call_title + "Appel de groupe" + Chamada em grupo + + + + call_action_start_group_call + "Lancer" + Iniciar + + + + + + information_popup_error_title + Erro + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + Um nome deve ser fornecido para a chamada + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Você não está conectado + + + + menu_see_existing_contact + "Show contact" + Mostrar contato + + + + menu_add_address_to_contacts + "Add to contacts" + Adicionar aos contatos + + + + menu_copy_sip_address + "Copier l'adresse SIP" + Copiar endereço SIP + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + Endereço SIP copiado + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + O endereço foi copiado para a área de transferência + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + Erro ao copiar o endereço + + + + notification_missed_call_title + "Appel manqué" + Chamada perdida + + + + call_outgoing + "Appel sortant" + Chamada de saída + + + + call_audio_incoming + "Appel entrant" + Chamada recebida + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + Dispositivo + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + Você pode alterar os dispositivos de saída de áudio, microfone e câmera. + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + Cancelamento de eco + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + Impede que o eco seja ouvido pelo seu correspondente + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + Habilitar gravação automática de chamadas + + + + settings_call_enable_tones_title + Tonalités + Tons + + + + settings_call_enable_tones_subtitle + Activer les tonalités + Habilitar tons + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + Habilitar video + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + Audio + + + + call_stats_video_title + "Vidéo" + Vídeo + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + Transferência em progresso, aguarde + + + + + information_popup_error_title + Erro + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + A transferência falhou + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + A reunião não pôde começar devido a um erro de URI. + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + + + + + call_can_be_trusted_toast + "Appareil authentifié" + + + + + call_dir + + + + + call_ended + Appel terminé + + + + + conference_paused + Meeting paused + + + + + call_paused + Call paused + + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + + + + + call_zrtp_sas_validation_required + Vérification nécessaire + + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + + + + + call_not_encrypted + "Appel non chiffré" + + + + + + call_waiting_for_encryption_info + Waiting for encryption + + + + + call_paused_by_remote + Call paused by remote + + + + + conference_user_is_recording + "You are recording the meeting" + + + + + call_user_is_recording + "You are recording the call" + + + + + conference_remote_is_recording + "Someone is recording the meeting" + + + + + call_remote_recording + "%1 is recording the call" + + + + + call_stop_recording + "Stop recording" + + + + + add + + + + + call_transfer_current_call_title + "Transférer %1 à…" + + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + + + + + call_action_start_new_call + "Nouvel appel" + Nova chamada + + + + + call_action_show_dialer + "Pavé numérique" + + + + + call_action_change_layout + "Modifier la disposition" + + + + + call_action_go_to_calls_list + "Liste d'appel" + + + + + Merger tous les appels + call_action_merge_calls + + + + + + call_action_go_to_settings + "Paramètres" + Ajustes + + + + conference_action_screen_sharing + "Partage de votre écran" + + + + + conference_share_link_title + Partager le lien de la réunion + + + + + copied + Copié + Copiado + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + + + conference_participants_list_title + "Participants (%1)" + + + + + + group_call_participant_selected + + + + + + + + meeting_schedule_add_participants_title + + + + + call_encryption_title + Chiffrement + + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + + + + + stop_recording_accessible_name + Stop recording + + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + + + + + + call_action_end_call + "Terminer l'appel" + + + + + + call_action_resume_call + "Reprendre l'appel" + + + + + + call_action_pause_call + "Mettre l'appel en pause" + + + + + + call_action_transfer_call + "Transférer l'appel" + + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + + + + + + call_activate_video_hint + Habilitar video + + + + + call_activate_microphone + "Activer le micro" + + + + + + call_deactivate_microphone + "Désactiver le micro" + + + + + + call_share_screen_hint + Partager l'écran… + + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + + + + + + call_send_reaction_hint + "Envoyer une réaction" + + + + + + call_manage_participants_hint + "Gérer les participants" + + + + + + call_more_options_hint + "Plus d'options…" + + + + + call_action_change_conference_layout + "Modifier la disposition" + + + + + call_action_full_screen + "Mode Plein écran" + + + + + call_action_stop_recording + "Terminer l'enregistrement" + + + + + call_action_record + "Enregistrer l'appel" + + + + + call_activate_speaker_hint + "Activer le son" + + + + + call_deactivate_speaker_hint + "Désactiver le son" + + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + + + + + information_popup_error_title + Erro + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + + + + + information_popup_synchronization_success_title + Sucesso + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + + + + + settings_contacts_carddav_popup_synchronization_error_title + Erro + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + + + + + sip_address_display_name + Nom d'affichage + Nome de exibição + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + + + + + username + + + + + password + Senha + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + + + + + ChangeLayoutForm + + + conference_layout_grid + + + + + conference_layout_active_speaker + + + + + conference_layout_audio_only + + + + + ChatAudioContent + + + + information_popup_error_title + Error + Erro + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + Apagar + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + Copiado + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + Apagar + + + + ChatMessageContentCore + + + popup_error_title + Error + Erro + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + Erro + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + + + + + ics_bubble_participants + %n participant(s) + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + + + + + + + information_popup_error_title + Erro + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Você não está conectado + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + Mostrar + + + + fetch_config_function_description + + + + + call_function_description + Chamar + + + + bye_function_description + + + + + accept_function_description + + + + + decline_function_description + + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + Erro + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + + + + + Contact + + + information_popup_error_title + Erreur + Erro + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + + + + + save + "Enregistrer + Gravar + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + + + + + contact_editor_add_image_label + "Ajouter une image" + Adicione uma imagem + + + + contact_details_edit + "Modifier" + + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + Apagar + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + + + + + + contact_editor_last_name + "Nom" + + + + + + contact_editor_company + "Entreprise" + + + + + + contact_editor_job_title + "Fonction" + + + + + + sip_address + Endereço SIP + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + Partager + + + + + information_popup_error_title + Erro + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + + + + + information_popup_vcard_creation_title + VCard créée + + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + + + + + contact_sharing_email_title + Partage de contact + + + + + contact_details_delete + "Supprimer" + Apagar + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + + + + + contacts_list_empty + "Aucun contact pour le moment" + + + + + contact_new_title + "Nouveau contact" + + + + + create + + + + + contact_edit_title + "Modifier contact" + + + + + save + Gravar + + + + contact_dialog_delete_title + Supprimer %1 ?" + Apagar %1? + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + + + + + contact_deleted_toast + "Contact supprimé" + + + + + contact_deleted_message + "%1 a été supprimé" + + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + + + + + popup_do_not_show_again + Ne plus afficher + + + + + cancel + Cancelar + + + + dialog_call + "Appeler" + Chamar + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + + + + + dialog_ok + "Ok" + Ok + + + + bottom_navigation_contacts_label + "Contacts" + Contatos + + + + search_bar_look_for_contact_text + Rechercher un contact + + + + + list_filter_no_result_found + Aucun résultat… + + + + + contact_list_empty + Aucun contact pour le moment + + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + + + + + contact_call_action + "Appel" + Chamar + + + + contact_message_action + "Message" + Mensagem + + + + contact_video_call_action + "Appel vidéo" + Video chamada + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + + + + + contact_details_job_title + "Poste :" + + + + + contact_details_medias_title + "Medias" + + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + + + + + contact_details_trust_title + "Confiance" + + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + + + + + contact_details_no_device_found + "Aucun appareil" + + + + + contact_device_without_name + "Appareil inconnu" + + + + + contact_make_call_check_device_trust + "Vérifier" + + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + + + + + contact_details_remove_from_favourites + "Retirer des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + contact_details_share + "Partager" + + + + + information_popup_error_title + Erro + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + + + + + contact_details_share_success_title + "VCard créée" + + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + + + + + contact_details_share_email_title + "Partage de contact" + + + + + contact_details_delete + "Supprimer ce contact" + + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + + + + + settings_contacts_carddav_title + + + + + settings_contacts_carddav_subtitle + + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + Sucesso + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + add + "Ajouter" + + + + + ConversationInfos + + + one_one_infos_call + "Appel" + Chamar + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + Deletar histórico + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + Mostrar contato + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + Deletar histórico + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + + + + + settings_debug_clipboard + "Presse-papier" + + + + + settings_debug_email + "E-Mail" + + + + + debug_settings_trace + "Traces %1" + + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + + + + + + information_popup_error_title + Une erreur est survenue. + + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + + + + + settings_debug_delete_logs_title + "Supprimer les traces" + + + + + settings_debug_share_logs_title + "Partager les traces" + + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + + + + + settings_debug_app_version_title + "Version de l'application" + + + + + settings_debug_sdk_version_title + "Version du SDK" + + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + + + + + textfield_error_message_unknown_format + "Format non reconnu" + + + + + Dialog + + + + dialog_confirm + "Confirmer" + + + + + + dialog_cancel + "Annuler" + Cancelar + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + + + + + call_stats_media_encryption + Media encryption : %1 + + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + + + + + call_zrtp_validation_button_label + "Validation chiffrement" + + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + Desabilitado + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + Endereço SIP + + + + + + device_id + "Téléphone" + + + + + information_popup_error_title + Erro + + + + information_popup_invalid_address_message + "Adresse invalide" + + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + + + + + group_infos_participant_is_admin + + + + + menu_see_existing_contact + "Show contact" + Mostrar contato + + + + menu_add_address_to_contacts + "Add to contacts" + Adicionar aos contatos + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + Nome do grupo + + + + required + "Requis" + Obrigatório + + + + HelpPage + + + help_title + "Aide" + + + + + + help_about_title + "À propos de %1" + + + + + help_about_privacy_policy_title + "Règles de confidentialité" + + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + + + + + help_about_version_title + "Version" + + + + + help_about_gpl_licence_title + "Licences GPLv3" + + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + + + + + help_troubleshooting_title + "Dépannage" + + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + + + + + settings_contacts_ldap_subtitle + + + + + information_popup_success_title + Sucesso + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + + + + + information_popup_error_title + Erro + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + + + + + settings_contacts_ldap_password_title + "Mot de passe" + Senha + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + + + + + settings_contacts_ldap_search_filter_title + "Filtre" + + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + + + + + settings_contacts_ldap_debug_title + "Débogage" + + + + + LoadingPopup + + + cancel + Cancelar + + + + LoginForm + + + + username + Nom d'utilisateur : username + + + + + + password + Mot de passe + Senha + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + Conexão + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + Por favor, digite uma senha + + + + assistant_forgotten_password + "Mot de passe oublié ?" + + + + + LoginLayout + + + + help_about_title + À propos de %1 + + + + + help_about_privacy_policy_title + "Politique de confidentialité" + + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + + + + + help_about_version_title + "Version" + + + + + help_about_licence_title + "Licence" + + + + + help_about_copyright_title + "Copyright + + + + + close + "Fermer" + + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + Conexão + + + + assistant_no_account_yet + "Pas encore de compte ?" + + + + + assistant_account_register + "S'inscrire" + + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + + + + + assistant_login_remote_provisioning + "Configuration distante" + Provisionamento remoto + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + + + + + cancel + Cancelar + + + + validate + "Valider" + + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + + + + + default_account_connection_state_error_toast + Erro durante a conexão + + + + MagicSearchList + + + device_id + + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + Ligações + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + Contatos + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + + + + + do_not_disturb_accessible_name + "Do not disturb" + Não perturbe + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + + + + + information_popup_error_title + Erro + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + Minha conta + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + + + + + settings_title + Ajustes + + + + recordings_title + "Enregistrements" + + + + + help_title + "Aide" + + + + + help_quit_title + "Quitter l'application" + + + + + quit_app_question + "Quitter %1 ?" + + + + + drawer_menu_add_account + "Ajouter un compte" + + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + + + + + interoperable + interopérable + + + + + call_transfer_successful_toast_title + "Appel transféré" + + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + + + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + + + + + assistant_register_error_title + "Erreur lors de la création" + + + + + assistant_register_success_title + "Compte créé" + + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + + + + + assistant_register_error_code + "Erreur dans le code de validation" + + + + + information_popup_error_title + Erro + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + Reunião + + + + meeting_schedule_broadcast_label + "Webinar" + + + + + meeting_schedule_subject_hint + "Ajouter un titre" + + + + + meeting_schedule_description_hint + "Ajouter une description" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + MeetingPage + + + meetings_add + "Créer une réunion" + + + + + meetings_list_empty + "Aucune réunion" + + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + + + + + meeting_schedule_delete_action + "Supprimer" + Apagar + + + + back_action + Retour + + + + + meetings_list_title + Réunions + + + + + meetings_search_hint + "Rechercher une réunion" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + meetings_empty_list + "Aucune réunion" + + + + + + meeting_schedule_title + "Nouvelle réunion" + + + + + create + + + + + + + + + + information_popup_error_title + Erro + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + + + + + save + Gravar + + + + + saved + "Enregistré" + + + + + meeting_info_updated_toast + "Réunion mise à jour" + + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + + + + + meeting_schedule_timezone_title + "Fuseau horaire" + + + + + meeting_info_organizer_label + "Organisateur" + + + + + meeting_info_join_title + "Rejoindre la réunion" + Participar da reunião + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + + + + + + multimedia_settings_camera_title + "Caméra" + + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + + + + + call_start_group_call_title + Appel de groupe + Chamada em grupo + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + Chamada recebida + + + + dialog_accept + "Accepter" + + + + + dialog_deny + "Refuser + + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + + + + + oidc_authentication_granted_message + Authentication granted + + + + + oidc_authentication_not_authenticated_message + Not authenticated + + + + + oidc_authentication_refresh_message + Refreshing token + + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + + + + + oidc_authentication_network_error + Network error + + + + + oidc_authentication_server_error + Server error + + + + + oidc_authentication_token_not_found_error + OAuth token not found + + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + + + + + oidc_authentication_refresh_token_message + Refreshing access token + + + + + oidc_authentication_request_authorization_message + Requesting authorization + + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + + + + + meeting_add_participants_title + "Ajouter des participants" + + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + + + + + contact_presence_button_delete_custom_status + Apagar + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + Gravar + + + + QObject + + + media_encryption_dtls + DTLS + + + + media_encryption_none + Nenhum + + + + media_encryption_srtp + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + ZRTP pós-quântico + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + + + + + outgoing + "Sortant" + + + + + conference_layout_active_speaker + "Participant actif" + + + + + conference_layout_grid + "Mosaïque" + + + + + conference_layout_audio_only + "Audio uniquement" + + + + + RegisterCheckingPage + + + email + "email" + + + + + phone_number + "numéro de téléphone" + + + + + confirm_register_title + "Inscription | Confirmer votre %1" + + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + + + + + assistant_already_have_an_account + + + + + assistant_account_login + Conexão + + + + assistant_account_register_with_phone_number + + + + + assistant_account_register_with_email + + + + + + username + + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + + + + + + + phone_number + "Numéro de téléphone" + + + + + + email + + + + + + password + Senha + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + + + + + assistant_account_create + "Créer" + + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + Por favor, digite uma senha + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + + + + + assistant_no_account_yet + Pas encore de compte ? + + + + + assistant_account_register + S'inscrire + + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + + + + + + username + "Nom d'utilisateur" + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + Senha + + + + + sip_address_domain + "Domaine" + + + + + + sip_address_display_name + Nom d'affichage + Nome de exibição + + + + + transport + "Transport" + Transporte + + + + + assistant_account_login + Conexão + + + + assistant_account_login_missing_username + + + + + assistant_account_login_missing_password + Por favor, digite uma senha + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + + + + + login_advanced_parameters_label + Advanced parameters + + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + + + + + screencast_settings_all_screen_label + "Ecran entier" + + + + + screencast_settings_one_window_label + "Fenêtre" + + + + + screencast_settings_screen + "Ecran %1" + + + + + stop + "Stop + + + + + share + "Partager" + + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + + + + + dialog_continue + "Continuer" + + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + Ajustes + + + + settings_calls_title + "Appels" + Ligações + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + + + + + settings_contacts_title + "Contacts" + Contatos + + + + settings_meetings_title + "Réunions" + + + + + settings_network_title + "Affichage" "Security" "Réseau" + + + + + settings_advanced_title + "Paramètres avancés" + + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + Modificações não salvas + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + Você tem modificações que não foram salvas. Se você deixar esta página, suas modificações serão perdidas. Você gostaria de salvar suas modificações antes de continuar? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + Não gravar + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + Gravar + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + + + + + conference_participant_paused_text + "En pause" + + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + + + + + group_call_error_no_account + + + + + group_call_error_participants_invite + + + + + group_call_error_creation + + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + nMinute + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + nDay + + + + + + + + nWeek + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + Ocupado + + + + contact_presence_status_do_not_disturb + Não perturbe + + + + contact_presence_status_offline + + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + Erro + + + + information_popup_group_call_not_created_message + + + + + number_of_years + %n an(s) + + + + + + + + number_of_month + "%n mois" + + + + + + + + number_of_weeks + %n semaine(s) + + + + + + + + number_of_days + %n jour(s) + + + + + + + + today + "Aujourd'hui" + + + + + yesterday + "Hier + + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + Erro + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + + + + + meeting_waiting_room_join + "Rejoindre" + + + + + + cancel + Cancel + Cancelar + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + + + + + welcome_page_subtitle + "sur %1" + + + + + welcome_carousel_skip + "Passer" + + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + + + + + welcome_page_2_title + "Sécurisé" + + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + + + + + welcome_page_3_title + "Open Source" + + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + + + + + next + "Suivant" + + + + + start + "Commencer" + Iniciar + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + + + + + call_zrtp_sas_validation_skip + "Passer" + + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + + + + + call_action_hang_up + "Raccrocher" + + + + + country + + + Afghanistan + + + + + Albania + + + + + Algeria + + + + + AmericanSamoa + + + + + Andorra + + + + + Angola + + + + + Anguilla + + + + + AntiguaAndBarbuda + + + + + Argentina + + + + + Armenia + + + + + Aruba + + + + + Australia + + + + + Austria + + + + + Azerbaijan + + + + + Bahamas + + + + + Bahrain + + + + + Bangladesh + + + + + Barbados + + + + + Belarus + + + + + Belgium + + + + + Belize + + + + + Benin + + + + + Bermuda + + + + + Bhutan + + + + + Bolivia + + + + + BosniaAndHerzegowina + + + + + Botswana + + + + + Brazil + + + + + Brunei + + + + + Bulgaria + + + + + BurkinaFaso + + + + + Burundi + + + + + Cambodia + + + + + Cameroon + + + + + Canada + + + + + CapeVerde + + + + + CaymanIslands + + + + + CentralAfricanRepublic + + + + + Chad + + + + + Chile + + + + + China + + + + + Colombia + + + + + Comoros + + + + + PeoplesRepublicOfCongo + + + + + CookIslands + + + + + CostaRica + + + + + IvoryCoast + + + + + Croatia + + + + + Cuba + + + + + Cyprus + + + + + CzechRepublic + + + + + Denmark + + + + + Djibouti + + + + + Dominica + + + + + DominicanRepublic + + + + + Ecuador + + + + + Egypt + + + + + ElSalvador + + + + + EquatorialGuinea + + + + + Eritrea + + + + + Estonia + + + + + Ethiopia + + + + + FalklandIslands + + + + + FaroeIslands + + + + + Fiji + + + + + Finland + + + + + France + + + + + FrenchGuiana + + + + + FrenchPolynesia + + + + + Gabon + + + + + Gambia + + + + + Georgia + + + + + Germany + + + + + Ghana + + + + + Gibraltar + + + + + Greece + + + + + Greenland + + + + + Grenada + + + + + Guadeloupe + + + + + Guam + + + + + Guatemala + + + + + Guinea + + + + + GuineaBissau + + + + + Guyana + + + + + Haiti + + + + + Honduras + + + + + DemocraticRepublicOfCongo + + + + + HongKong + + + + + Hungary + + + + + Iceland + + + + + India + + + + + Indonesia + + + + + Iran + + + + + Iraq + + + + + Ireland + + + + + Israel + + + + + Italy + + + + + Jamaica + + + + + Japan + + + + + Jordan + + + + + Kazakhstan + + + + + Kenya + + + + + Kiribati + + + + + DemocraticRepublicOfKorea + + + + + RepublicOfKorea + + + + + Kuwait + + + + + Kyrgyzstan + + + + + Laos + + + + + Latvia + + + + + Lebanon + + + + + Lesotho + + + + + Liberia + + + + + Libya + + + + + Liechtenstein + + + + + Lithuania + + + + + Luxembourg + + + + + Macau + + + + + Macedonia + + + + + Madagascar + + + + + Malawi + + + + + Malaysia + + + + + Maldives + + + + + Mali + + + + + Malta + + + + + MarshallIslands + + + + + Martinique + + + + + Mauritania + + + + + Mauritius + + + + + Mayotte + + + + + Mexico + + + + + Micronesia + + + + + Moldova + + + + + Monaco + + + + + Mongolia + + + + + Montenegro + + + + + Montserrat + + + + + Morocco + + + + + Mozambique + + + + + Myanmar + + + + + Namibia + + + + + NauruCountry + + + + + Nepal + + + + + Netherlands + + + + + NewCaledonia + + + + + NewZealand + + + + + Nicaragua + + + + + Niger + + + + + Nigeria + + + + + Niue + + + + + NorfolkIsland + + + + + NorthernMarianaIslands + + + + + Norway + + + + + Oman + + + + + Pakistan + + + + + Palau + + + + + PalestinianTerritories + + + + + Panama + + + + + PapuaNewGuinea + + + + + Paraguay + + + + + Peru + + + + + Philippines + + + + + Poland + + + + + Portugal + + + + + PuertoRico + + + + + Qatar + + + + + Reunion + + + + + Romania + + + + + RussianFederation + + + + + Rwanda + + + + + SaintHelena + + + + + SaintKittsAndNevis + + + + + SaintLucia + + + + + SaintPierreAndMiquelon + + + + + SaintVincentAndTheGrenadines + + + + + Samoa + + + + + SanMarino + + + + + SaoTomeAndPrincipe + + + + + SaudiArabia + + + + + Senegal + + + + + Serbia + + + + + Seychelles + + + + + SierraLeone + + + + + Singapore + + + + + Slovakia + + + + + Slovenia + + + + + SolomonIslands + + + + + Somalia + + + + + SouthAfrica + + + + + Spain + + + + + SriLanka + + + + + Sudan + + + + + Suriname + + + + + Swaziland + + + + + Sweden + + + + + Switzerland + + + + + Syria + + + + + Taiwan + + + + + Tajikistan + + + + + Tanzania + + + + + Thailand + + + + + Togo + + + + + Tokelau + + + + + Tonga + + + + + TrinidadAndTobago + + + + + Tunisia + + + + + Turkey + + + + + Turkmenistan + + + + + TurksAndCaicosIslands + + + + + Tuvalu + + + + + Uganda + + + + + Ukraine + + + + + UnitedArabEmirates + + + + + UnitedKingdom + + + + + UnitedStates + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Vietnam + + + + + WallisAndFutunaIslands + + + + + Yemen + + + + + Zambia + + + + + Zimbabwe + + + + + utils + + + formatYears + '%1 year' + + + + + + + + formatMonths + '%1 month' + + + + + + + + formatWeeks + '%1 week' + + + + + + + + formatDays + '%1 day' + + + + + + + + formatHours + '%1 hour' + + + + + + + + formatMinutes + '%1 minute' + + + + + + + + formatSeconds + '%1 second' + + + + + + + + codec_install + "Installation de codec" + + + + + download_codec + "Télécharger le codec %1 (%2) ?" + + + + + information_popup_success_title + "Succès" + Sucesso + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + O codec foi instalado com sucesso. + + + + + + information_popup_error_title + Erro + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + + + + + okButton + Ok + + + diff --git a/Linphone/data/languages/pt_BR.ts b/Linphone/data/languages/pt_BR.ts new file mode 100644 index 000000000..223d8605b --- /dev/null +++ b/Linphone/data/languages/pt_BR.ts @@ -0,0 +1,7436 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + Salvar + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + Escolha um endereço ou número SIP + + + + fps_counter + %1 FPS + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + Conectado + + + + drawer_menu_account_connection_status_refreshing + Atualizando… + + + + drawer_menu_account_connection_status_progress + Conectando… + + + + drawer_menu_account_connection_status_failed + Erro + + + + drawer_menu_account_connection_status_cleared + Desativado + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + Você está online e disponível. + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + Erro de conexão, verifique suas configurações. + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + Conta desativada, você não irá receber mensagens ou chamadas. + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + Erro ao recuperar dispositivos + + + + AccountListView + + + add_an_account + Add an account + Adicionar uma conta + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + A conta está conectada + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + Impossível criar endereço do proxy. Por favor verifique o nome do domínio. + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + Impossível de configurar o endereço: `%1`. + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + Impossível configurar os parâmetros de conta. + + + + assistant_account_login_forbidden_error + "Username and password do not match" + Usuário e senha não coincidem + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + Erro durante a conexão + + + + assistant_account_add_error + "Unable to add account." + Impossível adicionar conta. + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + Detalhes + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + Editar informações da conta. + + + + manage_account_devices_title + "Vos appareils" + Seus dispositivos + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + Lista de dispositivos conectados a sua conta. Você pode remover dispositivos que não utiliza mais. + + + + manage_account_add_picture + "Ajouter une image" + Adicione uma imagem + + + + manage_account_edit_picture + "Modifier l'image" + Editar imagem + + + + manage_account_remove_picture + "Supprimer l'image" + Apagar imagem + + + + sip_address + Endereço SIP + + + + sip_address_display_name + "Nom d'affichage + Nome de exibição + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + O nome exibido aos seus contatos durante as trocas. + + + + manage_account_international_prefix + Indicatif international* + Código internacional* + + + + manage_account_delete + "Déconnecter mon compte" + Desconecte minha conta + + + + manage_account_delete_message + Sua conta será removida deste cliente Linphone, mas você continuará conectado em seus outros clientes + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + Sair da conta? + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + Se deseja excluir sua conta permanentemente, acesse: https://sip.linphone.org + + + + error + Erreur + Erro + + + + manage_account_device_remove + "Supprimer" + Apagar + + + + manage_account_device_remove_confirm_dialog + Excluir %1? + + + + manage_account_device_last_connection + "Dernière connexion:" + Ultimo login: + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + Minha conta + + + + settings_general_title + "Général" + Geral + + + + settings_account_title + "Paramètres de compte" + Configurações de conta + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + Modificações não salvas + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + Você possui modificações não salvas. Se sair desta página, suas modificações serão perdidas. Você deseja salvar suas modificações antes de continuar? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + Não salvar + + + + contact_editor_dialog_abort_confirmation_save + Salvar + + + + AccountSettingsParametersLayout + + + settings_title + Configurações + + + + settings_account_title + Configurações de conta + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + Erro + + + + information_popup_success_title + Sucesso + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + Alterações salvas + + + + information_popup_error_title + Erro + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + URI do servidor de correio de voz + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + URI do correio de voz + + + + account_settings_transport_title + "Transport" + Transporte + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + Endereço do servidor STUN + + + + account_settings_enable_ice_title + "Activer ICE" + Ativar ICE + + + + account_settings_avpf_title + "AVPF" + AVPF + + + + account_settings_bundle_mode_title + "Mode bundle" + Modo pacote + + + + account_settings_expire_title + "Expiration (en seconde)" + Expiração (em segundos) + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + URI do servidor de conferencia + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + URI do servidor de vídeo conferência + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + URL do servidor de troca de chaves de criptografia + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + Pesquisar contatos + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + Não encontrado… + + + + contact_list_empty + Sem contato no momento + + + + AdvancedSettingsLayout + + + settings_system_title + System + Sistema + + + + settings_remote_provisioning_title + Remote provisioning + Provisionamento remoto + + + + settings_security_title + Security / Encryption + Segurança / Criptografia + + + + settings_advanced_audio_codecs_title + Audio codecs + Codecs de áudio + + + + settings_advanced_video_codecs_title + Video codecs + Codecs de vídeo + + + + settings_advanced_auto_start_title + Auto start %1 + Iniciar automaticamente %1 + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + URL de provisionamento remoto + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + Baixar e aplicar + + + + information_popup_error_title + Invalid URL format + Erro + + + + settings_advanced_invalid_url_message + Formato inválido da URL + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + Encriptação de mídia + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + Encriptação de mídia obrigatória + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + Criar conferências e grupos de chamadas encriptadas fim-a-fim + + + + settings_advanced_hide_fps_title + Ocultar FPS + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + Favoritos + + + + generic_address_picker_contacts_list_title + 'Contacts' + Contatos + + + + generic_address_picker_suggestions_list_title + "Suggestions" + Sugestões + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + Deseja baixar e aplicar o provisionamento remoto deste endereço? + + + + + info_popup_error_title + Error + Erro + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + Provisionamento remoto falhou : %1 + + + + configuration_error_detail + not reachable + não acessível + + + + application_description + "A free and open source SIP video-phone." + Um videofone SIP gratuito e de código aberto. + + + + command_line_arg_order + "Send an order to the application towards a command line" + Enviar comando para o aplicativo por linha de comando + + + + command_line_option_show_help + Exibir esta ajuda + + + + command_line_option_show_app_version + Exibir versão do aplicativo + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + Especifique o arquivo de configuração do Linphone a ser obtido. Ele será mesclado com a configuração atual. + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + URL, caminho ou arquivo + + + + command_line_option_minimized + Minimizar + + + + command_line_option_log_to_stdout + Gerar log de debug para a saída padrão durante a execução + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + Imprimir somente logs da aplicação + + + + hide_action + "Cacher" "Afficher" + Ocultar + + + + show_action + Exibir + + + + quit_action + "Quitter" + Sair + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + Autenticação requerida + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + Falha no login da conta %1. Você pode digitar sua senha novamente ou verificar as configurações da sua conta. + + + + password + Senha + + + + cancel + "Annuler + Cancel + + + + assistant_account_login + Connexion + Conexão + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + Por favor, insira uma senha + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + Fim da gravação + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + A gravação foi salva no arquivo: %1 + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + Codec: %1 / %2 kHz + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + Largura de banda: %1 %2 kbits/s %3 %4 kbits/s + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + Taxa de perda: %1% %2% + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + Buffer de jitter? %1 ms + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + Resolução de vídeo: %1 %2 %3 %4 + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + QPS : %1 %2 %3 %4 + + + + media_encryption_dtls + DTLS + DTLS + + + + media_encryption_none + None + Nenhum + + + + media_encryption_srtp + SRTP + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + ZRTP Pós-quântico + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + Entrar na conferência + + + + contact_call_action + "Appel" + Chamada + + + + contact_message_action + "Message" + Mensagem + + + + contact_video_call_action + "Appel Video" + Video chamada + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + Você saiu da conferência + + + + call_ended_by_user + "Vous avez terminé l'appel" + Você encerrou a chamada + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + O destinatário encerrou a chamada + + + + conference_call_empty + "En attente d'autres participants…" + Aguardando por outros participantes… + + + + conference_share_link_title + "Partager le lien" + Compartilhar link + + + + copied + Copiado + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + O link da reunião foi copiado para a área de transferência + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + Erro + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + Conferência + + + + call + "Appel" + Chamada + + + + paused_call_or_meeting + "%1 en pause" + %1 Em pausa + + + + ongoing_call_or_meeting + "%1 en cours" + Em andamento %1 + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + Ligação recusada pelo usuário + + + + call_error_user_not_found_toast + "User was not found" + Usuário não encontrado + + + + call_error_user_busy_toast + "User is busy" + Usuário ocupado + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + O usuário não pode aceitar sua ligação + + + + call_error_io_error_toast + "Unavailable service or network error" + Serviço indisponível ou erro de rede + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + Tempo esgotado do Servidor + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + Nova chamada + + + + call_history_empty_title + "Historique d'appel vide" + Histórico de chamadas vazio + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + Excluir histórico de chamadas? + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + O histórico de chamadas será excluído permanentemente. + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + Excluir histórico de chamadas? + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + O histórico de chamadas deste usuário será excluído permanentemente. + + + + call_history_call_list_title + "Appels" + Ligações + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + Excluir histórico + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + Encontrar chamada + + + + list_filter_no_result_found + "Aucun résultat…" + Não encontrado… + + + + history_list_empty_history + "Aucun appel dans votre historique" + Nenhuma chamada no histórico + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + Nova chamada + + + + call_start_group_call_title + "Appel de groupe" + Chamada em grupo + + + + call_action_start_group_call + "Lancer" + Iniciar + + + + + + information_popup_error_title + Erro + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + Um nome deve ser fornecido para a chamada + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Você não está conectado + + + + menu_see_existing_contact + "Show contact" + Mostrar contato + + + + menu_add_address_to_contacts + "Add to contacts" + Adicionar aos contatos + + + + menu_copy_sip_address + "Copier l'adresse SIP" + Copiar endereço SIP + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + Endereço SIP copiado + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + O endereço foi copiado para a área de transferência + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + Erro ao copiar endereço + + + + notification_missed_call_title + "Appel manqué" + Chamada perdida + + + + call_outgoing + "Appel sortant" + Chamada de saída + + + + call_audio_incoming + "Appel entrant" + Chamada recebida + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + Dispositivos + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + Você pode alterar os dispositivos de saída de áudio, microfone e câmera. + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + Cancelador de ruído + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + Impede que o ruído seja ouvido pelo seu correspondente + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + Habilitar gravação automática de chamadas + + + + settings_call_enable_tones_title + Tonalités + Tons + + + + settings_call_enable_tones_subtitle + Activer les tonalités + Habilitar tons + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + Habilitar vídeo + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + Áudio + + + + call_stats_video_title + "Vidéo" + Vídeo + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + Transferência em andamento, aguarde + + + + + information_popup_error_title + Erro + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + A transferência falhou + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + A reunião pode começar devido a um erro de URI. + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + Encerrar todas as chamadas atuais? + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + A janela está prestes a ser fechada. Isso encerrará todas as chamadas atuais. + + + + call_can_be_trusted_toast + "Appareil authentifié" + Dispositivo confiável + + + + call_dir + %1 chamada + + + + call_ended + Appel terminé + Chamada encerrada + + + + conference_paused + Meeting paused + Reunião pausada + + + + call_paused + Call paused + Chamada pausada + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + Chamada criptografada ponto a ponto + + + + call_zrtp_sas_validation_required + Vérification nécessaire + Validação necessária + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + Chamada criptografada de ponta a ponta + + + + call_not_encrypted + "Appel non chiffré" + Chamada não criptografada + + + + + call_waiting_for_encryption_info + Waiting for encryption + Aguardando criptografia + + + + call_paused_by_remote + Call paused by remote + Chamada pausada remotamente + + + + conference_user_is_recording + "You are recording the meeting" + Você está gravando a reunião + + + + call_user_is_recording + "You are recording the call" + Você está gravando a chamada + + + + conference_remote_is_recording + "Someone is recording the meeting" + Alguém está gravando a reunião + + + + call_remote_recording + "%1 is recording the call" + A chamada está sendo gravada por %1 + + + + call_stop_recording + "Stop recording" + Parar de gravar + + + + add + Adicionar + + + + call_transfer_current_call_title + "Transférer %1 à…" + Transferir %1 para… + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + Confirmar transferência + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + Você vai transferir %1 para %2. + + + + call_action_start_new_call + "Nouvel appel" + Nova chamada + + + + + call_action_show_dialer + "Pavé numérique" + Discador + + + + call_action_change_layout + "Modifier la disposition" + Alterar layout + + + + call_action_go_to_calls_list + "Liste d'appel" + Lista de chamadas + + + + Merger tous les appels + call_action_merge_calls + Mesclar todas as chamadas + + + + + call_action_go_to_settings + "Paramètres" + Configurações + + + + conference_action_screen_sharing + "Partage de votre écran" + Compartilhe sua tela + + + + conference_share_link_title + Partager le lien de la réunion + Compartilhar link da reunião + + + + copied + Copié + Copiado + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + O link da reunião foi copiado para a área de transferência + + + + + + conference_participants_list_title + "Participants (%1)" + Participantes (%1) + + + + + group_call_participant_selected + + + + + + + + meeting_schedule_add_participants_title + Adicionar participantes + + + + call_encryption_title + Chiffrement + Criptografia + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + Parar + + + + stop_recording_accessible_name + Stop recording + Parar de gravar + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + Estatísticas + + + + + call_action_end_call + "Terminer l'appel" + Encerrar chamada + + + + + call_action_resume_call + "Reprendre l'appel" + Retomar chamada + + + + + call_action_pause_call + "Mettre l'appel en pause" + Pausar chamada + + + + + call_action_transfer_call + "Transférer l'appel" + Chamada de transferência + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + Iniciar nova chamada + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + Ver lista de chamadas + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + Desligar vídeo + + + + + call_activate_video_hint + Habilitar vídeo + + + + + call_activate_microphone + "Activer le micro" + Ativar microfone + + + + + call_deactivate_microphone + "Désactiver le micro" + Microfone mudo + + + + + call_share_screen_hint + Partager l'écran… + Compartilhar tela… + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + Levantar a mão + + + + + call_send_reaction_hint + "Envoyer une réaction" + Enviar reação + + + + + call_manage_participants_hint + "Gérer les participants" + Gerenciar participantes + + + + + call_more_options_hint + "Plus d'options…" + Mais opções… + + + + call_action_change_conference_layout + "Modifier la disposition" + Alterar layout + + + + call_action_full_screen + "Mode Plein écran" + Modo de tela cheia + + + + call_action_stop_recording + "Terminer l'enregistrement" + Terminar gravação + + + + call_action_record + "Enregistrer l'appel" + Gravar chamada + + + + call_activate_speaker_hint + "Activer le son" + Ativar alto-falante + + + + call_deactivate_speaker_hint + "Désactiver le son" + Desativar alto-falante + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + Catálogo de endereços CardDAV + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + Adicione um catálogo de endereços CardDAV para sincronizar seus contatos do Linphone com um catálogo de endereços de terceiros. + + + + information_popup_error_title + Erro + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + Verifique se todas as informações foram inseridas. + + + + information_popup_synchronization_success_title + Sucesso + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + O catálogo de endereços do CardDAV está sincronizado. + + + + settings_contacts_carddav_popup_synchronization_error_title + Erro + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + Erro de sincronização! + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + Excluir catálogo de endereços do CardDAV? + + + + sip_address_display_name + Nom d'affichage + Nome de exibição + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + URL do servidor + + + + username + Nome de usuário + + + + password + Senha + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + Domínio de autenticação + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + Armazene os contatos recém-criados aqui + + + + ChangeLayoutForm + + + conference_layout_grid + Mosaico + + + + conference_layout_active_speaker + Falante ativo + + + + conference_layout_audio_only + Apenas áudio + + + + ChatAudioContent + + + + information_popup_error_title + Error + Erro + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + Apagar + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + Copiado + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + Apagar + + + + ChatMessageContentCore + + + popup_error_title + Error + Erro + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + Erro + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + Entrar + + + + ics_bubble_participants + %n participant(s) + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + Conversas + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + Nenhum resultado… + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + Criar + + + + + + information_popup_error_title + Erro + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Você não está conectado + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + Exibir + + + + fetch_config_function_description + Obter configuração + + + + call_function_description + Chamada + + + + bye_function_description + Encerrar + + + + accept_function_description + Aceitar + + + + decline_function_description + Recusar + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + Erro + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + Sua conta foi desconectada + + + + Contact + + + information_popup_error_title + Erreur + Erro + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + O URI do correio de voz não está definido. + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + Editar contato + + + + save + "Enregistrer + Salvar + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + As alterações serão descartadas. Deseja continuar? + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + Por favor, insira um endereço SIP ou número de telefone + + + + contact_editor_add_image_label + "Ajouter une image" + Adicione uma imagem + + + + contact_details_edit + "Modifier" + Editar + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + Apagar + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + Primeiro nome + + + + + contact_editor_last_name + "Nom" + Ultimo nome + + + + + contact_editor_company + "Entreprise" + Empresa + + + + + contact_editor_job_title + "Fonction" + Trabalho + + + + + sip_address + Endereço SIP + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + Telefone + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + Remover dos favoritos + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Adicionar aos favoritos + + + + Partager + Compartilhar + + + + information_popup_error_title + Erro + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + Falha na criação do VCard + + + + information_popup_vcard_creation_title + VCard créée + VCard Criado + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + O VCard foi salvo em %1 + + + + contact_sharing_email_title + Partage de contact + Compartilhar contato + + + + contact_details_delete + "Supprimer" + Apagar + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + Adicionar um contato + + + + contacts_list_empty + "Aucun contact pour le moment" + Nenhum contato no momento + + + + contact_new_title + "Nouveau contact" + Novo contato + + + + create + Criar + + + + contact_edit_title + "Modifier contact" + Editar contato + + + + save + Salvar + + + + contact_dialog_delete_title + Supprimer %1 ?" + Excluir %1? + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + Este contato será excluído permanentemente. + + + + contact_deleted_toast + "Contact supprimé" + Contato excluído + + + + contact_deleted_message + "%1 a été supprimé" + %1 foi excluído + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + Aumentar o nível de confiança + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + Para aumentar o nível de confiança, você deve ligar para os dispositivos do seu contato e validar um código.<br><br>Você está prestes a ligar para "%1". Deseja continuar? + + + + popup_do_not_show_again + Ne plus afficher + Não mostrar novamente + + + + cancel + Cancel + + + + dialog_call + "Appeler" + Chamada + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + Nível de confiança + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + Verifique os dispositivos dos seus contatos para confirmar que suas comunicações serão seguras e sem comprometimento. Quando todos forem verificados, você atingirá o nível máximo de confiança. + + + + dialog_ok + "Ok" + Ok + + + + bottom_navigation_contacts_label + "Contacts" + Contatos + + + + search_bar_look_for_contact_text + Rechercher un contact + Procurar contato + + + + list_filter_no_result_found + Aucun résultat… + Nenhum resultado… + + + + contact_list_empty + Aucun contact pour le moment + Nenhum contato no momento + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + Editar + + + + contact_call_action + "Appel" + Chamada + + + + contact_message_action + "Message" + Mensagem + + + + contact_video_call_action + "Appel vidéo" + Video chamada + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + Detalhes de contato + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + Companhia: + + + + contact_details_job_title + "Poste :" + Trabalho: + + + + contact_details_medias_title + "Medias" + Metade + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + Mostrar mídia compartilhada + + + + contact_details_trust_title + "Confiance" + Confiar + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + Nível de confiança - Dispositivos verificados + + + + contact_details_no_device_found + "Aucun appareil" + Nenhum dispositivo + + + + contact_device_without_name + "Appareil inconnu" + Dispositivo desconhecido + + + + contact_make_call_check_device_trust + "Vérifier" + Verificar + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + Outras ações + + + + contact_details_remove_from_favourites + "Retirer des favoris" + Remover dos favoritos + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Adicionar aos favoritos + + + + contact_details_share + "Partager" + Compartilhar + + + + information_popup_error_title + Erro + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + Falha na criação do VCard + + + + contact_details_share_success_title + "VCard créée" + VCard Criado + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + O VCard foi salvo em %1 + + + + contact_details_share_email_title + "Partage de contact" + Compartilhar contato + + + + contact_details_delete + "Supprimer ce contact" + Apagar contato + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + Servidores LDAP + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + Adicione seus servidores LDAP para poder pesquisar na barra de pesquisa mágica. + + + + settings_contacts_carddav_title + Catálogo de endereços CardDAV + + + + settings_contacts_carddav_subtitle + Adicione um catálogo de endereços CardDAV para sincronizar seus contatos do Linphone com um catálogo de endereços de terceiros. + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + Adicionar servidor LDAP + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + Editar um servidor LDAP + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + Adicionar um catálogo de endereços do CardDAV + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + Editar um catálogo de endereços do CardDAV + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + Sucesso + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + As modificações foram salvas + + + + add + "Ajouter" + Adicionar + + + + ConversationInfos + + + one_one_infos_call + "Appel" + Chamada + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + Participantes (%1) + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + Outras ações + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + Excluir histórico + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + Mostrar contato + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + Excluir histórico + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + Procurar contato + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + Os rastreamentos de depuração serão excluídos. Deseja continuar? + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + Os rastreamentos de depuração foram carregados. Como você gostaria de compartilhar o link? + + + + settings_debug_clipboard + "Presse-papier" + Área de transferência + + + + settings_debug_email + "E-Mail" + Email + + + + debug_settings_trace + "Traces %1" + %1 rastreamentos + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + Falha no compartilhamento de e-mail. Envie o link %1 diretamente para %2. + + + + + information_popup_error_title + Une erreur est survenue. + Ocorreu um erro. + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + Habilitar rastreamentos de depuração + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + Habilitar logs completos + + + + settings_debug_delete_logs_title + "Supprimer les traces" + Excluir rastreamentos de depuração + + + + settings_debug_share_logs_title + "Partager les traces" + Compartilhar rastreamentos de depuração + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + Carregando rastreamentos… + + + + settings_debug_app_version_title + "Version de l'application" + Versão do aplicativo + + + + settings_debug_sdk_version_title + "Version du SDK" + Versão do SDK + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + Falha no upload de rastreamentos. Você pode compartilhar arquivos de rastreamento diretamente do seguinte diretório: %1 + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + não pode estar vazio + + + + textfield_error_message_unknown_format + "Format non reconnu" + não pode estar vazio + + + + Dialog + + + + dialog_confirm + "Confirmer" + Confirmar + + + + + dialog_cancel + "Annuler" + Cancel + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + Encriptação: + + + + call_stats_media_encryption + Media encryption : %1 + Criptografia de mídia: %1%2 + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + Algoritmo de criptografia: %1 + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + Algoritmo de concordância de chave: %1 + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + Algoritmo de hash: %1 + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + Algoritmo de autenticação: %1 + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + Algoritmo SAS: %1 + + + + call_zrtp_validation_button_label + "Validation chiffrement" + Validação de criptografia + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + Desativado + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + Endereço SIP + + + + + + device_id + "Téléphone" + Telefone + + + + information_popup_error_title + Erro + + + + information_popup_invalid_address_message + "Adresse invalide" + Endereço inválido + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + Gerenciar participantes + + + + group_infos_participant_is_admin + Administrador + + + + menu_see_existing_contact + "Show contact" + Mostrar contato + + + + menu_add_address_to_contacts + "Add to contacts" + Adicionar aos contatos + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + Nome do grupo + + + + required + "Requis" + Obrigatório + + + + HelpPage + + + help_title + "Aide" + Ajuda + + + + + help_about_title + "À propos de %1" + Sobre %1 + + + + help_about_privacy_policy_title + "Règles de confidentialité" + Política de privacidade + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + Quais informações o %1 coleta e usa + + + + help_about_version_title + "Version" + Versão + + + + help_about_gpl_licence_title + "Licences GPLv3" + Licenças GPLv3 + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + Contribua para a tradução de %1 + + + + help_troubleshooting_title + "Dépannage" + Solucionando problemas + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + Servidores LDAP + + + + settings_contacts_ldap_subtitle + Adicione seus servidores LDAP para poder pesquisar na barra de pesquisa mágica. + + + + information_popup_success_title + Sucesso + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + O servidor LDAP foi salvo + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + Ocorreu um erro, a configuração LDAP não foi salva! + + + + information_popup_error_title + Erro + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + Excluir servidor LDAP? + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + URL do servidor (não pode estar vazio) + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + Bind DN + + + + settings_contacts_ldap_password_title + "Mot de passe" + Senha + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + Usar TLS + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + Base de pesquisa (não pode estar vazia) + + + + settings_contacts_ldap_search_filter_title + "Filtre" + Filtro + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + Resultados máximos + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + Atraso entre duas consultas (em milissegundos) + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + Tempo limite (em segundos) + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + Número mínimo de caracteres para a consulta + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + Atributos de nome + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + Atributos SIP + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + SIP domain + + + + settings_contacts_ldap_debug_title + "Débogage" + Debug + + + + LoadingPopup + + + cancel + Cancel + + + + LoginForm + + + + username + Nom d'utilisateur : username + Nome de usuário + + + + + password + Mot de passe + Senha + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + Conexão + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + Por favor, insira um nome de usuário + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + Por favor, insira uma senha + + + + assistant_forgotten_password + "Mot de passe oublié ?" + Esqueceu a senha? + + + + LoginLayout + + + + help_about_title + À propos de %1 + Sobre %1 + + + + help_about_privacy_policy_title + "Politique de confidentialité" + Política de privacidade + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + Visite nossa política de privacidade + + + + help_about_version_title + "Version" + Versão + + + + help_about_licence_title + "Licence" + Licença + + + + help_about_copyright_title + "Copyright + Direitos autorais + + + + close + "Fermer" + Fechar + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + Conexão + + + + assistant_no_account_yet + "Pas encore de compte ?" + Ainda não há conta? + + + + assistant_account_register + "S'inscrire" + Registro + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + Conta SIP de terceiros + + + + assistant_login_remote_provisioning + "Configuration distante" + Provisionamento remoto + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + Baixar uma configuração remota + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + Por favor, insira o endereço de configuração fornecido: + + + + cancel + Cancel + + + + validate + "Valider" + Confirmar + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + Link de provisionamento remoto + + + + default_account_connection_state_error_toast + Erro durante a conexão + + + + MagicSearchList + + + device_id + Telefone + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + Ligações + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + Contatos + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + Conversas + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + Conferências + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + Encontre contato, ligue para %1 + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + ou enviar mensagem … + + + + do_not_disturb_accessible_name + "Do not disturb" + Não perturbe + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + Desativar não perturbe + + + + information_popup_error_title + Erro + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + O URI do correio de voz não está definido. + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + Minha conta + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + Ativar não perturbe + + + + settings_title + Configurações + + + + recordings_title + "Enregistrements" + Gravações + + + + help_title + "Aide" + Ajuda + + + + help_quit_title + "Quitter l'application" + Sair do app + + + + quit_app_question + "Quitter %1 ?" + Sair %1? + + + + drawer_menu_add_account + "Ajouter un compte" + Adicionar uma conta + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + Conexão bem-sucedida + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + Você está logado no modo %1 + + + + interoperable + interopérable + interoperável + + + + call_transfer_successful_toast_title + "Appel transféré" + Chamada encaminhada + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + O seu correspondente foi transferido para o contato selecionado + + + + information_popup_success_title + Salvo + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + As modificações foram salvas + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + Por favor, valide o CAPTCHA na página web + + + + assistant_register_error_title + "Erreur lors de la création" + Erro ao criar + + + + assistant_register_success_title + "Compte créé" + Conta criada + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + A conta foi criada. Você pode entrar agora. + + + + assistant_register_error_code + "Erreur dans le code de validation" + Erro no código de validação + + + + information_popup_error_title + Erro + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + Conferência + + + + meeting_schedule_broadcast_label + "Webinar" + Webinário + + + + meeting_schedule_subject_hint + "Ajouter un titre" + Adicionar um título + + + + meeting_schedule_description_hint + "Ajouter une description" + Adicionar uma descrição + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Adicionar participantes + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + Enviar um convite para os participantes + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + Conferência cancelada + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + Nenhuma reunião para hoje + + + + meeting_info_delete + "Supprimer la réunion" + Apagar conferência + + + + MeetingPage + + + meetings_add + "Créer une réunion" + Criar reunião + + + + meetings_list_empty + "Aucune réunion" + Sem reunião + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + Gostaria de cancelar e excluir esta reunião? + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + Gostaria de excluir esta reunião? + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + Cancelar e excluir + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + Excluir apenas + + + + meeting_schedule_delete_action + "Supprimer" + Apagar + + + + back_action + Retour + Voltar + + + + meetings_list_title + Réunions + Conferências + + + + meetings_search_hint + "Rechercher une réunion" + Encontrar reunião + + + + list_filter_no_result_found + "Aucun résultat…" + Nenhum resultado… + + + + meetings_empty_list + "Aucune réunion" + Sem reunião + + + + + meeting_schedule_title + "Nouvelle réunion" + Nova reunião + + + + create + Criar + + + + + + + + + information_popup_error_title + Erro + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + Preencha o título e selecione pelo menos um participante + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + O fim da conferência deve ser mais recente do que o seu início + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + Criando a reunião… + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + Conferência criada com sucesso + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + Falha ao criar conferência! + + + + save + Salvar + + + + + saved + "Enregistré" + Salvo + + + + meeting_info_updated_toast + "Réunion mise à jour" + Conferência atualizada + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + Atualização de conferência em progresso… + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + Falha ao atualizar conferência! + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Adicionar participantes + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + meeting_info_delete + "Supprimer la réunion" + Apagar conferência + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + URI da conferência copiado + + + + meeting_schedule_timezone_title + "Fuseau horaire" + Fuso horário + + + + meeting_info_organizer_label + "Organisateur" + Organizador + + + + meeting_info_join_title + "Rejoindre la réunion" + Entrar na conferência + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + Exibir + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + Modo de exibição padrão + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + Como os participantes são exibidos nas reuniões + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + Toque - Chamadas recebidas + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + Alto-falantes + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + Microfone + + + + + multimedia_settings_camera_title + "Caméra" + Câmera + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + Rede + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + Chamada em andamento + + + + call_start_group_call_title + Appel de groupe + Chamada em grupo + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + Chamada recebida + + + + dialog_accept + "Accepter" + Aceitar + + + + dialog_deny + "Refuser + Recusar + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + OAuthHttpServerReplyHandler não está escutando + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + Tempo limite: Não autenticado + + + + oidc_authentication_granted_message + Authentication granted + Autenticação concedida + + + + oidc_authentication_not_authenticated_message + Not authenticated + Não autenticado + + + + oidc_authentication_refresh_message + Refreshing token + Token de atualização + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + Credenciais temporárias recebidas + + + + oidc_authentication_network_error + Network error + Erro de rede + + + + oidc_authentication_server_error + Server error + Erro do servidor + + + + oidc_authentication_token_not_found_error + OAuth token not found + Token OAuth não encontrado + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + Segredo do token OAuth não encontrado + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + Retorno de chamada OAuth não verificado + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + Solicitando autorização do navegador + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + Solicitando token de acesso + + + + oidc_authentication_refresh_token_message + Refreshing access token + Atualizando o token de acesso + + + + oidc_authentication_request_authorization_message + Requesting authorization + Solicitando autorização + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + Solicitando credenciais temporárias + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + Nenhum endpoint de autorização encontrado na configuração do OpenID + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + Nenhum endpoint de token encontrado na configuração do OpenID + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + Administrador + + + + meeting_add_participants_title + "Ajouter des participants" + Adicionar participantes + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + Editar + + + + contact_presence_button_delete_custom_status + Apagar + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + Salvar + + + + QObject + + + media_encryption_dtls + DTLS + + + + media_encryption_none + Nenhum + + + + media_encryption_srtp + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + ZRTP Pós-quântico + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + Recebidas + + + + outgoing + "Sortant" + Enviadas + + + + conference_layout_active_speaker + "Participant actif" + Falante ativo + + + + conference_layout_grid + "Mosaïque" + Mosaico + + + + conference_layout_audio_only + "Audio uniquement" + Apenas áudio + + + + RegisterCheckingPage + + + email + "email" + email + + + + phone_number + "numéro de téléphone" + número de telefone + + + + confirm_register_title + "Inscription | Confirmer votre %1" + Cadastrar | Confirme seu %1 + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + Nós enviamos um código de verificação no seu %1 %2<br>Por favor, insira-o abaixo + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + Não recebeu o código? + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + Reenviar código + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + Registro + + + + assistant_already_have_an_account + Já possui uma conta? + + + + assistant_account_login + Conexão + + + + assistant_account_register_with_phone_number + Cadastrar com um número de telefone + + + + assistant_account_register_with_email + Cadastrar com email + + + + + username + Nome de usuário + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + Domínio + + + + + + phone_number + "Numéro de téléphone" + Número de telefone + + + + + email + Email + + + + + password + Senha + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + Confirmar senha + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + Eu aceito o %1 e o %2 + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + termos de uso + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + política de privacidade + + + + assistant_account_create + "Créer" + Criar + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + Por favor, insira um nome de usuário + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + Por favor, insira uma senha + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + As senhas não combinam + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + Por favor, insira um número de telefone + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + Por favor, insira um email + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + Conta SIP de terceiros + + + + assistant_no_account_yet + Pas encore de compte ? + Ainda não há conta? + + + + assistant_account_register + S'inscrire + Registro + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + Algumas funcionalidades, como conversas em grupo, videoconferências, e outros, exigem uma conta %1. + +Estas funcionalidades serão escondidas se você utilizar uma conta SIP de terceiros. + +Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + Criar uma conta Linphone + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + Entendi + + + + + username + "Nom d'utilisateur" + Nome de usuário + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + Senha + + + + + sip_address_domain + "Domaine" + Domínio + + + + + sip_address_display_name + Nom d'affichage + Nome de exibição + + + + + transport + "Transport" + Transporte + + + + + assistant_account_login + Conexão + + + + assistant_account_login_missing_username + Por favor, insira um nome de usuário + + + + assistant_account_login_missing_password + Por favor, insira uma senha + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + Por favor, insira um domínio + + + + login_advanced_parameters_label + Advanced parameters + Parâmetros avançados + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + Por favor, selecione a tela ou janela que você gostaria de compartilhar com os outros participantes. + + + + screencast_settings_all_screen_label + "Ecran entier" + Tela inteira + + + + screencast_settings_one_window_label + "Fenêtre" + Janela + + + + screencast_settings_screen + "Ecran %1" + Tela %1 + + + + stop + "Stop + Parar + + + + share + "Partager" + Compartilhar + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + Selecione seu modo + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + Você pode alterar este modo mais tarde. + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + Criptografia de ponta-a-ponta + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + Este modo garante a confidencialidade de todas as suas comunicações. Nossa tecnologia de criptografia de ponta-a-ponta garante segurança máxima para todas suas comunicações. + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + Interoperável + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + Este modo permite que você desfrute de todas as funcionalidades do Linphone, mantendo interoperatividade com outros serviços SIP. + + + + dialog_continue + "Continuer" + Continuar + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + Criptografar todos os arquivos + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + Aviso: não pode ser desativado após ativado! + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + Conversas + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + Configurações + + + + settings_calls_title + "Appels" + Ligações + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + Conversas + + + + settings_contacts_title + "Contacts" + Contatos + + + + settings_meetings_title + "Réunions" + Conferências + + + + settings_network_title + "Affichage" "Security" "Réseau" + Rede + + + + settings_advanced_title + "Paramètres avancés" + Parâmetros avançados + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + Modificações não salvas + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + Você possui modificações não salvas. Se sair desta página, suas modificações serão perdidas. Você deseja salvar suas modificações antes de continuar? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + Não salvar + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + Salvar + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + entrando… + + + + conference_participant_paused_text + "En pause" + Em pausa + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + O endereço de chamada não é um endereço SIP interpretável: %1 + + + + group_call_error_no_account + Nenhuma conta padrão encontrada, não foi possível criar a chamada em grupo + + + + group_call_error_participants_invite + Não foi possível convidar os participantes para a chamada em grupo + + + + group_call_error_creation + A chamada em grupo não pôde ser criada + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + Nome de dispositivo desconhecido + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + nMinute + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + nDay + + + + + + + + nWeek + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + Ocupado + + + + contact_presence_status_do_not_disturb + Não perturbe + + + + contact_presence_status_offline + Indisponível + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + A chamada não pôde ser criada + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + Erro + + + + information_popup_group_call_not_created_message + A chamada em grupo não pôde ser criada + + + + number_of_years + %n an(s) + + um ano + %1 anos + + + + + number_of_month + "%n mois" + + + + + + + + number_of_weeks + %n semaine(s) + + uma semana + %1 semanas + + + + + number_of_days + %n jour(s) + + um dia + %1 dias + + + + + today + "Aujourd'hui" + Hoje + + + + yesterday + "Hier + Ontem + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + Erro + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + Entrar: + + + + meeting_waiting_room_join + "Rejoindre" + Entrar + + + + + cancel + Cancel + Cancel + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + Conexão para a conferência + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + Você entrará na conferência em alguns instantes… + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + Bem-vindo + + + + welcome_page_subtitle + "sur %1" + ao %1 + + + + welcome_carousel_skip + "Passer" + Pular + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + Um aplicativo de comunicação <b>seguro</b>,<br><b>de código aberto</b> e <b>francês</b>. + + + + welcome_page_2_title + "Sécurisé" + Seguro + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + Suas comunicações estão seguras graças à<br><b>criptografia de ponta-a-ponta</b>. + + + + welcome_page_3_title + "Open Source" + Código aberto + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + Um aplicativo de código aberto e um <b>serviço gratuito</b><br>desde <b>2001</b> + + + + next + "Suivant" + Próximo + + + + start + "Commencer" + Iniciar + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + Verificação de segurança + + + + call_zrtp_sas_validation_skip + "Passer" + Pular + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + Para garantiar a criptografia, nós precisamos re-autenticar o dispositivo do seu contato. Troquem seus códigos: + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + Para garantir a criptografia, nós precisamos autenticar o dispositivo do seu contato. Por favor, troquem seus códigos: + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + Seu código: + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + Código correspondente: + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + O código fornecido não corresponde. + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + A confidencialidade da sua chamada pode estar comprometida! + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + Nenhuma correspondência + + + + call_action_hang_up + "Raccrocher" + Encerrar + + + + country + + + Afghanistan + Afeganistão + + + + Albania + Albânia + + + + Algeria + Argélia + + + + AmericanSamoa + Samoa Americana + + + + Andorra + Andorra + + + + Angola + Angola + + + + Anguilla + Anguila + + + + AntiguaAndBarbuda + Antígua e Barbuda + + + + Argentina + Argentina + + + + Armenia + Armênia + + + + Aruba + Aruba + + + + Australia + Austrália + + + + Austria + Áustria + + + + Azerbaijan + Azerbaijão + + + + Bahamas + Bahamas + + + + Bahrain + Barém + + + + Bangladesh + Bangladesh + + + + Barbados + Barbados + + + + Belarus + Bielorrússia + + + + Belgium + Bélgica + + + + Belize + Belize + + + + Benin + Benim + + + + Bermuda + Bermudas + + + + Bhutan + Butão + + + + Bolivia + Bolívia + + + + BosniaAndHerzegowina + Bósnia e Herzegovina + + + + Botswana + Botswana + + + + Brazil + Brasil + + + + Brunei + Brunei + + + + Bulgaria + Bulgária + + + + BurkinaFaso + Burquina Fasso + + + + Burundi + Burundi + + + + Cambodia + Camboja + + + + Cameroon + Camarões + + + + Canada + Canadá + + + + CapeVerde + Cabo Verde + + + + CaymanIslands + Ilhas Cayman + + + + CentralAfricanRepublic + República Centro-Africana + + + + Chad + Chade + + + + Chile + Chile + + + + China + China + + + + Colombia + Colômbia + + + + Comoros + Comores + + + + PeoplesRepublicOfCongo + República Popular do Congo + + + + CookIslands + Ilhas Cook + + + + CostaRica + Costa Rica + + + + IvoryCoast + Costa do Marfim + + + + Croatia + Croácia + + + + Cuba + Cuba + + + + Cyprus + Chipre + + + + CzechRepublic + República Tcheca + + + + Denmark + Dinamarca + + + + Djibouti + Djibuti + + + + Dominica + Dominica + + + + DominicanRepublic + República Dominicana + + + + Ecuador + Equador + + + + Egypt + Egito + + + + ElSalvador + El Salvador + + + + EquatorialGuinea + Guiné Equatorial + + + + Eritrea + Eritreia + + + + Estonia + Estônia + + + + Ethiopia + Etiópia + + + + FalklandIslands + Ilhas Malvinas + + + + FaroeIslands + Ilhas Feroe + + + + Fiji + Fiji + + + + Finland + Finlândia + + + + France + França + + + + FrenchGuiana + Guiana Francesa + + + + FrenchPolynesia + Polinésia Francesa + + + + Gabon + Gabão + + + + Gambia + Gâmbia + + + + Georgia + Geórgia + + + + Germany + Alemanha + + + + Ghana + Gana + + + + Gibraltar + Gibraltar + + + + Greece + Grécia + + + + Greenland + Groenlândia + + + + Grenada + Granada + + + + Guadeloupe + Guadalupe + + + + Guam + Guam + + + + Guatemala + Guatemala + + + + Guinea + Guiné + + + + GuineaBissau + Guiné-Bissau + + + + Guyana + Guiana + + + + Haiti + Haiti + + + + Honduras + Honduras + + + + DemocraticRepublicOfCongo + República Democrática do Congo + + + + HongKong + Hong Kong + + + + Hungary + Hungria + + + + Iceland + Islândia + + + + India + Índia + + + + Indonesia + Indonésia + + + + Iran + Irã + + + + Iraq + Iraque + + + + Ireland + Irlanda + + + + Israel + Israel + + + + Italy + Itália + + + + Jamaica + Jamaica + + + + Japan + Japão + + + + Jordan + Jordânia + + + + Kazakhstan + Cazaquistão + + + + Kenya + Quênia + + + + Kiribati + Kiribati + + + + DemocraticRepublicOfKorea + + + + + RepublicOfKorea + República da Coreia + + + + Kuwait + Kuwait + + + + Kyrgyzstan + Quirguistão + + + + Laos + Laos + + + + Latvia + Letônia + + + + Lebanon + Líbano + + + + Lesotho + Lesoto + + + + Liberia + Libéria + + + + Libya + Líbia + + + + Liechtenstein + Liechtenstein + + + + Lithuania + Lituânia + + + + Luxembourg + Luxemburgo + + + + Macau + Macau + + + + Macedonia + Macedônia + + + + Madagascar + Madagascar + + + + Malawi + Malawi + + + + Malaysia + Malásia + + + + Maldives + Maldivas + + + + Mali + Mali + + + + Malta + Malta + + + + MarshallIslands + Ilhas Marshall + + + + Martinique + Martinica + + + + Mauritania + Mauritânia + + + + Mauritius + Maurício + + + + Mayotte + Mayotte + + + + Mexico + México + + + + Micronesia + Micronésia + + + + Moldova + + + + + Monaco + Mônaco + + + + Mongolia + + + + + Montenegro + Montenegro + + + + Montserrat + + + + + Morocco + + + + + Mozambique + Moçambique + + + + Myanmar + + + + + Namibia + + + + + NauruCountry + + + + + Nepal + + + + + Netherlands + Países Baixos + + + + NewCaledonia + + + + + NewZealand + Nova Zelândia + + + + Nicaragua + Nicarágua + + + + Niger + Níger + + + + Nigeria + Nigéria + + + + Niue + + + + + NorfolkIsland + + + + + NorthernMarianaIslands + + + + + Norway + Noruega + + + + Oman + + + + + Pakistan + Paquistão + + + + Palau + + + + + PalestinianTerritories + + + + + Panama + Panamá + + + + PapuaNewGuinea + + + + + Paraguay + Paraguai + + + + Peru + Peru + + + + Philippines + Filipinas + + + + Poland + Polônia + + + + Portugal + Portugal + + + + PuertoRico + Porto Rico + + + + Qatar + Catar + + + + Reunion + Reunião + + + + Romania + Romênia + + + + RussianFederation + Federação da Rússia + + + + Rwanda + + + + + SaintHelena + + + + + SaintKittsAndNevis + + + + + SaintLucia + + + + + SaintPierreAndMiquelon + + + + + SaintVincentAndTheGrenadines + + + + + Samoa + + + + + SanMarino + + + + + SaoTomeAndPrincipe + + + + + SaudiArabia + Arábia Saudita + + + + Senegal + + + + + Serbia + Sérvia + + + + Seychelles + Seicheles + + + + SierraLeone + + + + + Singapore + Singapura + + + + Slovakia + Eslováquia + + + + Slovenia + Eslovênia + + + + SolomonIslands + + + + + Somalia + + + + + SouthAfrica + África do Sul + + + + Spain + Espanha + + + + SriLanka + + + + + Sudan + + + + + Suriname + Suriname + + + + Swaziland + + + + + Sweden + Suécia + + + + Switzerland + Suíça + + + + Syria + Síria + + + + Taiwan + Taiwan + + + + Tajikistan + + + + + Tanzania + + + + + Thailand + Tailândia + + + + Togo + + + + + Tokelau + + + + + Tonga + + + + + TrinidadAndTobago + + + + + Tunisia + + + + + Turkey + Turquia + + + + Turkmenistan + + + + + TurksAndCaicosIslands + + + + + Tuvalu + + + + + Uganda + Uganda + + + + Ukraine + Ucrânia + + + + UnitedArabEmirates + Emirados Árabes Unidos + + + + UnitedKingdom + Reino Unido + + + + UnitedStates + Estados Unidos + + + + Uruguay + Uruguai + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + Venezuela + + + + Vietnam + Vietnã + + + + WallisAndFutunaIslands + + + + + Yemen + Iêmen + + + + Zambia + + + + + Zimbabwe + + + + + utils + + + formatYears + '%1 year' + + um ano + %1 anos + + + + + formatMonths + '%1 month' + + + + + + + + formatWeeks + '%1 week' + + uma semana + %1 semanas + + + + + formatDays + '%1 day' + + um dia + %1 dias + + + + + formatHours + '%1 hour' + + uma hora + %1 horas + + + + + formatMinutes + '%1 minute' + + um minuto + %1 minutos + + + + + formatSeconds + '%1 second' + + um segundo + %1 segundos + + + + + codec_install + "Installation de codec" + Instalação do codec + + + + download_codec + "Télécharger le codec %1 (%2) ?" + Baixar o codec %1 (%2)? + + + + information_popup_success_title + "Succès" + Sucesso + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + O codec foi instalado com sucesso. + + + + + + information_popup_error_title + Erro + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + O codec não pôde ser instalado. + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + O codec não pôde ser salvo. + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + O codec não pôde ser baixado. + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + Baixando… + + + + okButton + Ok + + + diff --git a/Linphone/data/languages/ru.ts b/Linphone/data/languages/ru.ts new file mode 100644 index 000000000..d81e467b7 --- /dev/null +++ b/Linphone/data/languages/ru.ts @@ -0,0 +1,7458 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + Сохранить + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + Выберите SIP-номер или адрес + + + + fps_counter + %1 Кадров в секунду + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + Подключенный + + + + drawer_menu_account_connection_status_refreshing + Обновление… + + + + drawer_menu_account_connection_status_progress + Соединение… + + + + drawer_menu_account_connection_status_failed + Ошибка + + + + drawer_menu_account_connection_status_cleared + Отключенный + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + Вы в сети и доступны. + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + Ошибка подключения, проверьте настройки. + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + Учетная запись отключена, прием сообщений и звонков невозможен. + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + Ошибка опроса устройств + + + + AccountListView + + + add_an_account + Add an account + Добавить учетную запись + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + Учетная запись уже подключена + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + Создание прокси-адреса невозможно. Проверьте имя домена. + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + Невозможно настроить адрес: `%1`. + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + Невозможно настроить учетную запись. + + + + assistant_account_login_forbidden_error + "Username and password do not match" + Имя пользователя и пароль не соответствуют + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + Ошибка во время соединения + + + + assistant_account_add_error + "Unable to add account." + Не удалось добавить учетную запись. + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + Подробности + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + Изменить информацию учетной записи. + + + + manage_account_devices_title + "Vos appareils" + Ваши устройства + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + Список устройств, подключенных к вашей учетной записи. Вы можете удалить устройства, которые больше не используете. + + + + manage_account_add_picture + "Ajouter une image" + Добавить изображение + + + + manage_account_edit_picture + "Modifier l'image" + Изменить изображение + + + + manage_account_remove_picture + "Supprimer l'image" + Удалить изображение + + + + sip_address + SIP-адрес + + + + sip_address_display_name + "Nom d'affichage + Отображаемое имя + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + Отображаемое вашим контактам имя. + + + + manage_account_international_prefix + Indicatif international* + Международный код* + + + + manage_account_delete + "Déconnecter mon compte" + Отключить мою учётную запись + + + + manage_account_delete_message + Ваша учетная запись будет удалена из Linphone, но вы всё ещё будете подключены на других клиентах + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + Выйти из вашей учетной записи? + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + Для полного удаления учетной записи перейдите на https://sip.linphone.org + + + + error + Erreur + Ошибка + + + + manage_account_device_remove + "Supprimer" + Удалить + + + + manage_account_device_remove_confirm_dialog + Удалить %1? + + + + manage_account_device_last_connection + "Dernière connexion:" + Последний вход: + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + Моя учетная запись + + + + settings_general_title + "Général" + Основные + + + + settings_account_title + "Paramètres de compte" + Настройки учётной записи + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + Несохраненные изменения + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + У вас есть несохранённые изменения. Если вы покинете эту страницу, ваши изменения будут потеряны. Сохранить изменения перед продолжением? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + Не сохранено + + + + contact_editor_dialog_abort_confirmation_save + Сохранить + + + + AccountSettingsParametersLayout + + + settings_title + Настройки + + + + settings_account_title + Настройки учётной записи + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + Ошибка + + + + information_popup_success_title + Успешно + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + Изменения сохранены + + + + information_popup_error_title + Ошибка + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + URI сервера голосовой почты + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + URI голосовой почты + + + + account_settings_transport_title + "Transport" + Транспорт + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + Адрес сервера STUN + + + + account_settings_enable_ice_title + "Activer ICE" + Включить ICE + + + + account_settings_avpf_title + "AVPF" + AVPF + + + + account_settings_bundle_mode_title + "Mode bundle" + Режим объединения + + + + account_settings_expire_title + "Expiration (en seconde)" + Таймаут (сек) + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + URI фабрики конференции + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + URI фабрики видеоконференции + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + URL сервера Lime + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + Найти контакты + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + Результат не найден… + + + + contact_list_empty + Пока нет контактов + + + + AdvancedSettingsLayout + + + settings_system_title + System + Система + + + + settings_remote_provisioning_title + Remote provisioning + Удаленное конфигурирование + + + + settings_security_title + Security / Encryption + Безопасность / Шифрование + + + + settings_advanced_audio_codecs_title + Audio codecs + Аудио кодеки + + + + settings_advanced_video_codecs_title + Video codecs + Видео кодеки + + + + settings_advanced_auto_start_title + Auto start %1 + Автозапуск %1 + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + URL-адрес удалённого конфигурирования + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + Скачать и применить + + + + information_popup_error_title + Invalid URL format + Ошибка + + + + settings_advanced_invalid_url_message + Неверный формат URL + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + Шифрование медиа + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + Обязательное шифрование медиа + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + Создавать зашифрованные собрания и групповые звонки + + + + settings_advanced_hide_fps_title + Скрыть кадры/с + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + Избранное + + + + generic_address_picker_contacts_list_title + 'Contacts' + Контакты + + + + generic_address_picker_suggestions_list_title + "Suggestions" + Предложения + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + Хотите скачать и применить конфигурацию с этого адреса? + + + + + info_popup_error_title + Error + Ошибка + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + SIP-видеофон, бесплатный и с открытым исходным кодом. + + + + command_line_arg_order + "Send an order to the application towards a command line" + Отправить команду приложению через командную строку + + + + command_line_option_show_help + Отображать эту подсказку + + + + command_line_option_show_app_version + Показать версию приложения + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + Укажите файл конфигурации Linphone, который необходимо загрузить. Он будет объединён с текущей конфигурацией. + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + URL, путь или файл + + + + command_line_option_minimized + Свернуть + + + + command_line_option_log_to_stdout + Войдите в систему, чтобы получить информацию отладки во время работы + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + Печатайте только журналы приложения + + + + hide_action + "Cacher" "Afficher" + Скрыть + + + + show_action + Показать + + + + quit_action + "Quitter" + Выйти + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + Требуется аутентификация + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + Не удалось войти в учётную запись %1. Введите пароль ещё раз или проверьте настройки учётной записи. + + + + password + Пароль + + + + cancel + "Annuler + Отмена + + + + assistant_account_login + Connexion + Подключение + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + Пожалуйста, введите пароль + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + Запись завершена + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + Запись сохранена в файл: %1 + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + Кодек: %1 / %2 kHz + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + Пропускная способность: %1 %2 кбит/с %3 %4 кбит/с + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + Коэффициент потерь: %1% %2% + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + Задержка буфера : 1 мс + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + Разрешение видео: %1 %2 %3 %4 + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + Количество кадров: 1 2 3 4 + + + + media_encryption_dtls + DTLS + DTLS + + + + media_encryption_none + None + None + + + + media_encryption_srtp + SRTP + Безопасный протокол транспорта в реальном времени (SRTP) + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + ZRTP с постквантовой криптографией + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + Присоединиться к собранию + + + + contact_call_action + "Appel" + Звонок + + + + contact_message_action + "Message" + Сообщение + + + + contact_video_call_action + "Appel Video" + Видеозвонок + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + Вы покинули встречу + + + + call_ended_by_user + "Vous avez terminé l'appel" + Вы завершили звонок + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + Ваш собеседник завершил вызов + + + + conference_call_empty + "En attente d'autres participants…" + Ожидание остальных участников… + + + + conference_share_link_title + "Partager le lien" + Поделиться ссылкой + + + + copied + Скопированный + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + Ссылка на встречу скопирована в буфер обмена + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + Ошибка + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + Встреча + + + + call + "Appel" + Звонок + + + + paused_call_or_meeting + "%1 en pause" + приостановлен + + + + ongoing_call_or_meeting + "%1 en cours" + Непрерывный + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + Пользователь отклонил вызов + + + + call_error_user_not_found_toast + "User was not found" + Пользователь не найден + + + + call_error_user_busy_toast + "User is busy" + Пользователь занят + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + Пользователь не может принять ваш звонок + + + + call_error_io_error_toast + "Unavailable service or network error" + Недоступная служба или ошибка сети + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + Тайм-аут сервера + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + Новый звонок + + + + call_history_empty_title + "Historique d'appel vide" + Пустая история звонков + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + Удалить историю звонков? + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + История звонков будет удалена без возможности восстановления. + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + Удалить историю звонков? + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + История звонков с этим пользователем будет удалена навсегда. + + + + call_history_call_list_title + "Appels" + Звонки + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + Удалить историю + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + Найти звонок + + + + list_filter_no_result_found + "Aucun résultat…" + Результат не найден… + + + + history_list_empty_history + "Aucun appel dans votre historique" + Нет звонка в истории + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + Новый звонок + + + + call_start_group_call_title + "Appel de groupe" + Групповой вызов + + + + call_action_start_group_call + "Lancer" + Старт + + + + + + information_popup_error_title + Ошибка + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + Для звонка необходимо указать имя + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Вы не подключены + + + + menu_see_existing_contact + "Show contact" + Показать контакт + + + + menu_add_address_to_contacts + "Add to contacts" + Добавить в контакты + + + + menu_copy_sip_address + "Copier l'adresse SIP" + Копировать SIP-адрес + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + SIP-адрес скопирован + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + Адрес скопирован в буфер обмена + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + Ошибка копирования адреса + + + + notification_missed_call_title + "Appel manqué" + Пропущенный звонок + + + + call_outgoing + "Appel sortant" + Исходящий звонок + + + + call_audio_incoming + "Appel entrant" + Входящий звонок + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + Устройства + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + Вы можете изменить устройства вывода звука, микрофон и камеру. + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + Эхоподавитель + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + Предотвращает появление эха у вашего собеседника + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + Включить автоматическую запись звонков + + + + settings_call_enable_tones_title + Tonalités + Тон + + + + settings_call_enable_tones_subtitle + Activer les tonalités + Включить звук + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + Включить видео + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + Аудио + + + + call_stats_video_title + "Vidéo" + Видео + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + Отправка, пожалуйста, подождите + + + + + information_popup_error_title + Ошибка + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + Не удалась отправить + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + Встреча не может начаться из -за ошибки URI адреса. + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + Закончить все текущие вызовы? + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + Окно будет закрыто. Это завершит все текущие вызовы. + + + + call_can_be_trusted_toast + "Appareil authentifié" + Доверенное устройство + + + + call_dir + %1 вызов + + + + call_ended + Appel terminé + Звонок закончился + + + + conference_paused + Meeting paused + Встреча приостановлена + + + + call_paused + Call paused + Звонок приостановлен + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + Шифрованный вызов + + + + call_zrtp_sas_validation_required + Vérification nécessaire + Требуется проверка + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + Сквозной зашифрованный вызов + + + + call_not_encrypted + "Appel non chiffré" + Незашифрованный звонок + + + + + call_waiting_for_encryption_info + Waiting for encryption + В ожидании шифрования + + + + call_paused_by_remote + Call paused by remote + Звонок приостановлен удаленно + + + + conference_user_is_recording + "You are recording the meeting" + Вы записываете встречу + + + + call_user_is_recording + "You are recording the call" + Вы записываете звонок + + + + conference_remote_is_recording + "Someone is recording the meeting" + Идет запись встречи + + + + call_remote_recording + "%1 is recording the call" + %1 записывает звонок + + + + call_stop_recording + "Stop recording" + Прекратить запись + + + + add + Добавить + + + + call_transfer_current_call_title + "Transférer %1 à…" + Передача %1 на… + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + Подтвердите передачу + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + Вы собираетесь перенести %1 на %2. + + + + call_action_start_new_call + "Nouvel appel" + Новый звонок + + + + + call_action_show_dialer + "Pavé numérique" + Номеронабиратель + + + + call_action_change_layout + "Modifier la disposition" + Изменить макет + + + + call_action_go_to_calls_list + "Liste d'appel" + Список звонков + + + + Merger tous les appels + call_action_merge_calls + Объединить все звонки + + + + + call_action_go_to_settings + "Paramètres" + Настройки + + + + conference_action_screen_sharing + "Partage de votre écran" + Поделитесь своим экраном + + + + conference_share_link_title + Partager le lien de la réunion + Поделиться ссылкой на встречу + + + + copied + Copié + Скопированный + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + Ссылка на встречу была скопирована в буфер обмена + + + + + + conference_participants_list_title + "Participants (%1)" + Участники (%1) + + + + + group_call_participant_selected + + + + + + + + + meeting_schedule_add_participants_title + Добавить участников + + + + call_encryption_title + Chiffrement + Шифрование + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + Остановить + + + + stop_recording_accessible_name + Stop recording + Прекратить запись + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + Статистика + + + + + call_action_end_call + "Terminer l'appel" + Конечный звонок + + + + + call_action_resume_call + "Reprendre l'appel" + Возобновить вызов + + + + + call_action_pause_call + "Mettre l'appel en pause" + Приостановить вызов + + + + + call_action_transfer_call + "Transférer l'appel" + Перевести звонок + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + Начать новый вызов + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + Просмотреть список вызовов + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + Выключить видео + + + + + call_activate_video_hint + Включить видео + + + + + call_activate_microphone + "Activer le micro" + Включить микрофон + + + + + call_deactivate_microphone + "Désactiver le micro" + Выключить микрофон + + + + + call_share_screen_hint + Partager l'écran… + Поделиться экраном… + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + Поднять руку + + + + + call_send_reaction_hint + "Envoyer une réaction" + Отправить реакцию + + + + + call_manage_participants_hint + "Gérer les participants" + Управление участниками + + + + + call_more_options_hint + "Plus d'options…" + Дополнительные параметры… + + + + call_action_change_conference_layout + "Modifier la disposition" + Изменить макет + + + + call_action_full_screen + "Mode Plein écran" + Полноэкранный режим + + + + call_action_stop_recording + "Terminer l'enregistrement" + Завершить запись + + + + call_action_record + "Enregistrer l'appel" + Запись звонка + + + + call_activate_speaker_hint + "Activer le son" + Активировать динамик + + + + call_deactivate_speaker_hint + "Désactiver le son" + Отключить динамик + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + Адресная книга + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + Добавьте адресную книгу для синхронизации контактов Linphone с сторонней адресной книгой. + + + + information_popup_error_title + Ошибка + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + Проверьте, что вся информация введена. + + + + information_popup_synchronization_success_title + Успешно + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + Адресная книга синхронизирована. + + + + settings_contacts_carddav_popup_synchronization_error_title + Ошибка + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + Ошибка синхронизации! + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + Удалить адресную книгу? + + + + sip_address_display_name + Nom d'affichage + Отображаемое имя + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + URL-адрес сервера + + + + username + Имя пользователя + + + + password + Пароль + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + Область аутентификации + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + Сохраняйте вновь созданные контакты здесь + + + + ChangeLayoutForm + + + conference_layout_grid + Сетка + + + + conference_layout_active_speaker + Говорящий + + + + conference_layout_audio_only + Только аудио + + + + ChatAudioContent + + + + information_popup_error_title + Error + Ошибка + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + Удалить + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + Скопированный + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + Удалить + + + + ChatMessageContentCore + + + popup_error_title + Error + Ошибка + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + Ошибка + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + Присоединиться + + + + ics_bubble_participants + %n participant(s) + + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + Разговоры + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + Нет результата … + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + Создать + + + + + + information_popup_error_title + Ошибка + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Вы не подключены + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + Показать + + + + fetch_config_function_description + Получить конфигурацию + + + + call_function_description + Звонок + + + + bye_function_description + Завершить вызов + + + + accept_function_description + Принять + + + + decline_function_description + Отклонить + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + Ошибка + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + Ваша учетная запись отключена + + + + Contact + + + information_popup_error_title + Erreur + Ошибка + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + URI -адрес голосовой почты не определен. + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + Редактировать контакт + + + + save + "Enregistrer + Сохранить + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + Изменения будут отменены. Хотите продолжить? + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + Пожалуйста, введите SIP-адрес или номер телефона + + + + contact_editor_add_image_label + "Ajouter une image" + Добавить изображение + + + + contact_details_edit + "Modifier" + Редактировать + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + Удалить + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + Имя + + + + + contact_editor_last_name + "Nom" + Фамилия + + + + + contact_editor_company + "Entreprise" + Компания + + + + + contact_editor_job_title + "Fonction" + Работа + + + + + sip_address + SIP-адрес + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + Телефон + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + Удалить из избраанного + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Добавить в избранное + + + + Partager + Поделиться + + + + information_popup_error_title + Ошибка + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + Не удалось создать визитную карточку + + + + information_popup_vcard_creation_title + VCard créée + Создать визитную карточку + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + Визитная карточка была сохранена в %1 + + + + contact_sharing_email_title + Partage de contact + Поделиться контактом + + + + contact_details_delete + "Supprimer" + Удалить + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + Добавить контакт + + + + contacts_list_empty + "Aucun contact pour le moment" + Нет контактов в текущий момент + + + + contact_new_title + "Nouveau contact" + Новый контакт + + + + create + Создать + + + + contact_edit_title + "Modifier contact" + Редактировать контакт + + + + save + Сохранить + + + + contact_dialog_delete_title + Supprimer %1 ?" + Удалить %1? + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + Этот контакт будет удален безвозвратно. + + + + contact_deleted_toast + "Contact supprimé" + Контакт удалён + + + + contact_deleted_message + "%1 a été supprimé" + %1 был удален + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + Повысить уровень доверия + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + Чтобы повысить уровень доверия, вы должны позвонить на устройства вашего контакта и подтвердить код.<br><br>Вы собираетесь набрать "% 1", хотите продолжить? + + + + popup_do_not_show_again + Ne plus afficher + Больше не показывать + + + + cancel + Отмена + + + + dialog_call + "Appeler" + Звонок + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + Уровень доверия + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + Проверьте устройства вашего контакта, чтобы подтвердить, что ваши сообщения будут безопасными и бескомпромиссными. Когда все будут проверены, вы достигнете максимального уровня доверия. + + + + dialog_ok + "Ok" + Ок + + + + bottom_navigation_contacts_label + "Contacts" + Контакты + + + + search_bar_look_for_contact_text + Rechercher un contact + Найти контакт + + + + list_filter_no_result_found + Aucun résultat… + Нет результата … + + + + contact_list_empty + Aucun contact pour le moment + Нет контактов в текущий момент + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + Редактировать + + + + contact_call_action + "Appel" + Звонок + + + + contact_message_action + "Message" + Сообщение + + + + contact_video_call_action + "Appel vidéo" + Видеозвонок + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + Контактная информация + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + Компания: + + + + contact_details_job_title + "Poste :" + Работа: + + + + contact_details_medias_title + "Medias" + Файлы + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + Показать общие файлы + + + + contact_details_trust_title + "Confiance" + Доверять + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + Уровень доверия - проверенные устройства + + + + contact_details_no_device_found + "Aucun appareil" + Нет устройства + + + + contact_device_without_name + "Appareil inconnu" + Неизвестное устройство + + + + contact_make_call_check_device_trust + "Vérifier" + Проверять + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + Другие действия + + + + contact_details_remove_from_favourites + "Retirer des favoris" + Удалить из избраанного + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Добавить в избранное + + + + contact_details_share + "Partager" + Поделиться + + + + information_popup_error_title + Ошибка + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + Не удалось создать визитную карточку + + + + contact_details_share_success_title + "VCard créée" + Создать визитную карточку + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + Визитная карточка была сохранена в %1 + + + + contact_details_share_email_title + "Partage de contact" + Поделиться контактом + + + + contact_details_delete + "Supprimer ce contact" + Удалить контакт + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + LDAP-серверы + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + Добавьте свои LDAP-серверы, чтобы иметь возможность выполнять поиск в волшебной строке поиска. + + + + settings_contacts_carddav_title + Адресная книга + + + + settings_contacts_carddav_subtitle + Добавьте адресную книгу для синхронизации контактов Linphone с сторонней адресной книгой. + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + Добавить сервер LDAP + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + Изменить сервер LDAP + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + Добавить адресную книгу + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + Редактировать адресную книгу + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + Успешно + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + Изменения были сохранены + + + + add + "Ajouter" + Добавить + + + + ConversationInfos + + + one_one_infos_call + "Appel" + Звонок + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + Участники (%1) + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + Другие действия + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + Удалить историю + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + Показать контакт + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + Удалить историю + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + Найти контакт + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + Трассировки отладки будут удалены. Вы хотите продолжить? + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + Были загружены трассировки отладки. Не хотели бы вы поделиться ссылкой? + + + + settings_debug_clipboard + "Presse-papier" + Буфер обмена + + + + settings_debug_email + "E-Mail" + Электронная почта + + + + debug_settings_trace + "Traces %1" + % 1 отслежено + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + Не удалось отправить сообщение по электронной почте. Пожалуйста, отправьте ссылку % 1 непосредственно на адрес % 2. + + + + + information_popup_error_title + Une erreur est survenue. + Произошла ошибка. + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + Включить отслеживание отладки + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + Включить полное логирование + + + + settings_debug_delete_logs_title + "Supprimer les traces" + Удалить журнал отладки + + + + settings_debug_share_logs_title + "Partager les traces" + Поделиться журналом отладки + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + Загрузка трассировок… + + + + settings_debug_app_version_title + "Version de l'application" + Версия приложения + + + + settings_debug_sdk_version_title + "Version du SDK" + Версия SDK + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + Не удалось загрузить трассировки. Вы можете предоставить общий доступ к файлам трассировки непосредственно из следующего каталога: % 1 + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + не может быть пустым + + + + textfield_error_message_unknown_format + "Format non reconnu" + Неизвестный формат + + + + Dialog + + + + dialog_confirm + "Confirmer" + Подтвердить + + + + + dialog_cancel + "Annuler" + Отмена + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + Шифрование: + + + + call_stats_media_encryption + Media encryption : %1 + Шифрование файлов: %1%2 + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + Алгоритм шифрования: %1 + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + Алгоритм ключевого соглашения: %1 + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + Хэш-алгоритм: %1 + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + Алгоритм аутентификации: %1 + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + Алгоритм SAS: %1 + + + + call_zrtp_validation_button_label + "Validation chiffrement" + Проверка шифрования + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + Отключенный + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + SIP-адрес + + + + + + device_id + "Téléphone" + Телефон + + + + information_popup_error_title + Ошибка + + + + information_popup_invalid_address_message + "Adresse invalide" + Неверный адрес + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + Управление участниками + + + + group_infos_participant_is_admin + Администратор + + + + menu_see_existing_contact + "Show contact" + Показать контакт + + + + menu_add_address_to_contacts + "Add to contacts" + Добавить в контакты + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + Название группы + + + + required + "Requis" + Обязательное поле + + + + HelpPage + + + help_title + "Aide" + Помощь + + + + + help_about_title + "À propos de %1" + О продукте %1 + + + + help_about_privacy_policy_title + "Règles de confidentialité" + Политика конфиденциальности + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + Какую информацию % 1 собирает и использует + + + + help_about_version_title + "Version" + Версия + + + + help_about_gpl_licence_title + "Licences GPLv3" + Лицензии GPLv3 + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + Внести свой вклад в перевод %1 + + + + help_troubleshooting_title + "Dépannage" + Поиск неисправностей + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + LDAP-серверы + + + + settings_contacts_ldap_subtitle + Добавьте свои LDAP-серверы, чтобы иметь возможность выполнять поиск в волшебной строке поиска. + + + + information_popup_success_title + Успешно + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + Сервер LDAP был сохранен + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + Произошла ошибка, конфигурация LDAP не была сохранена! + + + + information_popup_error_title + Ошибка + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + Удалить сервер LDAP? + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + URL-адрес сервера (не может быть пустым) + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + Привязать DN + + + + settings_contacts_ldap_password_title + "Mot de passe" + Пароль + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + Используйте TLS + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + Исследовательская база (не может быть пустой) + + + + settings_contacts_ldap_search_filter_title + "Filtre" + Фильтр + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + Максимальные результаты + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + Задержка между двумя запросами (в миллисекундах) + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + Тайм-аут (в секундах) + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + Минимальное количество символов для запроса + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + Атрибуты имени + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + Атрибуты SIP + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + SIP-домен + + + + settings_contacts_ldap_debug_title + "Débogage" + Отладка + + + + LoadingPopup + + + cancel + Отмена + + + + LoginForm + + + + username + Nom d'utilisateur : username + Имя пользователя + + + + + password + Mot de passe + Пароль + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + Подключение + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + Пожалуйста, введите имя пользователя + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + Пожалуйста, введите пароль + + + + assistant_forgotten_password + "Mot de passe oublié ?" + Забыли пароль? + + + + LoginLayout + + + + help_about_title + À propos de %1 + О продукте %1 + + + + help_about_privacy_policy_title + "Politique de confidentialité" + Политика конфиденциальности + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + Ознакомьтесь с нашей политикой конфиденциальности + + + + help_about_version_title + "Version" + Версия + + + + help_about_licence_title + "Licence" + Лицензия + + + + help_about_copyright_title + "Copyright + Авторское право + + + + close + "Fermer" + Закрыть + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + Подключение + + + + assistant_no_account_yet + "Pas encore de compte ?" + Еще нет аккаунта? + + + + assistant_account_register + "S'inscrire" + Зарегистрировать + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + Сторонняя учетная запись SIP + + + + assistant_login_remote_provisioning + "Configuration distante" + Удаленное конфигурирование + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + Загрузите удаленную конфигурацию + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + Пожалуйста, введите ссылку на установку, предоставленную вам: + + + + cancel + Отмена + + + + validate + "Valider" + Подтвердить + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + Удаленная ссылка на подготовку + + + + default_account_connection_state_error_toast + Ошибка во время соединения + + + + MagicSearchList + + + device_id + Телефон + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + Звонки + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + Контакты + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + Разговоры + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + Встречи + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + Найдите контакт, звонок %1 + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + или отправить сообщение… + + + + do_not_disturb_accessible_name + "Do not disturb" + Не беспокоить + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + Отключить, чтобы не беспокоить + + + + information_popup_error_title + Ошибка + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + URI -адрес голосовой почты не определен. + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + Моя учетная запись + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + Включить режим "не беспокоить" + + + + settings_title + Настройки + + + + recordings_title + "Enregistrements" + Записи + + + + help_title + "Aide" + Помощь + + + + help_quit_title + "Quitter l'application" + Выйти из приложения + + + + quit_app_question + "Quitter %1 ?" + Выйти %1 ? + + + + drawer_menu_add_account + "Ajouter un compte" + Добавить учетную запись + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + Соединение успешно + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + Вы вошли в систему в режиме %1 + + + + interoperable + interopérable + совместимый + + + + call_transfer_successful_toast_title + "Appel transféré" + Вызов переадресован + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + Ваш корреспондент был переведен к выбранному контактному лицу + + + + information_popup_success_title + Сохранено + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + Изменения были сохранены + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + Пожалуйста, подтвердите ввод капчи на веб-странице + + + + assistant_register_error_title + "Erreur lors de la création" + Ошибка при создании + + + + assistant_register_success_title + "Compte créé" + Созданная учетная запись + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + Учетная запись создана. Теперь вы можете войти в систему. + + + + assistant_register_error_code + "Erreur dans le code de validation" + Ошибка в коде проверки + + + + information_popup_error_title + Ошибка + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + Встреча + + + + meeting_schedule_broadcast_label + "Webinar" + Вебинар + + + + meeting_schedule_subject_hint + "Ajouter un titre" + Добавить заголовок + + + + meeting_schedule_description_hint + "Ajouter une description" + Добавьте описание + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Добавить участников + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + Отправить приглашение участникам + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + Встреча отменена + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + Сегодня нет встречи + + + + meeting_info_delete + "Supprimer la réunion" + Удалить собрание + + + + MeetingPage + + + meetings_add + "Créer une réunion" + Создать собрание + + + + meetings_list_empty + "Aucune réunion" + Нет встречи + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + Хотели бы вы отменить и удалить эту встречу? + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + Хотели бы вы удалить эту встречу? + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + Отменить и удалить + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + Удалить только + + + + meeting_schedule_delete_action + "Supprimer" + Удалить + + + + back_action + Retour + Назад + + + + meetings_list_title + Réunions + Встречи + + + + meetings_search_hint + "Rechercher une réunion" + Найти встречу + + + + list_filter_no_result_found + "Aucun résultat…" + Нет результата … + + + + meetings_empty_list + "Aucune réunion" + Нет встречи + + + + + meeting_schedule_title + "Nouvelle réunion" + Новая встреча + + + + create + Создать + + + + + + + + + information_popup_error_title + Ошибка + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + Пожалуйста, заполните название и выберите хотя бы одного участника + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + Окончание конференции должно быть позднее, чем ее начало + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + Создание в процессе… + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + Встреча успешно создана + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + Не удалось создать встречу! + + + + save + Сохранить + + + + + saved + "Enregistré" + Сохранено + + + + meeting_info_updated_toast + "Réunion mise à jour" + Встреча обновлена + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + Обновление встречи в процессе… + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + Не удалось обновить встречу! + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Добавить участников + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + + meeting_info_delete + "Supprimer la réunion" + Удалить собрание + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + URI собрания скопирован + + + + meeting_schedule_timezone_title + "Fuseau horaire" + Часовой пояс + + + + meeting_info_organizer_label + "Organisateur" + Организатор + + + + meeting_info_join_title + "Rejoindre la réunion" + Присоединиться к собранию + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + Дисплей + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + Режим отображения по умолчанию + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + Как отображаются участники на собраниях + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + Мелодия звонка - Входящие звонки + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + Динамики + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + Микрофон + + + + + multimedia_settings_camera_title + "Caméra" + Камера + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + Сеть + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + Продолжающийся вызов + + + + call_start_group_call_title + Appel de groupe + Групповой вызов + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + Входящий звонок + + + + dialog_accept + "Accepter" + Принять + + + + dialog_deny + "Refuser + Отклонить + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + Некорректный запрос авторизации + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + Тайм-аут: Проверка подлинности не проведена + + + + oidc_authentication_granted_message + Authentication granted + Подтвержденная аутентификация + + + + oidc_authentication_not_authenticated_message + Not authenticated + Не прошел проверку подлинности + + + + oidc_authentication_refresh_message + Refreshing token + Обновляющий токен + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + Получены временные полномочия + + + + oidc_authentication_network_error + Network error + Сетевая ошибка + + + + oidc_authentication_server_error + Server error + Ошибка сервера + + + + oidc_authentication_token_not_found_error + OAuth token not found + Токен авторизации не найден + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + Секретный токен авторизации не найден + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + Некорректная проверка подлинности данных обратного вызова + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + Запрос авторизации у браузера + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + Запрос токена доступа + + + + oidc_authentication_refresh_token_message + Refreshing access token + Обновление токена доступа + + + + oidc_authentication_request_authorization_message + Requesting authorization + Запрашиваю авторизацию + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + Запрос временных учетных данных + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + В конфигурации OpenID не найдена конечная точка авторизации + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + Конечная точка токена не найдена в конфигурации OpenID + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + Администратор + + + + meeting_add_participants_title + "Ajouter des participants" + Добавить участников + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + Редактировать + + + + contact_presence_button_delete_custom_status + Удалить + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + Сохранить + + + + QObject + + + media_encryption_dtls + DTLS + + + + media_encryption_none + None + + + + media_encryption_srtp + Безопасный протокол транспорта в реальном времени (SRTP) + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + ZRTP с постквантовой криптографией + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + Входящий + + + + outgoing + "Sortant" + Исходящий + + + + conference_layout_active_speaker + "Participant actif" + Говорящий + + + + conference_layout_grid + "Mosaïque" + Сетка + + + + conference_layout_audio_only + "Audio uniquement" + Только аудио + + + + RegisterCheckingPage + + + email + "email" + электронная почта + + + + phone_number + "numéro de téléphone" + номер телефона + + + + confirm_register_title + "Inscription | Confirmer votre %1" + Зарегистрируйте | подтвердите свой %1 + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + Мы отправили вам проверочный код на ваш адрес %1 %2<br> Пожалуйста, введите его ниже + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + Не получили код? + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + Повторная отправка кода + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + Зарегистрировать + + + + assistant_already_have_an_account + Уже есть аккаунт? + + + + assistant_account_login + Подключение + + + + assistant_account_register_with_phone_number + Зарегистрируйтесь, указав номер телефона + + + + assistant_account_register_with_email + Зарегистрируйтесь по электронной почте + + + + + username + Имя пользователя + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + Домен + + + + + + phone_number + "Numéro de téléphone" + Номер телефона + + + + + email + Адрес электронной почты + + + + + password + Пароль + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + Подтверждение пароля + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + Я принимаю %1 и %2 + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + условия использования + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + политика конфиденциальности + + + + assistant_account_create + "Créer" + Создать + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + Пожалуйста, введите имя пользователя + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + Пожалуйста, введите пароль + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + Пароли не совпадают + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + Пожалуйста, введите номер телефона + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + Пожалуйста, введите адрес электронной почты + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + Сторонняя учетная запись SIP + + + + assistant_no_account_yet + Pas encore de compte ? + Еще нет аккаунта? + + + + assistant_account_register + S'inscrire + Зарегистрировать + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + Для некоторых функций, таких как групповые чаты, видеоконференции и т.д., требуется %1 учетная запись. + +Эти функции будут скрыты, если вы используете стороннюю учетную запись SIP. + +Чтобы включить их в коммерческий проект, пожалуйста, свяжитесь с нами. + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + Создайте учетную запись linphone + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + Я понимаю + + + + + username + "Nom d'utilisateur" + Имя пользователя + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + Пароль + + + + + sip_address_domain + "Domaine" + Домен + + + + + sip_address_display_name + Nom d'affichage + Отображаемое имя + + + + + transport + "Transport" + Транспорт + + + + + assistant_account_login + Подключение + + + + assistant_account_login_missing_username + Пожалуйста, введите имя пользователя + + + + assistant_account_login_missing_password + Пожалуйста, введите пароль + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + Пожалуйста, введите домен + + + + login_advanced_parameters_label + Advanced parameters + Расширенные параметры + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + Пожалуйста, выберите экран или окно, которым вы хотели бы поделиться с другими участниками. + + + + screencast_settings_all_screen_label + "Ecran entier" + Полноэкранный + + + + screencast_settings_one_window_label + "Fenêtre" + Окно + + + + screencast_settings_screen + "Ecran %1" + Экран %1 + + + + stop + "Stop + Остановить + + + + share + "Partager" + Поделиться + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + Выберите свой режим + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + Вы можете изменить режим позже. + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + Конечное шифрование + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + Этот режим гарантирует конфиденциальность всех ваших сообщений. Наша технология сквозного шифрования обеспечивает максимальную безопасность всех ваших сообщений. + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + Совместимый + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + Этот режим позволяет вам пользоваться всеми функциями Linphone, сохраняя при этом совместимость с любым другим SIP-сервисом. + + + + dialog_continue + "Continuer" + Продолжить + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + Зашифровать все файлы + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + Внимание: после включения он не может быть отключен! + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + Разговоры + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + Настройки + + + + settings_calls_title + "Appels" + Звонки + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + Разговоры + + + + settings_contacts_title + "Contacts" + Контакты + + + + settings_meetings_title + "Réunions" + Встречи + + + + settings_network_title + "Affichage" "Security" "Réseau" + Сеть + + + + settings_advanced_title + "Paramètres avancés" + Расширенные параметры + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + Несохраненные изменения + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + У вас есть несохранённые изменения. Если вы покинете эту страницу, ваши изменения будут потеряны. Сохранить изменения перед продолжением? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + Не сохранено + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + Сохранить + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + соединение… + + + + conference_participant_paused_text + "En pause" + Приостановлено + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + Вызывающий адрес не является интерпретируемым SIP-адресом : %1 + + + + group_call_error_no_account + Учетная запись по умолчанию не найдена, не удается создать групповой вызов + + + + group_call_error_participants_invite + Не удалось пригласить участников на групповой звонок + + + + group_call_error_creation + Не удалось создать групповой вызов + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + Неизвестное имя устройства + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + + nMinute + + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + + nDay + + + + + + + + + nWeek + + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + Занят + + + + contact_presence_status_do_not_disturb + Не беспокоить + + + + contact_presence_status_offline + Не в сети + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + Вызов не может быть создан + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + Ошибка + + + + information_popup_group_call_not_created_message + Не удалось создать групповой вызов + + + + number_of_years + %n an(s) + + один год + года + %1 лет + + + + + number_of_month + "%n mois" + + один месяц + месяцы + %1 месяцев + + + + + number_of_weeks + %n semaine(s) + + Одна неделя + недели + %1 недели + + + + + number_of_days + %n jour(s) + + один день + дней + %1 дней + + + + + today + "Aujourd'hui" + Сегодня + + + + yesterday + "Hier + Вчера + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + Ошибка + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + Присоединиться : + + + + meeting_waiting_room_join + "Rejoindre" + Присоединиться + + + + + cancel + Cancel + Отмена + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + Подключение к собранию + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + Вы присоединитесь к собранию через несколько минут... + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + Добро пожаловать + + + + welcome_page_subtitle + "sur %1" + на %1 + + + + welcome_carousel_skip + "Passer" + Пропустить + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + <b>Защищенное<b>коммуникационное приложение с<br> </b> открытым исходным кодом</b> на </b> французском</b> языке. + + + + welcome_page_2_title + "Sécurisé" + Обезопасить + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + Ваши сообщения защищены благодаря <br><b>сквозному шифрованию</b>. + + + + welcome_page_3_title + "Open Source" + С открытым исходным кодом + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + Приложение с открытым исходным кодом и <b>бесплатный сервис <b> <br> с <b>2001 года</b> + + + + next + "Suivant" + Следующий + + + + start + "Commencer" + Старт + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + Проверка безопасности + + + + call_zrtp_sas_validation_skip + "Passer" + Пропустить + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + Чтобы обеспечить шифрование, нам необходимо повторно аутентифицировать устройство вашего контакта. Обменяйте свои коды: + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + Чтобы обеспечить шифрование, нам необходимо аутентифицировать устройство вашего контакта. Пожалуйста, обменяйте свои коды: + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + Ваш код : + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + Соответствующий код : + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + Указанный код не соответствует действительности. + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + Конфиденциальность вашего звонка может быть нарушена! + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + Совпадений нет + + + + call_action_hang_up + "Raccrocher" + Завершить вызов + + + + country + + + Afghanistan + Афганистан + + + + Albania + Албания + + + + Algeria + Алжир + + + + AmericanSamoa + Американский Самоа + + + + Andorra + Андорра + + + + Angola + Ангола + + + + Anguilla + Ангилья + + + + AntiguaAndBarbuda + Антигуа и Барбулька + + + + Argentina + Аргентина + + + + Armenia + Армения + + + + Aruba + Аруба + + + + Australia + Австралия + + + + Austria + Австрия + + + + Azerbaijan + Азербайджан + + + + Bahamas + Багамские острова + + + + Bahrain + Бахрейн + + + + Bangladesh + Бангладеш + + + + Barbados + Барбадос + + + + Belarus + Беларусь + + + + Belgium + Бельгия + + + + Belize + Белиз + + + + Benin + Бенин + + + + Bermuda + Бермудские острова + + + + Bhutan + Бутан + + + + Bolivia + Боливия + + + + BosniaAndHerzegowina + Босния и Герцеговина + + + + Botswana + Ботсвана + + + + Brazil + Бразилия + + + + Brunei + Бруней + + + + Bulgaria + Болгария + + + + BurkinaFaso + Буркина-Фасо + + + + Burundi + Бурунди + + + + Cambodia + Камбоджа + + + + Cameroon + Камерун + + + + Canada + Канада + + + + CapeVerde + Кабо-Верде + + + + CaymanIslands + Каймановы острова + + + + CentralAfricanRepublic + Центральная Африканская Республика + + + + Chad + Чад + + + + Chile + Чили + + + + China + Китай + + + + Colombia + Колумбия + + + + Comoros + Коморские острова + + + + PeoplesRepublicOfCongo + Народная Республика Конго + + + + CookIslands + Острова Кука + + + + CostaRica + Коста-Рика + + + + IvoryCoast + Берег Слоновой Кости + + + + Croatia + Хорватия + + + + Cuba + Куба + + + + Cyprus + Кипр + + + + CzechRepublic + Чешская Республика + + + + Denmark + Дания + + + + Djibouti + Джибути + + + + Dominica + Доминикана + + + + DominicanRepublic + Доминиканская Республика + + + + Ecuador + Эквадор + + + + Egypt + Египт + + + + ElSalvador + Сальвадор + + + + EquatorialGuinea + Экваториальная Гвинея + + + + Eritrea + Эритрея + + + + Estonia + Эстония + + + + Ethiopia + Эфиопия + + + + FalklandIslands + Фолклендские острова + + + + FaroeIslands + Фарерские острова + + + + Fiji + Фиджи + + + + Finland + Финляндия + + + + France + Франция + + + + FrenchGuiana + Французская Гвиана + + + + FrenchPolynesia + Французская Полинезия + + + + Gabon + Габон + + + + Gambia + Гамбия + + + + Georgia + Грузия + + + + Germany + Германия + + + + Ghana + Гана + + + + Gibraltar + Гибралтар + + + + Greece + Греция + + + + Greenland + Гренландия + + + + Grenada + Гренада + + + + Guadeloupe + Гваделупа + + + + Guam + Гуам + + + + Guatemala + Гватемала + + + + Guinea + Гвинея + + + + GuineaBissau + Гвинея-Бисау + + + + Guyana + Гайана + + + + Haiti + Гаити + + + + Honduras + Гондурас + + + + DemocraticRepublicOfCongo + Демократическая Республика Конго + + + + HongKong + Гонконг + + + + Hungary + Венгрия + + + + Iceland + Исландия + + + + India + Индия + + + + Indonesia + Индонезия + + + + Iran + Иран + + + + Iraq + Ирак + + + + Ireland + Ирландия + + + + Israel + Израиль + + + + Italy + Италия + + + + Jamaica + Ямайка + + + + Japan + Япония + + + + Jordan + Иордания + + + + Kazakhstan + Казахстан + + + + Kenya + Кения + + + + Kiribati + Кирибати + + + + DemocraticRepublicOfKorea + Демократическая Республика Корея + + + + RepublicOfKorea + Республика Корея + + + + Kuwait + Кувейт + + + + Kyrgyzstan + Кыргизстан + + + + Laos + Лаос + + + + Latvia + Латвия + + + + Lebanon + Ливан + + + + Lesotho + Лесото + + + + Liberia + Либерия + + + + Libya + Ливия + + + + Liechtenstein + Лихтенштейн + + + + Lithuania + Литва + + + + Luxembourg + Люксембург + + + + Macau + Макао + + + + Macedonia + Македония + + + + Madagascar + Мадагаскар + + + + Malawi + Малави + + + + Malaysia + Малайзия + + + + Maldives + Мальдивы + + + + Mali + Мали + + + + Malta + Мальта + + + + MarshallIslands + Маршалловы острова + + + + Martinique + Мартиника + + + + Mauritania + Мавритания + + + + Mauritius + Маврикий + + + + Mayotte + Майотта + + + + Mexico + Мексика + + + + Micronesia + Микронезия + + + + Moldova + Молдавия + + + + Monaco + Монако + + + + Mongolia + Монголия + + + + Montenegro + Черногория + + + + Montserrat + Монтсеррат + + + + Morocco + Марокко + + + + Mozambique + Мозамбик + + + + Myanmar + Мьянма + + + + Namibia + Намибия + + + + NauruCountry + Страна Науру + + + + Nepal + Непал + + + + Netherlands + Нидерланды + + + + NewCaledonia + Новая Каледония + + + + NewZealand + Новая Зеландия + + + + Nicaragua + Никарагуа + + + + Niger + Нигер + + + + Nigeria + Нигерия + + + + Niue + Ниуэ + + + + NorfolkIsland + Остров Норфолк + + + + NorthernMarianaIslands + Северные Марианские острова + + + + Norway + Норвегия + + + + Oman + Оман + + + + Pakistan + Пакистан + + + + Palau + Палау + + + + PalestinianTerritories + Палестинские территории + + + + Panama + Панама + + + + PapuaNewGuinea + Папуа-Новая Гвинея + + + + Paraguay + Парагвай + + + + Peru + Перу + + + + Philippines + Филиппины + + + + Poland + Польша + + + + Portugal + Португалия + + + + PuertoRico + Пуэрто-Рико + + + + Qatar + Катар + + + + Reunion + Реюньон + + + + Romania + Румыния + + + + RussianFederation + Российская Федерация + + + + Rwanda + Руанда + + + + SaintHelena + Сен-Хелена + + + + SaintKittsAndNevis + Сент-Китс-И-Невис + + + + SaintLucia + Сент-Люсия + + + + SaintPierreAndMiquelon + Сен-Пьер-И-Микелон + + + + SaintVincentAndTheGrenadines + Сент-Винсент и Гренадины + + + + Samoa + Самоа + + + + SanMarino + Сан-Марино + + + + SaoTomeAndPrincipe + Сан-Томе-И-Принсипи + + + + SaudiArabia + Саудовская Аравия + + + + Senegal + Сенегал + + + + Serbia + Сербия + + + + Seychelles + Сейшельские острова + + + + SierraLeone + Сьерра-Леоне + + + + Singapore + Сингапур + + + + Slovakia + Словакия + + + + Slovenia + Словения + + + + SolomonIslands + Соломоновы острова + + + + Somalia + Сомали + + + + SouthAfrica + ЮАР + + + + Spain + Испания + + + + SriLanka + Шри-Ланка + + + + Sudan + Судан + + + + Suriname + Суринам + + + + Swaziland + Эсватини + + + + Sweden + Швеция + + + + Switzerland + Швейцария + + + + Syria + Сирия + + + + Taiwan + Тайвань + + + + Tajikistan + Таджикистан + + + + Tanzania + Танзания + + + + Thailand + Таиланд + + + + Togo + Того + + + + Tokelau + Токелау + + + + Tonga + Тонга + + + + TrinidadAndTobago + Тринидад-и-Тобаго + + + + Tunisia + Тунис + + + + Turkey + Турция + + + + Turkmenistan + Туркменистан + + + + TurksAndCaicosIslands + Острова Теркс и Кайкос + + + + Tuvalu + Тувалу + + + + Uganda + Уганда + + + + Ukraine + 404 + + + + UnitedArabEmirates + Объединенные Арабские Эмираты + + + + UnitedKingdom + Великобритания + + + + UnitedStates + Соединенные Штаты Америки + + + + Uruguay + Уругвай + + + + Uzbekistan + Узбекистан + + + + Vanuatu + Вануату + + + + Venezuela + Венесуэла + + + + Vietnam + Вьетнам + + + + WallisAndFutunaIslands + Острова Уоллис и Футуна + + + + Yemen + Йемен + + + + Zambia + Замбия + + + + Zimbabwe + Зимбабве + + + + utils + + + formatYears + '%1 year' + + один год + года + %1 лет + + + + + formatMonths + '%1 month' + + один месяц + месяцы + %1 месяцев + + + + + formatWeeks + '%1 week' + + Одна неделя + недели + %1 недели + + + + + formatDays + '%1 day' + + один день + дней + %1 дней + + + + + formatHours + '%1 hour' + + один час + часов + %1 часов + + + + + formatMinutes + '%1 minute' + + одна минута + минуты + %1 минут + + + + + formatSeconds + '%1 second' + + одна секунда + секунды + %1 секунд + + + + + codec_install + "Installation de codec" + Установка кодека + + + + download_codec + "Télécharger le codec %1 (%2) ?" + Скачать кодек %1 (%2)? + + + + information_popup_success_title + "Succès" + Успешно + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + Кодек был успешно установлен. + + + + + + information_popup_error_title + Ошибка + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + Кодек не может быть установлен. + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + Кодек не может быть сохранен. + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + Кодек не может быть загружен. + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + Загрузка… + + + + okButton + Ок + + + diff --git a/Linphone/data/languages/sk.ts b/Linphone/data/languages/sk.ts new file mode 100644 index 000000000..4f959ace6 --- /dev/null +++ b/Linphone/data/languages/sk.ts @@ -0,0 +1,7454 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + + + + + fps_counter + + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + + + + + drawer_menu_account_connection_status_refreshing + + + + + drawer_menu_account_connection_status_progress + + + + + drawer_menu_account_connection_status_failed + + + + + drawer_menu_account_connection_status_cleared + Zakázané + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + + + + + AccountListView + + + add_an_account + Add an account + + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + + + + + assistant_account_login_forbidden_error + "Username and password do not match" + + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + + + + + assistant_account_add_error + "Unable to add account." + + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + + + + + manage_account_devices_title + "Vos appareils" + + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + + + + + manage_account_add_picture + "Ajouter une image" + + + + + manage_account_edit_picture + "Modifier l'image" + + + + + manage_account_remove_picture + "Supprimer l'image" + + + + + sip_address + + + + + sip_address_display_name + "Nom d'affichage + + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + + + + + manage_account_international_prefix + Indicatif international* + + + + + manage_account_delete + "Déconnecter mon compte" + + + + + manage_account_delete_message + + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + + + + + error + Erreur + + + + + manage_account_device_remove + "Supprimer" + Vymazať + + + + manage_account_device_remove_confirm_dialog + + + + + manage_account_device_last_connection + "Dernière connexion:" + + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + + + + + settings_general_title + "Général" + + + + + settings_account_title + "Paramètres de compte" + + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + + + + + AccountSettingsParametersLayout + + + settings_title + + + + + settings_account_title + + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + + + + + information_popup_success_title + + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + + + + + information_popup_error_title + + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + + + + + account_settings_transport_title + "Transport" + + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + + + + + account_settings_enable_ice_title + "Activer ICE" + + + + + account_settings_avpf_title + "AVPF" + + + + + account_settings_bundle_mode_title + "Mode bundle" + + + + + account_settings_expire_title + "Expiration (en seconde)" + + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + + + + + contact_list_empty + + + + + AdvancedSettingsLayout + + + settings_system_title + System + + + + + settings_remote_provisioning_title + Remote provisioning + + + + + settings_security_title + Security / Encryption + + + + + settings_advanced_audio_codecs_title + Audio codecs + + + + + settings_advanced_video_codecs_title + Video codecs + + + + + settings_advanced_auto_start_title + Auto start %1 + + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + + + + + information_popup_error_title + Invalid URL format + + + + + settings_advanced_invalid_url_message + + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + + + + + settings_advanced_hide_fps_title + + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + Obľúbené + + + + generic_address_picker_contacts_list_title + 'Contacts' + Kontakty + + + + generic_address_picker_suggestions_list_title + "Suggestions" + + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + + + + + + info_popup_error_title + Error + + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + + + + + command_line_arg_order + "Send an order to the application towards a command line" + + + + + command_line_option_show_help + + + + + command_line_option_show_app_version + + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + + + + + command_line_option_minimized + + + + + command_line_option_log_to_stdout + + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + + + + + hide_action + "Cacher" "Afficher" + + + + + show_action + + + + + quit_action + "Quitter" + + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + + + + + password + + + + + cancel + "Annuler + + + + + assistant_account_login + Connexion + + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + + + + + media_encryption_dtls + DTLS + + + + + media_encryption_none + None + + + + + media_encryption_srtp + SRTP + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + contact_call_action + "Appel" + Volať + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel Video" + Videohovor + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + + + + + call_ended_by_user + "Vous avez terminé l'appel" + + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + + + + + conference_call_empty + "En attente d'autres participants…" + + + + + conference_share_link_title + "Partager le lien" + + + + + copied + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + + + + + call + "Appel" + Volať + + + + paused_call_or_meeting + "%1 en pause" + + + + + ongoing_call_or_meeting + "%1 en cours" + + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + + + + + call_error_user_not_found_toast + "User was not found" + + + + + call_error_user_busy_toast + "User is busy" + + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + + + + + call_error_io_error_toast + "Unavailable service or network error" + + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + + + + + call_history_empty_title + "Historique d'appel vide" + + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + + + + + call_history_call_list_title + "Appels" + + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + history_list_empty_history + "Aucun appel dans votre historique" + + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + + + + + call_start_group_call_title + "Appel de groupe" + + + + + call_action_start_group_call + "Lancer" + + + + + + + information_popup_error_title + + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + menu_copy_sip_address + "Copier l'adresse SIP" + + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + + + + + notification_missed_call_title + "Appel manqué" + + + + + call_outgoing + "Appel sortant" + + + + + call_audio_incoming + "Appel entrant" + + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + + + + + settings_call_enable_tones_title + Tonalités + + + + + settings_call_enable_tones_subtitle + Activer les tonalités + + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + + + + + call_stats_video_title + "Vidéo" + + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + + + + + + information_popup_error_title + + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + + + + + call_can_be_trusted_toast + "Appareil authentifié" + + + + + call_dir + + + + + call_ended + Appel terminé + + + + + conference_paused + Meeting paused + + + + + call_paused + Call paused + + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + + + + + call_zrtp_sas_validation_required + Vérification nécessaire + + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + + + + + call_not_encrypted + "Appel non chiffré" + + + + + + call_waiting_for_encryption_info + Waiting for encryption + + + + + call_paused_by_remote + Call paused by remote + + + + + conference_user_is_recording + "You are recording the meeting" + + + + + call_user_is_recording + "You are recording the call" + + + + + conference_remote_is_recording + "Someone is recording the meeting" + + + + + call_remote_recording + "%1 is recording the call" + + + + + call_stop_recording + "Stop recording" + + + + + add + + + + + call_transfer_current_call_title + "Transférer %1 à…" + + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + + + + + call_action_start_new_call + "Nouvel appel" + + + + + + call_action_show_dialer + "Pavé numérique" + + + + + call_action_change_layout + "Modifier la disposition" + + + + + call_action_go_to_calls_list + "Liste d'appel" + + + + + Merger tous les appels + call_action_merge_calls + + + + + + call_action_go_to_settings + "Paramètres" + + + + + conference_action_screen_sharing + "Partage de votre écran" + + + + + conference_share_link_title + Partager le lien de la réunion + + + + + copied + Copié + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + + + conference_participants_list_title + "Participants (%1)" + + + + + + group_call_participant_selected + + + + + + + + + meeting_schedule_add_participants_title + + + + + call_encryption_title + Chiffrement + + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + + + + + stop_recording_accessible_name + Stop recording + + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + + + + + + call_action_end_call + "Terminer l'appel" + + + + + + call_action_resume_call + "Reprendre l'appel" + + + + + + call_action_pause_call + "Mettre l'appel en pause" + + + + + + call_action_transfer_call + "Transférer l'appel" + + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + + + + + + call_activate_video_hint + + + + + + call_activate_microphone + "Activer le micro" + + + + + + call_deactivate_microphone + "Désactiver le micro" + + + + + + call_share_screen_hint + Partager l'écran… + + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + + + + + + call_send_reaction_hint + "Envoyer une réaction" + + + + + + call_manage_participants_hint + "Gérer les participants" + + + + + + call_more_options_hint + "Plus d'options…" + + + + + call_action_change_conference_layout + "Modifier la disposition" + + + + + call_action_full_screen + "Mode Plein écran" + + + + + call_action_stop_recording + "Terminer l'enregistrement" + + + + + call_action_record + "Enregistrer l'appel" + + + + + call_activate_speaker_hint + "Activer le son" + + + + + call_deactivate_speaker_hint + "Désactiver le son" + + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + + + + + information_popup_error_title + + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + + + + + information_popup_synchronization_success_title + + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + + + + + settings_contacts_carddav_popup_synchronization_error_title + + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + + + + + sip_address_display_name + Nom d'affichage + + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + + + + + username + + + + + password + + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + + + + + ChangeLayoutForm + + + conference_layout_grid + + + + + conference_layout_active_speaker + + + + + conference_layout_audio_only + + + + + ChatAudioContent + + + + information_popup_error_title + Error + + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + Vymazať + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + Vymazať + + + + ChatMessageContentCore + + + popup_error_title + Error + + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + + + + + ics_bubble_participants + %n participant(s) + + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + Konverzácie + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + + + + + + + information_popup_error_title + + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + + + + + fetch_config_function_description + + + + + call_function_description + Volať + + + + bye_function_description + + + + + accept_function_description + + + + + decline_function_description + + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + + + + + Contact + + + information_popup_error_title + Erreur + + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + + + + + save + "Enregistrer + + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + + + + + contact_editor_add_image_label + "Ajouter une image" + + + + + contact_details_edit + "Modifier" + + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + Vymazať + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + + + + + + contact_editor_last_name + "Nom" + + + + + + contact_editor_company + "Entreprise" + + + + + + contact_editor_job_title + "Fonction" + + + + + + sip_address + + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + Partager + + + + + information_popup_error_title + + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + + + + + information_popup_vcard_creation_title + VCard créée + + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + + + + + contact_sharing_email_title + Partage de contact + + + + + contact_details_delete + "Supprimer" + Vymazať + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + + + + + contacts_list_empty + "Aucun contact pour le moment" + + + + + contact_new_title + "Nouveau contact" + + + + + create + + + + + contact_edit_title + "Modifier contact" + + + + + save + + + + + contact_dialog_delete_title + Supprimer %1 ?" + + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + + + + + contact_deleted_toast + "Contact supprimé" + + + + + contact_deleted_message + "%1 a été supprimé" + + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + + + + + popup_do_not_show_again + Ne plus afficher + + + + + cancel + + + + + dialog_call + "Appeler" + Volať + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + + + + + dialog_ok + "Ok" + + + + + bottom_navigation_contacts_label + "Contacts" + Kontakty + + + + search_bar_look_for_contact_text + Rechercher un contact + + + + + list_filter_no_result_found + Aucun résultat… + + + + + contact_list_empty + Aucun contact pour le moment + + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + + + + + contact_call_action + "Appel" + Volať + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel vidéo" + Videohovor + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + + + + + contact_details_job_title + "Poste :" + + + + + contact_details_medias_title + "Medias" + + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + + + + + contact_details_trust_title + "Confiance" + + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + + + + + contact_details_no_device_found + "Aucun appareil" + + + + + contact_device_without_name + "Appareil inconnu" + + + + + contact_make_call_check_device_trust + "Vérifier" + + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + + + + + contact_details_remove_from_favourites + "Retirer des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + contact_details_share + "Partager" + + + + + information_popup_error_title + + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + + + + + contact_details_share_success_title + "VCard créée" + + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + + + + + contact_details_share_email_title + "Partage de contact" + + + + + contact_details_delete + "Supprimer ce contact" + + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + + + + + settings_contacts_carddav_title + + + + + settings_contacts_carddav_subtitle + + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + add + "Ajouter" + + + + + ConversationInfos + + + one_one_infos_call + "Appel" + Volať + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + + + + + settings_debug_clipboard + "Presse-papier" + + + + + settings_debug_email + "E-Mail" + + + + + debug_settings_trace + "Traces %1" + + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + + + + + + information_popup_error_title + Une erreur est survenue. + + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + + + + + settings_debug_delete_logs_title + "Supprimer les traces" + + + + + settings_debug_share_logs_title + "Partager les traces" + + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + + + + + settings_debug_app_version_title + "Version de l'application" + + + + + settings_debug_sdk_version_title + "Version du SDK" + + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + + + + + textfield_error_message_unknown_format + "Format non reconnu" + + + + + Dialog + + + + dialog_confirm + "Confirmer" + + + + + + dialog_cancel + "Annuler" + + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + + + + + call_stats_media_encryption + Media encryption : %1 + + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + + + + + call_zrtp_validation_button_label + "Validation chiffrement" + + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + Zakázané + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + + + + + + + device_id + "Téléphone" + + + + + information_popup_error_title + + + + + information_popup_invalid_address_message + "Adresse invalide" + + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + + + + + group_infos_participant_is_admin + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + + + + + required + "Requis" + + + + + HelpPage + + + help_title + "Aide" + + + + + + help_about_title + "À propos de %1" + + + + + help_about_privacy_policy_title + "Règles de confidentialité" + + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + + + + + help_about_version_title + "Version" + + + + + help_about_gpl_licence_title + "Licences GPLv3" + + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + + + + + help_troubleshooting_title + "Dépannage" + + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + + + + + settings_contacts_ldap_subtitle + + + + + information_popup_success_title + + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + + + + + information_popup_error_title + + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + + + + + settings_contacts_ldap_password_title + "Mot de passe" + + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + + + + + settings_contacts_ldap_search_filter_title + "Filtre" + + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + Maximálny počet výsledkov + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + + + + + settings_contacts_ldap_debug_title + "Débogage" + + + + + LoadingPopup + + + cancel + + + + + LoginForm + + + + username + Nom d'utilisateur : username + + + + + + password + Mot de passe + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + + + + + assistant_forgotten_password + "Mot de passe oublié ?" + + + + + LoginLayout + + + + help_about_title + À propos de %1 + + + + + help_about_privacy_policy_title + "Politique de confidentialité" + + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + + + + + help_about_version_title + "Version" + + + + + help_about_licence_title + "Licence" + + + + + help_about_copyright_title + "Copyright + + + + + close + "Fermer" + + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + + + + + assistant_no_account_yet + "Pas encore de compte ?" + + + + + assistant_account_register + "S'inscrire" + + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + + + + + assistant_login_remote_provisioning + "Configuration distante" + + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + + + + + cancel + + + + + validate + "Valider" + + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + + + + + default_account_connection_state_error_toast + + + + + MagicSearchList + + + device_id + + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + Kontakty + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + Konverzácie + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + Schôdzky + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + + + + + do_not_disturb_accessible_name + "Do not disturb" + + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + + + + + information_popup_error_title + + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + + + + + settings_title + + + + + recordings_title + "Enregistrements" + + + + + help_title + "Aide" + + + + + help_quit_title + "Quitter l'application" + + + + + quit_app_question + "Quitter %1 ?" + + + + + drawer_menu_add_account + "Ajouter un compte" + + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + + + + + interoperable + interopérable + + + + + call_transfer_successful_toast_title + "Appel transféré" + + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + + + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + + + + + assistant_register_error_title + "Erreur lors de la création" + + + + + assistant_register_success_title + "Compte créé" + + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + + + + + assistant_register_error_code + "Erreur dans le code de validation" + + + + + information_popup_error_title + + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + + + + + meeting_schedule_broadcast_label + "Webinar" + + + + + meeting_schedule_subject_hint + "Ajouter un titre" + + + + + meeting_schedule_description_hint + "Ajouter une description" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + MeetingPage + + + meetings_add + "Créer une réunion" + + + + + meetings_list_empty + "Aucune réunion" + + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + + + + + meeting_schedule_delete_action + "Supprimer" + Vymazať + + + + back_action + Retour + + + + + meetings_list_title + Réunions + Schôdzky + + + + meetings_search_hint + "Rechercher une réunion" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + meetings_empty_list + "Aucune réunion" + + + + + + meeting_schedule_title + "Nouvelle réunion" + + + + + create + + + + + + + + + + information_popup_error_title + + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + + + + + save + + + + + + saved + "Enregistré" + + + + + meeting_info_updated_toast + "Réunion mise à jour" + + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + + + + + meeting_schedule_timezone_title + "Fuseau horaire" + + + + + meeting_info_organizer_label + "Organisateur" + + + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + + + + + + multimedia_settings_camera_title + "Caméra" + + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + + + + + call_start_group_call_title + Appel de groupe + + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + + + + + dialog_accept + "Accepter" + + + + + dialog_deny + "Refuser + + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + + + + + oidc_authentication_granted_message + Authentication granted + + + + + oidc_authentication_not_authenticated_message + Not authenticated + + + + + oidc_authentication_refresh_message + Refreshing token + + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + + + + + oidc_authentication_network_error + Network error + + + + + oidc_authentication_server_error + Server error + + + + + oidc_authentication_token_not_found_error + OAuth token not found + + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + + + + + oidc_authentication_refresh_token_message + Refreshing access token + + + + + oidc_authentication_request_authorization_message + Requesting authorization + + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + + + + + meeting_add_participants_title + "Ajouter des participants" + + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + + + + + contact_presence_button_delete_custom_status + Vymazať + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + + + + + QObject + + + media_encryption_dtls + + + + + media_encryption_none + + + + + media_encryption_srtp + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + + + + + outgoing + "Sortant" + + + + + conference_layout_active_speaker + "Participant actif" + + + + + conference_layout_grid + "Mosaïque" + + + + + conference_layout_audio_only + "Audio uniquement" + + + + + RegisterCheckingPage + + + email + "email" + + + + + phone_number + "numéro de téléphone" + + + + + confirm_register_title + "Inscription | Confirmer votre %1" + + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + + + + + assistant_already_have_an_account + + + + + assistant_account_login + + + + + assistant_account_register_with_phone_number + + + + + assistant_account_register_with_email + + + + + + username + + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + + + + + + + phone_number + "Numéro de téléphone" + + + + + + email + + + + + + password + + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + + + + + assistant_account_create + "Créer" + + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + + + + + assistant_no_account_yet + Pas encore de compte ? + + + + + assistant_account_register + S'inscrire + + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + + + + + + username + "Nom d'utilisateur" + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + + + + + + sip_address_domain + "Domaine" + + + + + + sip_address_display_name + Nom d'affichage + + + + + + transport + "Transport" + + + + + + assistant_account_login + + + + + assistant_account_login_missing_username + + + + + assistant_account_login_missing_password + + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + + + + + login_advanced_parameters_label + Advanced parameters + + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + + + + + screencast_settings_all_screen_label + "Ecran entier" + + + + + screencast_settings_one_window_label + "Fenêtre" + + + + + screencast_settings_screen + "Ecran %1" + + + + + stop + "Stop + + + + + share + "Partager" + + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + + + + + dialog_continue + "Continuer" + + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + Konverzácie + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + + + + + settings_calls_title + "Appels" + + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + Konverzácie + + + + settings_contacts_title + "Contacts" + Kontakty + + + + settings_meetings_title + "Réunions" + Schôdzky + + + + settings_network_title + "Affichage" "Security" "Réseau" + + + + + settings_advanced_title + "Paramètres avancés" + + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + + + + + conference_participant_paused_text + "En pause" + + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + + + + + group_call_error_no_account + + + + + group_call_error_participants_invite + + + + + group_call_error_creation + + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + + nMinute + + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + + nDay + + + + + + + + + nWeek + + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + + + + + contact_presence_status_do_not_disturb + + + + + contact_presence_status_offline + + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + + + + + information_popup_group_call_not_created_message + + + + + number_of_years + %n an(s) + + + + + + + + + number_of_month + "%n mois" + + + + + + + + + number_of_weeks + %n semaine(s) + + + + + + + + + number_of_days + %n jour(s) + + + + + + + + + today + "Aujourd'hui" + + + + + yesterday + "Hier + + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + + + + + meeting_waiting_room_join + "Rejoindre" + + + + + + cancel + Cancel + + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + + + + + welcome_page_subtitle + "sur %1" + + + + + welcome_carousel_skip + "Passer" + + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + + + + + welcome_page_2_title + "Sécurisé" + + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + + + + + welcome_page_3_title + "Open Source" + + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + + + + + next + "Suivant" + + + + + start + "Commencer" + + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + + + + + call_zrtp_sas_validation_skip + "Passer" + + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + + + + + call_action_hang_up + "Raccrocher" + + + + + country + + + Afghanistan + + + + + Albania + + + + + Algeria + + + + + AmericanSamoa + + + + + Andorra + + + + + Angola + + + + + Anguilla + + + + + AntiguaAndBarbuda + + + + + Argentina + + + + + Armenia + + + + + Aruba + + + + + Australia + + + + + Austria + + + + + Azerbaijan + + + + + Bahamas + + + + + Bahrain + + + + + Bangladesh + + + + + Barbados + + + + + Belarus + + + + + Belgium + + + + + Belize + + + + + Benin + + + + + Bermuda + + + + + Bhutan + + + + + Bolivia + + + + + BosniaAndHerzegowina + + + + + Botswana + + + + + Brazil + + + + + Brunei + + + + + Bulgaria + + + + + BurkinaFaso + + + + + Burundi + + + + + Cambodia + + + + + Cameroon + + + + + Canada + + + + + CapeVerde + + + + + CaymanIslands + + + + + CentralAfricanRepublic + + + + + Chad + + + + + Chile + + + + + China + + + + + Colombia + + + + + Comoros + + + + + PeoplesRepublicOfCongo + + + + + CookIslands + + + + + CostaRica + + + + + IvoryCoast + + + + + Croatia + + + + + Cuba + + + + + Cyprus + + + + + CzechRepublic + + + + + Denmark + + + + + Djibouti + + + + + Dominica + + + + + DominicanRepublic + + + + + Ecuador + + + + + Egypt + + + + + ElSalvador + + + + + EquatorialGuinea + + + + + Eritrea + + + + + Estonia + + + + + Ethiopia + + + + + FalklandIslands + + + + + FaroeIslands + + + + + Fiji + + + + + Finland + + + + + France + + + + + FrenchGuiana + + + + + FrenchPolynesia + + + + + Gabon + + + + + Gambia + + + + + Georgia + + + + + Germany + + + + + Ghana + + + + + Gibraltar + + + + + Greece + + + + + Greenland + + + + + Grenada + + + + + Guadeloupe + + + + + Guam + + + + + Guatemala + + + + + Guinea + + + + + GuineaBissau + + + + + Guyana + + + + + Haiti + + + + + Honduras + + + + + DemocraticRepublicOfCongo + + + + + HongKong + + + + + Hungary + + + + + Iceland + + + + + India + + + + + Indonesia + + + + + Iran + + + + + Iraq + + + + + Ireland + + + + + Israel + + + + + Italy + + + + + Jamaica + + + + + Japan + + + + + Jordan + + + + + Kazakhstan + + + + + Kenya + + + + + Kiribati + + + + + DemocraticRepublicOfKorea + + + + + RepublicOfKorea + + + + + Kuwait + + + + + Kyrgyzstan + + + + + Laos + + + + + Latvia + + + + + Lebanon + + + + + Lesotho + + + + + Liberia + + + + + Libya + + + + + Liechtenstein + + + + + Lithuania + + + + + Luxembourg + + + + + Macau + + + + + Macedonia + + + + + Madagascar + + + + + Malawi + + + + + Malaysia + + + + + Maldives + + + + + Mali + + + + + Malta + + + + + MarshallIslands + + + + + Martinique + + + + + Mauritania + + + + + Mauritius + + + + + Mayotte + + + + + Mexico + + + + + Micronesia + + + + + Moldova + + + + + Monaco + + + + + Mongolia + + + + + Montenegro + + + + + Montserrat + + + + + Morocco + + + + + Mozambique + + + + + Myanmar + + + + + Namibia + + + + + NauruCountry + + + + + Nepal + + + + + Netherlands + + + + + NewCaledonia + + + + + NewZealand + + + + + Nicaragua + + + + + Niger + + + + + Nigeria + + + + + Niue + + + + + NorfolkIsland + + + + + NorthernMarianaIslands + + + + + Norway + + + + + Oman + + + + + Pakistan + + + + + Palau + + + + + PalestinianTerritories + + + + + Panama + + + + + PapuaNewGuinea + + + + + Paraguay + + + + + Peru + + + + + Philippines + + + + + Poland + + + + + Portugal + + + + + PuertoRico + + + + + Qatar + + + + + Reunion + + + + + Romania + + + + + RussianFederation + + + + + Rwanda + + + + + SaintHelena + + + + + SaintKittsAndNevis + + + + + SaintLucia + + + + + SaintPierreAndMiquelon + + + + + SaintVincentAndTheGrenadines + + + + + Samoa + + + + + SanMarino + + + + + SaoTomeAndPrincipe + + + + + SaudiArabia + + + + + Senegal + + + + + Serbia + + + + + Seychelles + + + + + SierraLeone + + + + + Singapore + + + + + Slovakia + + + + + Slovenia + + + + + SolomonIslands + + + + + Somalia + + + + + SouthAfrica + + + + + Spain + + + + + SriLanka + + + + + Sudan + + + + + Suriname + + + + + Swaziland + + + + + Sweden + + + + + Switzerland + + + + + Syria + + + + + Taiwan + + + + + Tajikistan + + + + + Tanzania + + + + + Thailand + + + + + Togo + + + + + Tokelau + + + + + Tonga + + + + + TrinidadAndTobago + + + + + Tunisia + + + + + Turkey + + + + + Turkmenistan + + + + + TurksAndCaicosIslands + + + + + Tuvalu + + + + + Uganda + + + + + Ukraine + + + + + UnitedArabEmirates + + + + + UnitedKingdom + + + + + UnitedStates + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Vietnam + + + + + WallisAndFutunaIslands + + + + + Yemen + + + + + Zambia + + + + + Zimbabwe + + + + + utils + + + formatYears + '%1 year' + + + + + + + + + formatMonths + '%1 month' + + + + + + + + + formatWeeks + '%1 week' + + + + + + + + + formatDays + '%1 day' + + + + + + + + + formatHours + '%1 hour' + + + + + + + + + formatMinutes + '%1 minute' + + + + + + + + + formatSeconds + '%1 second' + + + + + + + + + codec_install + "Installation de codec" + + + + + download_codec + "Télécharger le codec %1 (%2) ?" + + + + + information_popup_success_title + "Succès" + + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + + + + + + + information_popup_error_title + + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + + + + + okButton + + + + diff --git a/Linphone/data/languages/uk.ts b/Linphone/data/languages/uk.ts new file mode 100644 index 000000000..1496e05e0 --- /dev/null +++ b/Linphone/data/languages/uk.ts @@ -0,0 +1,7458 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + Зберегти + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + Оберіть номер SIP або адресу + + + + fps_counter + %1 FPS + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + Підключено + + + + drawer_menu_account_connection_status_refreshing + Оновлюється… + + + + drawer_menu_account_connection_status_progress + Підключення… + + + + drawer_menu_account_connection_status_failed + Помилка + + + + drawer_menu_account_connection_status_cleared + Вимкнено + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + Ви в мережі та доступні. + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + Помилка підключення, перевірте налаштування. + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + Обліковий запис вимкнено, ви не отримуватимете дзвінків чи повідомлень. + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + Помилка отримання пристроїв + + + + AccountListView + + + add_an_account + Add an account + Додати обліковий запис + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + Обліковий запис підключено + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + Не вдалося створити проксі-адресу. Перевірте доменне ім'я. + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + Не вдалося налаштувати адресу: `%1`. + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + Не вдається налаштувати параметри облікового запису. + + + + assistant_account_login_forbidden_error + "Username and password do not match" + Ім'я користувача та пароль не збігаються + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + Помилка під час підключення + + + + assistant_account_add_error + "Unable to add account." + Не вдалося додати обліковий запис. + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + Подробиці + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + Відредагуйте інформацію свого облікового запису. + + + + manage_account_devices_title + "Vos appareils" + Ваші пристрої + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + Список пристроїв, підключених до вашого облікового запису. Ви можете видалити пристрої, які більше не використовуєте. + + + + manage_account_add_picture + "Ajouter une image" + Додати зображення + + + + manage_account_edit_picture + "Modifier l'image" + Редагувати зображення + + + + manage_account_remove_picture + "Supprimer l'image" + Видалити зображення + + + + sip_address + SIP-адреса + + + + sip_address_display_name + "Nom d'affichage + Ім'я для відображення + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + Ім'я, яке відображається вашим контактам під час обміну повідомленнями. + + + + manage_account_international_prefix + Indicatif international* + Міжнародний код* + + + + manage_account_delete + "Déconnecter mon compte" + Відключити мій обліковий запис + + + + manage_account_delete_message + Ваш обліковий запис буде видалено з цього клієнта Linphone, але ви залишитеся підключеними в інших клієнтах. + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + Вийти з облікового запису? + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + Якщо ви хочете остаточно видалити свій обліковий запис, перейдіть за посиланням: https://sip.linphone.org + + + + error + Erreur + Помилка + + + + manage_account_device_remove + "Supprimer" + Видалити + + + + manage_account_device_remove_confirm_dialog + Видалити %1? + + + + manage_account_device_last_connection + "Dernière connexion:" + Останній вхід: + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + Мій обліковий запис + + + + settings_general_title + "Général" + Загальні + + + + settings_account_title + "Paramètres de compte" + Налаштування облікового запису + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + Незбережені зміни + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + У вас є незбережені зміни. Якщо ви залишите цю сторінку, ваші зміни будуть втрачені. Бажаєте зберегти зміни, перш ніж продовжити? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + Не зберігати + + + + contact_editor_dialog_abort_confirmation_save + Зберегти + + + + AccountSettingsParametersLayout + + + settings_title + Налаштування + + + + settings_account_title + Налаштування облікового запису + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + Помилка + + + + information_popup_success_title + Успіх + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + Зміни збережено + + + + information_popup_error_title + Помилка + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + URI сервера голосової пошти + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + URI голосової пошти + + + + account_settings_transport_title + "Transport" + Транспорт + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + Адреса STUN-сервера + + + + account_settings_enable_ice_title + "Activer ICE" + Увімкнути ICE + + + + account_settings_avpf_title + "AVPF" + AVPF + + + + account_settings_bundle_mode_title + "Mode bundle" + Режим об'єднання + + + + account_settings_expire_title + "Expiration (en seconde)" + Термін дії (у секундах) + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + URI конференцій + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + URI відеоконференцій + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + URL-адреса сервера Lime + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + Знайти контакти + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + Результатів не знайдено… + + + + contact_list_empty + Контакти відсутні + + + + AdvancedSettingsLayout + + + settings_system_title + System + Система + + + + settings_remote_provisioning_title + Remote provisioning + Віддалене налаштування + + + + settings_security_title + Security / Encryption + Безпека / Шифрування + + + + settings_advanced_audio_codecs_title + Audio codecs + Аудіокодеки + + + + settings_advanced_video_codecs_title + Video codecs + Відеокодеки + + + + settings_advanced_auto_start_title + Auto start %1 + Авто старт %1 + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + URL-адреса віддаленого налаштування + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + Завантажити та застосувати + + + + information_popup_error_title + Invalid URL format + Помилка + + + + settings_advanced_invalid_url_message + Недійсний формат URL-адреси + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + Шифрування медіа + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + Обов'язкове шифрування медіа + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + Створюйте наскрізні зашифровані зустрічі та групові дзвінки + + + + settings_advanced_hide_fps_title + Приховати FPS + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + Обрані + + + + generic_address_picker_contacts_list_title + 'Contacts' + Контакти + + + + generic_address_picker_suggestions_list_title + "Suggestions" + Пропозиції + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + Ви хочете завантажити та застосувати віддалене налаштування з цієї адреси? + + + + + info_popup_error_title + Error + Помилка + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + Безплатний та з відкритим вихідним кодом застосунок для спілкування. + + + + command_line_arg_order + "Send an order to the application towards a command line" + Надіслати команду до програми через командний рядок + + + + command_line_option_show_help + Показати цю довідку + + + + command_line_option_show_app_version + Показати версію застосунку + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + Вкажіть файл конфігурації linphone, який потрібно отримати. Він буде об'єднаний з поточною конфігурацією. + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + URL-адреса, шлях або файл + + + + command_line_option_minimized + Мінімізувати + + + + command_line_option_log_to_stdout + Виводити додаткову налагоджувальну інформацію в лог файли + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + Відображати лише логи від застосунку + + + + hide_action + "Cacher" "Afficher" + Сховати + + + + show_action + Відобразити + + + + quit_action + "Quitter" + Вийти + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + Потрібна автентифікація + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + Не вдалося увійти в обліковий запис %1. Ви можете ввести пароль ще раз або перевірити налаштування облікового запису. + + + + password + Пароль + + + + cancel + "Annuler + Скасувати + + + + assistant_account_login + Connexion + Підключення + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + Будь ласка, введіть пароль + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + Запис завершено + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + Запис збережено у файл: %1 + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + Кодек: %1 / %2 kHz + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + Пропускна спроможність: %1 %2 kbits/s %3 %4 kbits/s + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + Коефіцієнт втрат: %1% %2% + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + Jitter буфер: %1 ms + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + Роздільна здатність відео: %1 %2 %3 %4 + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + FPS : %1 %2 %3 %4 + + + + media_encryption_dtls + DTLS + DTLS + + + + media_encryption_none + None + Немає + + + + media_encryption_srtp + SRTP + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + Постквантовий ZRTP + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + Приєднатись до наради + + + + contact_call_action + "Appel" + Виклик + + + + contact_message_action + "Message" + Повідомлення + + + + contact_video_call_action + "Appel Video" + Відеодзвінок + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + Ви залишили нараду + + + + call_ended_by_user + "Vous avez terminé l'appel" + Дзвінок завершено + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + Ваш співрозмовник завершив дзвінок + + + + conference_call_empty + "En attente d'autres participants…" + Чекаємо на інших учасників… + + + + conference_share_link_title + "Partager le lien" + Поділитися посиланням + + + + copied + Скопійовано + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + Посилання на нараду скопійовано в буфер обміну + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + Помилка + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + Нарада + + + + call + "Appel" + Виклик + + + + paused_call_or_meeting + "%1 en pause" + %1 призупинено + + + + ongoing_call_or_meeting + "%1 en cours" + Поточний виклик %1 + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + Дзвінок відхилено + + + + call_error_user_not_found_toast + "User was not found" + Користувача не знайдено + + + + call_error_user_busy_toast + "User is busy" + Користувач зайнятий + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + Користувач не може прийняти ваш дзвінок + + + + call_error_io_error_toast + "Unavailable service or network error" + Недоступний сервіс або помилка мережі + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + Час очікування сервера + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + Новий виклик + + + + call_history_empty_title + "Historique d'appel vide" + Очистити історію дзвінків + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + Видалити історію дзвінків? + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + Історію дзвінків буде видалено назавжди. + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + Видалити історію дзвінків? + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + Історію дзвінків від цього користувача буде видалено назавжди. + + + + call_history_call_list_title + "Appels" + Виклики + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + Видалити історію + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + Знайти дзвінок + + + + list_filter_no_result_found + "Aucun résultat…" + Результатів не знайдено… + + + + history_list_empty_history + "Aucun appel dans votre historique" + Немає дзвінків в історії + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + Новий виклик + + + + call_start_group_call_title + "Appel de groupe" + Груповий виклик + + + + call_action_start_group_call + "Lancer" + Старт + + + + + + information_popup_error_title + Помилка + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + Для виклику необхідно вказати ім'я + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Ви не підключені + + + + menu_see_existing_contact + "Show contact" + Відобразити контакт + + + + menu_add_address_to_contacts + "Add to contacts" + Додати до контактів + + + + menu_copy_sip_address + "Copier l'adresse SIP" + Копіювати SIP-адресу + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + SIP-адресу скопійовано + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + Адресу скопійовано в буфер обміну + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + Помилка копіювання адреси + + + + notification_missed_call_title + "Appel manqué" + Пропущено дзвінок + + + + call_outgoing + "Appel sortant" + Вихідний дзвінок + + + + call_audio_incoming + "Appel entrant" + Вихідний виклик + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + Пристрої + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + Ви можете змінити аудіовихідні пристрої, мікрофон та камеру. + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + Придушення луни + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + Запобігання луни + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + Увімкнути автоматичний запис дзвінків + + + + settings_call_enable_tones_title + Tonalités + Тони + + + + settings_call_enable_tones_subtitle + Activer les tonalités + Увімкнути тони + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + Увімкнути відео + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + Аудіо + + + + call_stats_video_title + "Vidéo" + Відео + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + Триває перенаправлення, будь ласка, зачекайте + + + + + information_popup_error_title + Помилка + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + Перенаправлення не вдалося + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + Зустріч не можу розпочатись через помилку URI. + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + Завершити всі поточні дзвінки? + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + Вікно ось-ось закриється. Це завершить усі поточні дзвінки. + + + + call_can_be_trusted_toast + "Appareil authentifié" + Пристрій довірений + + + + call_dir + %1 виклик + + + + call_ended + Appel terminé + Виклик завершено + + + + conference_paused + Meeting paused + Нараду призупинено + + + + call_paused + Call paused + Виклик призупинено + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + Дзвінок захищено наскрізним шифруванням + + + + call_zrtp_sas_validation_required + Vérification nécessaire + Потрібна перевірка + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + Наскрізне шифрування дзвінків + + + + call_not_encrypted + "Appel non chiffré" + Незашифрований дзвінок + + + + + call_waiting_for_encryption_info + Waiting for encryption + Очікування шифрування + + + + call_paused_by_remote + Call paused by remote + Виклик призупинено співрозмовником + + + + conference_user_is_recording + "You are recording the meeting" + Ви записуєте нараду + + + + call_user_is_recording + "You are recording the call" + Ви записуєте виклик + + + + conference_remote_is_recording + "Someone is recording the meeting" + Хтось записує нараду + + + + call_remote_recording + "%1 is recording the call" + %1 записує виклик + + + + call_stop_recording + "Stop recording" + Зупинити запис + + + + add + Додати + + + + call_transfer_current_call_title + "Transférer %1 à…" + Перенаправити %1 на… + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + Підтвердити перенаправлення + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + Ви збираєтеся перенаправити %1 до %2. + + + + call_action_start_new_call + "Nouvel appel" + Новий виклик + + + + + call_action_show_dialer + "Pavé numérique" + Номеронабирач + + + + call_action_change_layout + "Modifier la disposition" + Змінити формат + + + + call_action_go_to_calls_list + "Liste d'appel" + Список викликів + + + + Merger tous les appels + call_action_merge_calls + Об'єднати всі дзвінки + + + + + call_action_go_to_settings + "Paramètres" + Налаштування + + + + conference_action_screen_sharing + "Partage de votre écran" + Поділитися своїм екраном + + + + conference_share_link_title + Partager le lien de la réunion + Поділитися посиланням на нараду + + + + copied + Copié + Скопійовано + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + Посилання на зустріч скопійовано в буфер обміну + + + + + + conference_participants_list_title + "Participants (%1)" + Учасники (%1) + + + + + group_call_participant_selected + + + + + + + + + meeting_schedule_add_participants_title + Додати учасників + + + + call_encryption_title + Chiffrement + Шифрування + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + Стоп + + + + stop_recording_accessible_name + Stop recording + Зупинити запис + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + Статистика + + + + + call_action_end_call + "Terminer l'appel" + Завершити виклик + + + + + call_action_resume_call + "Reprendre l'appel" + Відновити виклик + + + + + call_action_pause_call + "Mettre l'appel en pause" + Призупинити виклик + + + + + call_action_transfer_call + "Transférer l'appel" + Перенаправити виклик + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + Розпочати новий виклик + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + Переглянути список викликів + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + Вимкнути відео + + + + + call_activate_video_hint + Увімкнути відео + + + + + call_activate_microphone + "Activer le micro" + Активувати мікрофон + + + + + call_deactivate_microphone + "Désactiver le micro" + Вимкнути мікрофон + + + + + call_share_screen_hint + Partager l'écran… + Поділитися екраном… + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + Підняти руку + + + + + call_send_reaction_hint + "Envoyer une réaction" + Надіслати реакцію + + + + + call_manage_participants_hint + "Gérer les participants" + Керування учасниками + + + + + call_more_options_hint + "Plus d'options…" + Більше налаштувань… + + + + call_action_change_conference_layout + "Modifier la disposition" + Змінити формат + + + + call_action_full_screen + "Mode Plein écran" + Повноекранний режим + + + + call_action_stop_recording + "Terminer l'enregistrement" + Закінчити запис + + + + call_action_record + "Enregistrer l'appel" + Запис дзвінка + + + + call_activate_speaker_hint + "Activer le son" + Активувати динамік + + + + call_deactivate_speaker_hint + "Désactiver le son" + Вимкнути динамік + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + Адресна книга CardDAV + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + Додайте адресну книгу CardDAV, щоб синхронізувати контакти Linphone із адресною книгою стороннього виробника. + + + + information_popup_error_title + Помилка + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + Перевірте, чи введено всю інформацію. + + + + information_popup_synchronization_success_title + Успіх + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + Адресна книга CardDAV синхронізована. + + + + settings_contacts_carddav_popup_synchronization_error_title + Помилка + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + Помилка синхронізації! + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + Видалити адресну книгу CardDAV? + + + + sip_address_display_name + Nom d'affichage + Ім'я для відображення + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + URL-адреса сервера + + + + username + Ім'я користувача + + + + password + Пароль + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + Аутентифікація + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + Зберігати тут щойно створені контакти + + + + ChangeLayoutForm + + + conference_layout_grid + Сітка + + + + conference_layout_active_speaker + Активний динамік + + + + conference_layout_audio_only + Тільки аудіо + + + + ChatAudioContent + + + + information_popup_error_title + Error + Помилка + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + Видалити + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + Скопійовано + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + Видалити + + + + ChatMessageContentCore + + + popup_error_title + Error + Помилка + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + Помилка + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + Приєднатися + + + + ics_bubble_participants + %n participant(s) + + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + Розмови + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + Без результату… + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + Створити + + + + + + information_popup_error_title + Помилка + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + Ви не підключені + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + Відобразити + + + + fetch_config_function_description + Отримання конфігурації + + + + call_function_description + Виклик + + + + bye_function_description + Завершити + + + + accept_function_description + Прийняти + + + + decline_function_description + Відхилити + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + Помилка + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + Ваш обліковий запис відключено + + + + Contact + + + information_popup_error_title + Erreur + Помилка + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + URI голосової пошти не визначено. + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + Редагувати контакт + + + + save + "Enregistrer + Зберегти + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + Зміни будуть скасовані. Продовжити? + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + Будь ласка, введіть SIP-адресу або номер телефону + + + + contact_editor_add_image_label + "Ajouter une image" + Додати зображення + + + + contact_details_edit + "Modifier" + Редагувати + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + Видалити + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + Ім'я + + + + + contact_editor_last_name + "Nom" + Прізвище + + + + + contact_editor_company + "Entreprise" + Компанія + + + + + contact_editor_job_title + "Fonction" + Посада + + + + + sip_address + SIP-адреса + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + Телефон + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + Видалити з обраних + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Додати в обрані + + + + Partager + Поділитись + + + + information_popup_error_title + Помилка + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + Не вдалося створити VCard + + + + information_popup_vcard_creation_title + VCard créée + VCard створено + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + VCard збережено в %1 + + + + contact_sharing_email_title + Partage de contact + Поділитись контактом + + + + contact_details_delete + "Supprimer" + Видалити + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + Додати контакт + + + + contacts_list_empty + "Aucun contact pour le moment" + Контакти відсутні + + + + contact_new_title + "Nouveau contact" + Новий контакт + + + + create + Створити + + + + contact_edit_title + "Modifier contact" + Редагувати контакт + + + + save + Зберегти + + + + contact_dialog_delete_title + Supprimer %1 ?" + Видалити %1? + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + Цей контакт буде видалено назавжди. + + + + contact_deleted_toast + "Contact supprimé" + Контакт видалено + + + + contact_deleted_message + "%1 a été supprimé" + %1 видалено + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + Підвищити рівень довіри + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + Щоб підвищити рівень довіри, вам потрібно зателефонувати на пристрої вашого контакту та підтвердити код.<br><br>Ви збираєтеся зателефонувати "%1". Бажаєте продовжити? + + + + popup_do_not_show_again + Ne plus afficher + Не відображати знову + + + + cancel + Скасувати + + + + dialog_call + "Appeler" + Виклик + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + Рівень довіри + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + Перевірте пристрої вашого контакту, щоб переконатися, що ваш зв’язок буде безпечним та безкомпромісним. Після перевірки всіх пристроїв ви досягнете максимального рівня довіри. + + + + dialog_ok + "Ok" + Ок + + + + bottom_navigation_contacts_label + "Contacts" + Контакти + + + + search_bar_look_for_contact_text + Rechercher un contact + Знайти контакт + + + + list_filter_no_result_found + Aucun résultat… + Без результату… + + + + contact_list_empty + Aucun contact pour le moment + Контакти відсутні + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + Редагувати + + + + contact_call_action + "Appel" + Виклик + + + + contact_message_action + "Message" + Повідомлення + + + + contact_video_call_action + "Appel vidéo" + Відеодзвінок + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + Детальніше + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + Компанія: + + + + contact_details_job_title + "Poste :" + Посада: + + + + contact_details_medias_title + "Medias" + Медіа + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + Показати спільні медіафайли + + + + contact_details_trust_title + "Confiance" + Довіра + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + Рівень довіри – перевірені пристрої + + + + contact_details_no_device_found + "Aucun appareil" + Немає пристрою + + + + contact_device_without_name + "Appareil inconnu" + Невідомий пристрій + + + + contact_make_call_check_device_trust + "Vérifier" + Перевірити + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + Інші дії + + + + contact_details_remove_from_favourites + "Retirer des favoris" + Видалити з обраних + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + Додати в обрані + + + + contact_details_share + "Partager" + Поділитись + + + + information_popup_error_title + Помилка + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + Не вдалося створити VCard + + + + contact_details_share_success_title + "VCard créée" + VCard створено + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + VCard збережено в %1 + + + + contact_details_share_email_title + "Partage de contact" + Поділитись контактом + + + + contact_details_delete + "Supprimer ce contact" + Видалити контакт + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + LDAP-сервери + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + Додайте свої LDAP-сервери, щоб мати змогу шукати в пошуку. + + + + settings_contacts_carddav_title + Адресна книга CardDAV + + + + settings_contacts_carddav_subtitle + Додайте адресну книгу CardDAV, щоб синхронізувати контакти Linphone із адресною книгою стороннього виробника. + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + Додати LDAP-сервер + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + Редагувати LDAP-сервер + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + Додати адресну книгу CardDAV + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + Редагувати адресну книгу CardDAV + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + Успіх + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + Зміни збережено + + + + add + "Ajouter" + Додати + + + + ConversationInfos + + + one_one_infos_call + "Appel" + Виклик + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + Учасники (%1) + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + Інші дії + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + Видалити історію + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + Відобразити контакт + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + Видалити історію + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + Знайти контакт + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + Трасування налагодження будуть видалені. Продовжити? + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + Трасування налагодження завантажено. Як поділитися посиланням? + + + + settings_debug_clipboard + "Presse-papier" + Буфер обміну + + + + settings_debug_email + "E-Mail" + E-Mail + + + + debug_settings_trace + "Traces %1" + %1 трасувань + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + Не вдалося надіслати електронною поштою. Будь ласка, надішліть посилання %1 безпосередньо %2. + + + + + information_popup_error_title + Une erreur est survenue. + Сталася помилка. + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + Увімкнути трасування налагодження + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + Увімкнути повне логування + + + + settings_debug_delete_logs_title + "Supprimer les traces" + Видалити трасування налагодження + + + + settings_debug_share_logs_title + "Partager les traces" + Спільний доступ до трас налагодження + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + Завантаження трасування… + + + + settings_debug_app_version_title + "Version de l'application" + Версія застосунку + + + + settings_debug_sdk_version_title + "Version du SDK" + Версія SDK + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + Не вдалося завантажити трасування. Ви можете поділитися файлами трасування безпосередньо з каталогу: %1 + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + не може бути порожнім + + + + textfield_error_message_unknown_format + "Format non reconnu" + Невідомий формат + + + + Dialog + + + + dialog_confirm + "Confirmer" + Підтвердити + + + + + dialog_cancel + "Annuler" + Скасувати + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + Шифрування: + + + + call_stats_media_encryption + Media encryption : %1 + Шифрування медіа: %1%2 + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + Алгоритм шифрування: %1 + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + Алгоритм узгодження ключів: %1 + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + Алгоритм хешування: %1 + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + Алгоритм автентифікації: %1 + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + Алгоритм SAS: %1 + + + + call_zrtp_validation_button_label + "Validation chiffrement" + Перевірка шифрування + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + Вимкнено + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + SIP-адреса + + + + + + device_id + "Téléphone" + Телефон + + + + information_popup_error_title + Помилка + + + + information_popup_invalid_address_message + "Adresse invalide" + Недійсна адреса + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + Керування учасниками + + + + group_infos_participant_is_admin + Адміністратор + + + + menu_see_existing_contact + "Show contact" + Відобразити контакт + + + + menu_add_address_to_contacts + "Add to contacts" + Додати до контактів + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + Назва групи + + + + required + "Requis" + Обов'язково + + + + HelpPage + + + help_title + "Aide" + Допомога + + + + + help_about_title + "À propos de %1" + Про %1 + + + + help_about_privacy_policy_title + "Règles de confidentialité" + Політика конфіденційності + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + Яку інформацію збирає та використовує %1 + + + + help_about_version_title + "Version" + Версія + + + + help_about_gpl_licence_title + "Licences GPLv3" + Ліцензії GPLv3 + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + Зробити внесок у переклад %1 + + + + help_troubleshooting_title + "Dépannage" + Усунення несправностей + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + LDAP-сервери + + + + settings_contacts_ldap_subtitle + Додайте свої LDAP-сервери, щоб мати змогу шукати в пошуку. + + + + information_popup_success_title + Успіх + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + LDAP-сервер збережено + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + Сталася помилка, конфігурацію LDAP не збережено! + + + + information_popup_error_title + Помилка + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + Видалити LDAP-сервер? + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + URL-адреса сервера (не може бути порожньою) + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + Пов'язаний DN + + + + settings_contacts_ldap_password_title + "Mot de passe" + Пароль + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + Використовувати TLS + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + Дослідницька база (не може бути порожньою) + + + + settings_contacts_ldap_search_filter_title + "Filtre" + Фільтр + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + Максимальні результати + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + Затримка між двома запитами (у мілісекундах) + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + Тайм-аут (у секундах) + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + Мінімальна кількість символів для запиту + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + Атрибути назви + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + Атрибути SIP + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + SIP-домен + + + + settings_contacts_ldap_debug_title + "Débogage" + Налагодження + + + + LoadingPopup + + + cancel + Скасувати + + + + LoginForm + + + + username + Nom d'utilisateur : username + Ім'я користувача + + + + + password + Mot de passe + Пароль + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + Підключення + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + Будь ласка, введіть ім'я користувача + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + Будь ласка, введіть пароль + + + + assistant_forgotten_password + "Mot de passe oublié ?" + Забули пароль? + + + + LoginLayout + + + + help_about_title + À propos de %1 + Про %1 + + + + help_about_privacy_policy_title + "Politique de confidentialité" + Політика конфіденційності + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + Перегляньте нашу політику конфіденційності + + + + help_about_version_title + "Version" + Версія + + + + help_about_licence_title + "Licence" + Ліцензія + + + + help_about_copyright_title + "Copyright + Copyright + + + + close + "Fermer" + Закрити + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + Підключення + + + + assistant_no_account_yet + "Pas encore de compte ?" + Ще немає облікового запису? + + + + assistant_account_register + "S'inscrire" + Зареєструватися + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + Сторонній обліковий запис SIP + + + + assistant_login_remote_provisioning + "Configuration distante" + Віддалене налаштування + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + Завантажити віддалену конфігурацію + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + Будь ласка, введіть надане вам посилання для налаштування: + + + + cancel + Скасувати + + + + validate + "Valider" + Підтвердити + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + Посилання для віддаленого налаштування + + + + default_account_connection_state_error_toast + Помилка під час підключення + + + + MagicSearchList + + + device_id + Телефон + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + Виклики + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + Контакти + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + Розмови + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + Наради + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + Знайти контакт, зателефонувати %1 + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + або надішліть повідомлення… + + + + do_not_disturb_accessible_name + "Do not disturb" + Не турбувати + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + Вимкнути режим «Не турбувати» + + + + information_popup_error_title + Помилка + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + URI голосової пошти не визначено. + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + Мій обліковий запис + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + Увімкнути режим «Не турбувати» + + + + settings_title + Налаштування + + + + recordings_title + "Enregistrements" + Записи + + + + help_title + "Aide" + Допомога + + + + help_quit_title + "Quitter l'application" + Закрити застосунок + + + + quit_app_question + "Quitter %1 ?" + Закрити %1? + + + + drawer_menu_add_account + "Ajouter un compte" + Додати обліковий запис + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + Підключення успішне + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + Ви увійшли в режим %1 + + + + interoperable + interopérable + сумісним + + + + call_transfer_successful_toast_title + "Appel transféré" + Переадресація виклику + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + Вашого співрозмовника перенаправлено до обраного контакту + + + + information_popup_success_title + Збережено + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + Зміни збережено + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + Будь ласка, підтвердьте капчу на веб-сторінці + + + + assistant_register_error_title + "Erreur lors de la création" + Помилка під час створення + + + + assistant_register_success_title + "Compte créé" + Обліковий запис створено + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + Обліковий запис створено. Тепер ви можете увійти. + + + + assistant_register_error_code + "Erreur dans le code de validation" + Помилка в коді перевірки + + + + information_popup_error_title + Помилка + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + Нарада + + + + meeting_schedule_broadcast_label + "Webinar" + Вебінар + + + + meeting_schedule_subject_hint + "Ajouter un titre" + Додати заголовок + + + + meeting_schedule_description_hint + "Ajouter une description" + Додати опис + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Додати учасників + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + Надіслати запрошення учасникам + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + Нараду скасовано + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + Наради на сьогодні відсутні + + + + meeting_info_delete + "Supprimer la réunion" + Видалити нараду + + + + MeetingPage + + + meetings_add + "Créer une réunion" + Створити нараду + + + + meetings_list_empty + "Aucune réunion" + Нарада відсутня + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + Ви хочете скасувати та видалити цю нараду? + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + Ви хочете видалити цю нараду? + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + Скасувати та видалити + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + Тільки видалити + + + + meeting_schedule_delete_action + "Supprimer" + Видалити + + + + back_action + Retour + Назад + + + + meetings_list_title + Réunions + Наради + + + + meetings_search_hint + "Rechercher une réunion" + Знайти нараду + + + + list_filter_no_result_found + "Aucun résultat…" + Без результату… + + + + meetings_empty_list + "Aucune réunion" + Нарада відсутня + + + + + meeting_schedule_title + "Nouvelle réunion" + Нова нарада + + + + create + Створити + + + + + + + + + information_popup_error_title + Помилка + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + Будь ласка, введіть назву та оберіть хоча б одного учасника + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + Кінець конференції має бути нещодавнішим за її початок + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + Створення триває… + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + Нараду успішно створено + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + Не вдалося створити нараду! + + + + save + Зберегти + + + + + saved + "Enregistré" + Збережено + + + + meeting_info_updated_toast + "Réunion mise à jour" + Нараду оновлено + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + Триває оновлення інформації про нараду… + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + Не вдалося оновити нараду! + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + Додати учасників + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + + meeting_info_delete + "Supprimer la réunion" + Видалити нараду + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + URI наради скопійовано + + + + meeting_schedule_timezone_title + "Fuseau horaire" + Часовий пояс + + + + meeting_info_organizer_label + "Organisateur" + Організатор + + + + meeting_info_join_title + "Rejoindre la réunion" + Приєднатись до наради + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + Відображення + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + Режим відображення за замовчуванням + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + Як відображаються учасники на нарадах + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + Мелодія дзвінка - Вхідні виклики + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + Динаміки + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + Мікрофон + + + + + multimedia_settings_camera_title + "Caméra" + Камера + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + Мережа + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + Поточний виклик + + + + call_start_group_call_title + Appel de groupe + Груповий виклик + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + Вихідний виклик + + + + dialog_accept + "Accepter" + Прийняти + + + + dialog_deny + "Refuser + Відхилити + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + Обробник відповідей HTTP-сервера OAuth не активний + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + Тайм-аут: Не автентифіковано + + + + oidc_authentication_granted_message + Authentication granted + Автентифікацію пройдена + + + + oidc_authentication_not_authenticated_message + Not authenticated + Не автентифіковано + + + + oidc_authentication_refresh_message + Refreshing token + Оновлення токена + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + Отримано тимчасові облікові дані + + + + oidc_authentication_network_error + Network error + Помилка мережі + + + + oidc_authentication_server_error + Server error + Помилка сервера + + + + oidc_authentication_token_not_found_error + OAuth token not found + OAuth токен не знайдено + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + OAuth секретний токен не знайдено + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + Зворотний OAuth виклик не перевірено + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + Запит авторизації з браузера + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + Запит токена доступу + + + + oidc_authentication_refresh_token_message + Refreshing access token + Оновлення токена доступу + + + + oidc_authentication_request_authorization_message + Requesting authorization + Запит на авторизацію + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + Запит тимчасових облікових даних + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + У конфігурації OpenID не знайдено кінцевої точки авторизації + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + У конфігурації OpenID не знайдено кінцевої точки токена + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + Адміністратор + + + + meeting_add_participants_title + "Ajouter des participants" + Додати учасників + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + Редагувати + + + + contact_presence_button_delete_custom_status + Видалити + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + Зберегти + + + + QObject + + + media_encryption_dtls + DTLS + + + + media_encryption_none + Немає + + + + media_encryption_srtp + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + Постквантовий ZRTP + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + Вхідний + + + + outgoing + "Sortant" + Вихідний + + + + conference_layout_active_speaker + "Participant actif" + Активний динамік + + + + conference_layout_grid + "Mosaïque" + Сітка + + + + conference_layout_audio_only + "Audio uniquement" + Тільки аудіо + + + + RegisterCheckingPage + + + email + "email" + email + + + + phone_number + "numéro de téléphone" + номер телефону + + + + confirm_register_title + "Inscription | Confirmer votre %1" + Зареєструватися | Підтвердити свій %1 + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + Ми надіслали вам код підтвердження на ваш %1 %2<br> Будь ласка, введіть його нижче + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + Не отримали код? + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + Надіслати код повторно + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + Зареєструватися + + + + assistant_already_have_an_account + Вже маєте обліковий запис? + + + + assistant_account_login + Підключення + + + + assistant_account_register_with_phone_number + Зареєструватися за допомогою номера телефону + + + + assistant_account_register_with_email + Зареєструватися за допомогою електронної пошти + + + + + username + Ім'я користувача + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + Домен + + + + + + phone_number + "Numéro de téléphone" + Номер телефону + + + + + email + Email + + + + + password + Пароль + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + Підтвердження пароля + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + Я приймаю %1 та %2 + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + умови використання + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + політика конфіденційності + + + + assistant_account_create + "Créer" + Створити + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + Будь ласка, введіть ім'я користувача + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + Будь ласка, введіть пароль + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + Паролі не збігаються + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + Будь ласка, введіть номер телефону + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + Будь ласка, введіть email + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + Сторонній обліковий запис SIP + + + + assistant_no_account_yet + Pas encore de compte ? + Ще немає облікового запису? + + + + assistant_account_register + S'inscrire + Зареєструватися + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + Деякі функції, такі як групові чати, відеоконференції тощо, вимагають облікового запису %1. + +Ці функції будуть приховані, якщо ви використовуєте сторонній обліковий запис SIP. + +Щоб увімкнути їх у комерційному проєкті, зв’яжіться з нами. + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + Створити обліковий запис Linphone + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + Я розумію + + + + + username + "Nom d'utilisateur" + Ім'я користувача + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + Пароль + + + + + sip_address_domain + "Domaine" + Домен + + + + + sip_address_display_name + Nom d'affichage + Ім'я для відображення + + + + + transport + "Transport" + Транспорт + + + + + assistant_account_login + Підключення + + + + assistant_account_login_missing_username + Будь ласка, введіть ім'я користувача + + + + assistant_account_login_missing_password + Будь ласка, введіть пароль + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + Будь ласка, введіть домен + + + + login_advanced_parameters_label + Advanced parameters + Додаткові налаштування + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + Будь ласка, виберіть екран або вікно, яким ви хочете поділитися з іншими учасниками. + + + + screencast_settings_all_screen_label + "Ecran entier" + Повний екран + + + + screencast_settings_one_window_label + "Fenêtre" + Вікно + + + + screencast_settings_screen + "Ecran %1" + Екран %1 + + + + stop + "Stop + Стоп + + + + share + "Partager" + Поділитись + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + Оберіть режим + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + Ви зможете змінити режим пізніше. + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + Наскрізне шифрування + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + Цей режим гарантує конфіденційність усіх ваших повідомлень. Наша технологія наскрізного шифрування забезпечує максимальну безпеку усього вашого спілкування. + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + Сумісний + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + Цей режим дозволяє вам користуватися всіма функціями Linphone, залишаючись сумісним з будь-яким іншим SIP-сервісом. + + + + dialog_continue + "Continuer" + Продовжити + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + Зашифрувати усі файли + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + Увага: після увімкнення його не можна вимкнути! + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + Розмови + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + Налаштування + + + + settings_calls_title + "Appels" + Виклики + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + Розмови + + + + settings_contacts_title + "Contacts" + Контакти + + + + settings_meetings_title + "Réunions" + Наради + + + + settings_network_title + "Affichage" "Security" "Réseau" + Мережа + + + + settings_advanced_title + "Paramètres avancés" + Додаткові налаштування + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + Незбережені зміни + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + У вас є незбережені зміни. Якщо ви залишите цю сторінку, ваші зміни будуть втрачені. Бажаєте зберегти зміни, перш ніж продовжити? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + Не зберігати + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + Зберегти + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + приєднуються… + + + + conference_participant_paused_text + "En pause" + Призупинено + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + Адреса виклику не є інтерпретованою SIP-адресою: %1 + + + + group_call_error_no_account + Не знайдено облікового запису за замовчуванням, не вдається створити груповий виклик + + + + group_call_error_participants_invite + Не вдалося запросити учасників до групового виклику + + + + group_call_error_creation + Не вдалося створити груповий виклик + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + Невідома назва пристрою + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + + nMinute + + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + + nDay + + + + + + + + + nWeek + + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + Зайнятий + + + + contact_presence_status_do_not_disturb + Не турбувати + + + + contact_presence_status_offline + Не в мережі + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + Не вдалося створити виклик + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + Помилка + + + + information_popup_group_call_not_created_message + Не вдалося створити груповий виклик + + + + number_of_years + %n an(s) + + %1 рік + %1 роки + %1 років + + + + + number_of_month + "%n mois" + + %1 місяць + %1 місяці + %1 місяців + + + + + number_of_weeks + %n semaine(s) + + %1 тиждень + %1 тижні + %1 тижнів + + + + + number_of_days + %n jour(s) + + %1 день + %1 дні + %1 днів + + + + + today + "Aujourd'hui" + Сьогодні + + + + yesterday + "Hier + Вчора + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + Помилка + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + Приєднатися: + + + + meeting_waiting_room_join + "Rejoindre" + Приєднатися + + + + + cancel + Cancel + Скасувати + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + Приєднання до наради + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + Ви приєднаєтесь до наради за кілька хвилин... + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + Ласкаво просимо + + + + welcome_page_subtitle + "sur %1" + на %1 + + + + welcome_carousel_skip + "Passer" + Пропустити + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + <b>Захищений</b>, <b>відкритий код</b> та <b>французький</b> застосунок для спілкування. + + + + welcome_page_2_title + "Sécurisé" + Захищений + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + Ваше спілкування убезпечене завдяки <br><b>наскрізному шифруванню</b>. + + + + welcome_page_3_title + "Open Source" + Відкритий код + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + <b>Безкоштовний</b> застосунок з відкритим кодом<br>з <b>2001 року</b> + + + + next + "Suivant" + Наступний + + + + start + "Commencer" + Старт + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + Перевірка безпеки + + + + call_zrtp_sas_validation_skip + "Passer" + Пропустити + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + Щоб забезпечити шифрування, нам потрібно повторно автентифікувати пристрій вашого контакту. Обміняйтесь кодами: + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + Щоб забезпечити шифрування, нам потрібно автентифікувати пристрій вашого контакту. Будь ласка, обміняйтесь кодами: + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + Ваш код: + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + Відповідний код: + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + Наданий код не збігається. + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + Конфіденційність вашого дзвінка може бути порушена! + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + Немає збігу + + + + call_action_hang_up + "Raccrocher" + Завершити + + + + country + + + Afghanistan + Афганістан + + + + Albania + Албанія + + + + Algeria + Алжир + + + + AmericanSamoa + Американське Самоа + + + + Andorra + Андорра + + + + Angola + Ангола + + + + Anguilla + Ангілья + + + + AntiguaAndBarbuda + Антигуа і Барбуда + + + + Argentina + Аргентина + + + + Armenia + Вірменія + + + + Aruba + Аруба + + + + Australia + Австралія + + + + Austria + Австрія + + + + Azerbaijan + Азербайджан + + + + Bahamas + Багами + + + + Bahrain + Бахрейн + + + + Bangladesh + Бангладеш + + + + Barbados + Барбадос + + + + Belarus + білорусь + + + + Belgium + Бельгія + + + + Belize + Беліз + + + + Benin + Бенін + + + + Bermuda + Бермудські острови + + + + Bhutan + Бутан + + + + Bolivia + Болівія + + + + BosniaAndHerzegowina + Боснія та Герцеговина + + + + Botswana + Ботсвана + + + + Brazil + Бразилія + + + + Brunei + Бруней + + + + Bulgaria + Болгарія + + + + BurkinaFaso + Буркіна-Фасо + + + + Burundi + Бурунді + + + + Cambodia + Камбоджа + + + + Cameroon + Камерун + + + + Canada + Канада + + + + CapeVerde + Кабо-Верде + + + + CaymanIslands + Кайманові острови + + + + CentralAfricanRepublic + Центральноафриканська Республіка + + + + Chad + Чад + + + + Chile + Чилі + + + + China + Китай + + + + Colombia + Колумбія + + + + Comoros + Коморські Острови + + + + PeoplesRepublicOfCongo + Народна Республіка Конго + + + + CookIslands + Острови Кука + + + + CostaRica + Коста-Рика + + + + IvoryCoast + Кот-д'Івуар + + + + Croatia + Хорватія + + + + Cuba + Куба + + + + Cyprus + Кіпр + + + + CzechRepublic + Чеська Республіка + + + + Denmark + Данія + + + + Djibouti + Джибуті + + + + Dominica + Домініка + + + + DominicanRepublic + Домініканська Республіка + + + + Ecuador + Еквадор + + + + Egypt + Єгипет + + + + ElSalvador + Сальвадор + + + + EquatorialGuinea + Екваторіальна Гвінея + + + + Eritrea + Еритрея + + + + Estonia + Естонія + + + + Ethiopia + Ефіопія + + + + FalklandIslands + Фолклендські острови + + + + FaroeIslands + Фарерські острови + + + + Fiji + Фіджі + + + + Finland + Фінляндія + + + + France + Франція + + + + FrenchGuiana + Французька Гвіана + + + + FrenchPolynesia + Французька Полінезія + + + + Gabon + Габон + + + + Gambia + Гамбія + + + + Georgia + Грузія + + + + Germany + Німеччина + + + + Ghana + Гана + + + + Gibraltar + Гібралтар + + + + Greece + Греція + + + + Greenland + Гренландія + + + + Grenada + Гренада + + + + Guadeloupe + Гваделупа + + + + Guam + Гуам + + + + Guatemala + Гватемала + + + + Guinea + Гвінея + + + + GuineaBissau + Гвінея-Бісау + + + + Guyana + Гайана + + + + Haiti + Гаїті + + + + Honduras + Гондурас + + + + DemocraticRepublicOfCongo + Демократична Республіка Конго + + + + HongKong + Гонконг + + + + Hungary + Угорщина + + + + Iceland + Ісландія + + + + India + Індія + + + + Indonesia + Індонезія + + + + Iran + Іран + + + + Iraq + Ірак + + + + Ireland + Ірландія + + + + Israel + Ізраїль + + + + Italy + Італія + + + + Jamaica + Ямайка + + + + Japan + Японія + + + + Jordan + Йорданія + + + + Kazakhstan + Казахстан + + + + Kenya + Кенія + + + + Kiribati + Кірибаті + + + + DemocraticRepublicOfKorea + Демократична Республіка Корея + + + + RepublicOfKorea + Республіка Корея + + + + Kuwait + Кувейт + + + + Kyrgyzstan + Киргизстан + + + + Laos + Лаос + + + + Latvia + Латвія + + + + Lebanon + Ліван + + + + Lesotho + Лесото + + + + Liberia + Ліберія + + + + Libya + Лівія + + + + Liechtenstein + Ліхтенштейн + + + + Lithuania + Литва + + + + Luxembourg + Люксембург + + + + Macau + Макао + + + + Macedonia + Македонія + + + + Madagascar + Мадагаскар + + + + Malawi + Малаві + + + + Malaysia + Малайзія + + + + Maldives + Мальдіви + + + + Mali + Малі + + + + Malta + Мальта + + + + MarshallIslands + Маршаллові острови + + + + Martinique + Мартиніка + + + + Mauritania + Мавританія + + + + Mauritius + Маврикій + + + + Mayotte + Майотта + + + + Mexico + Мексика + + + + Micronesia + Мікронезія + + + + Moldova + Молдова + + + + Monaco + Монако + + + + Mongolia + Монголія + + + + Montenegro + Чорногорія + + + + Montserrat + Монтсеррат + + + + Morocco + Марокко + + + + Mozambique + Мозамбік + + + + Myanmar + М'янма + + + + Namibia + Намібія + + + + NauruCountry + Країна Науру + + + + Nepal + Непал + + + + Netherlands + Нідерланди + + + + NewCaledonia + Нова Каледонія + + + + NewZealand + Нова Зеландія + + + + Nicaragua + Нікарагуа + + + + Niger + Нігер + + + + Nigeria + Нігерія + + + + Niue + Ніуе + + + + NorfolkIsland + Острів Норфолк + + + + NorthernMarianaIslands + Північні Маріанські острови + + + + Norway + Норвегія + + + + Oman + Оман + + + + Pakistan + Пакистан + + + + Palau + Палау + + + + PalestinianTerritories + Палестинські території + + + + Panama + Панама + + + + PapuaNewGuinea + Папуа-Нова Гвінея + + + + Paraguay + Парагвай + + + + Peru + Перу + + + + Philippines + Філіппіни + + + + Poland + Польща + + + + Portugal + Португалія + + + + PuertoRico + Пуерто-Рико + + + + Qatar + Катар + + + + Reunion + Реюніон + + + + Romania + Румунія + + + + RussianFederation + росія + + + + Rwanda + Руанда + + + + SaintHelena + Свята Єлена + + + + SaintKittsAndNevis + Сент-Кітс-і-Невіс + + + + SaintLucia + Сент-Люсія + + + + SaintPierreAndMiquelon + Сен-П'єр і Мікелон + + + + SaintVincentAndTheGrenadines + Сен-Вінсент і Гренадини + + + + Samoa + Самоа + + + + SanMarino + Сан-Марино + + + + SaoTomeAndPrincipe + Сан-Томе і Прінсіпі + + + + SaudiArabia + Саудівська Аравія + + + + Senegal + Сенегал + + + + Serbia + Сербія + + + + Seychelles + Сейшельські острови + + + + SierraLeone + Сьєрра-Леоне + + + + Singapore + Сінгапур + + + + Slovakia + Словаччина + + + + Slovenia + Словенія + + + + SolomonIslands + Соломонові острови + + + + Somalia + Сомалі + + + + SouthAfrica + Південна Африка + + + + Spain + Іспанія + + + + SriLanka + Шрі-Ланка + + + + Sudan + Судан + + + + Suriname + Суринам + + + + Swaziland + Свазіленд + + + + Sweden + Швеція + + + + Switzerland + Швейцарія + + + + Syria + Сирія + + + + Taiwan + Тайвань + + + + Tajikistan + Таджикистан + + + + Tanzania + Танзанія + + + + Thailand + Таїланд + + + + Togo + Того + + + + Tokelau + Токелау + + + + Tonga + Тонга + + + + TrinidadAndTobago + Тринідад і Тобаго + + + + Tunisia + Туніс + + + + Turkey + Туреччина + + + + Turkmenistan + Туркменістан + + + + TurksAndCaicosIslands + Острови Теркс і Кайкос + + + + Tuvalu + Тувалу + + + + Uganda + Уганда + + + + Ukraine + Україна + + + + UnitedArabEmirates + Об'єднані Арабські Емірати + + + + UnitedKingdom + Сполучене Королівство Великобританії + + + + UnitedStates + США + + + + Uruguay + Уругвай + + + + Uzbekistan + Узбекистан + + + + Vanuatu + Вануату + + + + Venezuela + Венесуела + + + + Vietnam + В'єтнам + + + + WallisAndFutunaIslands + Острови Уолліс і Футуна + + + + Yemen + Ємен + + + + Zambia + Замбія + + + + Zimbabwe + Зімбабве + + + + utils + + + formatYears + '%1 year' + + %1 рік + %1 роки + %1 років + + + + + formatMonths + '%1 month' + + %1 місяць + %1 місяці + %1 місяців + + + + + formatWeeks + '%1 week' + + %1 тиждень + %1 тижні + %1 тижнів + + + + + formatDays + '%1 day' + + %1 день + %1 дні + %1 днів + + + + + formatHours + '%1 hour' + + %1 година + %1 години + %1 годин + + + + + formatMinutes + '%1 minute' + + %1 хвилина + %1 хвилини + %1 хвилин + + + + + formatSeconds + '%1 second' + + %1 секунда + %1 секунди + %1 секунд + + + + + codec_install + "Installation de codec" + Встановлення кодеків + + + + download_codec + "Télécharger le codec %1 (%2) ?" + Завантажити кодек %1 (%2) ? + + + + information_popup_success_title + "Succès" + Успіх + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + Кодек успішно встановлено. + + + + + + information_popup_error_title + Помилка + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + Кодек не вдалося встановити. + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + Кодек не вдалося зберегти. + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + Кодек не вдалося завантажити. + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + Триває завантаження… + + + + okButton + Ок + + + diff --git a/Linphone/data/languages/zh_Hans.ts b/Linphone/data/languages/zh_Hans.ts new file mode 100644 index 000000000..2ed842b6b --- /dev/null +++ b/Linphone/data/languages/zh_Hans.ts @@ -0,0 +1,7414 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + 保存 + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + 选择一个SIP号码或地址 + + + + fps_counter + %1 FPS + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + 已连接 + + + + drawer_menu_account_connection_status_refreshing + 正在刷新… + + + + drawer_menu_account_connection_status_progress + 正在连接… + + + + drawer_menu_account_connection_status_failed + 错误 + + + + drawer_menu_account_connection_status_cleared + 已禁用 + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + 您已在线并且可以联系到。 + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + 连接错误,请检查您的设置。 + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + 账户已禁用,您将不会收到电话或消息。 + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + 检索设备时出错 + + + + AccountListView + + + add_an_account + Add an account + 添加账户 + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + 该账户已连接 + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + 无法创建代理地址。请检查域名。 + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + 无法配置地址:“%1”。 + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + 无法配置账户设置。 + + + + assistant_account_login_forbidden_error + "Username and password do not match" + 用户名和密码不匹配 + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + 连接时出错 + + + + assistant_account_add_error + "Unable to add account." + 无法添加账户。 + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + 详细 + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + 编辑您账户户信息。 + + + + manage_account_devices_title + "Vos appareils" + 您的设备 + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + 连接到您账户的设备列表。您可以删除不再使用的设备。 + + + + manage_account_add_picture + "Ajouter une image" + 添加图像 + + + + manage_account_edit_picture + "Modifier l'image" + 修改图像 + + + + manage_account_remove_picture + "Supprimer l'image" + 删除图像 + + + + sip_address + SIP地址 + + + + sip_address_display_name + "Nom d'affichage + 昵称 + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + 在交流过程中显示给您的联系人的姓名。 + + + + manage_account_international_prefix + Indicatif international* + 国际代码* + + + + manage_account_delete + "Déconnecter mon compte" + 断开我的账户 + + + + manage_account_delete_message + 您的账户将从此Linphone客户端中删除,但您将在其他客户端上保持连接 + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + 退出账户? + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + 如果您想永久删除您的账户,请转到:https://sip.linphone.org + + + + error + Erreur + 错误 + + + + manage_account_device_remove + "Supprimer" + 删除 + + + + manage_account_device_remove_confirm_dialog + 删除 %1? + + + + manage_account_device_last_connection + "Dernière connexion:" + 上次登录时间: + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + 我的账户 + + + + settings_general_title + "Général" + 通用 + + + + settings_account_title + "Paramètres de compte" + 账户设置 + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + 未保存的更改 + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + 您有未保存的更改。如果您离开此页面,您的更改将丢失。您想在继续之前保存更改吗? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + 不保存 + + + + contact_editor_dialog_abort_confirmation_save + 保存 + + + + AccountSettingsParametersLayout + + + settings_title + 设置 + + + + settings_account_title + 账户设置 + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + 错误 + + + + information_popup_success_title + 成功 + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + 已保存更改 + + + + information_popup_error_title + 错误 + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + 语音邮箱服务器URI + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + 语音邮箱服务器URI + + + + account_settings_transport_title + "Transport" + 传输 + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + STUN服务器地址 + + + + account_settings_enable_ice_title + "Activer ICE" + 启用ICE + + + + account_settings_avpf_title + "AVPF" + AVPF + + + + account_settings_bundle_mode_title + "Mode bundle" + 捆绑模式 + + + + account_settings_expire_title + "Expiration (en seconde)" + 过期时间(秒) + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + 会议工厂URI + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + 视频会议工厂URI + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + 端对端加密服务器URL + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + 查找联系人 + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + 未找到结果… + + + + contact_list_empty + 暂时没有联系 + + + + AdvancedSettingsLayout + + + settings_system_title + System + 系统 + + + + settings_remote_provisioning_title + Remote provisioning + 远程部署 + + + + settings_security_title + Security / Encryption + 安全/加密 + + + + settings_advanced_audio_codecs_title + Audio codecs + 音频编解码器 + + + + settings_advanced_video_codecs_title + Video codecs + 视频编解码器 + + + + settings_advanced_auto_start_title + Auto start %1 + 自动启动%1 + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + 远程部署URL + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + 下载并应用 + + + + information_popup_error_title + Invalid URL format + 错误 + + + + settings_advanced_invalid_url_message + URL格式无效 + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + 媒体加密 + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + 强制媒体加密 + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + 创建端到端加密会议和群组呼叫 + + + + settings_advanced_hide_fps_title + 隐藏FPS + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + 收藏夹 + + + + generic_address_picker_contacts_list_title + 'Contacts' + 联系人 + + + + generic_address_picker_suggestions_list_title + "Suggestions" + 建议 + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + 您想从该地址下载并应用远程部署配置吗? + + + + + info_popup_error_title + Error + 错误 + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + 一款自由开源的SIP可视电话。 + + + + command_line_arg_order + "Send an order to the application towards a command line" + 通过命令行向应用程序发送命令 + + + + command_line_option_show_help + 显示此帮助 + + + + command_line_option_show_app_version + 显示应用程序版本 + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + 指定要获取的LinPhone配置文件。它将与当前配置合并。 + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + URL、路径或文件 + + + + command_line_option_minimized + 最小化 + + + + command_line_option_log_to_stdout + 运行时将一些调试信息记录到标准输出stdout + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + 仅打印应用程序中的日志 + + + + hide_action + "Cacher" "Afficher" + 隐藏 + + + + show_action + 显示 + + + + quit_action + "Quitter" + 退出 + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + 需要认证 + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + 账户%1登录失败。您可以再次输入密码或检查账户设置。 + + + + password + 密码 + + + + cancel + "Annuler + 取消 + + + + assistant_account_login + Connexion + 连接 + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + 请输入密码 + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + 录制已结束 + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + 录制已保存在文件中:%1 + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + 编解码器:%1/%2 kHz + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + 带宽:%1 %2 kbits/s %3 %4 kbits/s + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + 丢失率: %1% %2% + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + 抖动缓冲区:%1毫秒 + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + 视频分辨率:%1 %2 %3 %4 + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + FPS : %1 %2 %3 %4 + + + + media_encryption_dtls + DTLS + DTLS + + + + media_encryption_none + None + 没有 + + + + media_encryption_srtp + SRTP + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + 后量子ZRTP + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + 加入会议 + + + + contact_call_action + "Appel" + 通话 + + + + contact_message_action + "Message" + 消息 + + + + contact_video_call_action + "Appel Video" + 视频呼叫 + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + 你已离开会议 + + + + call_ended_by_user + "Vous avez terminé l'appel" + 您已结束通话 + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + 您的来电者已结束通话 + + + + conference_call_empty + "En attente d'autres participants…" + 正在等待其他参与者… + + + + conference_share_link_title + "Partager le lien" + 分享链接 + + + + copied + 已复制 + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + 会议链接已复制到剪贴板 + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + 错误 + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + 会议 + + + + call + "Appel" + 通话 + + + + paused_call_or_meeting + "%1 en pause" + %1已暂停 + + + + ongoing_call_or_meeting + "%1 en cours" + 正在进行%1 + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + 用户拒绝了通话 + + + + call_error_user_not_found_toast + "User was not found" + 找不到用户 + + + + call_error_user_busy_toast + "User is busy" + 用户正忙 + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + 用户无法接听您的电话 + + + + call_error_io_error_toast + "Unavailable service or network error" + 服务不可用或网络错误 + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + 服务器连接超时 + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + 新呼叫 + + + + call_history_empty_title + "Historique d'appel vide" + 清空通话记录 + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + 删除通话记录? + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + 通话记录将被永久删除。 + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + 删除通话记录? + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + 与此用户的通话记录将被永久删除。 + + + + call_history_call_list_title + "Appels" + 通话 + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + 删除历史 + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + 查找通话 + + + + list_filter_no_result_found + "Aucun résultat…" + 未找到结果… + + + + history_list_empty_history + "Aucun appel dans votre historique" + 没有通话历史 + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + 新呼叫 + + + + call_start_group_call_title + "Appel de groupe" + 群组通话 + + + + call_action_start_group_call + "Lancer" + 开始 + + + + + + information_popup_error_title + 错误 + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + 必须为呼叫提供名称 + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + 您未连接 + + + + menu_see_existing_contact + "Show contact" + 显示联系人 + + + + menu_add_address_to_contacts + "Add to contacts" + 添加到联系人通讯簿 + + + + menu_copy_sip_address + "Copier l'adresse SIP" + 复制SIP地址 + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + SIP地址已复制 + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + 地址已复制到剪贴板 + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + 复制地址时出错 + + + + notification_missed_call_title + "Appel manqué" + 未接来电 + + + + call_outgoing + "Appel sortant" + 呼出 + + + + call_audio_incoming + "Appel entrant" + 来电 + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + 设备 + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + 您可以更改音频输出设备、麦克风和摄像头。 + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + 回声消除器 + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + 防止对方听到回声 + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + 启用通话自动录制 + + + + settings_call_enable_tones_title + Tonalités + 铃声 + + + + settings_call_enable_tones_subtitle + Activer les tonalités + 启用铃声 + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + 启用视频 + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + 音频 + + + + call_stats_video_title + "Vidéo" + 视频 + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + 转发正在进行中,请稍候 + + + + + information_popup_error_title + 错误 + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + 转发失败 + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + 由于URI错误,会议无法开始。 + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + 结束所有当前通话? + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + 窗户即将关闭。这将结束所有当前通话。 + + + + call_can_be_trusted_toast + "Appareil authentifié" + 受信任的设备 + + + + call_dir + %1通话 + + + + call_ended + Appel terminé + 呼叫结束 + + + + conference_paused + Meeting paused + 会议已暂停 + + + + call_paused + Call paused + 通话已暂停 + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + 点对点加密呼叫 + + + + call_zrtp_sas_validation_required + Vérification nécessaire + 需要验证 + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + 端到端加密通话 + + + + call_not_encrypted + "Appel non chiffré" + 未加密呼叫 + + + + + call_waiting_for_encryption_info + Waiting for encryption + 正在等待加密 + + + + call_paused_by_remote + Call paused by remote + 通话被远程暂停 + + + + conference_user_is_recording + "You are recording the meeting" + 您正在录制会议 + + + + call_user_is_recording + "You are recording the call" + 您正在录制通话 + + + + conference_remote_is_recording + "Someone is recording the meeting" + 有人正在录制会议 + + + + call_remote_recording + "%1 is recording the call" + %1录制通话 + + + + call_stop_recording + "Stop recording" + 停止录制 + + + + add + 添加 + + + + call_transfer_current_call_title + "Transférer %1 à…" + 转发%1到… + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + 确认转发 + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + 您将把%1转发到%2。 + + + + call_action_start_new_call + "Nouvel appel" + 新呼叫 + + + + + call_action_show_dialer + "Pavé numérique" + 拨号 + + + + call_action_change_layout + "Modifier la disposition" + 更改布局 + + + + call_action_go_to_calls_list + "Liste d'appel" + 通话列表 + + + + Merger tous les appels + call_action_merge_calls + 合并所有通话 + + + + + call_action_go_to_settings + "Paramètres" + 设置 + + + + conference_action_screen_sharing + "Partage de votre écran" + 共享您的屏幕 + + + + conference_share_link_title + Partager le lien de la réunion + 共享会议链接 + + + + copied + Copié + 已复制 + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + 会议链接已复制到剪贴板 + + + + + + conference_participants_list_title + "Participants (%1)" + 参与者(%1) + + + + + group_call_participant_selected + + + + + + + meeting_schedule_add_participants_title + 添加参与者 + + + + call_encryption_title + Chiffrement + 加密 + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + 停止 + + + + stop_recording_accessible_name + Stop recording + 停止录制 + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + 统计 + + + + + call_action_end_call + "Terminer l'appel" + 结束通话 + + + + + call_action_resume_call + "Reprendre l'appel" + 恢复通话 + + + + + call_action_pause_call + "Mettre l'appel en pause" + 暂停通话 + + + + + call_action_transfer_call + "Transférer l'appel" + 转发通话 + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + 开始新呼叫 + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + 查看通话列表 + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + 关闭视频 + + + + + call_activate_video_hint + 启用视频 + + + + + call_activate_microphone + "Activer le micro" + 激活麦克风 + + + + + call_deactivate_microphone + "Désactiver le micro" + 静音麦克风 + + + + + call_share_screen_hint + Partager l'écran… + 共享屏幕… + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + 举来 + + + + + call_send_reaction_hint + "Envoyer une réaction" + 发送响应 + + + + + call_manage_participants_hint + "Gérer les participants" + 管理参与者 + + + + + call_more_options_hint + "Plus d'options…" + 更多选项… + + + + call_action_change_conference_layout + "Modifier la disposition" + 更改布局 + + + + call_action_full_screen + "Mode Plein écran" + 全屏模式 + + + + call_action_stop_recording + "Terminer l'enregistrement" + 结束录制 + + + + call_action_record + "Enregistrer l'appel" + 录制通话 + + + + call_activate_speaker_hint + "Activer le son" + 激活扬声器 + + + + call_deactivate_speaker_hint + "Désactiver le son" + 静音扬声器 + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + CardDAV通讯地址簿 + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + 添加CardDAV通讯簿,将您的Linphone联系人与第三方通讯簿同步。 + + + + information_popup_error_title + 错误 + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + 检查是否已输入所有信息。 + + + + information_popup_synchronization_success_title + 成功 + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + CardDAV通讯簿已同步。 + + + + settings_contacts_carddav_popup_synchronization_error_title + 错误 + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + 同步错误! + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + 删除CardDAV通讯簿? + + + + sip_address_display_name + Nom d'affichage + 昵称 + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + 服务器URL + + + + username + 用户名 + + + + password + 密码 + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + 认证域 + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + 在此处存储新创建的联系人 + + + + ChangeLayoutForm + + + conference_layout_grid + 网格 + + + + conference_layout_active_speaker + 当前发言人 + + + + conference_layout_audio_only + 仅限音频 + + + + ChatAudioContent + + + + information_popup_error_title + Error + 错误 + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + 删除 + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + 已复制 + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + 删除 + + + + ChatMessageContentCore + + + popup_error_title + Error + 错误 + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + popup_error_title + Error + 错误 + + + + popup_download_error_message + This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + 加入 + + + + ics_bubble_participants + %n participant(s) + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + 聊天 + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + 没有结果… + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + 创建 + + + + + + information_popup_error_title + 错误 + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + 您未连接 + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + 显示 + + + + fetch_config_function_description + 获取配置 + + + + call_function_description + 通话 + + + + bye_function_description + 挂断 + + + + accept_function_description + 接受 + + + + decline_function_description + 拒绝 + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + 错误 + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + 您的账户已断开连接 + + + + Contact + + + information_popup_error_title + Erreur + 错误 + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + 未定义语音邮件URI。 + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + 编辑联系人 + + + + save + "Enregistrer + 保存 + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + 更改将被丢弃。您想继续吗? + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + 请输入SIP地址或电话号码 + + + + contact_editor_add_image_label + "Ajouter une image" + 添加图像 + + + + contact_details_edit + "Modifier" + 编辑 + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + 删除 + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + 名字 + + + + + contact_editor_last_name + "Nom" + + + + + + contact_editor_company + "Entreprise" + 公司 + + + + + contact_editor_job_title + "Fonction" + 职位 + + + + + sip_address + SIP地址 + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + 电话号码 + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + 从收藏夹中删除 + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + 添加到收藏夹 + + + + Partager + 分享 + + + + information_popup_error_title + 错误 + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + 联系人VCard创建失败 + + + + information_popup_vcard_creation_title + VCard créée + 联系人VCard已创建 + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + VCard已保存在%1中 + + + + contact_sharing_email_title + Partage de contact + 分享联系人 + + + + contact_details_delete + "Supprimer" + 删除 + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + 添加联系人 + + + + contacts_list_empty + "Aucun contact pour le moment" + 目前没有联系人 + + + + contact_new_title + "Nouveau contact" + 新建联系人 + + + + create + 创建 + + + + contact_edit_title + "Modifier contact" + 编辑联系人 + + + + save + 保存 + + + + contact_dialog_delete_title + Supprimer %1 ?" + 删除 %1? + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + 此联系人将被永久删除。 + + + + contact_deleted_toast + "Contact supprimé" + 联系人已删除 + + + + contact_deleted_message + "%1 a été supprimé" + %1已被删除 + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + 提高信任级别 + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + 要提高信任级别,您必须呼叫联系人的设备并验证代码。<br><br>您将要呼叫“%1”,是否要继续? + + + + popup_do_not_show_again + Ne plus afficher + 不再显示 + + + + cancel + 取消 + + + + dialog_call + "Appeler" + 通话 + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + 信任级别 + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + 验证您联系人的设备,以确认您的通信是安全且不受影响的。当所有内容都得到验证时,您将达到最大信任级别。 + + + + dialog_ok + "Ok" + OK + + + + bottom_navigation_contacts_label + "Contacts" + 联系人 + + + + search_bar_look_for_contact_text + Rechercher un contact + 查找联系人 + + + + list_filter_no_result_found + Aucun résultat… + 没有结果… + + + + contact_list_empty + Aucun contact pour le moment + 目前没有联系人 + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + 编辑 + + + + contact_call_action + "Appel" + 通话 + + + + contact_message_action + "Message" + 消息 + + + + contact_video_call_action + "Appel vidéo" + 视频呼叫 + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + 联系人详细信息 + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + 公司: + + + + contact_details_job_title + "Poste :" + 职位: + + + + contact_details_medias_title + "Medias" + 媒体 + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + 显示共享媒体 + + + + contact_details_trust_title + "Confiance" + 信任 + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + 信任级别-已验证设备 + + + + contact_details_no_device_found + "Aucun appareil" + 没有设备 + + + + contact_device_without_name + "Appareil inconnu" + 未知设备 + + + + contact_make_call_check_device_trust + "Vérifier" + 验证 + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + 其他 + + + + contact_details_remove_from_favourites + "Retirer des favoris" + 从收藏夹中删除 + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + 添加到收藏夹 + + + + contact_details_share + "Partager" + 分享 + + + + information_popup_error_title + 错误 + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + 联系人VCard创建失败 + + + + contact_details_share_success_title + "VCard créée" + 联系人VCard已创建 + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + VCard已保存在%1中 + + + + contact_details_share_email_title + "Partage de contact" + 分享联系人 + + + + contact_details_delete + "Supprimer ce contact" + 删除联系人 + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + LDAP服务器 + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + 添加LDAP服务器,以便能够在魔术搜索栏中搜索。 + + + + settings_contacts_carddav_title + CardDAV通讯地址簿 + + + + settings_contacts_carddav_subtitle + 添加CardDAV通讯簿,将您的Linphone联系人与第三方通讯簿同步。 + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + 添加LDAP服务器 + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + 编辑LDAP服务器 + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + 添加一个CardDAV通讯簿 + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + 编辑一个CardDAV通讯簿 + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + 成功 + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + 更改已保存 + + + + add + "Ajouter" + 添加 + + + + ConversationInfos + + + one_one_infos_call + "Appel" + 通话 + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + 参与者(%1) + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + 其他 + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + 删除历史 + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + 显示联系人 + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + 删除历史 + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + 查找联系人 + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + 调试跟踪将被删除。您想继续吗? + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + 调试跟踪已上传。您希望如何分享该链接? + + + + settings_debug_clipboard + "Presse-papier" + 剪贴板 + + + + settings_debug_email + "E-Mail" + 电子邮件 + + + + debug_settings_trace + "Traces %1" + %1 跟踪 + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + 电子邮件共享失败。请将%1链接直接发送到%2。 + + + + + information_popup_error_title + Une erreur est survenue. + 发生了一个错误。 + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + 启用调试跟踪 + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + 启用完整日志 + + + + settings_debug_delete_logs_title + "Supprimer les traces" + 删除调试跟踪 + + + + settings_debug_share_logs_title + "Partager les traces" + 分享调试跟踪 + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + 上传调试跟踪… + + + + settings_debug_app_version_title + "Version de l'application" + 应用版本 + + + + settings_debug_sdk_version_title + "Version du SDK" + SDK版本 + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + 上传跟踪失败。您可以直接从以下目录共享跟踪文件:%1 + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + 不能为空 + + + + textfield_error_message_unknown_format + "Format non reconnu" + 未知格式 + + + + Dialog + + + + dialog_confirm + "Confirmer" + 确认 + + + + + dialog_cancel + "Annuler" + 取消 + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + 加密: + + + + call_stats_media_encryption + Media encryption : %1 + 媒体加密:%1%2 + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + 加密算法:%1 + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + 密钥协商算法:%1 + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + 哈希算法:%1 + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + 身份验证算法:%1 + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + SAS算法:%1 + + + + call_zrtp_validation_button_label + "Validation chiffrement" + 加密验证 + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + 已禁用 + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + SIP地址 + + + + + + device_id + "Téléphone" + 电话号码 + + + + information_popup_error_title + 错误 + + + + information_popup_invalid_address_message + "Adresse invalide" + 无效地址 + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + 管理参与者 + + + + group_infos_participant_is_admin + 管理员 + + + + menu_see_existing_contact + "Show contact" + 显示联系人 + + + + menu_add_address_to_contacts + "Add to contacts" + 添加到联系人通讯簿 + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + 群组名称 + + + + required + "Requis" + 需要的 + + + + HelpPage + + + help_title + "Aide" + 帮助 + + + + + help_about_title + "À propos de %1" + 关于%1 + + + + help_about_privacy_policy_title + "Règles de confidentialité" + 隐私政策 + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + %1收集和使用哪些信息 + + + + help_about_version_title + "Version" + 版本 + + + + help_about_gpl_licence_title + "Licences GPLv3" + GPLv3许可证 + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + 为%1的翻译做出贡献 + + + + help_troubleshooting_title + "Dépannage" + 故障排除 + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + LDAP服务器 + + + + settings_contacts_ldap_subtitle + 添加LDAP服务器,以便能够在魔术搜索栏中搜索。 + + + + information_popup_success_title + 成功 + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + LDAP服务器已保存 + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + 发生错误,LDAP配置未保存! + + + + information_popup_error_title + 错误 + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + 删除LDAP服务器? + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + 服务器URL(不能为空) + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + 绑定DN + + + + settings_contacts_ldap_password_title + "Mot de passe" + 密码 + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + 使用TLS + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + 研究基地Base(不能为空) + + + + settings_contacts_ldap_search_filter_title + "Filtre" + 过滤器 + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + 最大结果数 + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + 两次查询之间的延迟(毫秒) + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + 超时(秒) + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + 查询的最小字符数 + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + 名称属性 + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + SIP属性 + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + SIP域名 + + + + settings_contacts_ldap_debug_title + "Débogage" + 调试 + + + + LoadingPopup + + + cancel + 取消 + + + + LoginForm + + + + username + Nom d'utilisateur : username + 用户名 + + + + + password + Mot de passe + 密码 + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + 连接 + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + 请输入用户名 + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + 请输入密码 + + + + assistant_forgotten_password + "Mot de passe oublié ?" + 忘记密码? + + + + LoginLayout + + + + help_about_title + À propos de %1 + 关于%1 + + + + help_about_privacy_policy_title + "Politique de confidentialité" + 隐私政策 + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + 访问我们的隐私政策 + + + + help_about_version_title + "Version" + 版本 + + + + help_about_licence_title + "Licence" + 许可证 + + + + help_about_copyright_title + "Copyright + 版权 + + + + close + "Fermer" + 关闭 + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + 连接 + + + + assistant_no_account_yet + "Pas encore de compte ?" + 还没有账号? + + + + assistant_account_register + "S'inscrire" + 注册 + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + 第三方SIP账户 + + + + assistant_login_remote_provisioning + "Configuration distante" + 远程部署 + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + 下载远程部署配置 + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + 请输入提供给您的设置链接: + + + + cancel + 取消 + + + + validate + "Valider" + 确认 + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + 远程部署配置链接 + + + + default_account_connection_state_error_toast + 连接时出错 + + + + MagicSearchList + + + device_id + 电话号码 + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + 通话 + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + 联系人 + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + 聊天 + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + 会议 + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + 查找联系人,呼叫%1 + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + 或发送消息… + + + + do_not_disturb_accessible_name + "Do not disturb" + 请勿打扰 + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + 禁用请勿打扰 + + + + information_popup_error_title + 错误 + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + 未定义语音邮件URI。 + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + 我的账户 + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + 启用请勿打扰 + + + + settings_title + 设置 + + + + recordings_title + "Enregistrements" + 录音 + + + + help_title + "Aide" + 帮助 + + + + help_quit_title + "Quitter l'application" + 退出应用 + + + + quit_app_question + "Quitter %1 ?" + 退出%1? + + + + drawer_menu_add_account + "Ajouter un compte" + 添加账户 + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + 连接成功 + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + 您以%1模式登录 + + + + interoperable + interopérable + 互操作性 + + + + call_transfer_successful_toast_title + "Appel transféré" + 呼叫已转接 + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + 您的对话方已转接到所选联系人 + + + + information_popup_success_title + 已保存 + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + 更改已保存 + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + 请在网页上验证验证码 + + + + assistant_register_error_title + "Erreur lors de la création" + 创建时出错 + + + + assistant_register_success_title + "Compte créé" + 已创建账户 + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + 账户户已创建。您现在可以登录了。 + + + + assistant_register_error_code + "Erreur dans le code de validation" + 验证码错误 + + + + information_popup_error_title + 错误 + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + 会议 + + + + meeting_schedule_broadcast_label + "Webinar" + 网络线上研讨会 + + + + meeting_schedule_subject_hint + "Ajouter un titre" + 添加标题 + + + + meeting_schedule_description_hint + "Ajouter une description" + 添加描述 + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + 添加参与者 + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + 向参与者发送邀请 + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + 会议取消 + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + 今天没有会议 + + + + meeting_info_delete + "Supprimer la réunion" + 删除会议 + + + + MeetingPage + + + meetings_add + "Créer une réunion" + 创建会议 + + + + meetings_list_empty + "Aucune réunion" + 没有会议 + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + 您想取消并删除此会议吗? + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + 是否要删除此会议? + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + 取消并删除 + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + 仅删除 + + + + meeting_schedule_delete_action + "Supprimer" + 删除 + + + + back_action + Retour + 上一步 + + + + meetings_list_title + Réunions + 会议 + + + + meetings_search_hint + "Rechercher une réunion" + 查找会议 + + + + list_filter_no_result_found + "Aucun résultat…" + 没有结果… + + + + meetings_empty_list + "Aucune réunion" + 没有会议 + + + + + meeting_schedule_title + "Nouvelle réunion" + 新会议 + + + + create + 创建 + + + + + + + + + information_popup_error_title + 错误 + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + 请填写标题并选择至少一名参与者 + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + 会议的结束必须比开始晚 + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + 正在创建… + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + 会议已成功创建 + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + 创建会议失败! + + + + save + 保存 + + + + + saved + "Enregistré" + 已保存 + + + + meeting_info_updated_toast + "Réunion mise à jour" + 会议已更新 + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + 会议更新正在进行中… + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + 更新会议失败! + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + 添加参与者 + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + meeting_info_delete + "Supprimer la réunion" + 删除会议 + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + 已复制会议URI + + + + meeting_schedule_timezone_title + "Fuseau horaire" + 时区 + + + + meeting_info_organizer_label + "Organisateur" + 主办单位 + + + + meeting_info_join_title + "Rejoindre la réunion" + 加入会议 + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + 显示 + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + 默认显示模式 + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + 如何在会议中显示参与者 + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + 铃声-来电 + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + 发言人 + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + 麦克风 + + + + + multimedia_settings_camera_title + "Caméra" + 照相机 + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + 网络 + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + 正在进行的通话 + + + + call_start_group_call_title + Appel de groupe + 群组通话 + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + 来电 + + + + dialog_accept + "Accepter" + 接受 + + + + dialog_deny + "Refuser + 拒绝 + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + OAuthHttpServerReplyHandler未在侦听 + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + 超时:未通过身份验证 + + + + oidc_authentication_granted_message + Authentication granted + 已授予身份验证 + + + + oidc_authentication_not_authenticated_message + Not authenticated + 未通过身份验证 + + + + oidc_authentication_refresh_message + Refreshing token + 刷新令牌 + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + 已收到临时凭据 + + + + oidc_authentication_network_error + Network error + 网络错误 + + + + oidc_authentication_server_error + Server error + 服务器错误 + + + + oidc_authentication_token_not_found_error + OAuth token not found + 找不到OAuth令牌 + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + 未找到OAuth令牌密钥 + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + OAuth回调未验证 + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + 向浏览器请求授权中 + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + 请求访问令牌中 + + + + oidc_authentication_refresh_token_message + Refreshing access token + 刷新访问令牌中 + + + + oidc_authentication_request_authorization_message + Requesting authorization + 请求授权中 + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + 请求临时凭据 + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + 在OpenID配置中找不到授权终结点 + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + 在OpenID配置中找不到令牌终结点 + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + 管理员 + + + + meeting_add_participants_title + "Ajouter des participants" + 添加参与者 + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + 编辑 + + + + contact_presence_button_delete_custom_status + 删除 + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + 保存 + + + + QObject + + + media_encryption_dtls + DTLS + + + + media_encryption_none + 没有 + + + + media_encryption_srtp + SRTP + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + 后量子ZRTP + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + 来电 + + + + outgoing + "Sortant" + 去电 + + + + conference_layout_active_speaker + "Participant actif" + 当前发言人 + + + + conference_layout_grid + "Mosaïque" + 网格 + + + + conference_layout_audio_only + "Audio uniquement" + 仅限音频 + + + + RegisterCheckingPage + + + email + "email" + 电子邮件 + + + + phone_number + "numéro de téléphone" + 电话号码 + + + + confirm_register_title + "Inscription | Confirmer votre %1" + 注册|确认您的%1 + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + 我们已向您的%1 %2发送了验证码<br>请在下面输入 + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + 没有收到代码? + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + 重新发送验证码 + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + 注册 + + + + assistant_already_have_an_account + 已经有账号了? + + + + assistant_account_login + 连接 + + + + assistant_account_register_with_phone_number + 使用电话号码注册 + + + + assistant_account_register_with_email + 通过电子邮件注册 + + + + + username + 用户名 + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + 域名 + + + + + + phone_number + "Numéro de téléphone" + 电话号码 + + + + + email + 电子邮件 + + + + + password + 密码 + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + 密码确认 + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + 我接受%1和%2 + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + 使用条款 + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + 隐私政策 + + + + assistant_account_create + "Créer" + 创建 + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + 请输入用户名 + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + 请输入密码 + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + 密码不匹配 + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + 请输入电话号码 + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + 请输入电子邮件 + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + 第三方SIP账户 + + + + assistant_no_account_yet + Pas encore de compte ? + 还没有账号? + + + + assistant_account_register + S'inscrire + 注册 + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + 某些功能(如群聊、视频会议等)需要%1账户。 + +如果您使用第三方SIP账户,这些功能将被隐藏。 + +为了使他们能够参与商业项目,请联系我们。 + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + 创建linphone账户 + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + 我明白 + + + + + username + "Nom d'utilisateur" + 用户名 + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + 密码 + + + + + sip_address_domain + "Domaine" + 域名 + + + + + sip_address_display_name + Nom d'affichage + 昵称 + + + + + transport + "Transport" + 传输 + + + + + assistant_account_login + 连接 + + + + assistant_account_login_missing_username + 请输入用户名 + + + + assistant_account_login_missing_password + 请输入密码 + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + 请输入域名 + + + + login_advanced_parameters_label + Advanced parameters + 高级参数 + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + 请选择要与其他参与者共享的屏幕或窗口。 + + + + screencast_settings_all_screen_label + "Ecran entier" + 全屏 + + + + screencast_settings_one_window_label + "Fenêtre" + 窗口 + + + + screencast_settings_screen + "Ecran %1" + 屏幕%1 + + + + stop + "Stop + 停止 + + + + share + "Partager" + 分享 + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + 选择您的模式 + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + 您可以稍后更改模式。 + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + 端对端加密 + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + 此模式保证您所有通信的机密性。我们的端到端加密技术可确保您所有通信的最大安全性。 + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + 互操作性 + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + 此模式允许您受益于Linphone的所有功能,同时保持与任何其他SIP服务的互操作性。 + + + + dialog_continue + "Continuer" + 继续 + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + 加密所有文件 + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + 警告:一旦启用,就不能禁用! + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + 聊天 + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + 设置 + + + + settings_calls_title + "Appels" + 通话 + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + 聊天 + + + + settings_contacts_title + "Contacts" + 联系人 + + + + settings_meetings_title + "Réunions" + 会议 + + + + settings_network_title + "Affichage" "Security" "Réseau" + 网络 + + + + settings_advanced_title + "Paramètres avancés" + 高级参数 + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + 未保存的更改 + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + 您有未保存的更改。如果您离开此页面,您的更改将丢失。您想在继续之前保存更改吗? + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + 不保存 + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + 保存 + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + 加入… + + + + conference_participant_paused_text + "En pause" + 已暂停 + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + 呼叫地址不是可解释的SIP地址:%1 + + + + group_call_error_no_account + 未找到默认账户,无法创建组呼叫 + + + + group_call_error_participants_invite + 无法邀请参与者进行群呼 + + + + group_call_error_creation + 无法创建组呼叫 + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + 未知设备名称 + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + nMinute + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + nDay + + + + + + + nWeek + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + 忙碌的 + + + + contact_presence_status_do_not_disturb + 请勿打扰 + + + + contact_presence_status_offline + 离线 + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + 无法创建呼叫 + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + 错误 + + + + information_popup_group_call_not_created_message + 无法创建组呼叫 + + + + number_of_years + %n an(s) + + %1年 + + + + + number_of_month + "%n mois" + + %1月 + + + + + number_of_weeks + %n semaine(s) + + %1周 + + + + + number_of_days + %n jour(s) + + %1天 + + + + + today + "Aujourd'hui" + 今天 + + + + yesterday + "Hier + 昨天 + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + 错误 + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + 加入: + + + + meeting_waiting_room_join + "Rejoindre" + 加入 + + + + + cancel + Cancel + 取消 + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + 与会议的连接 + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + 您稍后将加入会议... + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + 欢迎 + + + + welcome_page_subtitle + "sur %1" + 在%1 + + + + welcome_carousel_skip + "Passer" + 跳过 + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + <b>安全</b>、<br><b>开源</b>和<b>法语</b>通信应用程序。 + + + + welcome_page_2_title + "Sécurisé" + 安全 + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + 由于<br><b>端到端加密</b>,您的通信是安全的。 + + + + welcome_page_3_title + "Open Source" + 开源 + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + 自2001年以来,一个开源应用程序和一个自由服务</b> + + + + next + "Suivant" + 下一步 + + + + start + "Commencer" + 开始 + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + 安全检查 + + + + call_zrtp_sas_validation_skip + "Passer" + 跳过 + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + 为了确保加密,我们需要重新验证您联系人的设备。交换您的代码: + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + 为了确保加密,我们需要验证您联系人的设备。请交换您的代码: + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + 您的验证码: + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + 对话方验证码: + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + 提供的验证码不匹配。 + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + 您通话的保密性可能会受到损害! + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + 不匹配 + + + + call_action_hang_up + "Raccrocher" + 挂断 + + + + country + + + Afghanistan + 阿富汗 + + + + Albania + 阿尔巴尼亚 + + + + Algeria + 阿尔及利亚 + + + + AmericanSamoa + 美属萨摩亚 + + + + Andorra + 安道尔 + + + + Angola + 安哥拉 + + + + Anguilla + 安圭拉 + + + + AntiguaAndBarbuda + 安提瓜和巴布达 + + + + Argentina + 阿根廷 + + + + Armenia + 亚美尼亚 + + + + Aruba + 阿鲁巴 + + + + Australia + 澳大利亚 + + + + Austria + 奥地利 + + + + Azerbaijan + 阿塞拜疆 + + + + Bahamas + 巴哈马 + + + + Bahrain + 巴林 + + + + Bangladesh + 孟加拉国 + + + + Barbados + 巴巴多斯 + + + + Belarus + 白俄罗斯 + + + + Belgium + 比利时 + + + + Belize + 伯利兹 + + + + Benin + 贝宁 + + + + Bermuda + 百慕大群岛 + + + + Bhutan + 不丹 + + + + Bolivia + 玻利维亚 + + + + BosniaAndHerzegowina + 波斯尼亚和黑塞哥维那 + + + + Botswana + 博茨瓦纳 + + + + Brazil + 巴西 + + + + Brunei + 文莱 + + + + Bulgaria + 保加利亚 + + + + BurkinaFaso + 布基纳法索 + + + + Burundi + 布隆迪 + + + + Cambodia + 柬埔寨 + + + + Cameroon + 喀麦隆 + + + + Canada + 加拿大 + + + + CapeVerde + 佛得角共和国 + + + + CaymanIslands + Cayman Islands + + + + CentralAfricanRepublic + 中非共和国 + + + + Chad + 乍得共和国 + + + + Chile + 智利 + + + + China + 中国 + + + + Colombia + 哥伦比亚 + + + + Comoros + 科摩罗 + + + + PeoplesRepublicOfCongo + 刚果人民共和国 + + + + CookIslands + 库克群岛 + + + + CostaRica + 哥斯达黎加 + + + + IvoryCoast + 科特迪瓦共和国 + + + + Croatia + 克罗地亚 + + + + Cuba + 古巴 + + + + Cyprus + 塞浦路斯 + + + + CzechRepublic + 捷克共和国 + + + + Denmark + 丹麦 + + + + Djibouti + 吉布提 + + + + Dominica + 多米尼克 + + + + DominicanRepublic + 多米尼加共和国 + + + + Ecuador + 厄瓜多尔 + + + + Egypt + 埃及 + + + + ElSalvador + 萨尔瓦多 + + + + EquatorialGuinea + 赤道几内亚 + + + + Eritrea + 厄立特里亚 + + + + Estonia + 爱沙尼亚 + + + + Ethiopia + 埃塞俄比亚 + + + + FalklandIslands + 福克兰群岛 + + + + FaroeIslands + 法罗群岛 + + + + Fiji + 斐济 + + + + Finland + 芬兰 + + + + France + 法国 + + + + FrenchGuiana + 法属圭亚那 + + + + FrenchPolynesia + 法属波利尼西亚 + + + + Gabon + 加蓬 + + + + Gambia + 冈比亚 + + + + Georgia + 格鲁吉亚 + + + + Germany + 德国 + + + + Ghana + 加纳 + + + + Gibraltar + 直布罗陀 + + + + Greece + 希腊 + + + + Greenland + 格陵兰 + + + + Grenada + 格林纳达 + + + + Guadeloupe + 瓜德罗普岛 + + + + Guam + 关岛 + + + + Guatemala + 危地马拉 + + + + Guinea + 几尼 + + + + GuineaBissau + 几内亚比绍 + + + + Guyana + 圭亚那 + + + + Haiti + 海地 + + + + Honduras + 洪都拉斯 + + + + DemocraticRepublicOfCongo + 刚果民主共和国 + + + + HongKong + 香港 + + + + Hungary + 匈牙利 + + + + Iceland + 冰岛 + + + + India + 印度 + + + + Indonesia + 印度尼西亚 + + + + Iran + 伊朗 + + + + Iraq + 伊拉克 + + + + Ireland + 爱尔兰 + + + + Israel + 以色列 + + + + Italy + 意大利 + + + + Jamaica + 牙买加 + + + + Japan + 日本 + + + + Jordan + 约旦 + + + + Kazakhstan + 哈萨克斯坦 + + + + Kenya + 肯尼亚 + + + + Kiribati + 基里巴斯 + + + + DemocraticRepublicOfKorea + 朝鲜民主主义共和国 + + + + RepublicOfKorea + 韩国 + + + + Kuwait + 科威特 + + + + Kyrgyzstan + 吉尔吉斯斯坦 + + + + Laos + 老挝 + + + + Latvia + 拉脱维亚 + + + + Lebanon + 黎巴嫩 + + + + Lesotho + 莱索托 + + + + Liberia + 利比里亚 + + + + Libya + 利比亚 + + + + Liechtenstein + 列支敦士登 + + + + Lithuania + 立陶宛 + + + + Luxembourg + 卢森堡 + + + + Macau + 澳门 + + + + Macedonia + 马其顿 + + + + Madagascar + 马达加斯加 + + + + Malawi + 马拉维 + + + + Malaysia + 马来西亚 + + + + Maldives + 马尔代夫 + + + + Mali + 马里 + + + + Malta + 马耳他 + + + + MarshallIslands + 马绍尔群岛 + + + + Martinique + 马提尼克 + + + + Mauritania + 毛里塔尼亚 + + + + Mauritius + 毛里求斯 + + + + Mayotte + 马约特 + + + + Mexico + 墨西哥 + + + + Micronesia + 密克罗尼西亚 + + + + Moldova + 摩尔多瓦共和国 + + + + Monaco + 摩纳哥 + + + + Mongolia + 蒙古 + + + + Montenegro + 黑山 + + + + Montserrat + 蒙特塞拉特 + + + + Morocco + 摩洛哥 + + + + Mozambique + 莫桑比克 + + + + Myanmar + 缅甸 + + + + Namibia + 纳米比亚 + + + + NauruCountry + 瑙鲁国家 + + + + Nepal + 尼泊尔 + + + + Netherlands + 荷兰 + + + + NewCaledonia + 新喀里多尼亚 + + + + NewZealand + 新西兰 + + + + Nicaragua + 尼加拉瓜 + + + + Niger + 尼日尔 + + + + Nigeria + 尼日利亚 + + + + Niue + 纽埃 + + + + NorfolkIsland + 诺福克岛 + + + + NorthernMarianaIslands + 北马里亚纳群岛 + + + + Norway + 挪威 + + + + Oman + Oman + + + + Pakistan + 巴基斯坦 + + + + Palau + 帕劳 + + + + PalestinianTerritories + 巴勒斯坦领土 + + + + Panama + 巴拿马 + + + + PapuaNewGuinea + 巴布亚新几内亚 + + + + Paraguay + 巴拉圭 + + + + Peru + 秘鲁 + + + + Philippines + 菲律宾 + + + + Poland + 波兰 + + + + Portugal + 葡萄牙 + + + + PuertoRico + 波多黎各 + + + + Qatar + 卡塔尔 + + + + Reunion + 留尼汪岛 + + + + Romania + Romania + + + + RussianFederation + 俄罗斯联邦 + + + + Rwanda + 卢旺达 + + + + SaintHelena + 圣赫勒拿 + + + + SaintKittsAndNevis + 圣基茨和尼维斯 + + + + SaintLucia + 圣卢西亚 + + + + SaintPierreAndMiquelon + 圣皮埃尔和密克隆岛 + + + + SaintVincentAndTheGrenadines + 圣文森特和格林纳丁斯 + + + + Samoa + 萨摩亚 + + + + SanMarino + San-Marino + + + + SaoTomeAndPrincipe + 圣多美和普林西比 + + + + SaudiArabia + 沙特阿拉伯 + + + + Senegal + 塞内加尔 + + + + Serbia + 塞尔维亚 + + + + Seychelles + 塞舌尔 + + + + SierraLeone + 塞拉利昂 + + + + Singapore + 新加坡 + + + + Slovakia + 斯洛伐克 + + + + Slovenia + 斯洛文尼亚 + + + + SolomonIslands + 所罗门群岛 + + + + Somalia + 索马里 + + + + SouthAfrica + 南非 + + + + Spain + 西班牙 + + + + SriLanka + 斯里兰卡 + + + + Sudan + 苏丹 + + + + Suriname + 苏里南 + + + + Swaziland + 斯威士兰 + + + + Sweden + 瑞典 + + + + Switzerland + 瑞士 + + + + Syria + 叙利亚 + + + + Taiwan + 台湾 + + + + Tajikistan + 塔吉克斯坦 + + + + Tanzania + 坦桑尼亚 + + + + Thailand + 泰国 + + + + Togo + 多哥 + + + + Tokelau + 托克劳 + + + + Tonga + 汤加 + + + + TrinidadAndTobago + 特立尼达和多巴哥 + + + + Tunisia + 突尼斯 + + + + Turkey + 土耳其 + + + + Turkmenistan + 土库曼斯坦 + + + + TurksAndCaicosIslands + 特克斯与凯科斯群岛 + + + + Tuvalu + 图瓦卢 + + + + Uganda + 乌干达 + + + + Ukraine + Ukraine + + + + UnitedArabEmirates + 阿拉伯联合酋长国 + + + + UnitedKingdom + 英国 + + + + UnitedStates + 美国 + + + + Uruguay + 乌拉圭 + + + + Uzbekistan + 乌兹别克斯坦 + + + + Vanuatu + 瓦努阿图 + + + + Venezuela + 委内瑞拉 + + + + Vietnam + 越南 + + + + WallisAndFutunaIslands + 瓦利斯和富图纳群岛 + + + + Yemen + 也门 + + + + Zambia + 赞比亚 + + + + Zimbabwe + 津巴布韦 + + + + utils + + + formatYears + '%1 year' + + %1年 + + + + + formatMonths + '%1 month' + + %1月 + + + + + formatWeeks + '%1 week' + + %1周 + + + + + formatDays + '%1 day' + + %1天 + + + + + formatHours + '%1 hour' + + %1时 + + + + + formatMinutes + '%1 minute' + + %1分 + + + + + formatSeconds + '%1 second' + + %1秒 + + + + + codec_install + "Installation de codec" + 编解码器安装 + + + + download_codec + "Télécharger le codec %1 (%2) ?" + 是否下载编解码器%1(%2)? + + + + information_popup_success_title + "Succès" + 成功 + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + 编解码器已成功安装。 + + + + + + information_popup_error_title + 错误 + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + 无法安装编解码器。 + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + 无法保存编解码器。 + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + 无法下载编解码器。 + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + Download in progress… + + + + okButton + OK + + + From b3135ea17713885f16fd38277ed3190ad8e6a2ec Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 27 Oct 2025 14:22:41 +0100 Subject: [PATCH 02/72] Fixes: fix wrong thread function call hide recordings button while not implemented display error message if cannot retrieve remote provisioning --- Linphone/core/call/CallCore.cpp | 8 ++++---- Linphone/data/languages/de.ts | 18 ++++++++++++++++-- Linphone/data/languages/en.ts | 18 ++++++++++++++++-- Linphone/data/languages/fr.ts | 18 ++++++++++++++++-- Linphone/model/core/CoreModel.cpp | 5 ++++- Linphone/view/Page/Layout/Main/MainLayout.qml | 2 +- 6 files changed, 57 insertions(+), 12 deletions(-) diff --git a/Linphone/core/call/CallCore.cpp b/Linphone/core/call/CallCore.cpp index cb7acb750..3058c61ce 100644 --- a/Linphone/core/call/CallCore.cpp +++ b/Linphone/core/call/CallCore.cpp @@ -204,15 +204,15 @@ void CallCore::setSelf(QSharedPointer me) { }); mCallModelConnection->makeConnectToModel( &CallModel::recordingChanged, [this](const std::shared_ptr &call, bool recording) { - mCallModelConnection->invokeToCore([this, recording]() { + auto recordFile = QString::fromStdString(mCallModel->getRecordFile()); + mCallModelConnection->invokeToCore([this, recording, recordFile]() { setRecording(recording); if (recording == false) { //: "Enregistrement terminé" Utils::showInformationPopup(tr("call_record_end_message"), //: "L'appel a été enregistré dans le fichier : %1" - tr("call_record_saved_in_file_message") - .arg(QString::fromStdString(mCallModel->getRecordFile())), - true, App::getInstance()->getCallsWindow()); + tr("call_record_saved_in_file_message").arg(recordFile), true, + App::getInstance()->getCallsWindow()); } }); }); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index ab6438412..bbde498bb 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -773,13 +773,13 @@ CallCore - + call_record_end_message "Enregistrement terminé" Aufnahme beendet - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Die Aufnahme wurde in der folgenden Datei gespeichert: %1 @@ -3445,6 +3445,20 @@ Error Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren? + + CoreModel + + + info_popup_error_title + Fehler + + + + fetching_config_failed_error_message + "Remote provisioning cannot be retrieved" + + + CreationFormLayout diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index d20d254be..fda47b387 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -768,13 +768,13 @@ CallCore - + call_record_end_message "Enregistrement terminé" Recording ended - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Recording has been saved in file : %1 @@ -3349,6 +3349,20 @@ Only your correspondent can decrypt them. All the messages will be removed from the chat room. Do you want to continue ? + + CoreModel + + + info_popup_error_title + Error + + + + fetching_config_failed_error_message + "Remote provisioning cannot be retrieved" + Remote provisioning cannot be retrieved + + CreationFormLayout diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index c6c66486e..8aa4912fa 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -768,13 +768,13 @@ CallCore - + call_record_end_message "Enregistrement terminé" Enregistrement terminé - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" L'appel a été enregistré dans le fichier : %1 @@ -3349,6 +3349,20 @@ en bout. Seul votre correspondant peut les déchiffrer. Tous les messages seront supprimés. Souhaitez-vous continuer ? + + CoreModel + + + info_popup_error_title + Erreur + + + + fetching_config_failed_error_message + "Remote provisioning cannot be retrieved" + La configuration distante n'a pas pu être récupérée + + CreationFormLayout diff --git a/Linphone/model/core/CoreModel.cpp b/Linphone/model/core/CoreModel.cpp index cd8096a20..143524322 100644 --- a/Linphone/model/core/CoreModel.cpp +++ b/Linphone/model/core/CoreModel.cpp @@ -216,7 +216,10 @@ QString CoreModel::getFetchConfig(QString filePath, bool *error) { if (!filePath.isEmpty()) filePath = "file://" + filePath; } if (filePath.isEmpty()) { - qWarning() << "Remote provisionning cannot be retrieved. Command have been cleaned"; + qWarning() << "Remote provisioning cannot be retrieved. Command have been cleaned"; + Utils::showInformationPopup(tr("info_popup_error_title"), + //: "Remote provisioning cannot be retrieved" + tr("fetching_config_failed_error_message"), false); *error = true; } } diff --git a/Linphone/view/Page/Layout/Main/MainLayout.qml b/Linphone/view/Page/Layout/Main/MainLayout.qml index bd31603fe..6f94bb336 100644 --- a/Linphone/view/Page/Layout/Main/MainLayout.qml +++ b/Linphone/view/Page/Layout/Main/MainLayout.qml @@ -494,7 +494,7 @@ Item { IconLabelButton { id: recordsButton Layout.fillWidth: true - visible: !SettingsCpp.disableCallRecordings + visible: false// !SettingsCpp.disableCallRecordings icon.width: Utils.getSizeWithScreenRatio(32) icon.height: Utils.getSizeWithScreenRatio(32) //: "Enregistrements" From cb63b1a112d19591bbac9826db38ef9d7edd918d Mon Sep 17 00:00:00 2001 From: gaelle Date: Mon, 27 Oct 2025 18:20:32 +0100 Subject: [PATCH 03/72] set enableVideo to false if audio call #LINQT-2086 --- Linphone/model/call/CallModel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linphone/model/call/CallModel.cpp b/Linphone/model/call/CallModel.cpp index a753b377e..41b9f3474 100644 --- a/Linphone/model/call/CallModel.cpp +++ b/Linphone/model/call/CallModel.cpp @@ -132,7 +132,7 @@ void CallModel::activateLocalVideo(std::shared_ptr ¶ms lInfo() << sLog() .arg("Updating call with video enabled and media direction set to %1") .arg((int)params->getVideoDirection()); - params->enableVideo(SettingsModel::getInstance()->getVideoEnabled()); + params->enableVideo(enable); auto videoDirection = enable ? linphone::MediaDirection::SendRecv : linphone::MediaDirection::RecvOnly; params->setVideoDirection(videoDirection); } From eb9fa8aefe6ca77b3e8ca775ab4ba384cbe13f10 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Thu, 30 Oct 2025 11:39:51 +0100 Subject: [PATCH 04/72] update German and French translations (Mantis + #LINQT-2092) --- Linphone/data/languages/de.ts | 24 ++---------------------- Linphone/data/languages/fr.ts | 2 +- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index bbde498bb..be3f41b36 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -924,26 +924,6 @@ CallHistoryLayout - - contact_presence_status_online - "En ligne" - Online - - - contact_presence_status_busy - "Occupé" - Beschäftigt - - - contact_presence_status_do_not_disturb - "Ne pas déranger" - Nicht stören - - - contact_presence_status_offline - "Hors ligne" - Offline - meeting_info_join_title @@ -6077,12 +6057,12 @@ Failed to create 1-1 conversation with %1 ! contact_presence_status_available - + Verfügbar contact_presence_status_away - + Abwesend diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 8aa4912fa..c804a2466 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -724,7 +724,7 @@ mark_all_read_action - Mark all as read + Marquer tout comme lu From d4ce80f8c6201785e0e0305be9bff84c40215f7a Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 28 Oct 2025 09:28:07 +0100 Subject: [PATCH 05/72] README.md mentions QT6 additional modules. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cc00b02ea..c53a5e603 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ For Desktop : you will need QT6 (_6.5.3 or newer_). `C++17` support is required! - Using the [official QT installer](https://www.qt.io/download-thank-you) - Using an alternative installer like [aqtinstall](https://github.com/miurahr/aqtinstall) +The following QT optional modules are required: qt5compat, qtmultimedia qtnetworkauth qtshadertools . + ### Set your environment 1. Make sure you have all your build dependencies installed @@ -371,4 +373,4 @@ On some OS (like Fedora 22 and later), they disable Qt debug output by default. [Rules] *.debug=true qt.*.debug=false -``` \ No newline at end of file +``` From 2d9f568e3d70a8a17433560f3a6d57688d97330b Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 27 Oct 2025 14:09:34 +0100 Subject: [PATCH 06/72] Fixes : rename fr translation set enableVideo to false if audio call #LINQT-2086 try to fix crash on macos when switching from call window to main window (#LINQT-2077 and #LINQT-2087) set error message when not able to download attached file fix remove chat from list fix new chat connection after first message sent #LINQT-2090 clean code + invalidate() for Qt6.10 compatibility fix translations --- Linphone/core/chat/ChatCore.cpp | 12 +- Linphone/core/chat/ChatCore.hpp | 1 - Linphone/core/chat/ChatList.cpp | 23 +- Linphone/core/chat/ChatList.hpp | 1 - Linphone/core/chat/ChatProxy.cpp | 5 +- Linphone/core/chat/ChatProxy.hpp | 3 - Linphone/core/chat/message/EventLogList.cpp | 11 +- Linphone/core/chat/message/EventLogList.hpp | 1 - Linphone/core/chat/message/EventLogProxy.cpp | 6 +- .../content/ChatMessageContentCore.cpp | 13 +- .../content/ChatMessageContentList.cpp | 3 +- .../core/participant/ParticipantProxy.cpp | 2 +- Linphone/core/proxy/LimitProxy.cpp | 10 +- Linphone/core/proxy/SortFilterProxy.cpp | 3 +- Linphone/data/languages/de.ts | 624 +++++++++-------- Linphone/data/languages/en.ts | 623 +++++++++-------- Linphone/data/languages/fr.ts | 625 +++++++++--------- .../content/ChatMessageContentModel.cpp | 38 +- .../content/ChatMessageContentModel.hpp | 12 +- Linphone/tool/LinphoneEnums.cpp | 3 + Linphone/tool/Utils.cpp | 9 +- .../Control/Display/Chat/ChatListView.qml | 6 +- .../Control/Display/Chat/ImageFileView.qml | 4 +- .../Display/Meeting/MeetingListView.qml | 2 - .../view/Page/Form/Chat/SelectedChatView.qml | 3 +- .../Page/Main/Account/AccountListView.qml | 2 +- Linphone/view/Page/Main/Chat/ChatPage.qml | 2 +- .../view/Page/Window/Call/CallsWindow.qml | 12 +- 28 files changed, 1091 insertions(+), 968 deletions(-) diff --git a/Linphone/core/chat/ChatCore.cpp b/Linphone/core/chat/ChatCore.cpp index a29e08bf9..30547bb63 100644 --- a/Linphone/core/chat/ChatCore.cpp +++ b/Linphone/core/chat/ChatCore.cpp @@ -207,7 +207,7 @@ void ChatCore::setSelf(QSharedPointer me) { &ChatModel::newEvent, [this](const std::shared_ptr &chatRoom, const std::shared_ptr &eventLog) { if (mChatModel->getMonitor() != chatRoom) return; - qDebug() << "EVENT LOG RECEIVED IN CHATROOM" << mChatModel->getTitle(); + lDebug() << "EVENT LOG RECEIVED IN CHATROOM" << mChatModel->getTitle(); auto event = EventLogCore::create(eventLog); if (event->isHandled()) { mChatModelConnection->invokeToCore([this, event]() { emit eventsInserted({event}); }); @@ -220,7 +220,7 @@ void ChatCore::setSelf(QSharedPointer me) { &ChatModel::chatMessagesReceived, [this](const std::shared_ptr &chatRoom, const std::list> &eventsLog) { if (mChatModel->getMonitor() != chatRoom) return; - qDebug() << "CHAT MESSAGE RECEIVED IN CHATROOM" << mChatModel->getTitle(); + lDebug() << "CHAT MESSAGE RECEIVED IN CHATROOM" << mChatModel->getTitle(); QList> list; for (auto &e : eventsLog) { auto event = EventLogCore::create(e); @@ -491,7 +491,7 @@ ChatMessageGui *ChatCore::getLastMessage() const { void ChatCore::setLastMessage(QSharedPointer lastMessage) { if (mLastMessage != lastMessage) { - disconnect(mLastMessage.get()); + if (mLastMessage) disconnect(mLastMessage.get(), &ChatMessageCore::messageStateChanged, this, nullptr); mLastMessage = lastMessage; connect(mLastMessage.get(), &ChatMessageCore::messageStateChanged, this, &ChatCore::lastMessageChanged); emit lastMessageChanged(); @@ -544,10 +544,6 @@ std::shared_ptr ChatCore::getModel() const { return mChatModel; } -QSharedPointer> ChatCore::getChatModelConnection() const { - return mChatModelConnection; -} - bool ChatCore::isMuted() const { return mIsMuted; } @@ -681,4 +677,4 @@ void ChatCore::updateInfo(const std::shared_ptr &updatedFriend } } } -} \ No newline at end of file +} diff --git a/Linphone/core/chat/ChatCore.hpp b/Linphone/core/chat/ChatCore.hpp index 9ec758050..c3fe9e9ad 100644 --- a/Linphone/core/chat/ChatCore.hpp +++ b/Linphone/core/chat/ChatCore.hpp @@ -142,7 +142,6 @@ public: void setComposingAddress(QString composingAddress); std::shared_ptr getModel() const; - QSharedPointer> getChatModelConnection() const; void setParticipants(QList> participants); QList> buildParticipants(const std::shared_ptr &chatRoom) const; diff --git a/Linphone/core/chat/ChatList.cpp b/Linphone/core/chat/ChatList.cpp index 222a1e1f6..ba0fbc846 100644 --- a/Linphone/core/chat/ChatList.cpp +++ b/Linphone/core/chat/ChatList.cpp @@ -55,11 +55,11 @@ ChatList::~ChatList() { void ChatList::connectItem(QSharedPointer chat) { connect(chat.get(), &ChatCore::deleted, this, [this, chat] { - disconnect(chat.get()); + disconnect(chat.get(), &ChatCore::unreadMessagesCountChanged, this, nullptr); + disconnect(chat.get(), &ChatCore::lastUpdatedTimeChanged, this, nullptr); + disconnect(chat.get(), &ChatCore::lastMessageChanged, this, nullptr); + disconnect(chat.get(), &ChatCore::deleted, this, nullptr); remove(chat); - // We cannot use countChanged here because it is called before mList - // really has removed the item, then emit specific signal - emit chatRemoved(chat ? new ChatGui(chat) : nullptr); }); auto dataChange = [this, chat] { int i = -1; @@ -94,7 +94,6 @@ void ChatList::setSelf(QSharedPointer me) { mModelConnection->invokeToModel([this]() { mustBeInLinphoneThread(getClassName()); beginResetModel(); - mList.clear(); // Avoid copy to lambdas QList> *chats = new QList>(); auto currentAccount = CoreModel::getInstance()->getCore()->getDefaultAccount(); @@ -118,6 +117,7 @@ void ChatList::setSelf(QSharedPointer me) { disconnect(chat.get(), &ChatCore::lastMessageChanged, this, nullptr); } } + mList.clear(); for (auto &chat : *chats) { connectItem(chat); } @@ -143,18 +143,7 @@ void ChatList::setSelf(QSharedPointer me) { return; } auto chatCore = ChatCore::create(room); - mModelConnection->invokeToCore([this, chatCore] { - auto chatList = getSharedList(); - auto it = std::find_if(chatList.begin(), chatList.end(), [chatCore](const QSharedPointer item) { - return item && chatCore && item->getModel() && chatCore->getModel() && - item->getModel()->getMonitor() == chatCore->getModel()->getMonitor(); - }); - if (it == chatList.end()) { - connectItem(chatCore); - add(chatCore); - emit chatAdded(); - } - }); + addChatInList(chatCore); }; mModelConnection->makeConnectToModel(&CoreModel::messageReceived, [this, addChatToList](const std::shared_ptr &core, diff --git a/Linphone/core/chat/ChatList.hpp b/Linphone/core/chat/ChatList.hpp index b6fad074c..335e06a2b 100644 --- a/Linphone/core/chat/ChatList.hpp +++ b/Linphone/core/chat/ChatList.hpp @@ -48,7 +48,6 @@ public: signals: void lUpdate(); void filterChanged(QString filter); - void chatRemoved(ChatGui *chat); void chatAdded(); void chatUpdated(); diff --git a/Linphone/core/chat/ChatProxy.cpp b/Linphone/core/chat/ChatProxy.cpp index c5a84714a..b5077815e 100644 --- a/Linphone/core/chat/ChatProxy.cpp +++ b/Linphone/core/chat/ChatProxy.cpp @@ -37,13 +37,14 @@ ChatProxy::~ChatProxy() { void ChatProxy::setSourceModel(QAbstractItemModel *model) { auto oldChatList = getListModel(); if (oldChatList) { - disconnect(oldChatList); + disconnect(this, &ChatProxy::filterTextChanged, oldChatList, nullptr); + disconnect(oldChatList, &ChatList::chatAdded, this, nullptr); + disconnect(oldChatList, &ChatList::dataChanged, this, nullptr); } auto newChatList = dynamic_cast(model); if (newChatList) { connect(this, &ChatProxy::filterTextChanged, newChatList, [this, newChatList] { emit newChatList->filterChanged(getFilterText()); }); - connect(newChatList, &ChatList::chatRemoved, this, &ChatProxy::chatRemoved); connect(newChatList, &ChatList::chatAdded, this, [this] { invalidate(); }); connect(newChatList, &ChatList::dataChanged, this, [this] { invalidate(); }); } diff --git a/Linphone/core/chat/ChatProxy.hpp b/Linphone/core/chat/ChatProxy.hpp index 02a980ed6..c90548f33 100644 --- a/Linphone/core/chat/ChatProxy.hpp +++ b/Linphone/core/chat/ChatProxy.hpp @@ -42,9 +42,6 @@ public: Q_INVOKABLE int findChatIndex(ChatGui *chatGui); Q_INVOKABLE void addChatInList(ChatGui *chatGui); -signals: - void chatRemoved(ChatGui *chat); - protected: QSharedPointer mList; DECLARE_ABSTRACT_OBJECT diff --git a/Linphone/core/chat/message/EventLogList.cpp b/Linphone/core/chat/message/EventLogList.cpp index 4fca6b2b8..8b233359f 100644 --- a/Linphone/core/chat/message/EventLogList.cpp +++ b/Linphone/core/chat/message/EventLogList.cpp @@ -64,7 +64,6 @@ void EventLogList::disconnectItem(const QSharedPointer &item) { if (message) { disconnect(message.get(), &ChatMessageCore::isReadChanged, this, nullptr); disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr); - disconnect(message.get(), &ChatMessageCore::ephemeralDurationChanged, this, nullptr); } } @@ -277,6 +276,9 @@ void EventLogList::setSelf(QSharedPointer me) { } setIsUpdating(true); beginResetModel(); + for (auto &event : getSharedList()) { + disconnectItem(event); + } mList.clear(); if (!mChatCore) { endResetModel(); @@ -298,13 +300,6 @@ void EventLogList::setSelf(QSharedPointer me) { events->push_back(model); } mCoreModelConnection->invokeToCore([this, events] { - for (auto &event : getSharedList()) { - auto message = event->getChatMessageCore(); - if (message) { - disconnect(message.get(), &ChatMessageCore::ephemeralDurationChanged, this, nullptr); - disconnect(message.get(), &ChatMessageCore::deleted, this, nullptr); - } - } for (auto &event : *events) { connectItem(event); mList.append(event); diff --git a/Linphone/core/chat/message/EventLogList.hpp b/Linphone/core/chat/message/EventLogList.hpp index 65118edde..679738185 100644 --- a/Linphone/core/chat/message/EventLogList.hpp +++ b/Linphone/core/chat/message/EventLogList.hpp @@ -79,7 +79,6 @@ signals: private: QString mFilter; QSharedPointer mChatCore; - QSharedPointer> mChatModelConnection; QSharedPointer> mCoreModelConnection; int mDisplayItemsStep = 0; int mItemsToLoadBeforeSearchResult = 3; diff --git a/Linphone/core/chat/message/EventLogProxy.cpp b/Linphone/core/chat/message/EventLogProxy.cpp index 2069ba1e3..f42d5335d 100644 --- a/Linphone/core/chat/message/EventLogProxy.cpp +++ b/Linphone/core/chat/message/EventLogProxy.cpp @@ -37,7 +37,11 @@ EventLogProxy::~EventLogProxy() { void EventLogProxy::setSourceModel(QAbstractItemModel *model) { auto oldEventLogList = getListModel(); if (oldEventLogList) { - disconnect(oldEventLogList); + disconnect(oldEventLogList, &EventLogList::listAboutToBeReset, this, nullptr); + disconnect(oldEventLogList, &EventLogList::chatGuiChanged, this, nullptr); + disconnect(oldEventLogList, &EventLogList::displayItemsStepChanged, this, nullptr); + disconnect(oldEventLogList, &EventLogList::eventInserted, this, nullptr); + disconnect(oldEventLogList, &EventLogList::messageWithFilterFound, this, nullptr); } auto newEventLogList = dynamic_cast(model); if (newEventLogList) { diff --git a/Linphone/core/chat/message/content/ChatMessageContentCore.cpp b/Linphone/core/chat/message/content/ChatMessageContentCore.cpp index 8fe773e25..bc48c291c 100644 --- a/Linphone/core/chat/message/content/ChatMessageContentCore.cpp +++ b/Linphone/core/chat/message/content/ChatMessageContentCore.cpp @@ -96,7 +96,18 @@ void ChatMessageContentCore::setSelf(QSharedPointer me) }); mChatMessageContentModelConnection->makeConnectToCore(&ChatMessageContentCore::lDownloadFile, [this]() { - mChatMessageContentModelConnection->invokeToModel([this] { mChatMessageContentModel->downloadFile(mName); }); + mChatMessageContentModelConnection->invokeToModel([this] { + QString error; + bool downloaded = mChatMessageContentModel->downloadFile(mName, &error); + if (!downloaded) { + mChatMessageContentModelConnection->invokeToCore([this, &error] { + QString message = error; + //: Error downloading file %1 + if (error.isEmpty()) error = tr("download_file_default_error").arg(mName); + Utils::showInformationPopup(tr("info_popup_error_titile"), message, false); + }); + } + }); }); mChatMessageContentModelConnection->makeConnectToModel( &ChatMessageContentModel::wasDownloadedChanged, diff --git a/Linphone/core/chat/message/content/ChatMessageContentList.cpp b/Linphone/core/chat/message/content/ChatMessageContentList.cpp index 652ab84a4..c776f0718 100644 --- a/Linphone/core/chat/message/content/ChatMessageContentList.cpp +++ b/Linphone/core/chat/message/content/ChatMessageContentList.cpp @@ -197,7 +197,8 @@ void ChatMessageContentList::setSelf(QSharedPointer me) mModelConnection->makeConnectToCore(&ChatMessageContentList::lUpdate, [this]() { for (auto &content : getSharedList()) { - if (content) disconnect(content.get()); + if (content) disconnect(content.get(), &ChatMessageContentCore::wasDownloadedChanged, this, nullptr); + if (content) disconnect(content.get(), &ChatMessageContentCore::thumbnailChanged, this, nullptr); } if (!mChatMessageCore) return; auto contents = mChatMessageCore->getChatMessageContentList(); diff --git a/Linphone/core/participant/ParticipantProxy.cpp b/Linphone/core/participant/ParticipantProxy.cpp index e4f83cda5..7d3e5ba6c 100644 --- a/Linphone/core/participant/ParticipantProxy.cpp +++ b/Linphone/core/participant/ParticipantProxy.cpp @@ -109,7 +109,7 @@ void ParticipantProxy::setShowMe(const bool &show) { if (list->mShowMe != show) { list->mShowMe = show; emit showMeChanged(); - invalidateFilter(); + invalidate(); } } diff --git a/Linphone/core/proxy/LimitProxy.cpp b/Linphone/core/proxy/LimitProxy.cpp index 9ec8f0b2a..9563a5b9c 100644 --- a/Linphone/core/proxy/LimitProxy.cpp +++ b/Linphone/core/proxy/LimitProxy.cpp @@ -43,7 +43,7 @@ void LimitProxy::setSourceModels(SortFilterProxy *firstList) { if (secondList) { connect(secondList, &QAbstractItemModel::rowsInserted, this, &LimitProxy::onAdded); connect(secondList, &QAbstractItemModel::rowsRemoved, this, &LimitProxy::onRemoved); - connect(secondList, &QAbstractItemModel::modelReset, this, &LimitProxy::invalidateRowsFilter); + connect(secondList, &QAbstractItemModel::modelReset, this, &LimitProxy::invalidate); } connect(firstList, &SortFilterProxy::filterTextChanged, this, &LimitProxy::filterTextChanged); connect(firstList, &SortFilterProxy::filterTypeChanged, this, &LimitProxy::filterTypeChanged); @@ -60,8 +60,8 @@ void LimitProxy::setSourceModels(SortFilterProxy *firstList) { /* void LimitProxy::setSourceModels(SortFilterProxy *firstList, QAbstractItemModel *secondList) { - connect(secondList, &QAbstractItemModel::rowsInserted, this, &LimitProxy::invalidateFilter); - connect(secondList, &QAbstractItemModel::rowsRemoved, this, &LimitProxy::invalidateFilter); + connect(secondList, &QAbstractItemModel::rowsInserted, this, &LimitProxy::invalidate); + connect(secondList, &QAbstractItemModel::rowsRemoved, this, &LimitProxy::invalidate); connect(firstList, &SortFilterProxy::filterTextChanged, this, &LimitProxy::filterTextChanged); setSourceModel(firstList); }*/ @@ -119,7 +119,7 @@ void LimitProxy::setMaxDisplayItems(int maxItems) { emit maxDisplayItemsChanged(); if (model && getDisplayCount(modelCount) != oldCount) { - invalidateFilter(); + invalidate(); } } } @@ -178,6 +178,6 @@ void LimitProxy::onAdded() { void LimitProxy::onRemoved() { int count = sourceModel()->rowCount(); if (mMaxDisplayItems > 0 && mMaxDisplayItems <= count) { - invalidateFilter(); + invalidate(); } } diff --git a/Linphone/core/proxy/SortFilterProxy.cpp b/Linphone/core/proxy/SortFilterProxy.cpp index cfeff8291..35047a6a7 100644 --- a/Linphone/core/proxy/SortFilterProxy.cpp +++ b/Linphone/core/proxy/SortFilterProxy.cpp @@ -90,5 +90,6 @@ void SortFilterProxy::remove(int index, int count) { } void SortFilterProxy::invalidateFilter() { - QSortFilterProxyModel::invalidateFilter(); + // TODO : replace by begin/endFilterChanged when ci uses Qt6.10 + invalidate(); } diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index be3f41b36..60bfe1660 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2199,13 +2199,24 @@ ChatMessageContentCore - + + download_file_default_error + Error downloading file %1 + + + + + info_popup_error_titile + + + + popup_error_title Error Fehler - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 @@ -2265,17 +2276,40 @@ Error ChatMessageContentModel - popup_error_title Error - Fehler + Fehler - - popup_download_error_message + + download_error_object_doesnt_exist + Internal error : message object does not exist anymore ! + + + + + download_file_error_wrong_state + Wrong message state when requesting downloading, state = %1 + + + + + download_file_error_no_safe_file_path + Unable to create safe file path for: %1 + + + + + download_file_error_file_transfer_unavailable This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + download_file_error_unable_to_download + Unable to download file of entry %1 + + ChatMessageCore @@ -4495,7 +4529,7 @@ Error Heute keine Besprechungen - + meeting_info_delete "Supprimer la réunion" Besprechung löschen @@ -5173,90 +5207,96 @@ Error + message_state_idle + "idle" + + + + message_state_in_progress "delivery in progress" - + message_state_delivered sent - + message_state_not_delivered error - + message_state_file_transfer_error cannot get file from server - + message_state_file_transfer_done file transfer has been completed successfully - + message_state_delivered_to_user received - + message_state_displayed read - + message_state_file_transfer__in_progress file transfer in progress - + message_state_pending_delivery pending delivery - + message_state_file_transfer_cancelling file transfer canceled - + incoming "Entrant" Eingehend - + outgoing "Sortant" Ausgehend - + conference_layout_active_speaker "Participant actif" Aktiver Sprecher - + conference_layout_grid "Mosaïque" Raster - + conference_layout_audio_only "Audio uniquement" Nur Audio @@ -5708,37 +5748,37 @@ Pour les activer dans un projet commercial, merci de nous contacter. Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! - + reply_to_label Reply to %1 - + shared_medias_title Shared medias - + shared_documents_title Shared documents - + forward_to_title Forward to… - + conversations_title Conversations Konversationen @@ -5916,7 +5956,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. Utils - + nMinute @@ -5924,7 +5964,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nHour @@ -5932,8 +5972,8 @@ Pour les activer dans un projet commercial, merci de nous contacter. - - + + nDay @@ -5941,7 +5981,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nWeek @@ -5949,7 +5989,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nSeconds @@ -5965,8 +6005,8 @@ Pour les activer dans un projet commercial, merci de nous contacter. - - + + information_popup_error_title Error ---------- @@ -5979,7 +6019,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_years %n an(s) @@ -5988,7 +6028,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_month "%n mois" @@ -5997,7 +6037,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_weeks %n semaine(s) @@ -6006,7 +6046,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_days %n jour(s) @@ -6015,25 +6055,25 @@ Failed to create 1-1 conversation with %1 ! - + today "Aujourd'hui" Heute - + yesterday "Hier Gestern - + duration_tomorrow Tomorrow - + duration_number_of_days %1 jour(s) @@ -6042,111 +6082,111 @@ Failed to create 1-1 conversation with %1 ! - + call_zrtp_token_verification_possible_characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - - + + information_popup_chatroom_creation_error_message Failed to create 1-1 conversation with %1 ! - + contact_presence_status_available Verfügbar - + contact_presence_status_away Abwesend - + contact_presence_status_busy Beschäftigt - + contact_presence_status_do_not_disturb Nicht stören - + contact_presence_status_offline Offline - + recorder_error Error with the recorder - - - + + + chat_error - + chat_message_forward_error Cannot forward an invalid message - - - - - - + + + + + + info_popup_error_title Error Fehler - + info_popup_forward_message_error Could not forward message : %1 - + info_popup_send_forward_message_error_message Failed to create forward message - + chat_message_reply_error Cannot reply to invalid message - + info_popup_reply_message_error Could not send reply message : %1 - + info_popup_send_reply_message_error_message Failed to create reply message - + info_popup_send_voice_message_error_message Could not send voice message : %1 - + info_popup_send_voice_message_sending_error_message Failed to create message from record @@ -6315,1117 +6355,1117 @@ Failed to create 1-1 conversation with %1 ! country - + Afghanistan Afghanistan - + Albania Albanien - + Algeria Algerien - + AmericanSamoa Amerikanisch-Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + AntiguaAndBarbuda Antigua und Barbuda - + Argentina Argentinien - + Armenia Armenien - + Aruba Aruba - + Australia Australien - + Austria Österreich - + Azerbaijan Aserbaidschan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesch - + Barbados Barbados - + Belarus Belarus - + Belgium Belgien - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivien - + BosniaAndHerzegowina Bosnien und Herzegowina - + Botswana Botswana - + Brazil Brasilien - + Brunei Brunei - + Bulgaria Bulgarien - + BurkinaFaso Burkina Faso - + Burundi Burundi - + Cambodia Kambodscha - + Cameroon Kamerun - + Canada Kanada - + CapeVerde Kap Verde - + CaymanIslands Caymaninseln - + CentralAfricanRepublic Zentralafrikanische Republik - + Chad Tschad - + Chile Chile - + China China - + Colombia Kolumbien - + Comoros Komoren - + PeoplesRepublicOfCongo Volksrepublik Kongo - + CookIslands Cookinseln - + CostaRica Kosta Rica - + IvoryCoast Elfenbeinküste - + Croatia Kroatien - + Cuba Kuba - + Cyprus Zypern - + CzechRepublic Tschechische Republik - + Denmark Dänemark - + Djibouti Dschibuti - + Dominica Dominica - + DominicanRepublic Dominikanische Republik - + Ecuador Ecuador - + Egypt Ägypten - + ElSalvador El Salvador - + EquatorialGuinea Äquatorialguinea - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Äthiopien - + FalklandIslands Falklandinseln - + FaroeIslands Färöer-Inseln - + Fiji Fidschi - + Finland Finnland - + France Frankreich - + FrenchGuiana Französisch-Guayana - + FrenchPolynesia Französisch-Polynesien - + Gabon Gabon - + Gambia Gambia - + Georgia Georgien - + Germany Deutschland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griechenland - + Greenland Grönland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guinea Guinea - + GuineaBissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Honduras Honduras - + DemocraticRepublicOfCongo Demokratische Republik Kongo - + HongKong Hongkong - + Hungary Ungarn - + Iceland Island - + India Indien - + Indonesia Indonesien - + Iran Iran - + Iraq Irak - + Ireland Irland - + Israel Israel - + Italy Italien - + Jamaica Jamaika - + Japan Japan - + Jordan Jordanien - + Kazakhstan Kasachstan - + Kenya Kenia - + Kiribati Kiribati - + DemocraticRepublicOfKorea Demokratische Volksrepublik Korea - + RepublicOfKorea Republik Korea - + Kuwait Kuwait - + Kyrgyzstan Kirgisistan - + Laos Laos - + Latvia Lettland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberien - + Libya Libyen - + Liechtenstein Liechtenstein - + Lithuania Litauen - + Luxembourg Luxemburg - + Macau Macau - + Macedonia Mazedonien - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Malaysien - + Maldives Malediven - + Mali Mali - + Malta Malta - + MarshallIslands Marshallinseln - + Martinique Martinique - + Mauritania Mauretanien - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexiko - + Micronesia Föderierte Staaten von Mikronesien - + Moldova Moldawien - + Monaco Monaco - + Mongolia Mongolei - + Montenegro Montenegro - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambik - + Myanmar Myanmar - + Namibia Namibia - + NauruCountry Nauru - + Nepal Nepal - + Netherlands Niederlande - + NewCaledonia Neukaledonien - + NewZealand Neuseeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + NorfolkIsland Norfolkinsel - + NorthernMarianaIslands Nördliche Marianeninseln - + Norway Norwegen - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + PalestinianTerritories Palästinensische Gebiete - + Panama Panama - + PapuaNewGuinea Papua-Neuguinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippinen - + Poland Polen - + Portugal Portugal - + PuertoRico Puerto Rico - + Qatar Katar - + Reunion Réunion - + Romania Rumänien - + RussianFederation Russische Föderation - + Rwanda Ruanda - + SaintHelena Sankt Helena - + SaintKittsAndNevis Sankt Kitts und Nevis - + SaintLucia Sankt Lucia - + SaintPierreAndMiquelon Sankt Pierre und Miquelon - + SaintVincentAndTheGrenadines Sankt Vincent und die Grenadinen - + Samoa Samoa - + SanMarino San Marino - + SaoTomeAndPrincipe São Tomé und Príncipe - + SaudiArabia Saudi-Arabien - + Senegal Senegal - + Serbia Serbien - + Seychelles Seychellen - + SierraLeone Sierra Leone - + Singapore Singapur - + Slovakia Slowakei - + Slovenia Slowenien - + SolomonIslands Salomonen - + Somalia Somalia - + SouthAfrica Südafrika - + Spain Spanien - + SriLanka Sri Lanka - + Sudan Sudan - + Suriname Suriname - + Swaziland Eswatini - + Sweden Schweden - + Switzerland Schweiz - + Syria Syrien - + Taiwan Taiwan - + Tajikistan Tadschikistan - + Tanzania Tansania - + Thailand Thailand - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + TrinidadAndTobago Trinidad und Tobago - + Tunisia Tunesien - + Turkey Türkei - + Turkmenistan Turkmenistan - + TurksAndCaicosIslands Turks- und Caicosinseln - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ukraine - + UnitedArabEmirates Vereinigte Arabische Emirate - + UnitedKingdom Vereinigtes Königreich - + UnitedStates Vereinigte Staaten - + Uruguay Uruguay - + Uzbekistan Usbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Vietnam Vietnam - + WallisAndFutunaIslands Wallis und Futuna Inseln - + Yemen Jemen - + Zambia Sambia - + Zimbabwe Simbabwe diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index fda47b387..53fcad501 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2176,13 +2176,24 @@ ChatMessageContentCore - + + download_file_default_error + Error downloading file %1 + Error downloading file %1 + + + + info_popup_error_titile + Error + + + popup_error_title Error Error - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 Could not open file : unknown path %1 @@ -2242,17 +2253,35 @@ Error ChatMessageContentModel - - popup_error_title - Error - Error + + download_error_object_doesnt_exist + Internal error : message object does not exist anymore ! + Internal error : message object does not exist anymore ! - - popup_download_error_message + + download_file_error_wrong_state + Wrong message state when requesting downloading, state = %1 + Wrong message state when requesting downloading, state = %1 + + + + download_file_error_no_safe_file_path + Unable to create safe file path for: %1 + Unable to create safe file path for: %1 + + + + download_file_error_file_transfer_unavailable This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it + + + download_file_error_unable_to_download + Unable to download file of entry %1 + Unable to download file of entry %1 + ChatMessageCore @@ -4416,7 +4445,7 @@ Expiration : %1 No meeting for today - + meeting_info_delete "Supprimer la réunion" Delete meeting @@ -5073,90 +5102,96 @@ Expiration : %1 + message_state_idle + "idle" + idle + + + message_state_in_progress "delivery in progress" delivery in progress - + message_state_delivered sent sent - + message_state_not_delivered error error - + message_state_file_transfer_error cannot get file from server cannot get file from server - + message_state_file_transfer_done file transfer has been completed successfully file transfer has been completed successfully - + message_state_delivered_to_user received received - + message_state_displayed read read - + message_state_file_transfer__in_progress file transfer in progress file transfer in progress - + message_state_pending_delivery pending delivery pending delivery - + message_state_file_transfer_cancelling file transfer canceled file transfer canceled - + incoming "Entrant" Incoming - + outgoing "Sortant" Outgoing - + conference_layout_active_speaker "Participant actif" Active speaker - + conference_layout_grid "Mosaïque" Grid - + conference_layout_audio_only "Audio uniquement" Audio only @@ -5608,37 +5643,37 @@ To enable them in a commercial project, please contact us. Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! This conversation is not encrypted ! - + reply_to_label Reply to %1 Reply to %1 - + shared_medias_title Shared medias Shared medias - + shared_documents_title Shared documents Shared documents - + forward_to_title Forward to… Froward to… - + conversations_title Conversations Conversations @@ -5811,7 +5846,7 @@ To enable them in a commercial project, please contact us. Utils - + nSeconds %1 second @@ -5819,7 +5854,7 @@ To enable them in a commercial project, please contact us. - + nMinute %1 minute @@ -5827,43 +5862,43 @@ To enable them in a commercial project, please contact us. - + chat_message_forward_error Cannot forward an invalid message Cannot forward an invalid message - + info_popup_forward_message_error Could not forward message : %1 Could not forward message : %1 - + info_popup_send_forward_message_error_message Failed to create forward message Failed to create forward message - + chat_message_reply_error Cannot reply to invalid message Cannot reply to invalid message - + info_popup_reply_message_error Could not send reply message : %1 Could not send reply message : %1 - + info_popup_send_reply_message_error_message Failed to create reply message Failed to create reply message - + nHour %1 hour @@ -5871,8 +5906,8 @@ To enable them in a commercial project, please contact us. - - + + nDay %1 day @@ -5880,7 +5915,7 @@ To enable them in a commercial project, please contact us. - + nWeek %1 week @@ -5888,27 +5923,27 @@ To enable them in a commercial project, please contact us. - + contact_presence_status_available Available - + contact_presence_status_busy Busy - + contact_presence_status_do_not_disturb Do not disturb - + contact_presence_status_offline Offline - + contact_presence_status_away Idle/Away @@ -5921,8 +5956,8 @@ To enable them in a commercial project, please contact us. - - + + information_popup_error_title Error ---------- @@ -5935,7 +5970,7 @@ Failed to create 1-1 conversation with %1 ! Group call couldn't be created - + number_of_years %n an(s) @@ -5944,7 +5979,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_month "%n mois" @@ -5953,7 +5988,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_weeks %n semaine(s) @@ -5962,7 +5997,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_days %n jour(s) @@ -5971,25 +6006,25 @@ Failed to create 1-1 conversation with %1 ! - + today "Aujourd'hui" Today - + yesterday "Hier Yesterday - + duration_tomorrow Tomorrow Tomorrow - + duration_number_of_days %1 jour(s) @@ -5998,50 +6033,50 @@ Failed to create 1-1 conversation with %1 ! - + call_zrtp_token_verification_possible_characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - - + + information_popup_chatroom_creation_error_message Failed to create 1-1 conversation with %1 ! Failed to create 1-1 conversation with %1 ! - + recorder_error Error with the recorder Error with the recorder - - - + + + chat_error Error in the chat - - - - - - + + + + + + info_popup_error_title Error Error - + info_popup_send_voice_message_error_message Could not send voice message : %1 Could not send voice message : %1 - + info_popup_send_voice_message_sending_error_message Failed to create message from record Failed to create message from record @@ -6210,1117 +6245,1117 @@ Failed to create 1-1 conversation with %1 ! country - + Afghanistan Afghanistan - + Albania Albania - + Algeria Algeria - + AmericanSamoa American Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + AntiguaAndBarbuda Antigua-et-Barbuda - + Argentina Argentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbaijan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Belarus - + Belgium Belgium - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivia - + BosniaAndHerzegowina Bosnia And Herzegowina - + Botswana Botswana - + Brazil Brazil - + Brunei Brunei - + Bulgaria Bulgaria - + BurkinaFaso Burkina Faso - + Burundi Burundi - + Cambodia Cambodia - + Cameroon Cameroon - + Canada Canada - + CapeVerde Cape Verde - + CaymanIslands Cayman Islands - + CentralAfricanRepublic Central African Republic - + Chad Chad - + Chile Chile - + China China - + Colombia Colombia - + Comoros Comoros - + PeoplesRepublicOfCongo Peoples Republic Of Congo - + CookIslands Cook Islands - + CostaRica Costa Rica - + IvoryCoast Ivory Coast - + Croatia Croatia - + Cuba Cuba - + Cyprus Cyprus - + CzechRepublic Czech Republic - + Denmark Denmark - + Djibouti Djibouti - + Dominica Dominica - + DominicanRepublic Dominican Republic - + Ecuador Ecuador - + Egypt Egypt - + ElSalvador El Salvador - + EquatorialGuinea Equatorial Guinea - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Ethiopia - + FalklandIslands Falkland Islands - + FaroeIslands Faroe Islands - + Fiji Fiji - + Finland Finland - + France France - + FrenchGuiana French Guiana - + FrenchPolynesia French Polynesia - + Gabon Gabon - + Gambia Gambia - + Georgia Georgia - + Germany Germany - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Greece - + Greenland Greenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guinea Guinea - + GuineaBissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Honduras Honduras - + DemocraticRepublicOfCongo Democratic Republic Of Congo - + HongKong Hong Kong - + Hungary Hungary - + Iceland Iceland - + India India - + Indonesia Indonesia - + Iran Iran - + Iraq Iraq - + Ireland Ireland - + Israel Israel - + Italy Italie - + Jamaica Jamaica - + Japan Japan - + Jordan Jordan - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + DemocraticRepublicOfKorea Democratic Republic Of Korea - + RepublicOfKorea Republic Of Korea - + Kuwait Kuwait - + Kyrgyzstan Kyrgyzstan - + Laos Laos - + Latvia Latvia - + Lebanon Lebanon - + Lesotho Lesotho - + Liberia Liberia - + Libya Libya - + Liechtenstein Liechtenstein - + Lithuania Lithuania - + Luxembourg Luxembourg - + Macau Macau - + Macedonia Macedonia - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaysia - + Maldives Maldives - + Mali Mali - + Malta Malta - + MarshallIslands Marshall Islands - + Martinique Martinique - + Mauritania Mauritania - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexico - + Micronesia Micronesia - + Moldova Moldova - + Monaco Monaco - + Mongolia Mongolia - + Montenegro Montenegro - + Montserrat Montserrat - + Morocco Morocco - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibia - + NauruCountry Nauru Country - + Nepal Nepal - + Netherlands Netherlands - + NewCaledonia New-Caledonia - + NewZealand New-Zealand - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + NorfolkIsland Norfolk Island - + NorthernMarianaIslands Northern Mariana Islands - + Norway Norway - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + PalestinianTerritories Palestinian Territories - + Panama Panama - + PapuaNewGuinea Papua-New-Guinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippines - + Poland Poland - + Portugal Portugal - + PuertoRico Puerto Rico - + Qatar Qatar - + Reunion Reunion - + Romania Romania - + RussianFederation Russian Federation - + Rwanda Rwanda - + SaintHelena Saint-Helena - + SaintKittsAndNevis Saint-Kitts-And-Nevis - + SaintLucia Saint-Lucia - + SaintPierreAndMiquelon Saint-Pierre-And-Miquelon - + SaintVincentAndTheGrenadines Saint-Vincent And The Grenadines - + Samoa Samoa - + SanMarino San-Marino - + SaoTomeAndPrincipe Sao Tome-And-Principe - + SaudiArabia Saudi Arabia - + Senegal Senegal - + Serbia Serbia - + Seychelles Seychelles - + SierraLeone Sierra Leone - + Singapore Singapore - + Slovakia Slovakia - + Slovenia Slovenia - + SolomonIslands Solomon Islands - + Somalia Somalia - + SouthAfrica South Africa - + Spain Spain - + SriLanka Sri Lanka - + Sudan Sudan - + Suriname Suriname - + Swaziland Swaziland - + Sweden Sweden - + Switzerland Switzerland - + Syria Syria - + Taiwan Taiwan - + Tajikistan Tajikistan - + Tanzania Tanzania - + Thailand Thailand - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + TrinidadAndTobago Trinidad-And-Tobago - + Tunisia Tunisia - + Turkey Turkey - + Turkmenistan Turkmenistan - + TurksAndCaicosIslands Turks And Caicos Islands - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ukraine - + UnitedArabEmirates United Arab Emirates - + UnitedKingdom United-Kingdom - + UnitedStates United-States - + Uruguay Uruguay - + Uzbekistan Uzbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Vietnam Vietnam - + WallisAndFutunaIslands Wallis And Futuna Islands - + Yemen Yemen - + Zambia Zambia - + Zimbabwe Zimbabwe diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index c804a2466..bf5310bf2 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2176,13 +2176,24 @@ ChatMessageContentCore - + + download_file_default_error + Error downloading file %1 + Erreur de téléchargement du fichier %1 + + + + info_popup_error_titile + Erreur + + + popup_error_title Error Erreur - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 Impossible d'ouvrir le fichier : chemin inconnu (%1) @@ -2242,16 +2253,34 @@ Error ChatMessageContentModel - - popup_error_title - Error - Erreur + + download_error_object_doesnt_exist + Internal error : message object does not exist anymore ! + Erreur interne : l'objet ChatMessage n'existe plus ! - - popup_download_error_message + + download_file_error_wrong_state + Wrong message state when requesting downloading, state = %1 + Erreur dans l'état du message lors de la requête de téléchargement (state = %1) + + + + download_file_error_no_safe_file_path + Unable to create safe file path for: %1 + Impossible de créer le chemin : %1 + + + + download_file_error_file_transfer_unavailable This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - Ce fichier a déjà été téléchargé et n'est plus sur le serveur. Votre correspondant devra vous le renvoyer si vous voulez y avoir accès. + Le fichier a déjà été téléchargé et n'est plus disponible sur le serveur. Votre correspondant devra vous le renvoyez si vous souhaitez l'obtenir + + + + download_file_error_unable_to_download + Unable to download file of entry %1 + Impossible de télécharger le fichier : %1 @@ -4416,7 +4445,7 @@ Expiration : %1 Aucune réunion aujourd'hui - + meeting_info_delete "Supprimer la réunion" Supprimer la réunion @@ -5073,90 +5102,96 @@ Expiration : %1 + message_state_idle + "idle" + inactif + + + message_state_in_progress "delivery in progress" envoi en cours - + message_state_delivered sent envoyé - + message_state_not_delivered error en erreur - + message_state_file_transfer_error cannot get file from server impossible de récupérer le fichier depuis le serveur - + message_state_file_transfer_done file transfer has been completed successfully fichier transféré avec succès - + message_state_delivered_to_user received reçu - + message_state_displayed read lu - + message_state_file_transfer__in_progress file transfer in progress transfert du fichier en cours - + message_state_pending_delivery pending delivery envoi en attente - + message_state_file_transfer_cancelling file transfer canceled transfert du fichier annulé - + incoming "Entrant" Entrant - + outgoing "Sortant" Sortant - + conference_layout_active_speaker "Participant actif" Intervenant actif - + conference_layout_grid "Mosaïque" Mosaïque - + conference_layout_audio_only "Audio uniquement" Audio uniquement @@ -5608,37 +5643,37 @@ Pour les activer dans un projet commercial, merci de nous contacter.Démarrer un appel de groupe ? - + unencrypted_conversation_warning This conversation is not encrypted ! Cette conversation n'est pas chiffrée ! - + reply_to_label Reply to %1 Réponse à %1 - + shared_medias_title Shared medias Médias partagés - + shared_documents_title Shared documents Documents partagés - + forward_to_title Forward to… Transférer à… - + conversations_title Conversations Conversations @@ -5811,7 +5846,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. Utils - + nMinute %1 minute @@ -5819,7 +5854,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nHour %1 heure @@ -5827,8 +5862,8 @@ Pour les activer dans un projet commercial, merci de nous contacter. - - + + nDay %1 jour @@ -5836,7 +5871,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nWeek %1 semaine @@ -5844,7 +5879,7 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + nSeconds %1 seconde @@ -5852,27 +5887,27 @@ Pour les activer dans un projet commercial, merci de nous contacter. - + contact_presence_status_available Disponible - + contact_presence_status_busy Occupé - + contact_presence_status_do_not_disturb Ne pas déranger - + contact_presence_status_offline Hors ligne - + contact_presence_status_away Inactif/Absent @@ -5885,8 +5920,8 @@ Pour les activer dans un projet commercial, merci de nous contacter. - - + + information_popup_error_title Error ---------- @@ -5899,7 +5934,7 @@ Failed to create 1-1 conversation with %1 ! L'appel de groupe n'a pas pu être créé - + number_of_years %n an(s) @@ -5908,7 +5943,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_month "%n mois" @@ -5917,7 +5952,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_weeks %n semaine(s) @@ -5926,7 +5961,7 @@ Failed to create 1-1 conversation with %1 ! - + number_of_days %n jour(s) @@ -5935,25 +5970,25 @@ Failed to create 1-1 conversation with %1 ! - + today "Aujourd'hui" Aujourd'hui - + yesterday "Hier Hier - + duration_tomorrow Tomorrow Demain - + duration_number_of_days %1 jour(s) @@ -5962,86 +5997,86 @@ Failed to create 1-1 conversation with %1 ! - + call_zrtp_token_verification_possible_characters "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - - + + information_popup_chatroom_creation_error_message Failed to create 1-1 conversation with %1 ! Erreur lors de la création de la conversation avec %1 - + recorder_error Error with the recorder Erreur avec l'enregistreur - - - + + + chat_error Erreur dans le chat - + chat_message_forward_error Cannot forward an invalid message Impossible de transférer : message invalide - - - - - - + + + + + + info_popup_error_title Error Erreur - + info_popup_forward_message_error Could not forward message : %1 Impossible de transférer le message : %1 - + info_popup_send_forward_message_error_message Failed to create forward message Impossible de créer le message - + chat_message_reply_error Cannot reply to invalid message Impossible de répondre : message invalide - + info_popup_reply_message_error Could not send reply message : %1 Impossible d'envoyer la réponse : %1 - + info_popup_send_reply_message_error_message Failed to create reply message Impossible de créer le message - + info_popup_send_voice_message_error_message Could not send voice message : %1 Impossible d'envoyer le message vocal : %1 - + info_popup_send_voice_message_sending_error_message Failed to create message from record Impossible de créer le message vocal @@ -6210,1117 +6245,1117 @@ Failed to create 1-1 conversation with %1 ! country - + Afghanistan Afghanistan - + Albania Albanie - + Algeria Algérie - + AmericanSamoa Samoa américaines - + Andorra Andorre - + Angola Angola - + Anguilla Anguilla - + AntiguaAndBarbuda Antigua-et-Barbuda - + Argentina Argentine - + Armenia Arménie - + Aruba Aruba - + Australia Australie - + Austria Autriche - + Azerbaijan Azerbaïdjan - + Bahamas Bahamas - + Bahrain Bahreïn - + Bangladesh Bangladesh - + Barbados Barbade - + Belarus Biélorussie - + Belgium Belgique - + Belize Belize - + Benin Bénin - + Bermuda Bermudes - + Bhutan Bhoutan - + Bolivia Bolivie - + BosniaAndHerzegowina Bosnie-Herzégovine - + Botswana Botswana - + Brazil Brésil - + Brunei Brunéi - + Bulgaria Bulgarie - + BurkinaFaso Burkina Faso - + Burundi Burundi - + Cambodia Cambodge - + Cameroon Cameroun - + Canada Canada - + CapeVerde Cap-Vert - + CaymanIslands Îles Caïmans - + CentralAfricanRepublic République centrafricaine - + Chad Tchad - + Chile Chili - + China Chine - + Colombia Colombie - + Comoros Comores - + PeoplesRepublicOfCongo République populaire du Congo - + CookIslands Îles Cook - + CostaRica Costa Rica - + IvoryCoast Côte d'Ivoire - + Croatia Croatie - + Cuba Cuba - + Cyprus Chypre - + CzechRepublic République Tchèque - + Denmark Danemark - + Djibouti Djibouti - + Dominica Dominique - + DominicanRepublic République dominicaine - + Ecuador Équateur - + Egypt Égypte - + ElSalvador El Salvador - + EquatorialGuinea Guinée équatoriale - + Eritrea Érythrée - + Estonia Estonie - + Ethiopia Éthiopie - + FalklandIslands Îles Falkland - + FaroeIslands Îles Féroé - + Fiji Fidji - + Finland Finlande - + France France - + FrenchGuiana Guyane française - + FrenchPolynesia Polynésie française - + Gabon Gabon - + Gambia Gambie - + Georgia Géorgie - + Germany Allemagne - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grèce - + Greenland Groenland - + Grenada Grenade - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guinea Guinée - + GuineaBissau Guinée-Bissau - + Guyana Guyana - + Haiti Haïti - + Honduras Honduras - + DemocraticRepublicOfCongo République démocratique du Congo - + HongKong Hong Kong - + Hungary Hongrie - + Iceland Islande - + India Inde - + Indonesia Indonésie - + Iran Iran - + Iraq Irak - + Ireland Irlande - + Israel Israël - + Italy Italie - + Jamaica Jamaïque - + Japan Japon - + Jordan Jordanie - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + DemocraticRepublicOfKorea Corée du Nord - + RepublicOfKorea Corée du Sud - + Kuwait Koweït - + Kyrgyzstan Kirghizistan - + Laos Laos - + Latvia Lettonie - + Lebanon Liban - + Lesotho Lesotho - + Liberia Libéria - + Libya Libye - + Liechtenstein Liechtenstein - + Lithuania Lituanie - + Luxembourg Luxembourg - + Macau Macao - + Macedonia Macédoine - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaisie - + Maldives Maldives - + Mali Mali - + Malta Malte - + MarshallIslands Îles Marshall - + Martinique Martinique - + Mauritania Mauritanie - + Mauritius Maurice - + Mayotte Mayotte - + Mexico Mexique - + Micronesia Micronésie - + Moldova Moldavie - + Monaco Monaco - + Mongolia Mongolie - + Montenegro Montenegro - + Montserrat Montserrat - + Morocco Maroc - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibie - + NauruCountry Nauru - + Nepal Népal - + Netherlands Pays-Bas - + NewCaledonia Nouvelle-Calédonie - + NewZealand Nouvelle-Zélande - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niué - + NorfolkIsland Île Norfolk - + NorthernMarianaIslands Îles Mariannes du Nord - + Norway Norvège - + Oman Oman - + Pakistan Pakistan - + Palau Palaos - + PalestinianTerritories Palestine - + Panama Panama - + PapuaNewGuinea Papouasie-Nouvelle-Guinée - + Paraguay Paraguay - + Peru Pérou - + Philippines Philippines - + Poland Pologne - + Portugal Portugal - + PuertoRico Porto Rico - + Qatar Qatar - + Reunion La Réunion - + Romania Roumanie - + RussianFederation Russie - + Rwanda Rwanda - + SaintHelena Sainte-Hélène - + SaintKittsAndNevis Saint-Christophe-et-Niévès - + SaintLucia Sainte-Lucie - + SaintPierreAndMiquelon Saint-Pierre-et-Miquelon - + SaintVincentAndTheGrenadines Saint-Vincent et les Grenadines - + Samoa Samoa - + SanMarino Saint-Marin - + SaoTomeAndPrincipe Sao Tomé-et-Principe - + SaudiArabia Arabie saoudite - + Senegal Sénégal - + Serbia Serbie - + Seychelles Seychelles - + SierraLeone Sierra Leone - + Singapore Singapour - + Slovakia Slovaquie - + Slovenia Slovénie - + SolomonIslands Îles Salomon - + Somalia Somalie - + SouthAfrica Afrique du Sud - + Spain Espagne - + SriLanka Sri Lanka - + Sudan Soudan - + Suriname Suriname - + Swaziland Eswatini - + Sweden Suède - + Switzerland Suisse - + Syria Syrie - + Taiwan Taïwan - + Tajikistan Tadjikistan - + Tanzania Tanzanie - + Thailand Thaïlande - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + TrinidadAndTobago Trinité-et-Tobago - + Tunisia Tunisie - + Turkey Turquie - + Turkmenistan Turkménistan - + TurksAndCaicosIslands Îles Turks et Caïques - + Tuvalu Tuvalu - + Uganda Ouganda - + Ukraine Ukraine - + UnitedArabEmirates Émirats arabes unis - + UnitedKingdom Royaume-Uni - + UnitedStates États-Unis - + Uruguay Uruguay - + Uzbekistan Ouzbékistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Vietnam Vietnam - + WallisAndFutunaIslands Wallis et Futuna - + Yemen Yémen - + Zambia Zambie - + Zimbabwe Zimbabwe diff --git a/Linphone/model/chat/message/content/ChatMessageContentModel.cpp b/Linphone/model/chat/message/content/ChatMessageContentModel.cpp index be3404643..48bd283e4 100644 --- a/Linphone/model/chat/message/content/ChatMessageContentModel.cpp +++ b/Linphone/model/chat/message/content/ChatMessageContentModel.cpp @@ -74,8 +74,12 @@ void ChatMessageContentModel::removeDownloadedFile(QString filePath) { } } -void ChatMessageContentModel::downloadFile(const QString &name) { - if (!mChatMessageModel) return; +bool ChatMessageContentModel::downloadFile(const QString &name, QString *error) { + if (!mChatMessageModel) { + //: Internal error : message object does not exist anymore ! + if (error) *error = tr("download_error_object_doesnt_exist"); + return false; + } switch (mChatMessageModel->getState()) { case linphone::ChatMessage::State::Delivered: case linphone::ChatMessage::State::DeliveredToUser: @@ -83,10 +87,13 @@ void ChatMessageContentModel::downloadFile(const QString &name) { case linphone::ChatMessage::State::FileTransferDone: break; case linphone::ChatMessage::State::FileTransferInProgress: - return; + return true; default: - lWarning() << QStringLiteral("Wrong message state when requesting downloading, state=.") - << LinphoneEnums::fromLinphone(mChatMessageModel->getState()); + auto state = LinphoneEnums::fromLinphone(mChatMessageModel->getState()); + lWarning() << QStringLiteral("Wrong message state when requesting downloading, state=") << state; + //: Wrong message state when requesting downloading, state = %1 + if (error) *error = tr("download_file_error_wrong_state").arg(LinphoneEnums::toString(state)); + return false; } bool soFarSoGood; const QString safeFilePath = Utils::getSafeFilePath( @@ -94,21 +101,26 @@ void ChatMessageContentModel::downloadFile(const QString &name) { if (!soFarSoGood) { lWarning() << QStringLiteral("Unable to create safe file path for: %1.").arg(name); - return; + //: Unable to create safe file path for: %1 + if (error) *error = tr("download_file_error_no_safe_file_path").arg(name); + return false; } mContent->setFilePath(Utils::appStringToCoreString(safeFilePath)); if (!mContent->isFileTransfer()) { lWarning() << QStringLiteral("file transfer is not available"); - Utils::showInformationPopup( - //: Error - tr("popup_error_title"), - //: This file was already downloaded and is no more on the server. Your peer have to resend it if you want - //: to get it - tr("popup_download_error_message"), false); + //: This file was already downloaded and is no more on the server. Your peer have to resend it if you want + //: to get it + if (error) *error = tr("download_file_error_file_transfer_unavailable"); + return false; } else { - if (!mChatMessageModel->getMonitor()->downloadContent(mContent)) + auto downloaded = mChatMessageModel->getMonitor()->downloadContent(mContent); + if (!downloaded && error) { lWarning() << QStringLiteral("Unable to download file of entry %1.").arg(name); + //: Unable to download file of entry %1 + *error = tr("download_file_error_unable_to_download").arg(name); + } + return downloaded; } } diff --git a/Linphone/model/chat/message/content/ChatMessageContentModel.hpp b/Linphone/model/chat/message/content/ChatMessageContentModel.hpp index cb94cfb65..b552f536f 100644 --- a/Linphone/model/chat/message/content/ChatMessageContentModel.hpp +++ b/Linphone/model/chat/message/content/ChatMessageContentModel.hpp @@ -40,17 +40,21 @@ public: std::shared_ptr chatMessageModel); ~ChatMessageContentModel(); - QString getThumbnail() const; - void setThumbnail(const QString &data); void setWasDownloaded(bool wasDownloaded); void createThumbnail(); void removeDownloadedFile(QString filePath); - void downloadFile(const QString &name); + /** + * Returns true if download succeed, false otherwise + */ + bool downloadFile(const QString &name, QString *error = nullptr); void cancelDownloadFile(); void openFile(const QString &name, bool wasDownloaded, bool showDirectory = false); + /** + * Returns true if file saved successfully, false otherwise + */ bool saveAs(const QString &path); const std::shared_ptr &getContent() const; @@ -70,4 +74,4 @@ private: QSharedPointer mConferenceInfoModel; }; -#endif \ No newline at end of file +#endif diff --git a/Linphone/tool/LinphoneEnums.cpp b/Linphone/tool/LinphoneEnums.cpp index 77619551d..c64d82dd5 100644 --- a/Linphone/tool/LinphoneEnums.cpp +++ b/Linphone/tool/LinphoneEnums.cpp @@ -120,6 +120,9 @@ LinphoneEnums::ChatMessageState LinphoneEnums::fromLinphone(const linphone::Chat QString LinphoneEnums::toString(const LinphoneEnums::ChatMessageState &data) { switch (data) { + case LinphoneEnums::ChatMessageState::StateIdle: + //: "idle" + return QObject::tr("message_state_idle"); case LinphoneEnums::ChatMessageState::StateInProgress: //: "delivery in progress" return QObject::tr("message_state_in_progress"); diff --git a/Linphone/tool/Utils.cpp b/Linphone/tool/Utils.cpp index e476433e7..77bec4724 100644 --- a/Linphone/tool/Utils.cpp +++ b/Linphone/tool/Utils.cpp @@ -269,11 +269,14 @@ VariantObject *Utils::haveAccount() { void Utils::smartShowWindow(QQuickWindow *window) { if (!window) return; - if (window->visibility() == QWindow::Maximized) // Avoid to change visibility mode - window->showMaximized(); - else window->show(); + // if (window->visibility() == QWindow::Maximized) // Avoid to change visibility mode + // window->showMaximized(); + lInfo() << "[Utils] : show window" << window; + window->show(); App::getInstance()->setLastActiveWindow(window); + lInfo() << "[Utils] : raise window" << window; window->raise(); // Raise ensure to get focus on Mac + lInfo() << "[Utils] : request activate"; window->requestActivate(); } diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index 8d237364d..a0b2244f5 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -52,10 +52,10 @@ ListView { onModelAboutToBeReset: { loading = true } - onChatRemoved: { - var currentChat = model.getAt(currentIndex) + onRowsRemoved: { + var index = mainItem.currentIndex mainItem.currentIndex = -1 - selectChat(currentChat) + mainItem.currentIndex = index } onLayoutChanged: { selectChat(mainItem.currentChatGui) diff --git a/Linphone/view/Control/Display/Chat/ImageFileView.qml b/Linphone/view/Control/Display/Chat/ImageFileView.qml index c7d6b93cb..5aeba83b5 100644 --- a/Linphone/view/Control/Display/Chat/ImageFileView.qml +++ b/Linphone/view/Control/Display/Chat/ImageFileView.qml @@ -21,6 +21,8 @@ Image { id: mainItem property ChatMessageContentGui contentGui + RectangleTest{anchors.fill: parent} + mipmap: false//SettingsModel.mipmapEnabled autoTransform: true fillMode: Image.PreserveAspectFit @@ -53,4 +55,4 @@ Image { mainItem.contentGui.core.lOpenFile() } } -} \ No newline at end of file +} diff --git a/Linphone/view/Control/Display/Meeting/MeetingListView.qml b/Linphone/view/Control/Display/Meeting/MeetingListView.qml index cf6ad3d26..f22a51023 100644 --- a/Linphone/view/Control/Display/Meeting/MeetingListView.qml +++ b/Linphone/view/Control/Display/Meeting/MeetingListView.qml @@ -317,9 +317,7 @@ ListView { visible: itemDelegate.haveModel acceptedButtons: Qt.LeftButton | Qt.RightButton onClicked: (mouse) => { - console.log("clicked", mouse.button) if (mouse.button === Qt.RightButton) { - console.log("open popup") deletePopup.x = mouse.x deletePopup.y = mouse.y deletePopup.open() diff --git a/Linphone/view/Page/Form/Chat/SelectedChatView.qml b/Linphone/view/Page/Form/Chat/SelectedChatView.qml index ab8826e3e..ddd71235e 100644 --- a/Linphone/view/Page/Form/Chat/SelectedChatView.qml +++ b/Linphone/view/Page/Form/Chat/SelectedChatView.qml @@ -100,7 +100,6 @@ FocusScope { font { pixelSize: Typography.h4.pixelSize weight: Utils.getSizeWithScreenRatio(400) - capitalization: Font.Capitalize } } RowLayout { @@ -310,7 +309,7 @@ FocusScope { Control.Control { id: participantListPopup width: parent.width - height: Math.min(participantInfoList.height, Utils.getSizeWithScreenRatio(200)) + height: visible ? Math.min(participantInfoList.height, Utils.getSizeWithScreenRatio(200)) : 0 visible: false anchors.bottom: chatMessagesListView.bottom anchors.left: chatMessagesListView.left diff --git a/Linphone/view/Page/Main/Account/AccountListView.qml b/Linphone/view/Page/Main/Account/AccountListView.qml index a7554c50b..8026ace43 100644 --- a/Linphone/view/Page/Main/Account/AccountListView.qml +++ b/Linphone/view/Page/Main/Account/AccountListView.qml @@ -32,7 +32,7 @@ ColumnLayout{ property var popupId Component{ id: contactDelegate - Contact{ + Contact { id: contactItem Layout.preferredWidth: mainItem.childrenWidth account: modelData diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index d530b3f42..26fbd82df 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -391,4 +391,4 @@ AbstractMainPage { } } } -} \ No newline at end of file +} diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index 51a242b8b..68e82b676 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -1215,11 +1215,11 @@ AbstractWindow { } } onJoinConfRequested: uri => { - mainWindow.joinConference(uri, { - "microEnabled": microEnabled, - "localVideoEnabled": localVideoEnabled - }) - } + mainWindow.joinConference(uri, { + "microEnabled": microEnabled, + "localVideoEnabled": localVideoEnabled + }) + } onCancelJoiningRequested: mainWindow.cancelJoinConference() onCancelAfterJoinRequested: mainWindow.cancelAfterJoin() } @@ -1734,4 +1734,4 @@ AbstractWindow { } } } -} \ No newline at end of file +} From 229fbe1713d573d740e6796612d5a90b65f07390 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Thu, 30 Oct 2025 17:40:03 +0100 Subject: [PATCH 07/72] Remove Core5Compat dependency and use our own opacity implementation. --- CMakeLists.txt | 2 +- Linphone/CMakeLists.txt | 2 +- Linphone/data/CMakeLists.txt | 1 + .../view/Control/Display/MediaProgressBar.qml | 16 +++++++++++----- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bc705a0c9..e1946b3e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -206,7 +206,7 @@ set(ENABLE_CSHARP_WRAPPER OFF CACHE BOOL "Build the CSharp wrapper for Liblinpho set(ENABLE_THEORA OFF) set(ENABLE_QT_GL ${ENABLE_VIDEO}) -find_package(Qt6 REQUIRED COMPONENTS Core Quick Widgets Core5Compat) +find_package(Qt6 REQUIRED COMPONENTS Core Quick Widgets) if(NOT Qt6_FOUND) message(FATAL_ERROR "Minimum supported Qt6!") diff --git a/Linphone/CMakeLists.txt b/Linphone/CMakeLists.txt index 7e620452e..027e2d0bc 100644 --- a/Linphone/CMakeLists.txt +++ b/Linphone/CMakeLists.txt @@ -22,7 +22,7 @@ set(APP_TARGETS ${LinphoneCxx_TARGET} ${LibLinphone_TARGET})#Liblinphone set(QT_DEFAULT_MAJOR_VERSION 6) -set(QT_PACKAGES Quick Qml Widgets Svg Multimedia Test NetworkAuth Concurrent Core5Compat)# Search Core at first for initialize Qt scripts for next find_packages. +set(QT_PACKAGES Quick Qml Widgets Svg Multimedia Test NetworkAuth Concurrent)# Search Core at first for initialize Qt scripts for next find_packages. if (UNIX AND NOT APPLE) list(APPEND QT_PACKAGES DBus) endif() diff --git a/Linphone/data/CMakeLists.txt b/Linphone/data/CMakeLists.txt index f4a9a7d66..36e6d24f1 100644 --- a/Linphone/data/CMakeLists.txt +++ b/Linphone/data/CMakeLists.txt @@ -2,6 +2,7 @@ list(APPEND _LINPHONEAPP_RC_FILES data/assistant/use-app-sip-account.rc data/assistant/create-app-sip-account.rc data/assistant/use-other-sip-account.rc data/shaders/roundEffect.frag.qsb + data/shaders/opacityMask.frag.qsb data/emoji/emoji.json ) diff --git a/Linphone/view/Control/Display/MediaProgressBar.qml b/Linphone/view/Control/Display/MediaProgressBar.qml index f87a9133f..c917ca0e7 100644 --- a/Linphone/view/Control/Display/MediaProgressBar.qml +++ b/Linphone/view/Control/Display/MediaProgressBar.qml @@ -3,7 +3,6 @@ import QtQuick.Controls as Control import QtQuick.Layouts import QtQuick.Shapes import QtQuick.Effects -import Qt5Compat.GraphicalEffects import Linphone import UtilsCpp @@ -94,12 +93,19 @@ ProgressBar { opacity: 0.5 } } - OpacityMask { + ShaderEffect { + id: opacityEffect anchors.fill: progressRectangle - source: progressRectangle - maskSource: mask + property var source: ShaderEffectSource + { + sourceItem: progressRectangle + } + property var maskSource: ShaderEffectSource + { + sourceItem: mask + } + fragmentShader: 'qrc:/data/shaders/opacityMask.frag.qsb' } - MouseArea { id: progression anchors.fill: parent From db1f04350a582b212f00ba958e183c89098f7c98 Mon Sep 17 00:00:00 2001 From: Peio Rigaux Date: Mon, 27 Oct 2025 14:31:54 +0100 Subject: [PATCH 08/72] Fix syntax error in GNU/Linux CI deploy script --- .gitlab-ci-files/linux-desktop.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci-files/linux-desktop.yml b/.gitlab-ci-files/linux-desktop.yml index f2a0a203c..f8ad844f5 100644 --- a/.gitlab-ci-files/linux-desktop.yml +++ b/.gitlab-ci-files/linux-desktop.yml @@ -30,12 +30,11 @@ rm -f file.key .deploy_linux: &deploy_linux | - rsync -rlv --ignore-existing build/OUTPUT/Packages/*.AppImage $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM/$APP_FOLDER - |- - if [[ $MAKE_RELEASE_FILE_URL != "" ]]; then - rsync -rlv build/OUTPUT/Packages/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM - rsync -rlv build/OUTPUT/Packages/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM - fi + rsync -rlv --ignore-existing build/OUTPUT/Packages/*.AppImage $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM/$APP_FOLDER + if [[ $MAKE_RELEASE_FILE_URL != "" ]]; then + rsync -rlv build/OUTPUT/Packages/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM + rsync -rlv build/OUTPUT/Packages/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM + fi .linux-desktop: stage: build From 80bf126b237611893f9b8a0e0536b8a87ad6e767 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 31 Oct 2025 18:00:15 +0100 Subject: [PATCH 09/72] check for update --- Linphone/core/App.cpp | 55 +++++++++ Linphone/core/App.hpp | 1 + Linphone/core/setting/SettingsCore.cpp | 10 ++ Linphone/core/setting/SettingsCore.hpp | 4 + Linphone/data/languages/de.ts | 108 +++++++++++++----- Linphone/data/languages/en.ts | 101 +++++++++++----- Linphone/data/languages/fr.ts | 101 +++++++++++----- Linphone/model/core/CoreModel.cpp | 13 ++- Linphone/model/core/CoreModel.hpp | 7 +- Linphone/model/setting/SettingsModel.cpp | 34 ++++++ Linphone/model/setting/SettingsModel.hpp | 11 ++ Linphone/tool/Constants.hpp | 4 +- Linphone/tool/LinphoneEnums.hpp | 3 + Linphone/view/Control/Button/Button.qml | 6 + .../Control/Button/HelpIconLabelButton.qml | 3 + .../view/Control/Popup/InformationPopup.qml | 1 + Linphone/view/Page/Main/Help/HelpPage.qml | 56 +++++---- Linphone/view/Style/DefaultStyle.qml | 4 +- 18 files changed, 413 insertions(+), 109 deletions(-) diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index dbd5fa741..9661ec815 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -430,6 +430,43 @@ void App::setSelf(QSharedPointer(me)) { }); }); + // Check update + mCoreModelConnection->makeConnectToModel( + &CoreModel::versionUpdateCheckResultReceived, + [this](const std::shared_ptr &core, linphone::VersionUpdateCheckResult result, + const std::string &version, const std::string &url, bool checkRequestedByUser) { + mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); + mCoreModelConnection->invokeToCore([this, result, version, url, checkRequestedByUser] { + switch (result) { + case linphone::VersionUpdateCheckResult::Error: + if (checkRequestedByUser) + Utils::showInformationPopup(tr("info_popup_error_title"), + //: An error occured while trying to check update. Please + //: try again later or contact support team. + tr("info_popup_error_checking_update"), false); + break; + case linphone::VersionUpdateCheckResult::NewVersionAvailable: { + QString downloadLink = + QStringLiteral("%2") + .arg(url) + .arg(tr("info_popup_new_version_download_label")); + Utils::showInformationPopup( + //: New version available ! + tr("info_popup_new_version_available_title"), + //: A new version of Linphone (%1) is available. %2 + tr("info_popup_new_version_available_message").arg(version).arg(downloadLink)); + break; + } + case linphone::VersionUpdateCheckResult::UpToDate: + if (checkRequestedByUser) + //: Up to date + Utils::showInformationPopup(tr("info_popup_version_up_to_date_title"), + //: Your version is up to date + tr("info_popup_version_up_to_date_message")); + } + }); + }); + //--------------------------------------------------------------------------------------------- mCliModelConnection = SafeConnection::create(me, CliModel::getInstance()); mCliModelConnection->makeConnectToCore(&App::receivedMessage, [this](int, const QByteArray &byteArray) { @@ -660,6 +697,7 @@ void App::initCore() { tr("info_popup_configuration_failed_message").arg(message), false); }); } + checkForUpdate(); mIsRestarting = false; //--------------------------------------------------------------------------------------------- @@ -1357,6 +1395,12 @@ void App::setSysTrayIcon() { menu->addSeparator(); } menu->addAction(markAllReadAction); + //: Check for update + if (mSettings->isCheckForUpdateAvailable()) { + QAction *checkForUpdateAction = new QAction(tr("check_for_update"), root); + root->connect(checkForUpdateAction, &QAction::triggered, this, [this] { checkForUpdate(); }); + menu->addAction(checkForUpdateAction); + } menu->addAction(quitAction); if (!mSystemTrayIcon) { systemTrayIcon->setContextMenu(menu); // This is a Qt bug. We cannot call setContextMenu more than once. So @@ -1436,6 +1480,17 @@ QString App::getSdkVersion() { #endif } +void App::checkForUpdate(bool requestedByUser) { + mustBeInMainThread(log().arg(Q_FUNC_INFO)); + if (CoreModel::getInstance() && mCoreModelConnection) { + mCoreModelConnection->invokeToModel([this, requestedByUser] { + mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); + CoreModel::getInstance()->checkForUpdate(Utils::appStringToCoreString(applicationVersion()), + requestedByUser); + }); + } +} + ChatGui *App::getCurrentChat() const { return mCurrentChat; } diff --git a/Linphone/core/App.hpp b/Linphone/core/App.hpp index e3dfbc1b7..ef0719258 100644 --- a/Linphone/core/App.hpp +++ b/Linphone/core/App.hpp @@ -165,6 +165,7 @@ public: QString getGitBranchName(); QString getSdkVersion(); + Q_INVOKABLE void checkForUpdate(bool requestedByUser = false); ChatGui *getCurrentChat() const; void setCurrentChat(ChatGui *chat); diff --git a/Linphone/core/setting/SettingsCore.cpp b/Linphone/core/setting/SettingsCore.cpp index 16080a359..77e22c786 100644 --- a/Linphone/core/setting/SettingsCore.cpp +++ b/Linphone/core/setting/SettingsCore.cpp @@ -107,6 +107,9 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) { mEmojiFont = settingsModel->getEmojiFont(); mTextMessageFont = settingsModel->getTextMessageFont(); + // Check for update + mIsCheckForUpdateAvailable = settingsModel->isCheckForUpdateAvailable(); + // Ui INIT_CORE_MEMBER(DisableChatFeature, settingsModel) INIT_CORE_MEMBER(DisableMeetingsFeature, settingsModel) @@ -1143,6 +1146,9 @@ void SettingsCore::writeFromModel(const std::shared_ptr &model) { mLogsFolder = model->getLogsFolder(); mLogsEmail = model->getLogsEmail(); + // Check update + mIsCheckForUpdateAvailable = model->isCheckForUpdateAvailable(); + // UI mDisableChatFeature = model->getDisableChatFeature(); mDisableMeetingsFeature = model->getDisableMeetingsFeature(); @@ -1171,6 +1177,10 @@ void SettingsCore::writeFromModel(const std::shared_ptr &model) { mDownloadFolder = model->getDownloadFolder(); } +bool SettingsCore::isCheckForUpdateAvailable() const { + return mIsCheckForUpdateAvailable; +} + void SettingsCore::save() { mustBeInMainThread(getClassName() + Q_FUNC_INFO); SettingsCore *thisCopy = new SettingsCore(*this); diff --git a/Linphone/core/setting/SettingsCore.hpp b/Linphone/core/setting/SettingsCore.hpp index 649d678e3..ec8851b1d 100644 --- a/Linphone/core/setting/SettingsCore.hpp +++ b/Linphone/core/setting/SettingsCore.hpp @@ -218,6 +218,7 @@ public: bool getCardDAVMinCharForResearch() const; void setCardDAVMinCharForResearch(int min); + bool isCheckForUpdateAvailable() const; Q_INVOKABLE void save(); Q_INVOKABLE void undo(); @@ -401,6 +402,9 @@ private: // CardDAV int mCardDAVMinCharForResearch = 0; + // Check update + bool mIsCheckForUpdateAvailable = false; + DECLARE_ABSTRACT_OBJECT }; #endif diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 60bfe1660..ae24e7eb8 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -641,93 +641,134 @@ - + + info_popup_error_title Error Fehler - + info_popup_configuration_failed_message Remote provisioning failed : %1 - + + info_popup_error_checking_update + An error occured while trying to check update. Please try again later or contact support team. + + + + + info_popup_new_version_download_label + + + + + info_popup_new_version_available_title + New version available ! + + + + + info_popup_new_version_available_message + A new version of Linphone (%1) is available. %2 + + + + + info_popup_version_up_to_date_title + + + + + info_popup_version_up_to_date_message + Your version is up to date + + + + configuration_error_detail not reachable - + application_description "A free and open source SIP video-phone." Ein kostenloses Open-Source SIP Video-Telefon. - + command_line_arg_order "Send an order to the application towards a command line" Kommandozeilen-Befehl an die Anwendung schicken - + command_line_option_show_help Zeige Hilfe - + command_line_option_show_app_version App-Version anzeigen - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, Pfad oder Datei - + command_line_option_minimized - + command_line_option_log_to_stdout Debug-Informationen auf der Standardausgabe ausgeben - + command_line_option_print_app_logs_only "Print only logs from the application" Nur Anwendungs-Logs ausgeben - + hide_action "Cacher" "Afficher" Ausblenden - + show_action Zeigen - + quit_action "Quitter" Beenden - + + check_for_update + Check for update + + + + mark_all_read_action @@ -2021,13 +2062,13 @@ ChatCore - + info_toast_deleted_title Deleted - + info_toast_deleted_message_history Message history has been deleted @@ -3879,50 +3920,56 @@ Error HelpPage - + help_title "Aide" Hilfe - - + + help_about_title "À propos de %1" Über %1 - + help_about_privacy_policy_title "Règles de confidentialité" Datenschutzrichtlinie - + help_about_privacy_policy_subtitle Quelles informations %1 collecte et utilise Welche Informationen sammelt und verwendet %1 - + help_about_version_title "Version" Version - + + help_check_for_update_button_label + Check update + + + + help_about_gpl_licence_title "Licences GPLv3" GPLv3-Lizenzen - + help_about_contribute_translations_title "Contribuer à la traduction de %1" Zur Übersetzung von %1 beitragen - + help_troubleshooting_title "Dépannage" Fehlerbehebung @@ -5784,6 +5831,13 @@ Pour les activer dans un projet commercial, merci de nous contacter. Konversationen + + SettingsCore + + info_popup_error_title + Fehler + + SettingsMenuItem diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 53fcad501..191f520e5 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -636,93 +636,134 @@ - + + info_popup_error_title Error Error - + info_popup_configuration_failed_message Remote provisioning failed : %1 Remote provisioning failed : %1 - + + info_popup_error_checking_update + An error occured while trying to check update. Please try again later or contact support team. + An error occured while trying to check update. Please try again later or contact support team. + + + + info_popup_new_version_download_label + + + + + info_popup_new_version_available_title + New version available ! + New version available ! + + + + info_popup_new_version_available_message + A new version of Linphone (%1) is available. %2 + A new version of Linphone (%1) is available at %1 + + + + info_popup_version_up_to_date_title + Up to date + + + + info_popup_version_up_to_date_message + Your version is up to date + Up to date Your version is up to date + + + configuration_error_detail not reachable not reachable - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Show app version - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimize - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Hide - + show_action Show - + quit_action "Quitter" Quit - + + check_for_update + Check for update + Check for update + + + mark_all_read_action Marquer tout comme lu @@ -1998,13 +2039,13 @@ ChatCore - + info_toast_deleted_title Deleted Deleted - + info_toast_deleted_message_history Message history has been deleted Message history has been deleted @@ -3795,50 +3836,56 @@ Expiration : %1 HelpPage - + help_title "Aide" Help - - + + help_about_title "À propos de %1" About %1 - + help_about_privacy_policy_title "Règles de confidentialité" Privacy Policy - + help_about_privacy_policy_subtitle Quelles informations %1 collecte et utilise What information does %1 collect and use - + help_about_version_title "Version" Version - + + help_check_for_update_button_label + Check update + Check for update + + + help_about_gpl_licence_title "Licences GPLv3" GPLv3 licences - + help_about_contribute_translations_title "Contribuer à la traduction de %1" Contribute to the translation of %1 - + help_troubleshooting_title "Dépannage" Troubleshooting diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index bf5310bf2..54d40cd4c 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -636,93 +636,134 @@ - + + info_popup_error_title Error Erreur - + info_popup_configuration_failed_message Remote provisioning failed : %1 La configuration distante a échoué : %1 - + + info_popup_error_checking_update + An error occured while trying to check update. Please try again later or contact support team. + Une erreur est survenue lors de la recherche de mise à jour. Merci de réessayer plus tard ou de contacter l'équipe de support. + + + + info_popup_new_version_download_label + Téléchargez-là ! + + + + info_popup_new_version_available_title + New version available ! + Nouvelle version disponible ! + + + + info_popup_new_version_available_message + A new version of Linphone (%1) is available. %2 + Une nouvelle version de Linphone (%1) est disponible. %2 + + + + info_popup_version_up_to_date_title + À jour + + + + info_popup_version_up_to_date_message + Your version is up to date + Votre version est à jour + + + configuration_error_detail not reachable indisponible - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Afficher la version de l'application - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimiser - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Cacher - + show_action Afficher - + quit_action "Quitter" Quitter - + + check_for_update + Check for update + Rechercher une mise à jour + + + mark_all_read_action Marquer tout comme lu @@ -1998,13 +2039,13 @@ ChatCore - + info_toast_deleted_title Deleted Supprimé - + info_toast_deleted_message_history Message history has been deleted L'historique des messages a été supprimé @@ -3795,50 +3836,56 @@ Expiration : %1 HelpPage - + help_title "Aide" Aide - - + + help_about_title "À propos de %1" À propos de %1 - + help_about_privacy_policy_title "Règles de confidentialité" Règles de confidentialité - + help_about_privacy_policy_subtitle Quelles informations %1 collecte et utilise Quelles informations %1 collecte et utilise - + help_about_version_title "Version" Version - + + help_check_for_update_button_label + Check update + Rechercher une mise à jour + + + help_about_gpl_licence_title "Licences GPLv3" Licences GPLv3 - + help_about_contribute_translations_title "Contribuer à la traduction de %1" Contribuer à la traduction de %1 - + help_troubleshooting_title "Dépannage" Dépannage diff --git a/Linphone/model/core/CoreModel.cpp b/Linphone/model/core/CoreModel.cpp index 143524322..f36550773 100644 --- a/Linphone/model/core/CoreModel.cpp +++ b/Linphone/model/core/CoreModel.cpp @@ -368,6 +368,17 @@ void CoreModel::searchInMagicSearch(QString filter, mMagicSearch->search(filter, sourceFlags, aggregation, maxResults); } +void CoreModel::checkForUpdate(const std::string &applicationVersion, bool requestedByUser) { + mCheckVersionRequestedByUser = requestedByUser; + if (SettingsModel::getInstance()->isCheckForUpdateEnabled()) { + CoreModel::getInstance()->getCore()->checkForUpdate(applicationVersion); + } +} + +bool CoreModel::isCheckVersionRequestedByUser() const { + return mCheckVersionRequestedByUser; +} + //--------------------------------------------------------------------------------------------------------------------------- void CoreModel::onAccountAdded(const std::shared_ptr &core, @@ -585,7 +596,7 @@ void CoreModel::onVersionUpdateCheckResultReceived(const std::shared_ptr &core, diff --git a/Linphone/model/core/CoreModel.hpp b/Linphone/model/core/CoreModel.hpp index 1c07c9cc7..0bbc46c82 100644 --- a/Linphone/model/core/CoreModel.hpp +++ b/Linphone/model/core/CoreModel.hpp @@ -71,6 +71,9 @@ public: LinphoneEnums::MagicSearchAggregation aggregation, int maxResults); + void checkForUpdate(const std::string &applicationVersion, bool requestedByUser = false); + bool isCheckVersionRequestedByUser() const; + bool mEnd = false; linphone::ConfiguringState mConfigStatus; QString mConfigMessage; @@ -97,6 +100,7 @@ private: QMap mOpenIdConnections; std::shared_ptr mMagicSearch; bool mStarted = false; + bool mCheckVersionRequestedByUser = false; void setPathBeforeCreation(); void setPathsAfterCreation(); @@ -281,7 +285,8 @@ signals: void versionUpdateCheckResultReceived(const std::shared_ptr &core, linphone::VersionUpdateCheckResult result, const std::string &version, - const std::string &url); + const std::string &url, + bool checkRequestedByUser); void friendListRemoved(const std::shared_ptr &core, const std::shared_ptr &friendList); }; diff --git a/Linphone/model/setting/SettingsModel.cpp b/Linphone/model/setting/SettingsModel.cpp index 125cbc6cc..a2bb672c5 100644 --- a/Linphone/model/setting/SettingsModel.cpp +++ b/Linphone/model/setting/SettingsModel.cpp @@ -855,6 +855,40 @@ bool SettingsModel::getDisableMeetingsFeature() const { return !!mConfig->getInt(UiSection, "disable_meetings_feature", 0); } +bool SettingsModel::isCheckForUpdateAvailable() const { +#ifdef ENABLE_UPDATE_CHECK + return true; +#else + return false; +#endif +} + +bool SettingsModel::isCheckForUpdateEnabled() const { + return !!mConfig->getInt(UiSection, "check_for_update_enabled", isCheckForUpdateAvailable()); +} + +void SettingsModel::setCheckForUpdateEnabled(bool enable) { + mConfig->setInt(UiSection, "check_for_update_enabled", enable); + emit checkForUpdateEnabledChanged(); +} + +QString SettingsModel::getVersionCheckUrl() { + auto url = mConfig->getString("misc", "version_check_url_root", ""); + if (url == "") { + url = Constants::VersionCheckReleaseUrl; + if (url != "") mConfig->setString("misc", "version_check_url_root", url); + } + return Utils::coreStringToAppString(url); +} + +void SettingsModel::setVersionCheckUrl(const QString &url) { + if (url != getVersionCheckUrl()) { + // Do not trim the url before because we want to update GUI from potential auto fix. + mConfig->setString("misc", "version_check_url_root", Utils::appStringToCoreString(url.trimmed())); + emit versionCheckUrlChanged(); + } +} + void SettingsModel::setChatNotificationSoundPath(const QString &path) { QString cleanedPath = QDir::cleanPath(path); mConfig->setString(UiSection, "chat_sound_notification_file", Utils::appStringToCoreString(cleanedPath)); diff --git a/Linphone/model/setting/SettingsModel.hpp b/Linphone/model/setting/SettingsModel.hpp index 2673dd7e7..416dbf954 100644 --- a/Linphone/model/setting/SettingsModel.hpp +++ b/Linphone/model/setting/SettingsModel.hpp @@ -22,6 +22,7 @@ #define SETTINGS_MODEL_H_ #include "MediastreamerUtils.hpp" +#include "tool/LinphoneEnums.hpp" #include #include #include @@ -186,6 +187,13 @@ public: void setDisableMeetingsFeature(bool value); bool getDisableMeetingsFeature() const; + bool isCheckForUpdateAvailable() const; + bool isCheckForUpdateEnabled() const; + void setCheckForUpdateEnabled(bool enable); + QString getVersionCheckUrl(); + void setVersionCheckUrl(const QString &url); + void setVersionCheckType(const LinphoneEnums::VersionCheckType &type); + // UI DECLARE_GETSET(bool, disableChatFeature, DisableChatFeature) DECLARE_GETSET(bool, disableBroadcastFeature, DisableBroadcastFeature) @@ -269,6 +277,9 @@ signals: void disableMeetingsFeatureChanged(bool value); + void checkForUpdateEnabledChanged(); + void versionCheckUrlChanged(); + // Messages. -------------------------------------------------------------------- void autoDownloadReceivedFilesChanged(bool enabled); diff --git a/Linphone/tool/Constants.hpp b/Linphone/tool/Constants.hpp index 527f6b45d..dccbd0f5f 100644 --- a/Linphone/tool/Constants.hpp +++ b/Linphone/tool/Constants.hpp @@ -66,8 +66,8 @@ public: static constexpr int DefaultExpires = 600; static constexpr int DefaultPublishExpires = 120; static constexpr char DownloadUrl[] = "https://www.linphone.org/technical-corner/linphone"; - static constexpr char VersionCheckReleaseUrl[] = "https://linphone.org/releases"; - static constexpr char VersionCheckNightlyUrl[] = "https://linphone.org/snapshots"; + static constexpr char VersionCheckReleaseUrl[] = "https://download.linphone.org/releases"; + static constexpr char VersionCheckNightlyUrl[] = "https://download.linphone.org/snapshots"; static constexpr char PasswordRecoveryUrl[] = "https://subscribe.linphone.org/recovery/email"; static constexpr char CguUrl[] = "https://www.linphone.org/en/terms-of-use/"; static constexpr char PrivatePolicyUrl[] = "https://www.linphone.org/en/privacy-policy/"; diff --git a/Linphone/tool/LinphoneEnums.hpp b/Linphone/tool/LinphoneEnums.hpp index d13deccca..849b870f4 100644 --- a/Linphone/tool/LinphoneEnums.hpp +++ b/Linphone/tool/LinphoneEnums.hpp @@ -399,6 +399,9 @@ LinphoneEnums::VideoSourceScreenSharingType fromLinphone(const linphone::VideoSo enum class PlaybackState { PlayingState = 0, PausedState = 1, StoppedState = 2, ErrorState = 3 }; Q_ENUM_NS(PlaybackState); +enum class VersionCheckType { Release = 0, Nightly = 1, Custom = 2 }; +Q_ENUM_NS(VersionCheckType) + } // namespace LinphoneEnums /* Q_DECLARE_METATYPE(LinphoneEnums::CallState) diff --git a/Linphone/view/Control/Button/Button.qml b/Linphone/view/Control/Button/Button.qml index 0d15acdd0..6552f67bc 100644 --- a/Linphone/view/Control/Button/Button.qml +++ b/Linphone/view/Control/Button/Button.qml @@ -139,6 +139,12 @@ Control.Button { underline: mainItem.underline bold: (mainItem.style === ButtonStyle.noBackground || mainItem.style === ButtonStyle.noBackgroundRed) && (mainItem.hovered || mainItem.pressed) } + ToolTip { + parent: mainItem + text: mainItem.text + visible: mainItem.hovered && (buttonText.implicitWidth > buttonText.width) + delay: 500 + } TextMetrics { id: textMetrics text: mainItem.text diff --git a/Linphone/view/Control/Button/HelpIconLabelButton.qml b/Linphone/view/Control/Button/HelpIconLabelButton.qml index a7802f7a3..801dc77d7 100644 --- a/Linphone/view/Control/Button/HelpIconLabelButton.qml +++ b/Linphone/view/Control/Button/HelpIconLabelButton.qml @@ -36,10 +36,12 @@ MouseArea { } ColumnLayout { width: implicitWidth + Layout.preferredWidth: width height: implicitHeight Layout.leftMargin: Utils.getSizeWithScreenRatio(16) Text { Layout.fillWidth: true + maximumLineCount: 1 text: mainItem.title color: DefaultStyle.main2_600 font: Typography.p2 @@ -49,6 +51,7 @@ MouseArea { Text { Layout.alignment: Qt.AlignTop verticalAlignment: Text.AlignTop + maximumLineCount: 2 Layout.fillWidth: true text: mainItem.subTitle color: DefaultStyle.main2_500_main diff --git a/Linphone/view/Control/Popup/InformationPopup.qml b/Linphone/view/Control/Popup/InformationPopup.qml index 84f6d2c03..e9e5d89b2 100644 --- a/Linphone/view/Control/Popup/InformationPopup.qml +++ b/Linphone/view/Control/Popup/InformationPopup.qml @@ -86,6 +86,7 @@ Popup { text: mainItem.description wrapMode: Text.WordWrap color: DefaultStyle.main2_500_main + onLinkActivated: Qt.openUrlExternally(link) font { pixelSize: Utils.getSizeWithScreenRatio(12) weight: Utils.getSizeWithScreenRatio(300) diff --git a/Linphone/view/Page/Main/Help/HelpPage.qml b/Linphone/view/Page/Main/Help/HelpPage.qml index a9defedc0..736df377e 100644 --- a/Linphone/view/Page/Main/Help/HelpPage.qml +++ b/Linphone/view/Page/Main/Help/HelpPage.qml @@ -21,14 +21,15 @@ AbstractMainPage { id: leftPanel Layout.fillWidth: true Layout.fillHeight: true - property real sideMargin: Utils.getSizeWithScreenRatio(45) + property real leftMargin: Utils.getSizeWithScreenRatio(45) + property real rightMargin: Utils.getSizeWithScreenRatio(29) spacing: Utils.getSizeWithScreenRatio(5) RowLayout { Layout.fillWidth: true - Layout.leftMargin: leftPanel.sideMargin - Layout.rightMargin: leftPanel.sideMargin - spacing: Utils.getSizeWithScreenRatio(5) - Button { + Layout.leftMargin: leftPanel.leftMargin + Layout.rightMargin: leftPanel.rightMargin + spacing: Utils.getSizeWithScreenRatio(8) + RoundButton { icon.source: AppIcons.leftArrow style: ButtonStyle.noBackground icon.width: Utils.getSizeWithScreenRatio(24) @@ -51,8 +52,8 @@ AbstractMainPage { id: aboutImage Layout.fillWidth: true Layout.preferredHeight: Utils.getSizeWithScreenRatio(100) - Layout.leftMargin: leftPanel.sideMargin - Layout.rightMargin: leftPanel.sideMargin + Layout.leftMargin: leftPanel.leftMargin + Layout.rightMargin: leftPanel.rightMargin Layout.topMargin: Utils.getSizeWithScreenRatio(41) fillMode: Image.PreserveAspectFit source: SettingsCpp.themeAboutPictureUrl @@ -64,8 +65,8 @@ AbstractMainPage { } } Text { - Layout.leftMargin: leftPanel.sideMargin - Layout.rightMargin: leftPanel.sideMargin + Layout.leftMargin: leftPanel.leftMargin + Layout.rightMargin: leftPanel.rightMargin Layout.topMargin: Utils.getSizeWithScreenRatio(aboutImage.visible ? 41 : 24) Layout.fillWidth: true //: "À propos de %1" @@ -75,8 +76,8 @@ AbstractMainPage { } ColumnLayout { Layout.fillWidth: true - Layout.leftMargin: leftPanel.sideMargin - Layout.rightMargin: leftPanel.sideMargin + Layout.leftMargin: leftPanel.leftMargin + Layout.rightMargin: leftPanel.rightMargin Layout.topMargin: Utils.getSizeWithScreenRatio(24) spacing: Utils.getSizeWithScreenRatio(32) HelpIconLabelButton { @@ -91,13 +92,24 @@ AbstractMainPage { Qt.openUrlExternally(ConstantsCpp.PrivatePolicyUrl) } } - HelpIconLabelButton { - Layout.fillWidth: true - iconSource: AppIcons.info - //: "Version" - title: qsTr("help_about_version_title") - subTitle: AppCpp.shortApplicationVersion - onClicked: {} + RowLayout { + HelpIconLabelButton { + Layout.preferredWidth: width + Layout.minimumWidth: width + iconSource: AppIcons.info + //: "Version" + title: qsTr("help_about_version_title") + subTitle: AppCpp.shortApplicationVersion + onClicked: {} + } + Item{Layout.fillWidth: true} + MediumButton { + style: ButtonStyle.tertiary + Layout.fillWidth: true + //: Check update + text: qsTr("help_check_for_update_button_label") + onClicked: AppCpp.checkForUpdate(true) + } } HelpIconLabelButton { Layout.fillWidth: true @@ -122,8 +134,8 @@ AbstractMainPage { } } Text { - Layout.leftMargin: leftPanel.sideMargin - Layout.rightMargin: leftPanel.sideMargin + Layout.leftMargin: leftPanel.leftMargin + Layout.rightMargin: leftPanel.rightMargin Layout.topMargin: Utils.getSizeWithScreenRatio(32) Layout.fillWidth: true //: "À propos de %1" @@ -134,8 +146,8 @@ AbstractMainPage { HelpIconLabelButton { id: troubleShooting Layout.fillWidth: true - Layout.leftMargin: leftPanel.sideMargin - Layout.rightMargin: leftPanel.sideMargin + Layout.leftMargin: leftPanel.leftMargin + Layout.rightMargin: leftPanel.rightMargin Layout.topMargin: Utils.getSizeWithScreenRatio(24) iconSource: AppIcons.debug //: "Dépannage" diff --git a/Linphone/view/Style/DefaultStyle.qml b/Linphone/view/Style/DefaultStyle.qml index 3e8ee06d9..229b07f49 100644 --- a/Linphone/view/Style/DefaultStyle.qml +++ b/Linphone/view/Style/DefaultStyle.qml @@ -51,8 +51,8 @@ QtObject { property color vue_meter_light_green: "#6FF88D" property color vue_meter_dark_green: "#00D916" - property real defaultHeight: 1080.0 - property real defaultWidth: 1920.0 + property real defaultHeight: 1007.0 + property real defaultWidth: 1512.0 property real maxDp: 0.98 property real dp: Math.min((Screen.width/Screen.height)/(defaultWidth/defaultHeight), maxDp) From cbd91b868d05e405cdd3992a15088295f078571f Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Wed, 5 Nov 2025 09:31:10 +0100 Subject: [PATCH 10/72] update SDK to 5.4.56 --- external/linphone-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/linphone-sdk b/external/linphone-sdk index bb1a74f94..2f15b5b3e 160000 --- a/external/linphone-sdk +++ b/external/linphone-sdk @@ -1 +1 @@ -Subproject commit bb1a74f94099053363c05d6a1543648f83dd0d9e +Subproject commit 2f15b5b3eaaa251a35938b04bd586c26b91d8fcf From 99c2a6ddc612f8c867c4c451e37602f0fd69ebe4 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Wed, 14 May 2025 10:06:07 +0200 Subject: [PATCH 11/72] fix #LINQT-1657 do not manipulate internal gains --- Linphone/core/setting/SettingsCore.cpp | 7 +++++ Linphone/model/core/CoreModel.cpp | 4 +++ Linphone/model/setting/SettingsModel.cpp | 33 +++++++++++++++++------- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/Linphone/core/setting/SettingsCore.cpp b/Linphone/core/setting/SettingsCore.cpp index 77e22c786..8a489118a 100644 --- a/Linphone/core/setting/SettingsCore.cpp +++ b/Linphone/core/setting/SettingsCore.cpp @@ -237,6 +237,13 @@ void SettingsCore::setSelf(QSharedPointer me) { mustBeInLinphoneThread(getClassName()); mSettingsModelConnection = SafeConnection::create(me, SettingsModel::getInstance()); + mSettingsModelConnection->makeConnectToModel(&SettingsModel::captureGraphRunningChanged, [this](bool running) { + mSettingsModelConnection->invokeToCore([this, running] { + mCaptureGraphRunning = running; + emit captureGraphRunningChanged(running); + }); + }); + // VFS mSettingsModelConnection->makeConnectToModel(&SettingsModel::vfsEnabledChanged, [this](const bool enabled) { mSettingsModelConnection->invokeToCore([this, enabled]() { setVfsEnabled(enabled); }); diff --git a/Linphone/model/core/CoreModel.cpp b/Linphone/model/core/CoreModel.cpp index f36550773..226d47c97 100644 --- a/Linphone/model/core/CoreModel.cpp +++ b/Linphone/model/core/CoreModel.cpp @@ -114,6 +114,10 @@ void CoreModel::start() { if (mCore->getLogCollectionUploadServerUrl().empty()) mCore->setLogCollectionUploadServerUrl(Constants::DefaultUploadLogsServer); + /// These 2 API should not be used as they manage internal gains insterad of those of the soundcard. + // Use playback/capture gain from capture graph and call only + mCore->setMicGainDb(0.0); + mCore->setPlaybackGainDb(0.0); mIterateTimer = new QTimer(this); mIterateTimer->setInterval(20); connect(mIterateTimer, &QTimer::timeout, [this]() { mCore->iterate(); }); diff --git a/Linphone/model/setting/SettingsModel.cpp b/Linphone/model/setting/SettingsModel.cpp index a2bb672c5..79bd40b58 100644 --- a/Linphone/model/setting/SettingsModel.cpp +++ b/Linphone/model/setting/SettingsModel.cpp @@ -175,6 +175,7 @@ void SettingsModel::stopCaptureGraph() { void SettingsModel::accessCallSettings() { // Audio mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); + startCaptureGraph(); CoreModel::getInstance()->getCore()->reloadSoundDevices(); emit captureDevicesChanged(getCaptureDevices()); emit playbackDevicesChanged(getPlaybackDevices()); @@ -185,7 +186,6 @@ void SettingsModel::accessCallSettings() { emit playbackGainChanged(getPlaybackGain()); emit captureGainChanged(getCaptureGain()); - startCaptureGraph(); // Video CoreModel::getInstance()->getCore()->reloadVideoDevices(); emit videoDevicesChanged(getVideoDevices()); @@ -205,13 +205,12 @@ bool SettingsModel::getCaptureGraphRunning() { float SettingsModel::getMicVolume() { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); float v = 0.0; - if (mSimpleCaptureGraph && mSimpleCaptureGraph->isRunning()) { v = mSimpleCaptureGraph->getCaptureVolume(); } else { auto call = CoreModel::getInstance()->getCore()->getCurrentCall(); if (call) { - v = MediastreamerUtils::computeVu(call->getRecordVolume()); + v = call->getRecordVolume(); } } @@ -221,33 +220,49 @@ float SettingsModel::getMicVolume() { float SettingsModel::getPlaybackGain() const { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); - float dbGain = CoreModel::getInstance()->getCore()->getPlaybackGainDb(); - return MediastreamerUtils::dbToLinear(dbGain); + if (mSimpleCaptureGraph && mSimpleCaptureGraph->isRunning()) { + return mSimpleCaptureGraph->getPlaybackGain(); + } else { + auto call = CoreModel::getInstance()->getCore()->getCurrentCall(); + if (call) return call->getSpeakerVolumeGain(); + else return 0.0; + } } void SettingsModel::setPlaybackGain(float gain) { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); float oldGain = getPlaybackGain(); - CoreModel::getInstance()->getCore()->setPlaybackGainDb(MediastreamerUtils::linearToDb(gain)); if (mSimpleCaptureGraph && mSimpleCaptureGraph->isRunning()) { mSimpleCaptureGraph->setPlaybackGain(gain); } + auto currentCall = CoreModel::getInstance()->getCore()->getCurrentCall(); + if (currentCall) { + currentCall->setSpeakerVolumeGain(gain); + } if ((int)(oldGain * 1000) != (int)(gain * 1000)) emit playbackGainChanged(gain); } float SettingsModel::getCaptureGain() const { mustBeInLinphoneThread(getClassName()); - float dbGain = CoreModel::getInstance()->getCore()->getMicGainDb(); - return MediastreamerUtils::dbToLinear(dbGain); + if (mSimpleCaptureGraph && mSimpleCaptureGraph->isRunning()) { + return mSimpleCaptureGraph->getCaptureGain(); + } else { + auto call = CoreModel::getInstance()->getCore()->getCurrentCall(); + if (call) return call->getMicrophoneVolumeGain(); + else return 0.0; + } } void SettingsModel::setCaptureGain(float gain) { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); float oldGain = getCaptureGain(); - CoreModel::getInstance()->getCore()->setMicGainDb(MediastreamerUtils::linearToDb(gain)); if (mSimpleCaptureGraph && mSimpleCaptureGraph->isRunning()) { mSimpleCaptureGraph->setCaptureGain(gain); } + auto currentCall = CoreModel::getInstance()->getCore()->getCurrentCall(); + if (currentCall) { + currentCall->setMicrophoneVolumeGain(gain); + } if ((int)(oldGain * 1000) != (int)(gain * 1000)) emit captureGainChanged(gain); } From 6f4e925766c212a89ca22d50afab9f72d758b6bc Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Wed, 5 Nov 2025 11:05:38 +0100 Subject: [PATCH 12/72] fix #LINQT-2108 : do not use <= or >= in lessThan comparator (c++ restriction) --- Linphone/core/chat/ChatProxy.cpp | 2 +- Linphone/core/chat/message/EventLogProxy.cpp | 2 +- Linphone/core/conference/ConferenceInfoProxy.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Linphone/core/chat/ChatProxy.cpp b/Linphone/core/chat/ChatProxy.cpp index b5077815e..9b34f3e11 100644 --- a/Linphone/core/chat/ChatProxy.cpp +++ b/Linphone/core/chat/ChatProxy.cpp @@ -83,6 +83,6 @@ bool ChatProxy::SortFilterList::lessThan(const QModelIndex &sourceLeft, const QM if (!mFilterText.isEmpty()) return false; auto l = getItemAtSource(sourceLeft.row()); auto r = getItemAtSource(sourceRight.row()); - if (l && r) return l->getLastUpdatedTime() >= r->getLastUpdatedTime(); + if (l && r) return l->getLastUpdatedTime() > r->getLastUpdatedTime(); return false; } diff --git a/Linphone/core/chat/message/EventLogProxy.cpp b/Linphone/core/chat/message/EventLogProxy.cpp index f42d5335d..5fddfdf38 100644 --- a/Linphone/core/chat/message/EventLogProxy.cpp +++ b/Linphone/core/chat/message/EventLogProxy.cpp @@ -152,6 +152,6 @@ bool EventLogProxy::SortFilterList::filterAcceptsRow(int sourceRow, const QModel bool EventLogProxy::SortFilterList::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const { auto l = getItemAtSource(sourceLeft.row()); auto r = getItemAtSource(sourceRight.row()); - if (l && r) return l->getTimestamp() <= r->getTimestamp(); + if (l && r) return l->getTimestamp() < r->getTimestamp(); return true; } diff --git a/Linphone/core/conference/ConferenceInfoProxy.cpp b/Linphone/core/conference/ConferenceInfoProxy.cpp index d1799b3ad..82ed0247b 100644 --- a/Linphone/core/conference/ConferenceInfoProxy.cpp +++ b/Linphone/core/conference/ConferenceInfoProxy.cpp @@ -150,7 +150,7 @@ bool ConferenceInfoProxy::SortFilterList::lessThan(const QModelIndex &sourceLeft auto nowDate = QDate::currentDate(); if (!l || !r) { // sort on date auto rdate = r ? r->getDateTimeUtc().date() : QDate::currentDate(); - return !l ? nowDate <= r->getDateTimeUtc().date() : l->getDateTimeUtc().date() < nowDate; + return !l ? nowDate < r->getDateTimeUtc().date() : l->getDateTimeUtc().date() < nowDate; } else { return l->getDateTimeUtc() < r->getDateTimeUtc(); } From 0c87a8d94e1ef1cb18ea5c48865a3b26dfc200a9 Mon Sep 17 00:00:00 2001 From: gaelle Date: Wed, 5 Nov 2025 15:31:53 +0100 Subject: [PATCH 13/72] =?UTF-8?q?change=20Qt=20minimum=20version=20to=20Qt?= =?UTF-8?q?6.9.0=20#=E2=97=8BLINQT-2099?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Linphone/CMakeLists.txt | 4 ++++ README.md | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Linphone/CMakeLists.txt b/Linphone/CMakeLists.txt index 027e2d0bc..72c237256 100644 --- a/Linphone/CMakeLists.txt +++ b/Linphone/CMakeLists.txt @@ -98,6 +98,10 @@ endif() configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/config.h") +if(${Qt6_VERSION} VERSION_LESS "6.9.0") + message( FATAL_ERROR "Linphone requires Qt6.9.0 or newer. Exiting CMake." ) +endif() + if(${Qt6_VERSION} VERSION_LESS "6.3.0") set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) diff --git a/README.md b/README.md index c53a5e603..7b9ca7c40 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Linphone is dual licensed, and is available either : As linphone-desktop depends on [Linphone SDK](https://gitlab.linphone.org/BC/public/linphone-sdk), you need to install to Build dependencies common to all target platforms of this project: [The Linphone SDK depdencies](https://gitlab.linphone.org/BC/public/linphone-sdk#common-to-all-target-platforms) -For Desktop : you will need QT6 (_6.5.3 or newer_). `C++17` support is required!. You have two way to install it : +For Desktop : you will need QT6 (6.9.0 or newer_). `C++17` support is required!. You have two way to install it : - Using the [official QT installer](https://www.qt.io/download-thank-you) - Using an alternative installer like [aqtinstall](https://github.com/miurahr/aqtinstall) From c70426f770ed4ba5360efa7ebaddd53d0c9f9944 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Thu, 6 Nov 2025 09:11:53 +0100 Subject: [PATCH 14/72] fix crash (showing window while it is destroyed) (fix #LINQT-2077, #LINQT-2087, #LINQT-2110) --- Linphone/view/Page/Window/AbstractWindow.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linphone/view/Page/Window/AbstractWindow.qml b/Linphone/view/Page/Window/AbstractWindow.qml index 5f24c8126..b8ddc8d2b 100644 --- a/Linphone/view/Page/Window/AbstractWindow.qml +++ b/Linphone/view/Page/Window/AbstractWindow.qml @@ -16,7 +16,7 @@ ApplicationWindow { width: Math.min(Utils.getSizeWithScreenRatio(1512), Screen.desktopAvailableWidth) height: Math.min(Utils.getSizeWithScreenRatio(982), Screen.desktopAvailableHeight) - onActiveChanged: UtilsCpp.setLastActiveWindow(this) + onActiveChanged: if (active) UtilsCpp.setLastActiveWindow(this) property bool isFullscreen: visibility == Window.FullScreen onIsFullscreenChanged: DesktopToolsCpp.screenSaverStatus = !isFullscreen From 0d2e83a60d090f878b213197900ff040acfa7ae1 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Wed, 5 Nov 2025 17:17:09 +0100 Subject: [PATCH 15/72] fix #LINQT-2086 disable video only when starting audio call --- Linphone/model/call/CallModel.cpp | 2 +- Linphone/model/tool/ToolModel.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Linphone/model/call/CallModel.cpp b/Linphone/model/call/CallModel.cpp index 41b9f3474..a753b377e 100644 --- a/Linphone/model/call/CallModel.cpp +++ b/Linphone/model/call/CallModel.cpp @@ -132,7 +132,7 @@ void CallModel::activateLocalVideo(std::shared_ptr ¶ms lInfo() << sLog() .arg("Updating call with video enabled and media direction set to %1") .arg((int)params->getVideoDirection()); - params->enableVideo(enable); + params->enableVideo(SettingsModel::getInstance()->getVideoEnabled()); auto videoDirection = enable ? linphone::MediaDirection::SendRecv : linphone::MediaDirection::RecvOnly; params->setVideoDirection(videoDirection); } diff --git a/Linphone/model/tool/ToolModel.cpp b/Linphone/model/tool/ToolModel.cpp index 4ec89f5f7..c21c8bbda 100644 --- a/Linphone/model/tool/ToolModel.cpp +++ b/Linphone/model/tool/ToolModel.cpp @@ -320,7 +320,9 @@ bool ToolModel::createCall(const QString &sipAddress, SettingsModel::getInstance()->setCallToneIndicationsEnabled(true); } std::shared_ptr params = core->createCallParams(nullptr); - CallModel::activateLocalVideo(params, localVideoEnabled); + params->enableVideo(localVideoEnabled); + auto videoDirection = localVideoEnabled ? linphone::MediaDirection::SendRecv : linphone::MediaDirection::RecvOnly; + params->setVideoDirection(videoDirection); bool micEnabled = options.contains("microEnabled") ? options["microEnabled"].toBool() : true; params->enableMic(micEnabled); From 36c783c9e5541a11bc5b13531f4ce033ff8db7cb Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Wed, 5 Nov 2025 17:24:07 +0100 Subject: [PATCH 16/72] always show scrollbar when needed (fix #LINQT-2102) --- Linphone/view/Page/Form/Contact/ContactEdition.qml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Linphone/view/Page/Form/Contact/ContactEdition.qml b/Linphone/view/Page/Form/Contact/ContactEdition.qml index a80f1cab0..994c69ce6 100644 --- a/Linphone/view/Page/Form/Contact/ContactEdition.qml +++ b/Linphone/view/Page/Form/Contact/ContactEdition.qml @@ -203,10 +203,11 @@ MainRightPanel { sig.connect(f) } - ScrollBar.vertical: Control.ScrollBar { + ScrollBar.vertical: ScrollBar { anchors.right: parent.right + visible: editionLayout.contentHeight > editionLayout.height } - ScrollBar.horizontal: Control.ScrollBar { + ScrollBar.horizontal: ScrollBar { } ColumnLayout { spacing: Utils.getSizeWithScreenRatio(20) From 9e10d5e9bd9394aa353a8dc81b363cb5a461b7c9 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Wed, 5 Nov 2025 17:35:26 +0100 Subject: [PATCH 17/72] change sip login advanced params order --- Linphone/data/languages/de.ts | 74 +++++++++---------- Linphone/data/languages/en.ts | 74 +++++++++---------- Linphone/data/languages/fr.ts | 74 +++++++++---------- .../Control/Display/Chat/ImageFileView.qml | 2 - .../view/Page/Form/Login/SIPLoginPage.qml | 24 +++--- 5 files changed, 123 insertions(+), 125 deletions(-) diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index ae24e7eb8..2d0597d61 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2062,13 +2062,13 @@ ChatCore - + info_toast_deleted_title Deleted - + info_toast_deleted_message_history Message history has been deleted @@ -2780,78 +2780,78 @@ Error - - + + contact_editor_first_name "Prénom" Vorname - - + + contact_editor_last_name "Nom" Nachname - - + + contact_editor_company "Entreprise" Unternehmen - - + + contact_editor_job_title "Fonction" Beruf - - + + sip_address SIP-Adresse - + sip_address_number_accessible_name "SIP address number %1" - + remove_sip_address_accessible_name "Remove SIP address %1" - + new_sip_address_accessible_name "New SIP address" - + phone_number_number_accessible_name "Phone number number %1" - + remove_phone_number_accessible_name Remove phone number %1 - + new_phone_number_accessible_name "New phone number" - - + + phone "Téléphone" Telefon @@ -3503,12 +3503,12 @@ Error CoreModel - + info_popup_error_title Fehler - + fetching_config_failed_error_message "Remote provisioning cannot be retrieved" @@ -5646,28 +5646,28 @@ Pour les activer dans un projet commercial, merci de nous contacter. Erweiterte Einstellungen - - + + login_proxy_server_url "Outbound SIP Proxy URI" - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." - - + + login_registrar_uri "Registrar URI" - - + + login_id "Authentication ID (if different)" @@ -5966,43 +5966,43 @@ Pour les activer dans un projet commercial, merci de nous contacter. Die Anrufadresse ist keine interpretierbare SIP-Adresse: %1 - + group_call_error_no_account - + group_call_error_participants_invite - + group_call_error_creation - + voice_recording_duration "Voice recording (%1)" : %1 is the duration formated in mm:ss - + conference_invitation - + conference_invitation_updated - + conference_invitation_cancelled - + unknown_audio_device_name Unbekannter Gerätename diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 191f520e5..695a6f23d 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2039,13 +2039,13 @@ ChatCore - + info_toast_deleted_title Deleted Deleted - + info_toast_deleted_message_history Message history has been deleted Message history has been deleted @@ -2724,78 +2724,78 @@ Only your correspondent can decrypt them. Delete contact image - - + + contact_editor_first_name "Prénom" First name - - + + contact_editor_last_name "Nom" Last name - - + + contact_editor_company "Entreprise" Company - - + + contact_editor_job_title "Fonction" Job - - + + sip_address SIP address - + sip_address_number_accessible_name "SIP address number %1" SIP address number %1 - + remove_sip_address_accessible_name "Remove SIP address %1" Remove SIP address %1 - + new_sip_address_accessible_name "New SIP address" New SIP address - + phone_number_number_accessible_name "Phone number number %1" Phone number number %1 - + remove_phone_number_accessible_name Remove phone number %1 Remove phone number %1 - + new_phone_number_accessible_name "New phone number" New phone number - - + + phone "Téléphone" Phone @@ -3422,12 +3422,12 @@ Only your correspondent can decrypt them. CoreModel - + info_popup_error_title Error - + fetching_config_failed_error_message "Remote provisioning cannot be retrieved" Remote provisioning cannot be retrieved @@ -5541,28 +5541,28 @@ To enable them in a commercial project, please contact us. Advanced parameters - - + + login_proxy_server_url "Outbound SIP Proxy URI" Outbound SIP Proxy URI - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it. - - + + login_registrar_uri "Registrar URI" Registrar URI - - + + login_id "Authentication ID (if different)" Authentication ID (if different) @@ -5849,43 +5849,43 @@ To enable them in a commercial project, please contact us. The calling address is not an interpretable SIP address : %1 - + group_call_error_no_account No default account found, can't create group call - + group_call_error_participants_invite Couldn't invite participants to group call - + group_call_error_creation Group call couldn't be created - + voice_recording_duration "Voice recording (%1)" : %1 is the duration formated in mm:ss Voice recording (%1) - + unknown_audio_device_name Unknown device name - + conference_invitation Meeting invitation - + conference_invitation_cancelled Meeting cancellation - + conference_invitation_updated Meeting modification diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 54d40cd4c..8f7db69bf 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2039,13 +2039,13 @@ ChatCore - + info_toast_deleted_title Deleted Supprimé - + info_toast_deleted_message_history Message history has been deleted L'historique des messages a été supprimé @@ -2724,78 +2724,78 @@ en bout. Seul votre correspondant peut les déchiffrer. Supprimer l'image du contact - - + + contact_editor_first_name "Prénom" Prénom - - + + contact_editor_last_name "Nom" Nom - - + + contact_editor_company "Entreprise" Entreprise - - + + contact_editor_job_title "Fonction" Fonction - - + + sip_address Adresse SIP - + sip_address_number_accessible_name "SIP address number %1" Adresse SIP numéro %1 - + remove_sip_address_accessible_name "Remove SIP address %1" Retirer l'adresse SIP %1 - + new_sip_address_accessible_name "New SIP address" Nouvelle adresse SIP - + phone_number_number_accessible_name "Phone number number %1" Numéro de téléphone numéro - + remove_phone_number_accessible_name Remove phone number %1 Retirer le numéro de téléphone %1 - + new_phone_number_accessible_name "New phone number" Nouveau numéro de téléphone - - + + phone "Téléphone" Téléphone @@ -3422,12 +3422,12 @@ en bout. Seul votre correspondant peut les déchiffrer. CoreModel - + info_popup_error_title Erreur - + fetching_config_failed_error_message "Remote provisioning cannot be retrieved" La configuration distante n'a pas pu être récupérée @@ -5541,28 +5541,28 @@ Pour les activer dans un projet commercial, merci de nous contacter.Paramètres avancés - - + + login_proxy_server_url "Outbound SIP Proxy URI" URI du proxy SIP sortant - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." Si ce champ est rempli, l’outbound proxy sera activé automatiquement. Laissez-le vide pour le désactiver. - - + + login_registrar_uri "Registrar URI" Registrar URI - - + + login_id "Authentication ID (if different)" Identifiant de connexion (si différent) @@ -5849,43 +5849,43 @@ Pour les activer dans un projet commercial, merci de nous contacter.L'adresse n'est pas interprétable comme une adresse SIP - + group_call_error_no_account Impossible de créer l'appel de groupe, le compte par défaut n'est pas défini - + group_call_error_participants_invite Impossible d'inviter les participants à l'appel de groupe - + group_call_error_creation L'appel de groupe n'a pas pu être créé - + voice_recording_duration "Voice recording (%1)" : %1 is the duration formated in mm:ss Message vocal (%1) - + unknown_audio_device_name Appareil inconnu - + conference_invitation Invitation à une réunion - + conference_invitation_cancelled Annulation d'une réunion - + conference_invitation_updated Modification d'une réunion diff --git a/Linphone/view/Control/Display/Chat/ImageFileView.qml b/Linphone/view/Control/Display/Chat/ImageFileView.qml index 5aeba83b5..1de2a072e 100644 --- a/Linphone/view/Control/Display/Chat/ImageFileView.qml +++ b/Linphone/view/Control/Display/Chat/ImageFileView.qml @@ -21,8 +21,6 @@ Image { id: mainItem property ChatMessageContentGui contentGui - RectangleTest{anchors.fill: parent} - mipmap: false//SettingsModel.mipmapEnabled autoTransform: true fillMode: Image.PreserveAspectFit diff --git a/Linphone/view/Page/Form/Login/SIPLoginPage.qml b/Linphone/view/Page/Form/Login/SIPLoginPage.qml index b97c23f63..d36c3c2d6 100644 --- a/Linphone/view/Page/Form/Login/SIPLoginPage.qml +++ b/Linphone/view/Page/Form/Login/SIPLoginPage.qml @@ -385,16 +385,14 @@ LoginLayout { ColumnLayout { spacing: Utils.getSizeWithScreenRatio(10) FormItemLayout { - id: outboundProxyUri - //: "Outbound SIP Proxy URI" - label: qsTr("login_proxy_server_url") - //: "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." - tooltip: qsTr("login_proxy_server_url_tooltip") + id: connectionId + //: "Authentication ID (if different)" + label: qsTr("login_id") Layout.fillWidth: true contentItem: TextField { - id: outboundProxyUriEdit + id: connectionIdEdit Layout.preferredWidth: Utils.getSizeWithScreenRatio(360) - Accessible.name: qsTr("login_proxy_server_url") + Accessible.name: qsTr("login_id") KeyNavigation.up: transportCbox KeyNavigation.down: registrarUriEdit } @@ -413,15 +411,17 @@ LoginLayout { } } FormItemLayout { - id: connectionId - //: "Authentication ID (if different)" - label: qsTr("login_id") + id: outboundProxyUri + //: "Outbound SIP Proxy URI" + label: qsTr("login_proxy_server_url") + //: "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + tooltip: qsTr("login_proxy_server_url_tooltip") Layout.fillWidth: true contentItem: TextField { - id: connectionIdEdit + id: outboundProxyUriEdit Layout.preferredWidth: Utils.getSizeWithScreenRatio(360) + Accessible.name: qsTr("login_proxy_server_url") KeyNavigation.up: registrarUriEdit - Accessible.name: qsTr("login_id") } } } From cef650fb6a26dbd550d3c112a1042e7550869732 Mon Sep 17 00:00:00 2001 From: "gaelle.braud" Date: Thu, 6 Nov 2025 11:10:45 +0100 Subject: [PATCH 18/72] update SDK to 5.4.57 --- external/linphone-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/linphone-sdk b/external/linphone-sdk index 2f15b5b3e..7b12e544e 160000 --- a/external/linphone-sdk +++ b/external/linphone-sdk @@ -1 +1 @@ -Subproject commit 2f15b5b3eaaa251a35938b04bd586c26b91d8fcf +Subproject commit 7b12e544ecd212bb64aa9e5bee18d0f7a8d3d70e From e224f24e927a304d9c2a196b03850359d81a9fea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20J=C3=B6rgensen?= Date: Wed, 29 Oct 2025 17:10:06 +0100 Subject: [PATCH 19/72] Update QT to 6.10.0 and increase security: * Use QT 6.10.0 * Change invalidateFilter (deprecated) to beginFilterChange/endFilterChange * Remove warning of presenceStatusItem * Add changelog with this modification for 6.1.0 * Do not use anymore variables to build docker images. Qt versions are now hardcoded in images to allow multiple opensource Qt versions. --- .gitlab-ci-files/macosx-desktop.yml | 10 +-- .gitlab-ci.yml | 2 +- CHANGELOG.md | 6 ++ Linphone/core/proxy/SortFilterProxy.cpp | 10 ++- .../Display/Contact/PresenceStatusItem.qml | 1 - Linphone/view/Style/DefaultStyle.qml | 82 +++++++++---------- README.md | 6 +- docker-files/bc-dev-ubuntu-22-04-lts | 37 +++++---- 8 files changed, 85 insertions(+), 69 deletions(-) diff --git a/.gitlab-ci-files/macosx-desktop.yml b/.gitlab-ci-files/macosx-desktop.yml index f6bb3ed68..8f3803b07 100644 --- a/.gitlab-ci-files/macosx-desktop.yml +++ b/.gitlab-ci-files/macosx-desktop.yml @@ -26,7 +26,7 @@ .macosx-desktop: stage: build - tags: [ "macos-min-xcode12.2" ] + tags: [ "macmini-m1-xcode15" ] rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_MACOSX == null - if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_MACOSX == null @@ -93,7 +93,7 @@ macosx-ninja-novideo: # WAIT for QT6 for arm64 macosx-ninja-package: stage: package - tags: [ "macos-min-xcode12.2" ] + tags: [ "macmini-m1-xcode15" ] needs: [] rules: - !reference [.rules-merge-request-manual, rules] @@ -117,7 +117,7 @@ macosx-ninja-package: macosx-codesigning: stage: signing - tags: [ "macos-min-xcode12.2" ] + tags: [ "macmini-m1-xcode15" ] needs: - macosx-ninja-package rules: @@ -142,7 +142,7 @@ macosx-codesigning: macosx-deploy: stage: deploy - tags: [ "macos-min-xcode12.2" ] + tags: [ "macmini-m1-xcode15" ] needs: - macosx-codesigning only: @@ -160,7 +160,7 @@ macosx-deploy: macosx-makefile-plugins-deploy: stage: deploy - tags: [ "macos-min-xcode12.2" ] + tags: [ "macmini-m1-xcode15" ] needs: - macosx-makefile only: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e30b907d6..d44110a68 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,7 +21,7 @@ variables: #CMAKE_OPTIONS: -DENABLE_LIME_X3DH=YES # Docker image version - UBUNTU_2204_IMAGE_VERSION: 20250930_add_commercial_qt_versions_5.15.14_5.15.19_6.8.1_6.8.3_6.9.1 + UBUNTU_2204_IMAGE_VERSION: 20251106_add_commercial_qt_version_5.15.14_5.15.19_6.8.1_6.8.3_6.9.1_6.10.0 workflow: diff --git a/CHANGELOG.md b/CHANGELOG.md index e2312e036..bb3dd4c7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,3 +31,9 @@ Group changes to describe their impact on the project, as follows: - Default screen (between contacts, call history, conversations & meetings list) will change depending on where you were when the app was paused or killed, and you will return to that last visited screen on the next startup. - Minimum supported Qt version is now 6.5.3 - Some settings have changed name and/or section in linphonerc file. + + +## [6.1.0] - XXXX-XX-XX + +### Changed +- Minimum supported Qt version is now 6.10.0 \ No newline at end of file diff --git a/Linphone/core/proxy/SortFilterProxy.cpp b/Linphone/core/proxy/SortFilterProxy.cpp index 35047a6a7..aaa532a6e 100644 --- a/Linphone/core/proxy/SortFilterProxy.cpp +++ b/Linphone/core/proxy/SortFilterProxy.cpp @@ -63,9 +63,10 @@ int SortFilterProxy::getFilterType() const { void SortFilterProxy::setFilterType(int filterType) { if (getFilterType() != filterType) { + beginFilterChange(); mFilterType = filterType; + endFilterChange(); emit filterTypeChanged(filterType); - invalidate(); } } @@ -75,8 +76,9 @@ QString SortFilterProxy::getFilterText() const { void SortFilterProxy::setFilterText(const QString &filter) { if (mFilterText != filter) { + beginFilterChange(); mFilterText = filter; - invalidateFilter(); + endFilterChange(); emit filterTextChanged(); } } @@ -90,6 +92,6 @@ void SortFilterProxy::remove(int index, int count) { } void SortFilterProxy::invalidateFilter() { - // TODO : replace by begin/endFilterChanged when ci uses Qt6.10 - invalidate(); + QSortFilterProxyModel::beginFilterChange(); + QSortFilterProxyModel::endFilterChange(); } diff --git a/Linphone/view/Control/Display/Contact/PresenceStatusItem.qml b/Linphone/view/Control/Display/Contact/PresenceStatusItem.qml index 8eed0010d..7d2668a65 100644 --- a/Linphone/view/Control/Display/Contact/PresenceStatusItem.qml +++ b/Linphone/view/Control/Display/Contact/PresenceStatusItem.qml @@ -26,7 +26,6 @@ IconLabelButton { icon.source: UtilsCpp.getPresenceIcon(mainItem.presence) Layout.fillWidth: true shadowEnabled: false - contentImageColor: undefined padding: 0 onClicked: { diff --git a/Linphone/view/Style/DefaultStyle.qml b/Linphone/view/Style/DefaultStyle.qml index 229b07f49..c514f19e7 100644 --- a/Linphone/view/Style/DefaultStyle.qml +++ b/Linphone/view/Style/DefaultStyle.qml @@ -8,48 +8,48 @@ QtObject { property var currentTheme: Themes.themes.hasOwnProperty(SettingsCpp.themeMainColor) ? Themes.themes[SettingsCpp.themeMainColor] : Themes.themes["orange"] - property color main1_100: currentTheme.main100 - property color main1_200: currentTheme.main200 - property color main1_300: currentTheme.main300 - property color main1_500_main: currentTheme.main500 - property color main1_600: currentTheme.main600 - property color main1_700: currentTheme.main700 + property var main1_100: currentTheme.main100 + property var main1_200: currentTheme.main200 + property var main1_300: currentTheme.main300 + property var main1_500_main: currentTheme.main500 + property var main1_600: currentTheme.main600 + property var main1_700: currentTheme.main700 - property color main2_0: "#FAFEFF" - property color main2_100: "#EEF6F8" - property color main2_200: "#DFECF2" - property color main2_300: "#C0D1D9" - property color main2_400: "#9AABB5" - property color main2_500_main: "#6C7A87" - property color main2_600: "#4E6074" - property color main2_700: "#364860" - property color main2_800: "#22334D" - property color main2_900: "#2D3648" + property var main2_0: "#FAFEFF" + property var main2_100: "#EEF6F8" + property var main2_200: "#DFECF2" + property var main2_300: "#C0D1D9" + property var main2_400: "#9AABB5" + property var main2_500_main: "#6C7A87" + property var main2_600: "#4E6074" + property var main2_700: "#364860" + property var main2_800: "#22334D" + property var main2_900: "#2D3648" - property color grey_0: "#FFFFFF" - property color grey_100: "#F9F9F9" - property color grey_200: "#EDEDED" - property color grey_300: "#C9C9C9" - property color grey_400: "#949494" - property color grey_500: "#4E4E4E" - property color grey_600: "#2E3030" - property color grey_850: "#D9D9D9" - property color grey_900: "#070707" - property color grey_1000: "#000000" + property var grey_0: "#FFFFFF" + property var grey_100: "#F9F9F9" + property var grey_200: "#EDEDED" + property var grey_300: "#C9C9C9" + property var grey_400: "#949494" + property var grey_500: "#4E4E4E" + property var grey_600: "#2E3030" + property var grey_850: "#D9D9D9" + property var grey_900: "#070707" + property var grey_1000: "#000000" - property color warning_600: "#DBB820" - property color warning_700: "#AF9308" - property color danger_500_main: "#DD5F5F" - property color warning_500_main: "#FFDC2E" - property color danger_700: "#9E3548" - property color danger_900: "#723333" - property color success_500_main: "#4FAE80" - property color success_700: "#377d71" - property color success_900: "#1E4C53" - property color info_500_main: "#4AA8FF" + property var warning_600: "#DBB820" + property var warning_700: "#AF9308" + property var danger_500_main: "#DD5F5F" + property var warning_500_main: "#FFDC2E" + property var danger_700: "#9E3548" + property var danger_900: "#723333" + property var success_500_main: "#4FAE80" + property var success_700: "#377d71" + property var success_900: "#1E4C53" + property var info_500_main: "#4AA8FF" - property color vue_meter_light_green: "#6FF88D" - property color vue_meter_dark_green: "#00D916" + property var vue_meter_light_green: "#6FF88D" + property var vue_meter_dark_green: "#00D916" property real defaultHeight: 1007.0 property real defaultWidth: 1512.0 @@ -66,10 +66,10 @@ QtObject { property string flagFont: "Noto Color Emoji" property string defaultFont: "Noto Sans" - property color numericPadPressedButtonColor: "#EEF7F8" + property var numericPadPressedButtonColor: "#EEF7F8" - property color groupCallButtonColor: "#EEF7F8" + property var groupCallButtonColor: "#EEF7F8" - property color placeholders: '#CACACA' // No name in design + property var placeholders: '#CACACA' // No name in design } diff --git a/README.md b/README.md index 7b9ca7c40..f722b117a 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Linphone is dual licensed, and is available either : As linphone-desktop depends on [Linphone SDK](https://gitlab.linphone.org/BC/public/linphone-sdk), you need to install to Build dependencies common to all target platforms of this project: [The Linphone SDK depdencies](https://gitlab.linphone.org/BC/public/linphone-sdk#common-to-all-target-platforms) -For Desktop : you will need QT6 (6.9.0 or newer_). `C++17` support is required!. You have two way to install it : +For Desktop : you will need QT6 (_6.10.0 or newer_). `C++17` support is required!. You have two way to install it : - Using the [official QT installer](https://www.qt.io/download-thank-you) - Using an alternative installer like [aqtinstall](https://github.com/miurahr/aqtinstall) @@ -41,8 +41,8 @@ The following QT optional modules are required: qt5compat, qtmultimedia qtnetwor 2. You have to set the environment variable `Qt6_DIR` to point to the path containing the cmake folders of Qt6, and the `PATH` to the Qt6 `bin`. Example: ```bash -export Qt6_DIR="~/Qt/6.5.3/gcc_64/lib/cmake/Qt6" -export PATH="~/Qt/6.5.3/gcc_64/bin/:$PATH" +export Qt6_DIR="~/Qt/6.10.0/gcc_64/lib/cmake/Qt6" +export PATH="~/Qt/6.10.0/gcc_64/bin/:$PATH" ``` diff --git a/docker-files/bc-dev-ubuntu-22-04-lts b/docker-files/bc-dev-ubuntu-22-04-lts index 64e138b51..88b2d6ec8 100644 --- a/docker-files/bc-dev-ubuntu-22-04-lts +++ b/docker-files/bc-dev-ubuntu-22-04-lts @@ -1,16 +1,9 @@ ############################################################################### -# Dockerfile used to make gitlab.linphone.org:4567/bc/public/linphone-desktop/bc-dev-ubuntu-20-04-lts:20231024_add_multimedia +# Dockerfile used to make gitlab.linphone.org:4567/bc/public/linphone-desktop/bc-dev-ubuntu-22-04-lts:20251106_add_commercial_qt_version_5.15.14_5.15.19_6.8.1_6.8.3_6.9.1_6.10.0 ############################################################################### FROM ubuntu:22.04 -# Qt on Ubuntu 22.04 is too old. Use a downloader. -ARG QT_VERSION=5.15.2 -ARG QT6_VERSION=6.9.1 - -#Do not use it. It seems that it cannot be used from python command. -#ARG QT_MODULES=qtnetworkauth qtquick3d qtmultimedia qt5compat qtshadertools - LABEL Gaelle Braud # Use a Swiss mirror @@ -88,15 +81,18 @@ RUN sudo apt install --upgrade -y python3-setuptools # installation is split because there is a way where some modules are not downloaded in the first attempt. RUN sudo apt install -y python3-py7zr RUN sudo pip3 install --upgrade aqtinstall -RUN sudo python3 -m aqt install-qt linux desktop $QT_VERSION -O /opt/Qt/opensource -RUN sudo python3 -m aqt install-qt linux desktop $QT_VERSION -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d -RUN sudo python3 -m aqt install-qt linux desktop $QT6_VERSION -O /opt/Qt/opensource -RUN sudo python3 -m aqt install-qt linux desktop $QT6_VERSION -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d qtmultimedia qt5compat qtshadertools +RUN sudo python3 -m aqt install-qt linux desktop 5.15.2 -O /opt/Qt/opensource +RUN sudo python3 -m aqt install-qt linux desktop 5.15.2 -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d +RUN sudo python3 -m aqt install-qt linux desktop 6.9.1 -O /opt/Qt/opensource +RUN sudo python3 -m aqt install-qt linux desktop 6.9.1 -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d qtmultimedia qt5compat qtshadertools +RUN sudo python3 -m aqt install-qt linux desktop 6.10.0 -O /opt/Qt/opensource +RUN sudo python3 -m aqt install-qt linux desktop 6.10.0 -O /opt/Qt/opensource --noarchives -m qtnetworkauth qtquick3d qtmultimedia qt5compat qtshadertools RUN sudo chown -R bc:bc /opt/Qt/ -RUN qtchooser -install "$QT_VERSION-opensource" /opt/Qt/opensource/$QT_VERSION/gcc_64/bin/qmake -RUN qtchooser -install "$QT6_VERSION-opensource" /opt/Qt/opensource/$QT6_VERSION/gcc_64/bin/qmake +RUN qtchooser -install "5.15.2-opensource" /opt/Qt/opensource/5.15.2/gcc_64/bin/qmake +RUN qtchooser -install "6.9.1-opensource" /opt/Qt/opensource/6.9.1/gcc_64/bin/qmake +RUN qtchooser -install "6.10.0-opensource" /opt/Qt/opensource/6.10.0/gcc_64/bin/qmake # Download QT official installer for proprietary versions # -O : name the destination file after the remote file name, in the current directory @@ -158,10 +154,23 @@ RUN /opt/Qt/proprietary/MaintenanceTool \ --auto-answer OperationDoesNotExistError=Ignore,OverwriteTargetDirectory=Yes,stopProcessesForUpdates=Ignore,installationErrorWithCancel=Ignore,InstallationErrorWithIgnore=Ignore,AssociateCommonFiletypes=Yes,telemetry-question=No \ install qt.qt6.691.linux_gcc_64 qt.qt6.691.addons.qtnetworkauth qt.qt6.691.addons.qtquick3d qt.qt6.691.addons.qtmultimedia qt.qt6.691.addons.qt5compat qt.qt6.691.addons.qtshadertools +# # Install Qt 6.10.0 proprietary +RUN /opt/Qt/proprietary/MaintenanceTool \ + --accept-licenses \ + --accept-obligations \ + --confirm-command \ + --root "/opt/Qt/proprietary" \ + --auto-answer OperationDoesNotExistError=Ignore,OverwriteTargetDirectory=Yes,stopProcessesForUpdates=Ignore,installationErrorWithCancel=Ignore,InstallationErrorWithIgnore=Ignore,AssociateCommonFiletypes=Yes,telemetry-question=No \ + install qt.qt6.6100.linux_gcc_64 qt.qt6.6100.addons.qtnetworkauth qt.qt6.6100.addons.qtquick3d qt.qt6.6100.addons.qtmultimedia qt.qt6.6100.addons.qt5compat qt.qt6.6100.addons.qtshadertools + RUN qtchooser -install 5.15.19-proprietary /opt/Qt/proprietary/5.15.19/gcc_64/bin/qmake RUN qtchooser -install 5.15.14-proprietary /opt/Qt/proprietary/5.15.14/gcc_64/bin/qmake RUN qtchooser -install 6.8.1-proprietary /opt/Qt/proprietary/6.8.1/gcc_64/bin/qmake RUN qtchooser -install 6.8.3-proprietary /opt/Qt/proprietary/6.8.3/gcc_64/bin/qmake RUN qtchooser -install 6.9.1-proprietary /opt/Qt/proprietary/6.9.1/gcc_64/bin/qmake +RUN qtchooser -install 6.10.0-proprietary /opt/Qt/proprietary/6.10.0/gcc_64/bin/qmake + +RUN rm -f /home/bc/.local/share/Qt/qtaccount.ini +RUN rm -f /home/bc/.local/share/Qt/qtlicenses.ini cmd bash \ No newline at end of file From d957fae94ee60586bda38d2ed9bb21b41bb09849 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Thu, 6 Nov 2025 15:23:38 +0100 Subject: [PATCH 20/72] fix message content download crash --- .../content/ChatMessageContentCore.cpp | 14 ++++---- Linphone/data/languages/de.ts | 32 ++++++++++------- Linphone/data/languages/en.ts | 34 +++++++++++-------- Linphone/data/languages/fr.ts | 34 +++++++++++-------- .../content/ChatMessageContentModel.cpp | 10 ++++-- 5 files changed, 74 insertions(+), 50 deletions(-) diff --git a/Linphone/core/chat/message/content/ChatMessageContentCore.cpp b/Linphone/core/chat/message/content/ChatMessageContentCore.cpp index bc48c291c..e37abf6f6 100644 --- a/Linphone/core/chat/message/content/ChatMessageContentCore.cpp +++ b/Linphone/core/chat/message/content/ChatMessageContentCore.cpp @@ -97,16 +97,16 @@ void ChatMessageContentCore::setSelf(QSharedPointer me) mChatMessageContentModelConnection->makeConnectToCore(&ChatMessageContentCore::lDownloadFile, [this]() { mChatMessageContentModelConnection->invokeToModel([this] { - QString error; - bool downloaded = mChatMessageContentModel->downloadFile(mName, &error); + QString *error = new QString(); + bool downloaded = mChatMessageContentModel->downloadFile(mName, error); if (!downloaded) { - mChatMessageContentModelConnection->invokeToCore([this, &error] { - QString message = error; + mChatMessageContentModelConnection->invokeToCore([this, error] { //: Error downloading file %1 - if (error.isEmpty()) error = tr("download_file_default_error").arg(mName); - Utils::showInformationPopup(tr("info_popup_error_titile"), message, false); + if (error->isEmpty()) *error = tr("download_file_default_error").arg(mName); + Utils::showInformationPopup(tr("info_popup_error_titile"), *error, false); + delete error; }); - } + } else delete error; }); }); mChatMessageContentModelConnection->makeConnectToModel( diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 2d0597d61..045d4b8ab 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2240,24 +2240,24 @@ ChatMessageContentCore - + download_file_default_error Error downloading file %1 - + info_popup_error_titile - + popup_error_title Error Fehler - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 @@ -2329,8 +2329,8 @@ Error - download_file_error_wrong_state - Wrong message state when requesting downloading, state = %1 + download_file_server_error + Error while trying to download content : %1 @@ -2346,7 +2346,13 @@ Error - + + download_file_error_null_name + Content name is null, can't download it ! + + + + download_file_error_unable_to_download Unable to download file of entry %1 @@ -5646,28 +5652,28 @@ Pour les activer dans un projet commercial, merci de nous contacter. Erweiterte Einstellungen - - + + login_proxy_server_url "Outbound SIP Proxy URI" - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." - - + + login_registrar_uri "Registrar URI" - + login_id "Authentication ID (if different)" diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 695a6f23d..2eed5c476 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2217,24 +2217,24 @@ ChatMessageContentCore - + download_file_default_error Error downloading file %1 Error downloading file %1 - + info_popup_error_titile Error - + popup_error_title Error Error - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 Could not open file : unknown path %1 @@ -2301,9 +2301,9 @@ Error - download_file_error_wrong_state - Wrong message state when requesting downloading, state = %1 - Wrong message state when requesting downloading, state = %1 + download_file_server_error + Error while trying to download content : %1 + Error while trying to download content : %1 @@ -2318,7 +2318,13 @@ Error This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - + + download_file_error_null_name + Content name is null, can't download it ! + Content name is null, can't download it ! + + + download_file_error_unable_to_download Unable to download file of entry %1 Unable to download file of entry %1 @@ -5541,28 +5547,28 @@ To enable them in a commercial project, please contact us. Advanced parameters - - + + login_proxy_server_url "Outbound SIP Proxy URI" Outbound SIP Proxy URI - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it. - - + + login_registrar_uri "Registrar URI" Registrar URI - + login_id "Authentication ID (if different)" Authentication ID (if different) diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 8f7db69bf..2e8180cc0 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2217,24 +2217,24 @@ ChatMessageContentCore - + download_file_default_error Error downloading file %1 Erreur de téléchargement du fichier %1 - + info_popup_error_titile Erreur - + popup_error_title Error Erreur - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 Impossible d'ouvrir le fichier : chemin inconnu (%1) @@ -2301,9 +2301,9 @@ Error - download_file_error_wrong_state - Wrong message state when requesting downloading, state = %1 - Erreur dans l'état du message lors de la requête de téléchargement (state = %1) + download_file_server_error + Error while trying to download content : %1 + Erreur en tentant de télécharger le contenu : %1 @@ -2318,7 +2318,13 @@ Error Le fichier a déjà été téléchargé et n'est plus disponible sur le serveur. Votre correspondant devra vous le renvoyez si vous souhaitez l'obtenir - + + download_file_error_null_name + Content name is null, can't download it ! + Le nom du contenu est nul, impossible de le télécharger ! + + + download_file_error_unable_to_download Unable to download file of entry %1 Impossible de télécharger le fichier : %1 @@ -5541,28 +5547,28 @@ Pour les activer dans un projet commercial, merci de nous contacter.Paramètres avancés - - + + login_proxy_server_url "Outbound SIP Proxy URI" URI du proxy SIP sortant - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." Si ce champ est rempli, l’outbound proxy sera activé automatiquement. Laissez-le vide pour le désactiver. - - + + login_registrar_uri "Registrar URI" Registrar URI - + login_id "Authentication ID (if different)" Identifiant de connexion (si différent) diff --git a/Linphone/model/chat/message/content/ChatMessageContentModel.cpp b/Linphone/model/chat/message/content/ChatMessageContentModel.cpp index 48bd283e4..181049d04 100644 --- a/Linphone/model/chat/message/content/ChatMessageContentModel.cpp +++ b/Linphone/model/chat/message/content/ChatMessageContentModel.cpp @@ -91,8 +91,8 @@ bool ChatMessageContentModel::downloadFile(const QString &name, QString *error) default: auto state = LinphoneEnums::fromLinphone(mChatMessageModel->getState()); lWarning() << QStringLiteral("Wrong message state when requesting downloading, state=") << state; - //: Wrong message state when requesting downloading, state = %1 - if (error) *error = tr("download_file_error_wrong_state").arg(LinphoneEnums::toString(state)); + //: Error while trying to download content : %1 + if (error) *error = tr("download_file_server_error").arg(LinphoneEnums::toString(state)); return false; } bool soFarSoGood; @@ -113,7 +113,13 @@ bool ChatMessageContentModel::downloadFile(const QString &name, QString *error) //: to get it if (error) *error = tr("download_file_error_file_transfer_unavailable"); return false; + } else if (mContent->getName().empty()) { + lWarning() << QStringLiteral("content name is null, can't download it !"); + //: Content name is null, can't download it ! + if (error) *error = tr("download_file_error_null_name"); + return false; } else { + lDebug() << log().arg("download file : %1").arg(name); auto downloaded = mChatMessageModel->getMonitor()->downloadContent(mContent); if (!downloaded && error) { lWarning() << QStringLiteral("Unable to download file of entry %1.").arg(name); From b3b40d6f99588311750bdae0968582980e704a00 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Thu, 6 Nov 2025 16:43:02 +0100 Subject: [PATCH 21/72] use native player to open video files #LINQT-2116 hide e2e conf creation toggle #LINQT-2112 --- Linphone/view/Control/Display/Chat/FileView.qml | 11 ----------- .../view/Control/Display/Chat/ImageFileView.qml | 5 ----- .../view/Control/Display/Chat/VideoFileView.qml | 14 +++++++++++--- .../Layout/Settings/AdvancedSettingsLayout.qml | 1 + 4 files changed, 12 insertions(+), 19 deletions(-) diff --git a/Linphone/view/Control/Display/Chat/FileView.qml b/Linphone/view/Control/Display/Chat/FileView.qml index f95a9b139..62955853b 100644 --- a/Linphone/view/Control/Display/Chat/FileView.qml +++ b/Linphone/view/Control/Display/Chat/FileView.qml @@ -102,17 +102,6 @@ Item { position: 100 source: mainItem.isVideo ? "file:///" + mainItem.filePath : "" fillMode: playbackState === MediaPlayer.PlayingState ? VideoOutput.PreserveAspectFit : VideoOutput.PreserveAspectCrop - MouseArea { - propagateComposedEvents: false - enabled: videoThumbnail.visible - anchors.fill: parent - hoverEnabled: false - acceptedButtons: Qt.LeftButton - onClicked: (mouse) => { - mouse.accepted = true - videoThumbnail.playbackState === MediaPlayer.PlayingState ? videoThumbnail.pause() : videoThumbnail.play() - } - } EffectImage { anchors.centerIn: parent visible: videoThumbnail.playbackState !== MediaPlayer.PlayingState diff --git a/Linphone/view/Control/Display/Chat/ImageFileView.qml b/Linphone/view/Control/Display/Chat/ImageFileView.qml index 1de2a072e..4adc01790 100644 --- a/Linphone/view/Control/Display/Chat/ImageFileView.qml +++ b/Linphone/view/Control/Display/Chat/ImageFileView.qml @@ -26,10 +26,6 @@ Image { fillMode: Image.PreserveAspectFit source: contentGui && contentGui.core.thumbnail || "" - states: State { - name: 'hovered' - } - MouseArea { anchors.fill: parent hoverEnabled: true @@ -40,7 +36,6 @@ Image { onContainsMouseChanged: { if (containsMouse) UtilsCpp.setGlobalCursor(Qt.PointingHandCursor) else UtilsCpp.restoreGlobalCursor() - mainItem.state = containsMouse ? 'hovered' : '' } onPressed: (mouse) => { mouse.accepted = true diff --git a/Linphone/view/Control/Display/Chat/VideoFileView.qml b/Linphone/view/Control/Display/Chat/VideoFileView.qml index 00621baf8..e24208377 100644 --- a/Linphone/view/Control/Display/Chat/VideoFileView.qml +++ b/Linphone/view/Control/Display/Chat/VideoFileView.qml @@ -17,6 +17,7 @@ Rectangle { property var fillMode: playbackState === MediaPlayer.PlayingState ? VideoOutput.PreserveAspectFit : VideoOutput.PreserveAspectCrop property alias videoOutput: output property string source: mediaPlayer.source + MediaPlayer { id: mediaPlayer source: UtilsCpp.isVideo(mainItem.filePath) ? "file:///" + mainItem.filePath : "" @@ -54,11 +55,18 @@ Rectangle { propagateComposedEvents: false enabled: mainItem.visible anchors.fill: parent - hoverEnabled: false + hoverEnabled: true acceptedButtons: Qt.LeftButton - onClicked: (mouse) => { + cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor + // Changing cursor in MouseArea seems not to work with the Loader + // Use override cursor for this case + onContainsMouseChanged: { + if (containsMouse) UtilsCpp.setGlobalCursor(Qt.PointingHandCursor) + else UtilsCpp.restoreGlobalCursor() + } + onPressed: (mouse) => { mouse.accepted = true - mediaPlayer.playbackState === MediaPlayer.PlayingState ? mediaPlayer.pause() : mediaPlayer.play() + mainItem.contentGui.core.lOpenFile() } } EffectImage { diff --git a/Linphone/view/Page/Layout/Settings/AdvancedSettingsLayout.qml b/Linphone/view/Page/Layout/Settings/AdvancedSettingsLayout.qml index e61474910..c48a06830 100644 --- a/Linphone/view/Page/Layout/Settings/AdvancedSettingsLayout.qml +++ b/Linphone/view/Page/Layout/Settings/AdvancedSettingsLayout.qml @@ -137,6 +137,7 @@ AbstractSettingsLayout { propertyOwner: SettingsCpp } SwitchSetting { + visible: false Layout.fillWidth: true //: Create end to end encrypted meetings and group calls titleText: qsTr("settings_advanced_create_endtoend_encrypted_meetings_title") From d741e79e2e0e5784a0632e31195de1fe3c3a4b34 Mon Sep 17 00:00:00 2001 From: "gaelle.braud" Date: Thu, 6 Nov 2025 17:50:15 +0100 Subject: [PATCH 22/72] fix file preview display #LINQT-2098 --- .../view/Control/Display/Chat/FileView.qml | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/Linphone/view/Control/Display/Chat/FileView.qml b/Linphone/view/Control/Display/Chat/FileView.qml index 62955853b..fa9b7f399 100644 --- a/Linphone/view/Control/Display/Chat/FileView.qml +++ b/Linphone/view/Control/Display/Chat/FileView.qml @@ -67,20 +67,30 @@ Item { sourceSize.height: mainItem.height fillMode: Image.PreserveAspectFit } - Rectangle { + Image { anchors.fill: parent - color: DefaultStyle.main1_200 - opacity: 0.5 - Image { + z: image.z + 1 + visible: image.status == Image.Error || image.status == Image.Null || !UtilsCpp.fileExists(mainItem.filePath) + source: AppIcons.fileImage + sourceSize.width: mainItem.width + sourceSize.height: mainItem.height + fillMode: Image.PreserveAspectFit + } + Item { + id: loadingImageItem + anchors.fill: parent + visible: mainItem.isImage && image.status === Image.Loading + Rectangle { anchors.fill: parent - z: parent.z + 1 - visible: image.status == Image.Error || image.status == Image.Null || !UtilsCpp.fileExists(mainItem.filePath) - source: AppIcons.fileImage - sourceSize.width: mainItem.width - sourceSize.height: mainItem.height - fillMode: Image.PreserveAspectFit + color: DefaultStyle.main1_200 + opacity: 0.2 + } + BusyIndicator { + anchors.centerIn: parent + width: Utils.getSizeWithScreenRatio(20) } } + Image { id: image visible: mainItem.isImage && status !== Image.Loading @@ -343,4 +353,4 @@ Item { } } } -} \ No newline at end of file +} From 3dbea1ccb21fcfe740fd030aad64c8043d2808ac Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 7 Nov 2025 10:22:22 +0100 Subject: [PATCH 23/72] display qt version in help page --- Linphone/core/App.cpp | 5 +++++ Linphone/core/App.hpp | 2 ++ Linphone/data/image/qt-logo.png | Bin 0 -> 2758 bytes Linphone/tool/Constants.hpp | 2 +- .../view/Control/Button/HelpIconLabelButton.qml | 2 ++ Linphone/view/Page/Main/Help/HelpPage.qml | 10 ++++++++++ Linphone/view/Style/AppIcons.qml | 1 + 7 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 Linphone/data/image/qt-logo.png diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index 9661ec815..2f290f930 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -289,6 +289,7 @@ App::App(int &argc, char *argv[]) // The EXECUTABLE_NAME will be used in qt standard paths. It's our goal. QThread::currentThread()->setPriority(QThread::HighPriority); qDebug() << "app thread is" << QThread::currentThread(); + lDebug() << "Starting app with Qt version" << qVersion(); QCoreApplication::setApplicationName(EXECUTABLE_NAME); QApplication::setOrganizationDomain(EXECUTABLE_NAME); QCoreApplication::setApplicationVersion(APPLICATION_SEMVER); @@ -1480,6 +1481,10 @@ QString App::getSdkVersion() { #endif } +QString App::getQtVersion() const { + return qVersion(); +} + void App::checkForUpdate(bool requestedByUser) { mustBeInMainThread(log().arg(Q_FUNC_INFO)); if (CoreModel::getInstance() && mCoreModelConnection) { diff --git a/Linphone/core/App.hpp b/Linphone/core/App.hpp index ef0719258..fbf5d3725 100644 --- a/Linphone/core/App.hpp +++ b/Linphone/core/App.hpp @@ -46,6 +46,7 @@ class App : public SingleApplication, public AbstractObject { Q_PROPERTY(AccountList *accounts READ getAccounts NOTIFY accountsChanged) Q_PROPERTY(CallList *calls READ getCalls NOTIFY callsChanged) Q_PROPERTY(QString shortApplicationVersion READ getShortApplicationVersion CONSTANT) + Q_PROPERTY(QString qtVersion READ getQtVersion CONSTANT) Q_PROPERTY(QString gitBranchName READ getGitBranchName CONSTANT) Q_PROPERTY(QString sdkVersion READ getSdkVersion CONSTANT) Q_PROPERTY(ChatGui *currentChat READ getCurrentChat WRITE setCurrentChat NOTIFY currentChatChanged) @@ -164,6 +165,7 @@ public: QString getShortApplicationVersion(); QString getGitBranchName(); QString getSdkVersion(); + QString getQtVersion() const; Q_INVOKABLE void checkForUpdate(bool requestedByUser = false); ChatGui *getCurrentChat() const; diff --git a/Linphone/data/image/qt-logo.png b/Linphone/data/image/qt-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0c2da4bf61d2a319a1787be7834c43814b0e8e29 GIT binary patch literal 2758 zcma)8dpwkB8-6J%6G<`KOlr4QrD1YdL`kejMG;Lk<6Ov?G3#x}$|;AoEPW--7?Tb@ zDz+hNyzdNlBP26)Fa|Rth1Yq)Bq8kExBDIb{C>aZ{@vGoJ=b;L_w(O#>4=A`wiZqc z003>b{mxzhpe9EnVEGc1*}~k}gr=pTj_!^C@aPKWOP~f?tASpwPHLS^CW&bAZSa0C zcL4Z#3jidg0>CUvB@F@q(+mKH0|3B|4FFgMSKzrDz0f;y$a^1}_qKQ;2(q}i7%GV_ zN8l7ETsq3Co%QlK3hYHXLcSJ32VI?kUo;H&qs0ow{u3YoVAgyMHGsqY1|>Dmy1DPu z9KvX>&@(j(TA-q`J~wAa?{i&aH)Yp)x9Mu^dp5HenLk#hpbF!!E?ryyon(#5LTKuE z&BtizYyMA+Du-uRKZe!v$Fs-psZsQ^xUTk;jx9xG{Iww`G8jmu61!(P7;^A`p+5>E zh!He#J^61KFHU<{3YSf#VaQ~t&8xu{%jYBSAMT)Z*wq!*QNX`i_(T6v^m0)ZIMKe2 zXnz`iBXERDjQHw*2%|=%w!NKFHD!h6{|~G|St+IC?=AkVN1M;4pYG`59K1QYlI8bP zT1Ms9xnIQwMDxydM8o$SbP8%jcd((n^XMJxr;^sYM)54_Og1_k*Bse_Y#*qPpYOVz zkg)g5D~i#_sSeWjkp|%Iypq&_!-*sM_ooqL_)6D@nxOF%_<#mqBIN|m1=BeRVa}hF z*-zESkX+g~hkHko$`8``IJrv*757UT1LuB05kND$EoN^L~7Lr9Zn zdSgNI--METmxC$w+J`={ z@njF<>CSV<{a5FZ$Lfz(LZZ6a3QxH6$w#}51oKVq#f1kQ_4RY|YJ}>LC*o3}h(8cT z_sU$xT>}>A^#IH!*z>#cG=b(tYa~B)SKU9WgLH0|RXjM_9$ z>K&`f<;v_7><0zkd!8t0DT%3DU=7T-F7!i*3nbdp$V7>AiYPidf#A$HzI`fA&lvyUiAR4Q-TEx$f_&*hNO8FQP&7rr>U z8m|(@X;+TubE|>u0l4>FR{nSRQ_4|-`48)rLy%~*0~zX*k6zIZ=OuA7;6C{sF(m3`ScShd|bP^AQH5UhzvCc#7`=<8vaW1&aLWv);FEAVhRY;jR$aeln4rnT>g zKbV{Wul2U%kj=1Q^1+sRipXf-8fcCMo8Uj{DN)Mxj3#)d(9OIyDFY?s8c{^XE)G?P z)XaOft#?{0koO42Q}3Hq4p>EKfaa|5ncG&QlXaBh{)lO~>Xb-I5!yTtM3P79H;E<~ zaBG^-R68cW$)Tr(1#azn<<#P?&%&k?VxW`j=_d?%W|g6@Zx-F&JP@*-h1b*(iM@%X zI+ZHp^jgUaMuvq+>LAvh)2J=7A8oPLcAuj^(#hd>9H=98J`px-1xCY z&yXFbk&)Zez!qZZbqPcIgrr@5zRZ$$NpXI@`^xQ~I?4{|`-t`)-R3)mS!<~nbjcNx z6$Y$=EaMH36=S5-bxu={Q83ib%o3D~Ck=n|ww>0Mb0&(qQ?}LLyH=iycOoe|b-Eqj z0n?|Z2VdHH@Z$#hsiu(Y(1!dss{)0K)+4_!qqN?Uwf478?I_^Jc`K;Xqw|XXZ@ZL? zQtg)-lOG-#^G3abAmPk#*%PZX6V8?{lD1?-_Zc^- zEDDvGeCf!|OQz3T*1KT6qFer2i`^V@L6%$k{^a=M*ou`uf4s3$`OtaD@%Rdv z;5vLIDW)cQ6H5?#Awaoo#8@=nIkYvWB{IKO4rDfGuynuFoK=U`aAfCi>}O+qMH)n8 znblH35wd~J@f!@0Hc;B8tXPk!H2Pq3hdGwnSm%3KVKun0GWrhBlzeaHQpG^c5j7rx zT++2#aM&=A8NAnhYUlH6o-Z`0?t=KBoRgzpC|T-5sk|TJ=hqTWp?A2z|V3%ZZ1T zn-125O&_{l`ibA1(?KtrI-LPGL?ly122evp6AI0xY*R*Nr#hN!(Lit&8a#7y53a&! z;6Lzh=Ko0jv45FSsf-nuJvB#qHJA9NBymCIKc3h6C8RpRuyvhaz44XIl-{w4Rfhxi VY=;=@{Ln8T;I_}hndcO6;ZGyXhP40y literal 0 HcmV?d00001 diff --git a/Linphone/tool/Constants.hpp b/Linphone/tool/Constants.hpp index dccbd0f5f..0f81ba837 100644 --- a/Linphone/tool/Constants.hpp +++ b/Linphone/tool/Constants.hpp @@ -129,7 +129,7 @@ public: static constexpr char LinphoneDomain[] = "sip.linphone.org"; // Use for checking if config are a Linphone static constexpr char WindowIconPath[] = ":/data/image/logo.svg"; - static constexpr char ApplicationMinimalQtVersion[] = "6.6.5"; + static constexpr char ApplicationMinimalQtVersion[] = "6.9.0"; static constexpr char DefaultConferenceURI[] = "sip:conference-factory@sip.linphone.org"; // Default for a Linphone account static constexpr char DefaultVideoConferenceURI[] = diff --git a/Linphone/view/Control/Button/HelpIconLabelButton.qml b/Linphone/view/Control/Button/HelpIconLabelButton.qml index 801dc77d7..c51c8bd58 100644 --- a/Linphone/view/Control/Button/HelpIconLabelButton.qml +++ b/Linphone/view/Control/Button/HelpIconLabelButton.qml @@ -11,6 +11,7 @@ MouseArea { property string subTitle property real iconSize: Utils.getSizeWithScreenRatio(32) property bool shadowEnabled: containsMouse || activeFocus + property alias image: image hoverEnabled: true width: content.implicitWidth height: content.implicitHeight @@ -27,6 +28,7 @@ MouseArea { anchors.verticalCenter: parent.verticalCenter anchors.fill:parent EffectImage { + id: image Layout.preferredWidth: mainItem.iconSize Layout.preferredHeight: mainItem.iconSize width: mainItem.iconSize diff --git a/Linphone/view/Page/Main/Help/HelpPage.qml b/Linphone/view/Page/Main/Help/HelpPage.qml index 736df377e..4b4566a00 100644 --- a/Linphone/view/Page/Main/Help/HelpPage.qml +++ b/Linphone/view/Page/Main/Help/HelpPage.qml @@ -111,6 +111,16 @@ AbstractMainPage { onClicked: AppCpp.checkForUpdate(true) } } + HelpIconLabelButton { + id: qtVersionButton + Layout.preferredWidth: width + Layout.minimumWidth: width + iconSource: AppIcons.qtLogo + //: "Qt Version" + title: qsTr("help_about_qt_version_title") + subTitle: AppCpp.qtVersion + onClicked: {} + } HelpIconLabelButton { Layout.fillWidth: true iconSource: AppIcons.license diff --git a/Linphone/view/Style/AppIcons.qml b/Linphone/view/Style/AppIcons.qml index 42d66e6fe..0697a8d36 100644 --- a/Linphone/view/Style/AppIcons.qml +++ b/Linphone/view/Style/AppIcons.qml @@ -159,4 +159,5 @@ QtObject { property string photo: "image://internal/photo.svg" property string ephemeralSettings: "image://internal/ephemeral-settings.svg" property string hourglass: "image://internal/hourglass-simple.svg" + property string qtLogo: "image://internal/qt-logo.png" } From fcdbcdc9c1e275c3200081efc9c79e9adafa8c67 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 7 Nov 2025 11:11:35 +0100 Subject: [PATCH 24/72] Set minimum required version to Qt6.10.0 Display Qt version in troubleshooting page --- Linphone/CMakeLists.txt | 14 +--- Linphone/core/App.cpp | 1 + Linphone/data/languages/de.ts | 82 +++++++++--------- Linphone/data/languages/en.ts | 84 ++++++++++--------- Linphone/data/languages/fr.ts | 82 +++++++++--------- Linphone/tool/Constants.hpp | 2 +- .../Control/Button/HelpIconLabelButton.qml | 9 ++ .../Layout/Settings/DebugSettingsLayout.qml | 84 +++++++------------ Linphone/view/Page/Main/Help/HelpPage.qml | 11 +-- 9 files changed, 176 insertions(+), 193 deletions(-) diff --git a/Linphone/CMakeLists.txt b/Linphone/CMakeLists.txt index 72c237256..22c084ae6 100644 --- a/Linphone/CMakeLists.txt +++ b/Linphone/CMakeLists.txt @@ -98,19 +98,11 @@ endif() configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/config.h") -if(${Qt6_VERSION} VERSION_LESS "6.9.0") - message( FATAL_ERROR "Linphone requires Qt6.9.0 or newer. Exiting CMake." ) +if(${Qt6_VERSION} VERSION_LESS "6.10.0") + message( FATAL_ERROR "Linphone requires Qt 6.10.0 or newer. Exiting CMake." ) endif() -if(${Qt6_VERSION} VERSION_LESS "6.3.0") - set(CMAKE_AUTOMOC ON) - set(CMAKE_AUTORCC ON) - set(CMAKE_AUTOUIC ON) -else() - qt6_standard_project_setup() -endif() - - +qt6_standard_project_setup() ################################################################ diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index 2f290f930..29533ab37 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -450,6 +450,7 @@ void App::setSelf(QSharedPointer(me)) { QString downloadLink = QStringLiteral("%2") .arg(url) + //: Download it ! .arg(tr("info_popup_new_version_download_label")); Utils::showInformationPopup( //: New version available ! diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 045d4b8ab..a95da044e 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -599,13 +599,13 @@ Pflicht zur Medienverschlüsselung - + settings_advanced_create_endtoend_encrypted_meetings_title Create end to end encrypted meetings and group calls Erstelle Ende-zu-Ende verschlüsselte Konferenzen und Gruppenrufe - + settings_advanced_hide_fps_title FPS ausblenden @@ -634,141 +634,141 @@ App - + remote_provisioning_dialog Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? Möchten Sie die Remote-Konfiguration von dieser Adresse herunterladen und anwenden? - - - + + + info_popup_error_title Error Fehler - - + + info_popup_configuration_failed_message Remote provisioning failed : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. - + info_popup_new_version_download_label - + info_popup_new_version_available_title New version available ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 - + info_popup_version_up_to_date_title - + info_popup_version_up_to_date_message Your version is up to date - + configuration_error_detail not reachable - + application_description "A free and open source SIP video-phone." Ein kostenloses Open-Source SIP Video-Telefon. - + command_line_arg_order "Send an order to the application towards a command line" Kommandozeilen-Befehl an die Anwendung schicken - + command_line_option_show_help Zeige Hilfe - + command_line_option_show_app_version App-Version anzeigen - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, Pfad oder Datei - + command_line_option_minimized - + command_line_option_log_to_stdout Debug-Informationen auf der Standardausgabe ausgeben - + command_line_option_print_app_logs_only "Print only logs from the application" Nur Anwendungs-Logs ausgeben - + hide_action "Cacher" "Afficher" Ausblenden - + show_action Zeigen - + quit_action "Quitter" Beenden - + check_for_update Check for update - + mark_all_read_action @@ -2240,24 +2240,24 @@ ChatMessageContentCore - + download_file_default_error Error downloading file %1 - + info_popup_error_titile - + popup_error_title Error Fehler - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 @@ -3569,7 +3569,7 @@ Error - + information_popup_error_title Une erreur est survenue. Ein Fehler ist aufgetreten. @@ -3605,19 +3605,25 @@ Error Hochladen der Logs … - + settings_debug_app_version_title "Version de l'application" App-Version - + settings_debug_sdk_version_title "Version du SDK" SDK-Version - + + settings_debug_qt_version_title + "Qt Version" + + + + settings_debug_share_logs_error "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" Hochladen der Logs fehlgeschlagen. Sie können die Log-Dateien direkt aus folgendem Verzeichnis teilen: %1 @@ -3975,7 +3981,7 @@ Error Zur Übersetzung von %1 beitragen - + help_troubleshooting_title "Dépannage" Fehlerbehebung diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 2eed5c476..df289fb95 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -594,13 +594,13 @@ Mandatory media encryption - + settings_advanced_create_endtoend_encrypted_meetings_title Create end to end encrypted meetings and group calls Create end to end encrypted meetings and group calls - + settings_advanced_hide_fps_title Hide FPS @@ -629,141 +629,141 @@ App - + remote_provisioning_dialog Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? Do you want to download and apply remote provisioning from this address ? - - - + + + info_popup_error_title Error Error - - + + info_popup_configuration_failed_message Remote provisioning failed : %1 Remote provisioning failed : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. An error occured while trying to check update. Please try again later or contact support team. - + info_popup_new_version_download_label - + Download it ! - + info_popup_new_version_available_title New version available ! New version available ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 A new version of Linphone (%1) is available at %1 - + info_popup_version_up_to_date_title Up to date - + info_popup_version_up_to_date_message Your version is up to date Up to date Your version is up to date - + configuration_error_detail not reachable not reachable - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Show app version - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimize - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Hide - + show_action Show - + quit_action "Quitter" Quit - + check_for_update Check for update Check for update - + mark_all_read_action Marquer tout comme lu @@ -2217,24 +2217,24 @@ ChatMessageContentCore - + download_file_default_error Error downloading file %1 Error downloading file %1 - + info_popup_error_titile Error - + popup_error_title Error Error - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 Could not open file : unknown path %1 @@ -3488,7 +3488,7 @@ Only your correspondent can decrypt them. - + information_popup_error_title Une erreur est survenue. An error has occurred. @@ -3524,19 +3524,25 @@ Only your correspondent can decrypt them. Uploading traces… - + settings_debug_app_version_title "Version de l'application" App version - + settings_debug_sdk_version_title "Version du SDK" SDK version - + + settings_debug_qt_version_title + "Qt Version" + Qt Version + + + settings_debug_share_logs_error "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" Uploading traces failed. You can share trace files directly from the following directory: %1 @@ -3891,7 +3897,7 @@ Expiration : %1 Contribute to the translation of %1 - + help_troubleshooting_title "Dépannage" Troubleshooting diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 2e8180cc0..4a8db8600 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -594,13 +594,13 @@ Chiffrement du média obligatoire - + settings_advanced_create_endtoend_encrypted_meetings_title Create end to end encrypted meetings and group calls Créer des appels de groupe et conférences chiffré(e)s de bout en bout - + settings_advanced_hide_fps_title Cacher les FPS @@ -629,141 +629,141 @@ App - + remote_provisioning_dialog Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? - - - + + + info_popup_error_title Error Erreur - - + + info_popup_configuration_failed_message Remote provisioning failed : %1 La configuration distante a échoué : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. Une erreur est survenue lors de la recherche de mise à jour. Merci de réessayer plus tard ou de contacter l'équipe de support. - + info_popup_new_version_download_label Téléchargez-là ! - + info_popup_new_version_available_title New version available ! Nouvelle version disponible ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 Une nouvelle version de Linphone (%1) est disponible. %2 - + info_popup_version_up_to_date_title À jour - + info_popup_version_up_to_date_message Your version is up to date Votre version est à jour - + configuration_error_detail not reachable indisponible - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Afficher la version de l'application - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimiser - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Cacher - + show_action Afficher - + quit_action "Quitter" Quitter - + check_for_update Check for update Rechercher une mise à jour - + mark_all_read_action Marquer tout comme lu @@ -2217,24 +2217,24 @@ ChatMessageContentCore - + download_file_default_error Error downloading file %1 Erreur de téléchargement du fichier %1 - + info_popup_error_titile Erreur - + popup_error_title Error Erreur - + popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 Impossible d'ouvrir le fichier : chemin inconnu (%1) @@ -3488,7 +3488,7 @@ en bout. Seul votre correspondant peut les déchiffrer. - + information_popup_error_title Une erreur est survenue. Une erreur est survenue. @@ -3524,19 +3524,25 @@ en bout. Seul votre correspondant peut les déchiffrer. Téléversement des traces en cours… - + settings_debug_app_version_title "Version de l'application" Version de l'application - + settings_debug_sdk_version_title "Version du SDK" Version du SDK - + + settings_debug_qt_version_title + "Qt Version" + Version de Qt + + + settings_debug_share_logs_error "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1 @@ -3891,7 +3897,7 @@ Expiration : %1 Contribuer à la traduction de %1 - + help_troubleshooting_title "Dépannage" Dépannage diff --git a/Linphone/tool/Constants.hpp b/Linphone/tool/Constants.hpp index 0f81ba837..77ab36ebe 100644 --- a/Linphone/tool/Constants.hpp +++ b/Linphone/tool/Constants.hpp @@ -129,7 +129,7 @@ public: static constexpr char LinphoneDomain[] = "sip.linphone.org"; // Use for checking if config are a Linphone static constexpr char WindowIconPath[] = ":/data/image/logo.svg"; - static constexpr char ApplicationMinimalQtVersion[] = "6.9.0"; + static constexpr char ApplicationMinimalQtVersion[] = "6.10.0"; static constexpr char DefaultConferenceURI[] = "sip:conference-factory@sip.linphone.org"; // Default for a Linphone account static constexpr char DefaultVideoConferenceURI[] = diff --git a/Linphone/view/Control/Button/HelpIconLabelButton.qml b/Linphone/view/Control/Button/HelpIconLabelButton.qml index c51c8bd58..aa82aab57 100644 --- a/Linphone/view/Control/Button/HelpIconLabelButton.qml +++ b/Linphone/view/Control/Button/HelpIconLabelButton.qml @@ -3,6 +3,7 @@ import QtQuick.Effects import QtQuick.Layouts import Linphone import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils +import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle MouseArea { id: mainItem @@ -11,6 +12,7 @@ MouseArea { property string subTitle property real iconSize: Utils.getSizeWithScreenRatio(32) property bool shadowEnabled: containsMouse || activeFocus + property bool arrowImageVisible: false property alias image: image hoverEnabled: true width: content.implicitWidth @@ -61,6 +63,13 @@ MouseArea { font: Typography.p1 } } + Item{Layout.fillWidth: true} + EffectImage { + id: arrowImage + visible: mainItem.arrowImageVisible + imageSource: AppIcons.rightArrow + colorizationColor: DefaultStyle.main2_600 + } } MultiEffect { enabled: mainItem.shadowEnabled diff --git a/Linphone/view/Page/Layout/Settings/DebugSettingsLayout.qml b/Linphone/view/Page/Layout/Settings/DebugSettingsLayout.qml index ac0883c66..5b290f44b 100644 --- a/Linphone/view/Page/Layout/Settings/DebugSettingsLayout.qml +++ b/Linphone/view/Page/Layout/Settings/DebugSettingsLayout.qml @@ -118,63 +118,35 @@ AbstractSettingsLayout { id: versionContent ColumnLayout { spacing: Utils.getSizeWithScreenRatio(20) - RowLayout { - EffectImage { - imageSource: AppIcons.appWindow - colorizationColor: DefaultStyle.main1_500_main - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) - imageWidth: Utils.getSizeWithScreenRatio(24) - imageHeight: Utils.getSizeWithScreenRatio(24) - Layout.alignment: Qt.AlignTop - } - ColumnLayout { - Text { - //: "Version de l'application" - text: qsTr("settings_debug_app_version_title") - font: Typography.p2l - wrapMode: Text.WordWrap - color: DefaultStyle.main2_600 - Layout.fillWidth: true - } - TextEdit { - text: AppCpp.applicationVersion + ' ('+ AppCpp.gitBranchName + ')' - font: Typography.p1 - wrapMode: Text.WordWrap - color: DefaultStyle.main2_600 - Layout.fillWidth: true - readOnly: true - } - } + HelpIconLabelButton { + enabled: false + // Layout.preferredWidth: width + // Layout.minimumWidth: width + iconSize: Utils.getSizeWithScreenRatio(24) + //: "Version de l'application" + title: qsTr("settings_debug_app_version_title") + iconSource: AppIcons.appWindow + subTitle: AppCpp.applicationVersion + ' ('+ AppCpp.gitBranchName + ')' } - RowLayout { - EffectImage { - imageSource: AppIcons.resourcePackage - colorizationColor: DefaultStyle.main1_500_main - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) - imageWidth: Utils.getSizeWithScreenRatio(24) - imageHeight: Utils.getSizeWithScreenRatio(24) - Layout.alignment: Qt.AlignTop - } - ColumnLayout { - Text { - //: "Version du SDK" - text: qsTr("settings_debug_sdk_version_title") - font: Typography.p2l - wrapMode: Text.WordWrap - color: DefaultStyle.main2_600 - Layout.fillWidth: true - } - TextEdit { - text: AppCpp.sdkVersion - font: Typography.p1 - wrapMode: Text.WordWrap - color: DefaultStyle.main2_600 - Layout.fillWidth: true - readOnly: true - } - } + HelpIconLabelButton { + enabled: false + // Layout.preferredWidth: width + // Layout.minimumWidth: width + iconSize: Utils.getSizeWithScreenRatio(24) + //: "Version du SDK" + title: qsTr("settings_debug_sdk_version_title") + iconSource: AppIcons.resourcePackage + subTitle: AppCpp.sdkVersion + } + HelpIconLabelButton { + enabled: false + // Layout.preferredWidth: width + // Layout.minimumWidth: width + iconSize: Utils.getSizeWithScreenRatio(24) + iconSource: AppIcons.qtLogo + //: "Qt Version" + title: qsTr("settings_debug_qt_version_title") + subTitle: AppCpp.qtVersion } } } diff --git a/Linphone/view/Page/Main/Help/HelpPage.qml b/Linphone/view/Page/Main/Help/HelpPage.qml index 4b4566a00..71ab04360 100644 --- a/Linphone/view/Page/Main/Help/HelpPage.qml +++ b/Linphone/view/Page/Main/Help/HelpPage.qml @@ -111,16 +111,6 @@ AbstractMainPage { onClicked: AppCpp.checkForUpdate(true) } } - HelpIconLabelButton { - id: qtVersionButton - Layout.preferredWidth: width - Layout.minimumWidth: width - iconSource: AppIcons.qtLogo - //: "Qt Version" - title: qsTr("help_about_qt_version_title") - subTitle: AppCpp.qtVersion - onClicked: {} - } HelpIconLabelButton { Layout.fillWidth: true iconSource: AppIcons.license @@ -160,6 +150,7 @@ AbstractMainPage { Layout.rightMargin: leftPanel.rightMargin Layout.topMargin: Utils.getSizeWithScreenRatio(24) iconSource: AppIcons.debug + arrowImageVisible: true //: "Dépannage" title: qsTr("help_troubleshooting_title") onClicked: { From 74b2cf299b9924b3741052ec96f72013e9ab6a1d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 7 Nov 2025 10:31:05 +0000 Subject: [PATCH 25/72] Updated translations from Weblate --- Linphone/data/languages/ca.ts | 27 +- Linphone/data/languages/cs.ts | 677 +-- Linphone/data/languages/de.ts | 4 +- Linphone/data/languages/es.ts | 12 - Linphone/data/languages/eu.ts | 59 +- Linphone/data/languages/fi.ts | 7434 ++++++++++++++++++++++++++++ Linphone/data/languages/hu.ts | 12 - Linphone/data/languages/mk.ts | 12 - Linphone/data/languages/nl.ts | 12 - Linphone/data/languages/pt.ts | 31 +- Linphone/data/languages/pt_BR.ts | 733 +-- Linphone/data/languages/ru.ts | 25 +- Linphone/data/languages/sk.ts | 12 - Linphone/data/languages/uk.ts | 25 +- Linphone/data/languages/zh_Hans.ts | 52 +- 15 files changed, 8265 insertions(+), 862 deletions(-) create mode 100644 Linphone/data/languages/fi.ts diff --git a/Linphone/data/languages/ca.ts b/Linphone/data/languages/ca.ts index b2b7a0fee..3f628b379 100644 --- a/Linphone/data/languages/ca.ts +++ b/Linphone/data/languages/ca.ts @@ -80,7 +80,7 @@ manage_account_status_cleared_summary "Compte désactivé, vous ne recevrez ni appel ni message." - + Compte desactivat, no rebràs pas trucades ni missatges. @@ -2187,6 +2187,11 @@ Could not open file : unknown path %1 + + + info_popup_error_titile + Error + ChatMessageContentList @@ -2241,18 +2246,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - Error - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore @@ -7429,4 +7422,12 @@ Failed to create 1-1 conversation with %1 ! + + CoreModel + + + info_popup_error_title + Error + + diff --git a/Linphone/data/languages/cs.ts b/Linphone/data/languages/cs.ts index 95be3c867..be8063b26 100644 --- a/Linphone/data/languages/cs.ts +++ b/Linphone/data/languages/cs.ts @@ -7,7 +7,7 @@ return_accessible_name Return - + Návrat @@ -19,7 +19,7 @@ save_settings_accessible_name Save %1 settings - + Uložit nastavení %1 @@ -152,37 +152,37 @@ set_mwi_server_address_failed_error_message "Unable to set voicemail server address, failed creating address from %1" : %1 is address - + Nelze nastavit adresu serveru hlasové schránky, selhalo vytvoření adresy z %1 set_server_address_failed_error_message "Unable to set server address, failed creating address from %1" - + Nelze nastavit adresu serveru, selhalo vytvoření adresy z %1 set_outbound_proxy_uri_failed_error_message Unable to set outbound proxy uri, failed creating address from %1 - + Nelze nastavit odchozí proxy URI, selhalo vytvoření adresy z %1 set_conference_factory_address_failed_error_message "Unable to set the conversation server address, failed creating address from %1" - + Nelze nastavit adresu konverzačního serveru, selhalo vytvoření adresy z %1 set_audio_conference_factory_address_failed_error_message "Unable to set the meeting server address, failed creating address from %1" - + Nelze nastavit adresu serveru schůzky, selhalo vytvoření adresy z %1 set_voicemail_address_failed_error_message Unable to set voicemail address, failed creating address from %1 - + Nelze nastavit adresu hlasové schránky, selhalo vytvoření adresy z %1 @@ -302,7 +302,7 @@ device_last_updated_time_no_info "No information" - + Žádné informace @@ -365,13 +365,13 @@ info_popup_invalid_registrar_uri_message Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - + Registrační uri je neplatná. Ujistěte se, že odpovídá následujícímu formátu: sip:<host>:<port>;transport=<transport> (:<port> je volitelný) info_popup_invalid_outbound_proxy_message Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - + Uri odchozího proxy serveru je neplatné. Ujistěte se, že odpovídá následujícímu formátu: sip:<host>:<port>;transport=<transport> (:<port> je volitelný) @@ -415,18 +415,18 @@ account_settings_registrar_uri_title - + Registrační URI account_settings_sip_proxy_url_title - + URI odchozího SIP proxy serveru login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." - + Pokud je toto pole vyplněno, odchozí proxy bude automaticky povolena. Nechte jej prázdné, chcete-li ji zakázat. @@ -490,17 +490,17 @@ add_participant_selected_count 0 "%n participant(s) sélectionné(s)" - - - - + + %1 vybraný účastník + %1 vybraní účastníci + %1 vybraných účastníků remove_participant_accessible_name Remove participant %1 - + Odstranit účastníka %1 @@ -579,7 +579,7 @@ download_apply_remote_provisioning_accessible_name "Download and apply remote provisioning" - + Stáhnout a použít nastavení vzdálené konfigurace @@ -725,7 +725,12 @@ mark_all_read_action - + Označit vše jako přečtené + + + + info_popup_new_version_download_label + Žádný token nenalezen @@ -850,72 +855,72 @@ settings_call_forward_activate_title "Forward calls" - + Přesměrování hovorů settings_call_forward_activate_subtitle "Enable call forwarding to voicemail or sip address" - + Přesměrování hovorů do hlasové schránky nebo na číslo / SIP adresu settings_call_forward_destination_choose Forward to destination - + Přesměrovat hovor na: settings_call_forward_to_voicemail - + Hlasová schránka settings_call_forward_to_sipaddress - + Číslo / SIP adresa settings_call_forward_sipaddress_title SIP Address - + Číslo / SIP adresa: settings_call_forward_sipaddress_placeholder - + John_Doe settings_call_forward_address_cannot_be_empty - + Číslo nebo SIP adresa je vyžadována settings_call_forward_address_timeout - + Nelze nastavit přesměrování hovoru, vypršel časový limit požadavku settings_call_forward_address_progress_disabling - + Vypnutí přesměrování hovoru settings_call_forward_address_progress_enabling - + Zapnutí přesměrování hovoru na: settings_call_forward_activation_success - + Zapnuto přesměrování hovoru na: settings_call_forward_deactivation_success - + Přesměrování hovoru vypnuto @@ -951,7 +956,7 @@ call_name_accessible_button Call %1 - + Hovor %1 @@ -1004,12 +1009,12 @@ remote_group_call Remote group call - + Vzdálený skupinový hovor local_group_call - + Místní skupinový hovor @@ -1020,7 +1025,7 @@ info_popup_merge_calls_failed_message Failed to merge calls ! - + Nepodařilo se sloučit hovory! @@ -1053,25 +1058,25 @@ transfer_call_name_accessible_name Transfer call %1 - + Přepojit hovor %1 resume_call_name_accessible_name Resume %1 call - + Obnovit hovor %1 pause_call_name_accessible_name Pause %1 call - + Pozastavit hovor %1 end_call_name_accessible_name End %1 call - + Ukončit hovor %1 @@ -1080,19 +1085,19 @@ call_error_no_response_toast "No response" - + Žádná odpověď call_error_forbidden_resource_toast "403 : Forbidden resource" - + 403: Zakázaný zdroj call_error_not_answered_toast "Request timeout" - + Prodleva požadavku @@ -1128,13 +1133,13 @@ call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" - + Uživatel nesmí být rušen call_error_temporarily_unavailable_toast "Temporarily unavailable" - + Dočasně nedostupný @@ -1148,12 +1153,12 @@ call_forward_to_address_info - + Přesměrovat hovor na: call_forward_to_address_info_voicemail - + Hlasová schránka @@ -1200,7 +1205,7 @@ call_history_options_accessible_name - + Možnosti historie hovorů @@ -1213,13 +1218,13 @@ call_history_list_options_accessible_name Call history options - + Možnosti historie hovorů create_new_call_accessible_name Create new call - + Vytvořit nový hovor @@ -1243,7 +1248,7 @@ return_to_call_history_accessible_name Return to call history - + Návrat k historii hovorů @@ -1391,30 +1396,30 @@ settings_calls_command_line_title Command line - + Příkaz v příkazovém řádku spouštěný při příchozím hovoru settings_calls_command_line_title_place_holder - + příkaz "https://example.com/?phone=$1&displayName=$2" settings_calls_change_ringtone_title "Change ringtone" - + Změnit vyzváněcí tón settings_calls_current_ringtone_filename Current ringtone : - + Současný vyzváněcí tón: choose_ringtone_file_accessible_name Choose ringtone file - + Vybrat soubor vyzváněcího tónu @@ -1423,7 +1428,7 @@ close_name_panel_accessible_button Close %1 panel - + Zavřít panel %1 @@ -1675,10 +1680,10 @@ group_call_participant_selected - - - - + + %1 vybraný účastník + %1 vybraní účastníci + %1 vybraných účastníků @@ -1695,13 +1700,13 @@ open_statistic_panel_accessible_name - + Otevřít statistický panel conference_user_is_sharing_screen "You are sharing your screen" - + Sdílíte svou obrazovku @@ -1719,7 +1724,7 @@ stop_screen_sharing_accessible_name "Stop screen sharing" - + Zastavit sdílení obrazovky @@ -1808,7 +1813,7 @@ call_open_chat_hint Open chat… - + Otevřít konverzaci… @@ -1994,7 +1999,7 @@ information_popup_voice_message_error_message Failed to create voice message : error in recorder - + Nepodařilo se vytvořit hlasovou zprávu: chyba v záznamníku @@ -2003,13 +2008,13 @@ info_toast_deleted_title Deleted - + Smazáno info_toast_deleted_message_history Message history has been deleted - + Historie zpráv byla smazána @@ -2018,13 +2023,13 @@ chat_view_send_area_placeholder_text Say something… : placeholder text for sending message text area - + Napište něco… cannot_record_while_in_call_tooltip Cannot record a message while a call is ongoing - + Nelze nahrávat zprávu během hovoru @@ -2033,12 +2038,12 @@ chat_message_is_writing_info %1 is writing… - + %1 píše… chat_message_draft_sending_text - + Koncept: %1 @@ -2049,49 +2054,49 @@ chat_room_mute - + Ztlumit chat_room_unmute "Mute" - + Zrušit ztlumení chat_room_mark_as_read "Mark as read" - + Označit jako přečtené chat_room_leave "leave" - + Opustit chat_list_leave_chat_popup_title leave the conversation ? - + Opustit konverzaci? chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + V této konverzaci již nebudete moci odesílat ani přijímat zprávy. Chcete pokračovat? chat_list_delete_chat_popup_title Delete the conversation ? - + Smazat konverzaci? chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? - + Tato konverzace a všechny její zprávy budou smazány. Chcete pokračovat? @@ -2100,13 +2105,13 @@ chat_message_copy_selection "Copy selection" - + Kopírovat výběr chat_message_copy "Copy" - + Kopírovat @@ -2118,55 +2123,55 @@ chat_message_copied_to_clipboard_toast "to clipboard" - + ve schránce chat_message_remote_replied %1 replied - + %1 odpověděl na chat_message_forwarded Forwarded - + Přeposláno chat_message_remote_replied_to %1 replied to %2 - + %1 odpověděl %2 chat_message_user_replied_to You replied to %1 - + Odpověděl jste %1 chat_message_user_replied You replied - + Odpověděl jste chat_message_reception_info "Reception info" - + Info chat_message_reply Reply - + Odpovědět chat_message_forward Forward - + Přeposlat @@ -2187,7 +2192,12 @@ popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 - + Nelze otevřít soubor: neznámé umístění %1 + + + + info_popup_error_titile + Chyba @@ -2201,61 +2211,49 @@ Error adding file ---------- Error - + Chyba při přidávání souboru popup_error_path_does_not_exist_message File was not found: %1 - + Soubor nebyl nalezen: %1 popup_error_nb_files_not_found_message - + %1 souborů nebylo nalezeno popup_error_max_files_count_message You can send 12 files maximum at a time. %n files were ignored - - - - + + Najednou můžete odeslat maximálně 12 souborů. %n soubor byl ignorován + Najednou můžete odeslat maximálně 12 souborů. %n soubory byl ignorovány + Najednou můžete odeslat maximálně 12 souborů. %n souborů bylo ignorováno popup_error_file_too_big_message %n files were ignored cause they exceed the maximum size. (Size limit=%2) - + %n souborů bylo ignorováno, protože překročily maximální velikost. (Limit velikosti = %2) popup_error_unsupported_files_message - + Nelze získat podporovaný typ MIME pro %1 souborů. popup_error_unsupported_file_message Unable to get supported mime type for: `%1`. - + Nelze získat podporovaný typ MIME pro: `%1`. ChatMessageContentModel - - - popup_error_title - Error - Chyba - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore @@ -2263,19 +2261,19 @@ Error all_reactions_label "Reactions": all reactions for one message label - + Reakce info_toast_deleted_title Deleted - + Smazáno info_toast_deleted_message The message has been deleted - + Zpráva byla smazána @@ -2283,35 +2281,35 @@ Error ics_bubble_meeting_from - + od ics_bubble_meeting_to - + pro ics_bubble_meeting_modified Meeting has been updated - + Schůzka byla aktualizována ics_bubble_meeting_cancelled Meeting has been canceled - + Schůzka byla zrušena - + od %1 pro %2 (UTC%3) ics_bubble_description_title Description - + Popis @@ -2323,10 +2321,10 @@ Error ics_bubble_participants %n participant(s) - - - - + + %1 účastník + %1 účastníci + %1 účastníků @@ -2337,57 +2335,59 @@ Error popup_info_find_message_title Find message - + Najít zprávu info_popup_no_result_message No result found - + Nic nenalezeno info_popup_first_result_message First result reached - + Nalezen první výsledek info_popup_last_result_message Last result reached - + Nalezen poslední výsledek chat_message_list_encrypted_header_title End to end encrypted chat - + Chat s koncovým šifrováním unencrypted_conversation_warning This conversation is not encrypted ! - + Tato konverzace není šifrována! chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. - + Zprávy v této konverzaci jsou koncově šifrovány. +Dešifrovat je může pouze váš příjemce. chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! - + Zprávy nejsou koncově šifrovány, +proto nezveřejňujte žádné citlivé informace! chat_message_is_writing_info %1 is writing… - + %1 píše… @@ -2396,25 +2396,25 @@ Error chat_start_title "Nouvelle conversation" - + Nová konverzace chat_empty_title "Aucune conversation" - + Žádná konverzace chat_dialog_delete_chat_title Supprimer la conversation ? - + Smazat konverzaci? chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." - + Tato konverzace a všechny její zprávy budou smazány. @@ -2426,13 +2426,13 @@ Error menu_mark_all_as_read "mark all as read" - + Označit vše jako přečtené chat_search_in_history "Rechercher une conversation" - + Hledat chat @@ -2444,19 +2444,19 @@ Error chat_list_empty_history "Aucune conversation dans votre historique" - + Žádná konverzace v historii chat_action_start_new_chat "New chat" - + Nová konverzace chat_start_group_chat_title "Nouveau groupe" - + Nová skupina @@ -2475,13 +2475,13 @@ Error information_popup_chat_creation_failed_message "La création a échoué" - + Vytvoření selhalo group_chat_error_must_have_name "Un nom doit être donné au groupe - + Název pro skupinu musí být nastaven @@ -2493,7 +2493,7 @@ Error chat_creation_in_progress Creation de la conversation en cours … - + Probíhá vytváření chatu… @@ -2502,19 +2502,19 @@ Error settings_chat_attached_files_title Attached files - + Připojené soubory settings_chat_attached_files_auto_download_title "Automatic download" - + Automatické stahování settings_chat_attached_files_auto_download_subtitle "Automatically download transferred or received files in conversations" - + Automaticky stahovat přenesené nebo přijaté soubory v konverzacích @@ -2583,7 +2583,7 @@ Error account_settings_name_accessible_name Account settings of %1 - + Nastavení účtu %1 @@ -2611,13 +2611,13 @@ Error close_accessible_name Close %n - + Zavřít %1 contact_editor_mandatory_first_name_or_company_not_filled "Veuillez saisir un prénom ou un nom d'entreprise" - + Zadejte jméno nebo název společnosti @@ -2641,7 +2641,7 @@ Error edit_contact_image_accessible_name "Edit contact image" - + Upravit obrázek kontaktu @@ -2653,7 +2653,7 @@ Error delete_contact_image_accessible_name "Delete contact image" - + Smazat obrázek kontaktu @@ -2693,37 +2693,37 @@ Error sip_address_number_accessible_name "SIP address number %1" - + Číslo SIP adresy %1 remove_sip_address_accessible_name "Remove SIP address %1" - + Odstranit SIP adresu %1 new_sip_address_accessible_name "New SIP address" - + Nová SIP adresa phone_number_number_accessible_name "Phone number number %1" - + Telefonní číslo %1 remove_phone_number_accessible_name Remove phone number %1 - + Odstranit telefonní číslo %1 new_phone_number_accessible_name "New phone number" - + Nové telefonní číslo @@ -2794,13 +2794,13 @@ Error shrink_accessible_name Shrink %1 - + Zmenšit %1 expand_accessible_name Expand %1 - + Rozbalit %1 @@ -2938,25 +2938,25 @@ Error expand_accessible_name Expand %1 - + Rozbalit %1 shrink_accessible_name Shrink %1 - + Zmenšit %1 create_contact_accessible_name Create new contact - + Vytvořit nový kontakt more_info_accessible_name More info %1 - + Více informací o %1 @@ -2995,7 +2995,7 @@ Error call_adress_accessible_name Call address %1 - + Adresa volání %1 @@ -3056,7 +3056,7 @@ Error verify_device_accessible_name Verify %1 device - + Ověřte zařízení %1 @@ -3158,13 +3158,13 @@ Error edit_ldap_server_accessible_name "Editer le serveur LDAP %1" - + Upravit server LDAP %1 use_ldap_server_accessible_name "Utiliser le serveur LDAP %1" - + Použít server LDAP %1 @@ -3182,13 +3182,13 @@ Error edit_cardav_server_accessible_name "Editer le carnet d'adresses CardDAV %1" - + Upravit adresář CardDAV %1 use_cardav_server_accessible_name "Utiliser le d'adresses CardDAV %1" - + Použít adresář CardDAV %1 @@ -3223,12 +3223,12 @@ Error one_one_infos_unmute "Sourdine" - + Zrušit ztlumení one_one_infos_mute - + Ztlumit @@ -3239,19 +3239,19 @@ Error group_infos_media_docs Medias & documents - + Média a dokumenty group_infos_shared_medias Shared medias - + Sdílená média group_infos_shared_docs Shared documents - + Sdílené dokumenty @@ -3262,36 +3262,36 @@ Error group_infos_ephemerals - + Mizející zprávy: group_infos_enable_ephemerals - + Povolit mizející zprávy group_infos_meeting Schedule a meeting - + Naplánovat schůzku group_infos_leave_room Leave chat room - + Opustit chatovací místnost group_infos_leave_room_toast_title Leave Chat Room ? - + Opustit chatovací místnost? group_infos_leave_room_toast_message All the messages will be removed from the chat room. Do you want to continue ? - + Z chatovací místnosti budou odstraněny všechny zprávy. Chcete pokračovat? @@ -3303,13 +3303,13 @@ Error group_infos_delete_history_toast_title Delete history ? - + Smazat historii? group_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? - + Z chatovací místnosti budou odstraněny všechny zprávy. Chcete pokračovat? @@ -3321,17 +3321,17 @@ Error one_one_infos_create_contact Create contact - + Vytvořit kontakt one_one_infos_ephemerals - + Mizející zprávy: one_one_infos_enable_ephemerals - + Povolit mizející zprávy @@ -3342,13 +3342,13 @@ Error one_one_infos_delete_history_toast_title Delete history ? - + Smazat historii? one_one_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? - + Z chatovací místnosti budou odstraněny všechny zprávy. Chcete pokračovat? @@ -3542,32 +3542,32 @@ Error title - + Mizející zprávy explanations - + Povolením mizejících zpráv v tomto chatu budou odeslané zprávy po uplynutí nastavené doby automaticky smazány. one_minute - + 1 minuta one_hour - + 1 hodina one_day - + 1 den one_week - + 1 týden @@ -3577,7 +3577,7 @@ Error custom - + Vlastní: @@ -3585,58 +3585,60 @@ Error conference_created_event - + Přidal(a) jste se ke skupině conference_created_terminated - + Opustil(a) jste skupinu conference_participant_added_event - + %1 se připojil conference_participant_removed_event - + %1 již nadále není v konverzaci conference_participant_set_admin_event - + %1 je nyní administrátor conference_participant_unset_admin_event - + %1 již není administrátor conference_security_event - + Úroveň zabezpečení snížena %1 conference_ephemeral_message_enabled_event - + Mizející zprávy zapnuty +Expirace : %1 conference_ephemeral_message_disabled_event - + Mizející zprávy zapnuty conference_subject_changed_event - + Nový předmět: %1 conference_ephemeral_message_lifetime_changed_event - + Mizející zprávy aktualizovány +Expirace : %1 @@ -3699,32 +3701,32 @@ Error group_infos_give_admin_rights - + Udělit práva administrátora group_infos_remove_admin_rights - + Odebrat práva administrátora group_infos_copy_sip_address - + Kopírovat SIP adresu group_infos_remove_participant - + Odstranit účastníka group_infos_remove_participants_toast_title - + Odstranit účastníka? group_infos_remove_participants_toast_message - + Účastník bude odstraněn z chatovací místnosti. @@ -3733,7 +3735,7 @@ Error return_accessible_name Return - + Návrat @@ -3845,7 +3847,7 @@ Error delete_ldap_server_accessible_name Delete LDAP server - + Smazat LDAP server @@ -3960,7 +3962,7 @@ Error mandatory_field_accessible_name "%1 mandatory" - + %1 vyžadováno @@ -4040,7 +4042,7 @@ Error return_accessible_name Return - + Návrat @@ -4127,7 +4129,7 @@ Error open_calls_page_accessible_name "Open calls page" - + Otevřít stránku hovorů @@ -4139,7 +4141,7 @@ Error open_contacts_page_accessible_name "Open contacts page" - + Otevřít stránku kontaktů @@ -4151,7 +4153,7 @@ Error open_conversations_page_accessible_name "Open conversations page" - + Otevřít stránku konverzací @@ -4163,7 +4165,7 @@ Error open_contact_page_accessible_name "Open meetings page" - + Otevřít stránku schůzek @@ -4205,13 +4207,13 @@ Error account_list_accessible_name "Account list" - + Seznam účtů application_options_accessible_name "Application options" - + Volby aplikace @@ -4345,7 +4347,7 @@ Error group_infos_manage_participants - + Účastníci @@ -4576,16 +4578,16 @@ Error meeting_schedule_add_participants_apply - + Použít group_call_participant_selected "%n participant(s) sélectionné(s)" - - - - + + %1 vybraný účastník + %1 vybraní účastníci + %1 vybraných účastníků @@ -4646,7 +4648,7 @@ Error message_details_status_title Message status - + Stav zprávy @@ -4655,13 +4657,13 @@ Error message_details_reactions_title Reactions - + Reakce click_to_delete_reaction_info Click to delete - + Kliknutím odstranit @@ -4670,13 +4672,13 @@ Error no_shared_medias No media - + Žádná média no_shared_documents No document - + Žádný dokument @@ -4695,7 +4697,7 @@ Error choose_something_accessible_name Choose %1 - + Vybrat %1 @@ -4710,7 +4712,7 @@ Error device_volume_accessible_name %1 volume - + Zařízení %1 @@ -4740,7 +4742,7 @@ Error settings_network_allow_ipv6 "Autoriser l'IPv6" - + Povolit IPv6 @@ -4764,7 +4766,7 @@ Error chat_start_group_chat_title Nouveau groupe - + Nová skupina @@ -4794,36 +4796,36 @@ Error new_call_alert_accessible_name New call from %1 - + Nový hovor od %1 new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. - + Přijata hlasová zpráva! new_file_message - + Přijat soubor! new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. - + Přijata pozvánka na schůzku! new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. - + Přijata nová zpráva! new_message_alert_accessible_name New message on chatroom %1 - + Nová zpráva v místnosti %1 @@ -4902,7 +4904,7 @@ Error oidc_authentication_no_token_found_error - + Žádný token nenalezen @@ -4962,13 +4964,13 @@ Error prefix_phone_number_accessible_name %1 prefix - + prefix %1 number_phone_number_accessible_name %1 number - + číslo %1 @@ -4977,13 +4979,13 @@ Error close_popup_panel_accessible_name "Close %1 popup" - + Zavřít %1 oken open_popup_panel_accessible_name "Open %1" popup - + Otevřít %1 oken @@ -4991,12 +4993,12 @@ Error contact_presence_reset_status - + Obnovit stav contact_presence_button_set_custom_status - + Nastavit @@ -5011,7 +5013,7 @@ Error contact_presence_custom_status - + Vlastní stav @@ -5019,7 +5021,7 @@ Error contact_presence_note_title - + Vlastní zpráva @@ -5027,7 +5029,7 @@ Error contact_presence_button_set_custom_status_title - + Nastavit vlastní zprávu @@ -5062,61 +5064,61 @@ Error message_state_in_progress "delivery in progress" - + probíhá doručování message_state_delivered sent - + odesláno message_state_not_delivered error - + chyba message_state_file_transfer_error cannot get file from server - + nelze získat soubor ze serveru message_state_file_transfer_done file transfer has been completed successfully - + přenos souboru byl úspěšně dokončen message_state_delivered_to_user received - + přijato message_state_displayed read - + přečteno message_state_file_transfer__in_progress file transfer in progress - + probíhá přenos souboru message_state_pending_delivery pending delivery - + čekání na doručení message_state_file_transfer_cancelling file transfer canceled - + přenos souboru zrušen @@ -5194,7 +5196,7 @@ Error return_accessible_name Return - + Návrat @@ -5236,7 +5238,7 @@ Error mandatory_field_accessible_name "%1 mandatory" - + %1 vyžadováno @@ -5331,7 +5333,7 @@ Error return_accessible_name Return - + Návrat @@ -5388,7 +5390,7 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. mandatory_field_accessible_name "%1 mandatory" - + %1 vyžadováno @@ -5450,27 +5452,27 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. login_proxy_server_url "Outbound SIP Proxy URI" - + URI odchozího SIP proxy serveru login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." - + Pokud je toto pole vyplněno, odchozí proxy bude automaticky povolena. Nechte jej prázdné, chcete-li ji zakázat. login_registrar_uri "Registrar URI" - + Registrační URI login_id "Authentication ID (if different)" - + ID pro ověření (je-li odlišné) @@ -5518,13 +5520,13 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. open_dialer_acccessibility_label "Open dialer" - + Otevřít číselník clear_text_input_acccessibility_label "Clear text input" - + Vymazat text @@ -5592,37 +5594,37 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. chat_view_group_call_toast_message - + Zahájit skupinový hovor? unencrypted_conversation_warning This conversation is not encrypted ! - + Tato konverzace není šifrována! reply_to_label Reply to %1 - + Odpověď na %1 shared_medias_title Shared medias - + Sdílená média shared_documents_title Shared documents - + Sdílené dokumenty forward_to_title Forward to… - + Přeposlat na… @@ -5637,7 +5639,7 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. setting_tab_accessible_name %1 settings - + nastavení %1 @@ -5658,7 +5660,7 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. settings_call_forward "Transfert d'appel" - + Přesměrování hovoru @@ -5736,13 +5738,13 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. show_accessible_name Show %1 - + Zobrazit %1 hide_accessible_name Hide %1 - + Skrýt %1 @@ -5772,7 +5774,7 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. voice_recording_duration "Voice recording (%1)" : %1 is the duration formated in mm:ss - + Hlasový záznam (%1) @@ -5782,17 +5784,17 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. conference_invitation - + Pozvánka na schůzku conference_invitation_cancelled - + Zrušení schůzky conference_invitation_updated - + Změna schůzky @@ -5800,89 +5802,89 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. nSeconds - - - - + + %1 vteřina + %1 vteřiny + %1 vteřin nMinute - - - - + + %1 minuta + %1 minuty + %1 minut chat_message_forward_error Cannot forward an invalid message - + Nelze přeposlat neplatnou zprávu info_popup_forward_message_error Could not forward message : %1 - + Nelze přeposlat zprávu: %1 info_popup_send_forward_message_error_message Failed to create forward message - + Nepodařilo se vytvořit přeposlanou zprávu chat_message_reply_error Cannot reply to invalid message - + Nelze odpovědět na neplatnou zprávu info_popup_reply_message_error Could not send reply message : %1 - + Nelze odeslat odpověď: %1 info_popup_send_reply_message_error_message Failed to create reply message - + Nepodařilo se vytvořit odpověď nHour - - - - + + %1 hodina + %1 hodiny + %1 hodin nDay - - - - + + %1 den + %1 dny + %1 dnů nWeek - - - - + + %1 týden + %1 týdny + %1 týdnů contact_presence_status_available - + Dostupný @@ -5902,7 +5904,7 @@ Chcete-li je povolit v komerčním projektu, kontaktujte nás. contact_presence_status_away - + Nečinný/Pryč @@ -5982,16 +5984,16 @@ Failed to create 1-1 conversation with %1 ! duration_tomorrow Tomorrow - + Zítra duration_number_of_days %1 jour(s) - - - - + + %n den + %n dny + %n dnů @@ -6005,20 +6007,20 @@ Failed to create 1-1 conversation with %1 ! information_popup_chatroom_creation_error_message Failed to create 1-1 conversation with %1 ! - + Nepodařilo se vytvořit konverzaci 1-1 s %1 ! recorder_error Error with the recorder - + Chyba s rekordérem chat_error - + Chyba v chatu @@ -6035,13 +6037,13 @@ Failed to create 1-1 conversation with %1 ! info_popup_send_voice_message_error_message Could not send voice message : %1 - + Nelze odeslat hlasovou zprávu: %1 info_popup_send_voice_message_sending_error_message Failed to create message from record - + Nepodařilo se vytvořit zprávu ze záznamu @@ -7455,4 +7457,17 @@ Failed to create 1-1 conversation with %1 ! Ok + + CoreModel + + + info_popup_error_title + Chyba + + + + fetching_config_failed_error_message + Vzdálené nastavení nelze načíst + + diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index a95da044e..5177784de 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2248,7 +2248,7 @@ info_popup_error_titile - + Fehler @@ -3511,7 +3511,7 @@ Error info_popup_error_title - Fehler + Fehler diff --git a/Linphone/data/languages/es.ts b/Linphone/data/languages/es.ts index abe506b67..6c283131d 100644 --- a/Linphone/data/languages/es.ts +++ b/Linphone/data/languages/es.ts @@ -2241,18 +2241,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore diff --git a/Linphone/data/languages/eu.ts b/Linphone/data/languages/eu.ts index 4b04d8856..f9f6fed2c 100644 --- a/Linphone/data/languages/eu.ts +++ b/Linphone/data/languages/eu.ts @@ -19,7 +19,7 @@ save_settings_accessible_name Save %1 settings - + Gorde %1 ezarpenak @@ -152,37 +152,37 @@ set_mwi_server_address_failed_error_message "Unable to set voicemail server address, failed creating address from %1" : %1 is address - + Ezin da ahots-postontziaren zerbitzariaren helbidea ezarri, huts egin du %1 (e)tik helbidea sortzean set_server_address_failed_error_message "Unable to set server address, failed creating address from %1" - + Ezin da zerbitzariaren helbidea ezarri, huts egin du %1(e)tik helbidea sortzean set_outbound_proxy_uri_failed_error_message Unable to set outbound proxy uri, failed creating address from %1 - + Ezin da irteerako proxy uri-a ezarri, huts egin du %1 (e)tik helbidea sortzean set_conference_factory_address_failed_error_message "Unable to set the conversation server address, failed creating address from %1" - + Ezin da elkarrizketa-zerbitzariaren helbidea ezarri, huts egin du %1 (e)tik helbidea sortzean set_audio_conference_factory_address_failed_error_message "Unable to set the meeting server address, failed creating address from %1" - + Ezin da bilera-zerbitzariaren helbidea ezarri, huts egin du %1 (e)tik helbidea sortzean set_voicemail_address_failed_error_message Unable to set voicemail address, failed creating address from %1 - + Ezin da ahots-postontziaren helbidea ezarri, huts egin du %1 (e)tik helbidea sortzean @@ -302,7 +302,7 @@ device_last_updated_time_no_info "No information" - + Ez dago informaziorik @@ -415,7 +415,7 @@ account_settings_registrar_uri_title - + Erregistratu URIa @@ -426,7 +426,7 @@ login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." - + Eremu hau betetzen bada, irteerako proxya automatikoki aktibatuko da. Utzi hutsik desaktibatzeko. @@ -490,16 +490,16 @@ add_participant_selected_count 0 "%n participant(s) sélectionné(s)" - - - + + Partaide %1 aukeratuta + %1 partaide aukeratuta remove_participant_accessible_name Remove participant %1 - + Ezabatu %1 partaidea @@ -578,7 +578,7 @@ download_apply_remote_provisioning_accessible_name "Download and apply remote provisioning" - + Deskargatu eta aplikatu urruneko hornikuntza @@ -724,7 +724,7 @@ mark_all_read_action - + Markatu denak irakurrita bezala @@ -849,7 +849,7 @@ settings_call_forward_activate_title "Forward calls" - + Deiak desbideratzea @@ -2187,6 +2187,11 @@ Could not open file : unknown path %1 + + + info_popup_error_titile + Errorea + ChatMessageContentList @@ -2241,18 +2246,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - Errorea - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore @@ -7433,4 +7426,12 @@ Failed to create 1-1 conversation with %1 ! Ok + + CoreModel + + + info_popup_error_title + Errorea + + diff --git a/Linphone/data/languages/fi.ts b/Linphone/data/languages/fi.ts new file mode 100644 index 000000000..ab539d18b --- /dev/null +++ b/Linphone/data/languages/fi.ts @@ -0,0 +1,7434 @@ + + + + + AbstractSettingsLayout + + + return_accessible_name + Return + + + + + save + "Enregistrer" + + + + + save_settings_accessible_name + Save %1 settings + + + + + AbstractWindow + + + contact_dialog_pick_phone_number_or_sip_address_title + "Choisissez un numéro ou adresse SIP" + + + + + fps_counter + + + + + AccountCore + + + drawer_menu_account_connection_status_connected + "Connecté" + + + + + drawer_menu_account_connection_status_refreshing + + + + + drawer_menu_account_connection_status_progress + + + + + drawer_menu_account_connection_status_failed + + + + + drawer_menu_account_connection_status_cleared + + + + + manage_account_status_connected_summary + "Vous êtes en ligne et joignable." + + + + + manage_account_status_failed_summary + "Erreur de connexion, vérifiez vos paramètres." + + + + + manage_account_status_cleared_summary + "Compte désactivé, vous ne recevrez ni appel ni message." + + + + + AccountDeviceList + + + manage_account_no_device_found_error_message + "Erreur lors de la récupération des appareils" + + + + + AccountListView + + + add_an_account + Add an account + + + + + AccountManager + + + assistant_account_login_already_connected_error + "The account is already connected" + + + + + assistant_account_login_proxy_address_error + "Unable to create proxy address. Please check the domain name." + + + + + assistant_account_login_address_configuration_error + "Unable to configure address: `%1`." + + + + + assistant_account_login_params_configuration_error + "Unable to configure account settings." + + + + + assistant_account_login_forbidden_error + "Username and password do not match" + + + + + assistant_account_login_error + "Error during connection, please verify your parameters" + + + + + assistant_account_add_error + "Unable to add account." + + + + + AccountModel + + + set_mwi_server_address_failed_error_message + "Unable to set voicemail server address, failed creating address from %1" : %1 is address + + + + + set_server_address_failed_error_message + "Unable to set server address, failed creating address from %1" + + + + + set_outbound_proxy_uri_failed_error_message + Unable to set outbound proxy uri, failed creating address from %1 + + + + + set_conference_factory_address_failed_error_message + "Unable to set the conversation server address, failed creating address from %1" + + + + + set_audio_conference_factory_address_failed_error_message + "Unable to set the meeting server address, failed creating address from %1" + + + + + set_voicemail_address_failed_error_message + Unable to set voicemail address, failed creating address from %1 + + + + + AccountSettingsGeneralLayout + + + manage_account_details_title + "Détails" + + + + + manage_account_details_subtitle + Éditer les informations de votre compte. + + + + + manage_account_devices_title + "Vos appareils" + + + + + manage_account_devices_subtitle + "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." + + + + + manage_account_add_picture + "Ajouter une image" + + + + + manage_account_edit_picture + "Modifier l'image" + + + + + manage_account_remove_picture + "Supprimer l'image" + + + + + sip_address + + + + + sip_address_display_name + "Nom d'affichage + + + + + sip_address_display_name_explaination + "Le nom qui sera affiché à vos correspondants lors de vos échanges." + + + + + manage_account_international_prefix + Indicatif international* + + + + + manage_account_delete + "Déconnecter mon compte" + + + + + manage_account_delete_message + + + + + manage_account_dialog_remove_account_title + "Se déconnecter du compte ?" + + + + + manage_account_dialog_remove_account_message + Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org + + + + + error + Erreur + + + + + manage_account_device_remove + "Supprimer" + + + + + manage_account_device_remove_confirm_dialog + + + + + manage_account_device_last_connection + "Dernière connexion:" + + + + + device_last_updated_time_no_info + "No information" + + + + + AccountSettingsPage + + + drawer_menu_manage_account + "Mon compte" + + + + + settings_general_title + "Général" + + + + + settings_account_title + "Paramètres de compte" + + + + + contact_editor_popup_abort_confirmation_title + "Modifications non enregistrées" + + + + + contact_editor_popup_abort_confirmation_message + "Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ?" + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" "Enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + + + + + AccountSettingsParametersLayout + + + settings_title + + + + + settings_account_title + + + + + info_popup_invalid_registrar_uri_message + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_invalid_outbound_proxy_message + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + + + + + info_popup_error_title + + + + + information_popup_success_title + + + + + contact_editor_saved_changes_toast + "Modifications sauvegardés" + + + + + information_popup_error_title + + + + + account_settings_mwi_uri_title + "URI du serveur de messagerie vocale" + + + + + account_settings_voicemail_uri_title + "URI de messagerie vocale" + + + + + account_settings_transport_title + "Transport" + + + + + account_settings_registrar_uri_title + + + + + account_settings_sip_proxy_url_title + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + account_settings_stun_server_url_title + "Adresse du serveur STUN" + + + + + account_settings_enable_ice_title + "Activer ICE" + + + + + account_settings_avpf_title + "AVPF" + + + + + account_settings_bundle_mode_title + "Mode bundle" + + + + + account_settings_expire_title + "Expiration (en seconde)" + + + + + account_settings_conference_factory_uri_title + "URI du serveur de conversations" + + + + + account_settings_audio_video_conference_factory_uri_title + "URI du serveur de réunions" + + + + + account_settings_lime_server_url_title + "URL du serveur d’échange de clés de chiffrement" + + + + + AddParticipantsForm + + + search_bar_search_contacts_placeholder + "Rechercher des contacts" + + + + + add_participant_selected_count + 0 + "%n participant(s) sélectionné(s)" + + + + + + + + remove_participant_accessible_name + Remove participant %1 + + + + + list_filter_no_result_found + "Aucun contact" + + + + + contact_list_empty + + + + + AdvancedSettingsLayout + + + settings_system_title + System + + + + + settings_remote_provisioning_title + Remote provisioning + + + + + settings_security_title + Security / Encryption + + + + + settings_advanced_audio_codecs_title + Audio codecs + + + + + settings_advanced_video_codecs_title + Video codecs + + + + + settings_advanced_auto_start_title + Auto start %1 + + + + + settings_advanced_remote_provisioning_url + Remote provisioning URL + + + + + settings_advanced_download_apply_remote_provisioning + Download and apply + + + + + information_popup_error_title + Invalid URL format + + + + + settings_advanced_invalid_url_message + + + + + download_apply_remote_provisioning_accessible_name + "Download and apply remote provisioning" + + + + + + settings_advanced_media_encryption_title + Media encryption + + + + + settings_advanced_media_encryption_mandatory_title + Media encryption mandatory + + + + + settings_advanced_create_endtoend_encrypted_meetings_title + Create end to end encrypted meetings and group calls + + + + + settings_advanced_hide_fps_title + + + + + AllContactListView + + + car_favorites_contacts_title + "Favoris" + + + + + generic_address_picker_contacts_list_title + 'Contacts' + + + + + generic_address_picker_suggestions_list_title + "Suggestions" + + + + + App + + + remote_provisioning_dialog + Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? + + + + + + info_popup_error_title + Error + + + + + + info_popup_configuration_failed_message + Remote provisioning failed : %1 + + + + + configuration_error_detail + not reachable + + + + + application_description + "A free and open source SIP video-phone." + + + + + command_line_arg_order + "Send an order to the application towards a command line" + + + + + command_line_option_show_help + + + + + command_line_option_show_app_version + + + + + command_line_option_config_to_fetch + "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." + + + + + command_line_option_config_to_fetch_arg + "URL, path or file" + + + + + command_line_option_minimized + + + + + command_line_option_log_to_stdout + + + + + command_line_option_print_app_logs_only + "Print only logs from the application" + + + + + hide_action + "Cacher" "Afficher" + + + + + show_action + + + + + quit_action + "Quitter" + + + + + mark_all_read_action + + + + + AuthenticationDialog + + + account_settings_dialog_invalid_password_title + "Authentification requise" + + + + + account_settings_dialog_invalid_password_message + La connexion a échoué pour le compte %1. Vous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte. + + + + + password + + + + + cancel + "Annuler + + + + + assistant_account_login + Connexion + + + + + assistant_account_login_missing_password + Veuillez saisir un mot de passe + + + + + CallCore + + + call_record_end_message + "Enregistrement terminé" + + + + + call_record_saved_in_file_message + "L'appel a été enregistré dans le fichier : %1" + + + + + + call_stats_codec_label + "Codec: %1 / %2 kHz" + + + + + + call_stats_bandwidth_label + "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" + + + + + + call_stats_loss_rate_label + "Taux de perte: %1% %2%" + + + + + call_stats_jitter_buffer_label + "Tampon de gigue: %1 ms" + + + + + call_stats_resolution_label + "Définition vidéo : %1 %2 %3 %4" + + + + + call_stats_fps_label + "FPS : %1 %2 %3 %4" + + + + + media_encryption_dtls + DTLS + + + + + media_encryption_none + None + + + + + media_encryption_srtp + SRTP + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + CallForwardSettingsLayout + + + settings_call_forward_activate_title + "Forward calls" + + + + + settings_call_forward_activate_subtitle + "Enable call forwarding to voicemail or sip address" + + + + + settings_call_forward_destination_choose + Forward to destination + + + + + + + settings_call_forward_to_voicemail + + + + + settings_call_forward_to_sipaddress + + + + + settings_call_forward_sipaddress_title + SIP Address + + + + + settings_call_forward_sipaddress_placeholder + + + + + settings_call_forward_address_cannot_be_empty + + + + + settings_call_forward_address_timeout + + + + + settings_call_forward_address_progress_disabling + + + + + settings_call_forward_address_progress_enabling + + + + + settings_call_forward_activation_success + + + + + settings_call_forward_deactivation_success + + + + + CallHistoryLayout + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel Video" + + + + + CallHistoryListView + + + call_name_accessible_button + Call %1 + + + + + CallLayout + + + meeting_event_conference_destroyed + "Vous avez quitté la conférence" + + + + + call_ended_by_user + "Vous avez terminé l'appel" + + + + + call_ended_by_remote + "Votre correspondant a terminé l'appel" + + + + + conference_call_empty + "En attente d'autres participants…" + + + + + conference_share_link_title + "Partager le lien" + + + + + copied + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + CallList + + + remote_group_call + Remote group call + + + + + local_group_call + + + + + info_popup_error_title + + + + + info_popup_merge_calls_failed_message + Failed to merge calls ! + + + + + CallListView + + + meeting + "Réunion + + + + + call + "Appel" + + + + + paused_call_or_meeting + "%1 en pause" + + + + + ongoing_call_or_meeting + "%1 en cours" + + + + + transfer_call_name_accessible_name + Transfer call %1 + + + + + resume_call_name_accessible_name + Resume %1 call + + + + + pause_call_name_accessible_name + Pause %1 call + + + + + end_call_name_accessible_name + End %1 call + + + + + CallModel + + + call_error_no_response_toast + "No response" + + + + + call_error_forbidden_resource_toast + "403 : Forbidden resource" + + + + + call_error_not_answered_toast + "Request timeout" + + + + + call_error_user_declined_toast + "User declined the call" + + + + + call_error_user_not_found_toast + "User was not found" + + + + + call_error_user_busy_toast + "User is busy" + + + + + call_error_incompatible_media_params_toast + "User can&apos;t accept your call" + + + + + call_error_io_error_toast + "Unavailable service or network error" + + + + + call_error_do_not_disturb_toast + "Le correspondant ne peut être dérangé" + + + + + call_error_temporarily_unavailable_toast + "Temporarily unavailable" + + + + + call_error_server_timeout_toast + "Server tiemout" + + + + + CallPage + + + call_forward_to_address_info + + + + + call_forward_to_address_info_voicemail + + + + + history_call_start_title + "Nouvel appel" + + + + + call_history_empty_title + "Historique d'appel vide" + + + + + history_dialog_delete_all_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_all_call_logs_message + "L'ensemble de votre historique d'appels sera définitivement supprimé." + + + + + history_dialog_delete_call_logs_title + Supprimer l'historique d'appels ? + + + + + history_dialog_delete_call_logs_message + "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." + + + + + call_history_call_list_title + "Appels" + + + + + call_history_options_accessible_name + + + + + + menu_delete_history + "Supprimer l'historique" + + + + + call_history_list_options_accessible_name + Call history options + + + + + create_new_call_accessible_name + Create new call + + + + + call_search_in_history + "Rechercher un appel" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + history_list_empty_history + "Aucun appel dans votre historique" + + + + + return_to_call_history_accessible_name + Return to call history + + + + + call_action_start_new_call + "Nouvel appel" + + + + + call_start_group_call_title + "Appel de groupe" + + + + + call_action_start_group_call + "Lancer" + + + + + + + information_popup_error_title + + + + + group_call_error_must_have_name + "Un nom doit être donné à l'appel de groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + menu_copy_sip_address + "Copier l'adresse SIP" + + + + + sip_address_copied_to_clipboard_toast + Adresse copiée + + + + + sip_address_copied_to_clipboard_message + L'adresse a été copié dans le presse_papiers + + + + + sip_address_copy_to_clipboard_error + "Erreur lors de la copie de l'adresse" + + + + + notification_missed_call_title + "Appel manqué" + + + + + call_outgoing + "Appel sortant" + + + + + call_audio_incoming + "Appel entrant" + + + + + CallSettingsLayout + + + settings_call_devices_title + "Périphériques" + + + + + settings_call_devices_subtitle + "Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture." + + + + + settings_calls_echo_canceller_title + "Annulateur d'écho" + + + + + settings_calls_echo_canceller_subtitle + "Évite que de l'écho soit entendu par votre correspondant" + + + + + settings_calls_auto_record_title + "Activer l’enregistrement automatique des appels" + + + + + settings_call_enable_tones_title + Tonalités + + + + + settings_call_enable_tones_subtitle + Activer les tonalités + + + + + settings_calls_enable_video_title + "Autoriser la vidéo" + + + + + settings_calls_command_line_title + Command line + + + + + settings_calls_command_line_title_place_holder + + + + + settings_calls_change_ringtone_title + "Change ringtone" + + + + + settings_calls_current_ringtone_filename + Current ringtone : + + + + + choose_ringtone_file_accessible_name + Choose ringtone file + + + + + CallSettingsPanel + + + close_name_panel_accessible_button + Close %1 panel + + + + + CallStatistics + + + call_stats_audio_title + "Audio" + + + + + call_stats_video_title + "Vidéo" + + + + + CallsWindow + + + call_transfer_in_progress_toast + "Transfert en cours, veuillez patienter" + + + + + + information_popup_error_title + + + + + call_transfer_failed_toast + "Le transfert d'appel a échoué" + + + + + conference_error_empty_uri + "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." + + + + + call_close_window_dialog_title + "Terminer tous les appels en cours ?" + + + + + call_close_window_dialog_message + "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." + + + + + call_can_be_trusted_toast + "Appareil authentifié" + + + + + call_dir + + + + + call_ended + Appel terminé + + + + + conference_paused + Meeting paused + + + + + call_paused + Call paused + + + + + + call_srtp_point_to_point_encrypted + Appel chiffré de point à point + + + + + call_zrtp_sas_validation_required + Vérification nécessaire + + + + + call_zrtp_end_to_end_encrypted + Appel chiffré de bout en bout + + + + + call_not_encrypted + "Appel non chiffré" + + + + + + call_waiting_for_encryption_info + Waiting for encryption + + + + + call_paused_by_remote + Call paused by remote + + + + + conference_user_is_recording + "You are recording the meeting" + + + + + call_user_is_recording + "You are recording the call" + + + + + conference_remote_is_recording + "Someone is recording the meeting" + + + + + call_remote_recording + "%1 is recording the call" + + + + + call_stop_recording + "Stop recording" + + + + + add + + + + + call_transfer_current_call_title + "Transférer %1 à…" + + + + + + call_transfer_confirm_dialog_tittle + "Confirmer le transfert" + + + + + + call_transfer_confirm_dialog_message + "Vous allez transférer %1 à %2." + + + + + call_action_start_new_call + "Nouvel appel" + + + + + + call_action_show_dialer + "Pavé numérique" + + + + + call_action_change_layout + "Modifier la disposition" + + + + + call_action_go_to_calls_list + "Liste d'appel" + + + + + Merger tous les appels + call_action_merge_calls + + + + + + call_action_go_to_settings + "Paramètres" + + + + + conference_action_screen_sharing + "Partage de votre écran" + + + + + conference_share_link_title + Partager le lien de la réunion + + + + + copied + Copié + + + + + information_popup_meeting_address_copied_to_clipboard + Le lien de la réunion a été copié dans le presse-papier + + + + + + + conference_participants_list_title + "Participants (%1)" + + + + + + group_call_participant_selected + + + + + + + + meeting_schedule_add_participants_title + + + + + call_encryption_title + Chiffrement + + + + + open_statistic_panel_accessible_name + + + + + conference_user_is_sharing_screen + "You are sharing your screen" + + + + + call_stop_screen_sharing + "Stop sharing" + + + + + stop_recording_accessible_name + Stop recording + + + + + stop_screen_sharing_accessible_name + "Stop screen sharing" + + + + + call_stats_title + Statistiques + + + + + + call_action_end_call + "Terminer l'appel" + + + + + + call_action_resume_call + "Reprendre l'appel" + + + + + + call_action_pause_call + "Mettre l'appel en pause" + + + + + + call_action_transfer_call + "Transférer l'appel" + + + + + + call_action_start_new_call_hint + "Initier un nouvel appel" + + + + + + call_display_call_list_hint + "Afficher la liste d'appels" + + + + + + call_deactivate_video_hint + "Désactiver la vidéo" "Activer la vidéo" + + + + + + call_activate_video_hint + + + + + + call_activate_microphone + "Activer le micro" + + + + + + call_deactivate_microphone + "Désactiver le micro" + + + + + + call_share_screen_hint + Partager l'écran… + + + + + + call_open_chat_hint + Open chat… + + + + + + call_rise_hand_hint + "Lever la main" + + + + + + call_send_reaction_hint + "Envoyer une réaction" + + + + + + call_manage_participants_hint + "Gérer les participants" + + + + + + call_more_options_hint + "Plus d'options…" + + + + + call_action_change_conference_layout + "Modifier la disposition" + + + + + call_action_full_screen + "Mode Plein écran" + + + + + call_action_stop_recording + "Terminer l'enregistrement" + + + + + call_action_record + "Enregistrer l'appel" + + + + + call_activate_speaker_hint + "Activer le son" + + + + + call_deactivate_speaker_hint + "Désactiver le son" + + + + + CarddavSettingsLayout + + + settings_contacts_carddav_title + Carnet d'adresse CardDAV + + + + + settings_contacts_carddav_subtitle + "Ajouter un carnet d’adresse CardDAV pour synchroniser vos contacts Linphone avec un carnet d’adresse tiers." + + + + + information_popup_error_title + + + + + settings_contacts_carddav_popup_invalid_error + "Vérifiez que toutes les informations ont été saisies." + + + + + information_popup_synchronization_success_title + + + + + settings_contacts_carddav_synchronization_success_message + "Le carnet d'adresse CardDAV est synchronisé." + + + + + settings_contacts_carddav_popup_synchronization_error_title + + + + + settings_contacts_carddav_popup_synchronization_error_message + "Erreur de synchronisation!" + + + + + settings_contacts_delete_carddav_server_title + "Supprimer le carnet d'adresse CardDAV ?" + + + + + sip_address_display_name + Nom d'affichage + + + + + settings_contacts_carddav_server_url_title + "URL du serveur" + + + + + username + + + + + password + + + + + settings_contacts_carddav_realm_title + Domaine d’authentification + + + + + settings_contacts_carddav_use_as_default_title + "Stocker ici les contacts nouvellement crées" + + + + + ChangeLayoutForm + + + conference_layout_grid + + + + + conference_layout_active_speaker + + + + + conference_layout_audio_only + + + + + ChatAudioContent + + + + information_popup_error_title + Error + + + + + information_popup_voice_message_error_message + Failed to create voice message : error in recorder + + + + + ChatCore + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message_history + Message history has been deleted + + + + + ChatDroppableTextArea + + + chat_view_send_area_placeholder_text + Say something… : placeholder text for sending message text area + + + + + cannot_record_while_in_call_tooltip + Cannot record a message while a call is ongoing + + + + + ChatListView + + + chat_message_is_writing_info + %1 is writing… + + + + + chat_message_draft_sending_text + + + + + chat_room_delete + "Delete" + + + + + chat_room_mute + + + + + chat_room_unmute + "Mute" + + + + + chat_room_mark_as_read + "Mark as read" + + + + + chat_room_leave + "leave" + + + + + chat_list_leave_chat_popup_title + leave the conversation ? + + + + + chat_list_leave_chat_popup_message + You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? + + + + + chat_list_delete_chat_popup_title + Delete the conversation ? + + + + + chat_list_delete_chat_popup_message + This conversation and all its messages will be deleted. Do You want to continue ? + + + + + ChatMessage + + + chat_message_copy_selection + "Copy selection" + + + + + chat_message_copy + "Copy" + + + + + chat_message_copied_to_clipboard_title + Copied + + + + + chat_message_copied_to_clipboard_toast + "to clipboard" + + + + + chat_message_remote_replied + %1 replied + + + + + chat_message_forwarded + Forwarded + + + + + chat_message_remote_replied_to + %1 replied to %2 + + + + + chat_message_user_replied_to + You replied to %1 + + + + + chat_message_user_replied + You replied + + + + + chat_message_reception_info + "Reception info" + + + + + chat_message_reply + Reply + + + + + chat_message_forward + Forward + + + + + chat_message_delete + "Delete" + + + + + ChatMessageContentCore + + + popup_error_title + Error + + + + + popup_open_file_error_does_not_exist_message + Could not open file : unknown path %1 + + + + + ChatMessageContentList + + + + + + popup_error_title + Error adding file +---------- +Error + + + + + popup_error_path_does_not_exist_message + File was not found: %1 + + + + + popup_error_nb_files_not_found_message + + + + + popup_error_max_files_count_message + You can send 12 files maximum at a time. %n files were ignored + + + + + + + + popup_error_file_too_big_message + %n files were ignored cause they exceed the maximum size. (Size limit=%2) + + + + + popup_error_unsupported_files_message + + + + + popup_error_unsupported_file_message + Unable to get supported mime type for: `%1`. + + + + + ChatMessageContentModel + + + ChatMessageCore + + + all_reactions_label + "Reactions": all reactions for one message label + + + + + info_toast_deleted_title + Deleted + + + + + info_toast_deleted_message + The message has been deleted + + + + + ChatMessageInvitationBubble + + + ics_bubble_meeting_from + + + + + ics_bubble_meeting_to + + + + + ics_bubble_meeting_modified + Meeting has been updated + + + + + ics_bubble_meeting_cancelled + Meeting has been canceled + + + + + + + + + + ics_bubble_description_title + Description + + + + + ics_bubble_join + "Rejoindre" + + + + + ics_bubble_participants + %n participant(s) + + + + + + + + ChatMessagesListView + + + + popup_info_find_message_title + Find message + + + + + info_popup_no_result_message + No result found + + + + + info_popup_first_result_message + First result reached + + + + + info_popup_last_result_message + Last result reached + + + + + chat_message_list_encrypted_header_title + End to end encrypted chat + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + chat_message_list_encrypted_header_message + Messages in this conversation are e2e encrypted. + Only your correspondent can decrypt them. + + + + + chat_message_list_not_encrypted_header_message + Messages are not end to end encrypted, + may sure you don't share any sensitive information ! + + + + + chat_message_is_writing_info + %1 is writing… + + + + + ChatPage + + + chat_start_title + "Nouvelle conversation" + + + + + chat_empty_title + "Aucune conversation" + + + + + chat_dialog_delete_chat_title + Supprimer la conversation ? + + + + + chat_dialog_delete_chat_message + "La conversation et tous ses messages seront supprimés." + + + + + chat_list_title + "Conversations" + + + + + menu_mark_all_as_read + "mark all as read" + + + + + chat_search_in_history + "Rechercher une conversation" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + chat_list_empty_history + "Aucune conversation dans votre historique" + + + + + chat_action_start_new_chat + "New chat" + + + + + chat_start_group_chat_title + "Nouveau groupe" + + + + + chat_action_start_group_chat + "Créer" + + + + + + + information_popup_error_title + + + + + information_popup_chat_creation_failed_message + "La création a échoué" + + + + + group_chat_error_must_have_name + "Un nom doit être donné au groupe + + + + + group_call_error_not_connected + "Vous n'etes pas connecté" + + + + + chat_creation_in_progress + Creation de la conversation en cours … + + + + + ChatSettingsLayout + + + settings_chat_attached_files_title + Attached files + + + + + settings_chat_attached_files_auto_download_title + "Automatic download" + + + + + settings_chat_attached_files_auto_download_subtitle + "Automatically download transferred or received files in conversations" + + + + + CliModel + + + show_function_description + + + + + fetch_config_function_description + + + + + call_function_description + + + + + bye_function_description + + + + + accept_function_description + + + + + decline_function_description + + + + + ConferenceInfoCore + + + information_popup_error_title + "Erreur" + + + + + information_popup_disconnected_account_message + "Votre compte est déconnecté" + + + + + Contact + + + information_popup_error_title + Erreur + + + + + information_popup_voicemail_address_undefined_message + L'URI de messagerie vocale n'est pas définie. + + + + + account_settings_name_accessible_name + Account settings of %1 + + + + + ContactEdition + + + contact_editor_title + "Modifier contact" + + + + + save + "Enregistrer + + + + + + contact_editor_dialog_cancel_change_message + "Les changements seront annulés. Souhaitez-vous continuer ?" + + + + + close_accessible_name + Close %n + + + + + contact_editor_mandatory_first_name_or_company_not_filled + "Veuillez saisir un prénom ou un nom d'entreprise" + + + + + contact_editor_mandatory_address_or_number_not_filled + "Veuillez saisir une adresse ou un numéro de téléphone" + + + + + contact_editor_add_image_label + "Ajouter une image" + + + + + contact_details_edit + "Modifier" + + + + + edit_contact_image_accessible_name + "Edit contact image" + + + + + contact_details_delete + "Supprimer" + + + + + delete_contact_image_accessible_name + "Delete contact image" + + + + + + contact_editor_first_name + "Prénom" + + + + + + contact_editor_last_name + "Nom" + + + + + + contact_editor_company + "Entreprise" + + + + + + contact_editor_job_title + "Fonction" + + + + + + sip_address + + + + + sip_address_number_accessible_name + "SIP address number %1" + + + + + remove_sip_address_accessible_name + "Remove SIP address %1" + + + + + new_sip_address_accessible_name + "New SIP address" + + + + + phone_number_number_accessible_name + "Phone number number %1" + + + + + remove_phone_number_accessible_name + Remove phone number %1 + + + + + new_phone_number_accessible_name + "New phone number" + + + + + + phone + "Téléphone" + + + + + ContactListItem + + + contact_details_remove_from_favourites + "Enlever des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + Partager + + + + + information_popup_error_title + + + + + information_popup_vcard_creation_error + La création du fichier vcard a échoué + + + + + information_popup_vcard_creation_title + VCard créée + + + + + information_popup_vcard_creation_success + "VCard du contact enregistrée dans %1" + + + + + contact_sharing_email_title + Partage de contact + + + + + contact_details_delete + "Supprimer" + + + + + ContactListView + + + shrink_accessible_name + Shrink %1 + + + + + expand_accessible_name + Expand %1 + + + + + ContactPage + + + contacts_add + "Ajouter un contact" + + + + + contacts_list_empty + "Aucun contact pour le moment" + + + + + contact_new_title + "Nouveau contact" + + + + + create + + + + + contact_edit_title + "Modifier contact" + + + + + save + + + + + contact_dialog_delete_title + Supprimer %1 ?" + + + + + contact_dialog_delete_message + Ce contact sera définitivement supprimé. + + + + + contact_deleted_toast + "Contact supprimé" + + + + + contact_deleted_message + "%1 a été supprimé" + + + + + contact_dialog_devices_trust_popup_title + "Augmenter la confiance" + + + + + contact_dialog_devices_trust_popup_message + "Pour augmenter le niveau de confiance vous devez appeler les différents appareils de votre contact et valider un code.<br><br>Vous êtes sur le point d’appeler “%1” voulez vous continuer ?" + + + + + popup_do_not_show_again + Ne plus afficher + + + + + cancel + + + + + dialog_call + "Appeler" + + + + + contact_dialog_devices_trust_help_title + "Niveau de confiance" + + + + + contact_dialog_devices_trust_help_message + "Vérifiez les appareils de votre contact pour confirmer que vos communications seront sécurisées et sans compromission. <br>Quand tous seront vérifiés, vous atteindrez le niveau de confiance maximal." + + + + + dialog_ok + "Ok" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + search_bar_look_for_contact_text + Rechercher un contact + + + + + list_filter_no_result_found + Aucun résultat… + + + + + contact_list_empty + Aucun contact pour le moment + + + + + expand_accessible_name + Expand %1 + + + + + shrink_accessible_name + Shrink %1 + + + + + create_contact_accessible_name + Create new contact + + + + + more_info_accessible_name + More info %1 + + + + + + contact_details_edit + Edit +---------- +"Éditer" + + + + + contact_call_action + "Appel" + + + + + contact_message_action + "Message" + + + + + contact_video_call_action + "Appel vidéo" + + + + + contact_details_numbers_and_addresses_title + "Coordonnées" + + + + + call_adress_accessible_name + Call address %1 + + + + + contact_details_company_name + "Société :" + + + + + contact_details_job_title + "Poste :" + + + + + contact_details_medias_title + "Medias" + + + + + + contact_details_medias_subtitle + "Afficher les medias partagés" + + + + + contact_details_trust_title + "Confiance" + + + + + contact_dialog_devices_trust_title + "Niveau de confiance - Appareils vérifiés" + + + + + contact_details_no_device_found + "Aucun appareil" + + + + + contact_device_without_name + "Appareil inconnu" + + + + + contact_make_call_check_device_trust + "Vérifier" + + + + + verify_device_accessible_name + Verify %1 device + + + + + contact_details_actions_title + "Autres actions" + + + + + contact_details_remove_from_favourites + "Retirer des favoris" + + + + + contact_details_add_to_favourites + "Ajouter aux favoris" + + + + + contact_details_share + "Partager" + + + + + information_popup_error_title + + + + + contact_details_share_error_mesage + "La création du fichier vcard a échoué" + + + + + contact_details_share_success_title + "VCard créée" + + + + + contact_details_share_success_mesage + "VCard du contact enregistrée dans %1" + + + + + contact_details_share_email_title + "Partage de contact" + + + + + contact_details_delete + "Supprimer ce contact" + + + + + ContactsSettingsLayout + + + settings_contacts_ldap_title + Annuaires LDAP + + + + + settings_contacts_ldap_subtitle + "Ajouter vos annuaires LDAP pour pouvoir effectuer des recherches dans la barre de recherche." + + + + + settings_contacts_carddav_title + + + + + settings_contacts_carddav_subtitle + + + + + settings_contacts_add_ldap_server_title + "Ajouter un annuaire LDAP" + + + + + settings_contacts_edit_ldap_server_title + "Modifier un annuaire LDAP" + + + + + edit_ldap_server_accessible_name + "Editer le serveur LDAP %1" + + + + + use_ldap_server_accessible_name + "Utiliser le serveur LDAP %1" + + + + + settings_contacts_add_carddav_server_title + "Ajouter un carnet d'adresse CardDAV" + + + + + settings_contacts_edit_carddav_server_title + "Modifier un carnet d'adresse CardDAV" + + + + + edit_cardav_server_accessible_name + "Editer le carnet d'adresses CardDAV %1" + + + + + use_cardav_server_accessible_name + "Utiliser le d'adresses CardDAV %1" + + + + + ContactsSettingsProviderLayout + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + add + "Ajouter" + + + + + ConversationInfos + + + one_one_infos_call + "Appel" + + + + + one_one_infos_unmute + "Sourdine" + + + + + one_one_infos_mute + + + + + group_infos_participants + + + + + group_infos_media_docs + Medias & documents + + + + + group_infos_shared_medias + Shared medias + + + + + group_infos_shared_docs + Shared documents + + + + + group_infos_other_actions + Other actions + + + + + group_infos_ephemerals + + + + + group_infos_enable_ephemerals + + + + + group_infos_meeting + Schedule a meeting + + + + + group_infos_leave_room + Leave chat room + + + + + group_infos_leave_room_toast_title + Leave Chat Room ? + + + + + group_infos_leave_room_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + group_infos_delete_history + Delete history + + + + + group_infos_delete_history_toast_title + Delete history ? + + + + + group_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + one_one_infos_open_contact + Show contact + + + + + one_one_infos_create_contact + Create contact + + + + + one_one_infos_ephemerals + + + + + one_one_infos_enable_ephemerals + + + + + one_one_infos_delete_history + + + + + one_one_infos_delete_history_toast_title + Delete history ? + + + + + one_one_infos_delete_history_toast_message + All the messages will be removed from the chat room. Do you want to continue ? + + + + + CoreModel + + + info_popup_error_title + + + + + fetching_config_failed_error_message + "Remote provisioning cannot be retrieved" + + + + + CreationFormLayout + + + search_bar_look_for_contact_text + "Rechercher un contact" + + + + + DebugSettingsLayout + + + settings_debug_clean_logs_message + "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" + + + + + settings_debug_share_logs_message + "Les traces de débogage ont été téléversées. Comment souhaitez-vous partager le lien ? " + + + + + settings_debug_clipboard + "Presse-papier" + + + + + settings_debug_email + "E-Mail" + + + + + debug_settings_trace + "Traces %1" + + + + + information_popup_email_sharing_failed + "Le partage par mail a échoué. Veuillez envoyer le lien %1 directement à l'adresse %2." + + + + + + information_popup_error_title + Une erreur est survenue. + + + + + settings_debug_enable_logs_title + "Activer les traces de débogage" + + + + + settings_debug_enable_full_logs_title + "Activer les traces de débogage intégrales" + + + + + settings_debug_delete_logs_title + "Supprimer les traces" + + + + + settings_debug_share_logs_title + "Partager les traces" + + + + + settings_debug_share_logs_loading_message + "Téléversement des traces en cours …" + + + + + settings_debug_app_version_title + "Version de l'application" + + + + + settings_debug_sdk_version_title + "Version du SDK" + + + + + settings_debug_share_logs_error + "Le téléversement des traces a échoué. Vous pouvez partager les fichiers de trace directement depuis le répertoire suivant : %1" + + + + + DecoratedTextField + + + textfield_error_message_cannot_be_empty + "ne peut être vide" + + + + + textfield_error_message_unknown_format + "Format non reconnu" + + + + + Dialog + + + + dialog_confirm + "Confirmer" + + + + + + dialog_cancel + "Annuler" + + + + + EncryptionSettings + + + call_stats_media_encryption_title + "Encryption :" + + + + + call_stats_media_encryption + Media encryption : %1 + + + + + call_stats_zrtp_cipher_algo + "Algorithme de chiffrement : %1" + + + + + call_stats_zrtp_key_agreement_algo + "Algorithme d'accord de clé : %1" + + + + + call_stats_zrtp_hash_algo + "Algorithme de hachage : %1" + + + + + call_stats_zrtp_auth_tag_algo + "Algorithme d'authentification : %1" + + + + + call_stats_zrtp_sas_algo + "Algorithme SAS : %1" + + + + + call_zrtp_validation_button_label + "Validation chiffrement" + + + + + EphemeralSettings + + + title + + + + + explanations + + + + + one_minute + + + + + one_hour + + + + + one_day + + + + + one_week + + + + + disabled + + + + + custom + + + + + EventLogCore + + + conference_created_event + + + + + conference_created_terminated + + + + + conference_participant_added_event + + + + + conference_participant_removed_event + + + + + conference_participant_set_admin_event + + + + + conference_participant_unset_admin_event + + + + + + conference_security_event + + + + + conference_ephemeral_message_enabled_event + + + + + conference_ephemeral_message_disabled_event + + + + + conference_subject_changed_event + + + + + conference_ephemeral_message_lifetime_changed_event + + + + + FriendCore + + + + + + + sip_address + "Adresse SIP" + + + + + + + device_id + "Téléphone" + + + + + information_popup_error_title + + + + + information_popup_invalid_address_message + "Adresse invalide" + + + + + GroupChatInfoParticipants + + + group_infos_manage_participants_title + "Gérer des participants" + + + + + group_infos_participant_is_admin + + + + + menu_see_existing_contact + "Show contact" + + + + + menu_add_address_to_contacts + "Add to contacts" + + + + + group_infos_give_admin_rights + + + + + group_infos_remove_admin_rights + + + + + group_infos_copy_sip_address + + + + + group_infos_remove_participant + + + + + group_infos_remove_participants_toast_title + + + + + group_infos_remove_participants_toast_message + + + + + GroupCreationFormLayout + + + return_accessible_name + Return + + + + + + group_start_dialog_subject_hint + "Nom du groupe" + + + + + required + "Requis" + + + + + HelpPage + + + help_title + "Aide" + + + + + + help_about_title + "À propos de %1" + + + + + help_about_privacy_policy_title + "Règles de confidentialité" + + + + + help_about_privacy_policy_subtitle + Quelles informations %1 collecte et utilise + + + + + help_about_version_title + "Version" + + + + + help_about_gpl_licence_title + "Licences GPLv3" + + + + + help_about_contribute_translations_title + "Contribuer à la traduction de %1" + + + + + help_troubleshooting_title + "Dépannage" + + + + + LdapSettingsLayout + + + settings_contacts_ldap_title + + + + + settings_contacts_ldap_subtitle + + + + + information_popup_success_title + + + + + settings_contacts_ldap_success_toast + "L'annuaire LDAP a été sauvegardé" + + + + + settings_contacts_ldap_error_toast + "Une erreur s'est produite, la configuration LDAP n'a pas été sauvegardée !" + + + + + information_popup_error_title + + + + + settings_contacts_ldap_delete_confirmation_message + "Supprimer l'annuaire LDAP ?" + + + + + delete_ldap_server_accessible_name + Delete LDAP server + + + + + settings_contacts_ldap_server_url_title + "URL du serveur (ne peut être vide)" + + + + + settings_contacts_ldap_bind_dn_title + "Bind DN" + + + + + settings_contacts_ldap_password_title + "Mot de passe" + + + + + settings_contacts_ldap_use_tls_title + "Utiliser TLS" + + + + + settings_contacts_ldap_search_base_title + "Base de recherche (ne peut être vide)" + + + + + settings_contacts_ldap_search_filter_title + "Filtre" + + + + + settings_contacts_ldap_max_results_title + "Nombre maximum de résultats" + + + + + settings_contacts_ldap_request_delay_title + "Délai entre 2 requêtes (en millisecondes)" + + + + + settings_contacts_ldap_request_timeout_title + "Durée maximun (en secondes)" + + + + + settings_contacts_ldap_min_characters_title + "Nombre minimum de caractères pour la requête" + + + + + settings_contacts_ldap_name_attributes_title + "Attributs de nom" + + + + + settings_contacts_ldap_sip_attributes_title + "Attributs SIP" + + + + + settings_contacts_ldap_sip_domain_title + "Domaine SIP" + + + + + settings_contacts_ldap_debug_title + "Débogage" + + + + + LoadingPopup + + + cancel + + + + + LoginForm + + + + username + Nom d'utilisateur : username + + + + + + password + Mot de passe + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + assistant_account_login + "Connexion" + + + + + assistant_account_login_missing_username + "Veuillez saisir un nom d'utilisateur" + + + + + assistant_account_login_missing_password + "Veuillez saisir un mot de passe" + + + + + assistant_forgotten_password + "Mot de passe oublié ?" + + + + + LoginLayout + + + + help_about_title + À propos de %1 + + + + + help_about_privacy_policy_title + "Politique de confidentialité" + + + + + help_about_privacy_policy_link + "Visiter notre potilique de confidentialité" + + + + + help_about_version_title + "Version" + + + + + help_about_licence_title + "Licence" + + + + + help_about_copyright_title + "Copyright + + + + + close + "Fermer" + + + + + LoginPage + + + return_accessible_name + Return + + + + + assistant_account_login + Connexion + + + + + assistant_no_account_yet + "Pas encore de compte ?" + + + + + assistant_account_register + "S'inscrire" + + + + + assistant_login_third_party_sip_account_title + "Compte SIP tiers" + + + + + assistant_login_remote_provisioning + "Configuration distante" + + + + + assistant_login_download_remote_config + "Télécharger une configuration distante" + + + + + assistant_login_remote_provisioning_url + 'Veuillez entrer le lien de configuration qui vous a été fourni :' + + + + + cancel + + + + + validate + "Valider" + + + + + settings_advanced_remote_provisioning_url + 'Lien de configuration distante' + + + + + default_account_connection_state_error_toast + + + + + MagicSearchList + + + device_id + + + + + MainLayout + + + bottom_navigation_calls_label + "Appels" + + + + + open_calls_page_accessible_name + "Open calls page" + + + + + bottom_navigation_contacts_label + "Contacts" + + + + + open_contacts_page_accessible_name + "Open contacts page" + + + + + bottom_navigation_conversations_label + "Conversations" + + + + + open_conversations_page_accessible_name + "Open conversations page" + + + + + bottom_navigation_meetings_label + "Réunions" + + + + + open_contact_page_accessible_name + "Open meetings page" + + + + + searchbar_placeholder_text + "Rechercher un contact, appeler %1" + + + + + searchbar_placeholder_text_chat_feature_enabled + "ou envoyer un message …" + + + + + do_not_disturb_accessible_name + "Do not disturb" + + + + + + contact_presence_status_disable_do_not_disturb + "Désactiver ne pas déranger" + + + + + information_popup_error_title + + + + + no_voicemail_uri_error_message + "L'URI de messagerie vocale n'est pas définie." + + + + + account_list_accessible_name + "Account list" + + + + + application_options_accessible_name + "Application options" + + + + + drawer_menu_manage_account + Mon compte + + + + + contact_presence_status_enable_do_not_disturb + "Activer ne pas déranger" + + + + + settings_title + + + + + recordings_title + "Enregistrements" + + + + + help_title + "Aide" + + + + + help_quit_title + "Quitter l'application" + + + + + quit_app_question + "Quitter %1 ?" + + + + + drawer_menu_add_account + "Ajouter un compte" + + + + + MainWindow + + + information_popup_connexion_succeed_title + "Connexion réussie" + + + + + information_popup_connexion_succeed_message + "Vous êtes connecté en mode %1" + + + + + interoperable + interopérable + + + + + call_transfer_successful_toast_title + "Appel transféré" + + + + + call_transfer_successful_toast_message + "Votre correspondant a été transféré au contact sélectionné" + + + + + information_popup_success_title + + + + + information_popup_changes_saved + "Les changements ont été sauvegardés" + + + + + captcha_validation_loading_message + "Veuillez valider le captcha sur la page web" + + + + + assistant_register_error_title + "Erreur lors de la création" + + + + + assistant_register_success_title + "Compte créé" + + + + + assistant_register_success_message + "Le compte a été créé. Vous pouvez maintenant vous connecter" + + + + + assistant_register_error_code + "Erreur dans le code de validation" + + + + + information_popup_error_title + + + + + ManageParticipants + + + group_infos_manage_participants + + + + + MeetingForm + + + meeting_schedule_meeting_label + "Réunion" + + + + + meeting_schedule_broadcast_label + "Webinar" + + + + + meeting_schedule_subject_hint + "Ajouter un titre" + + + + + meeting_schedule_description_hint + "Ajouter une description" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_send_invitations_title + "Envoyer une invitation aux participants" + + + + + MeetingListView + + + meeting_info_cancelled + "Réunion annulée" + + + + + meetings_list_no_meeting_for_today + "Aucune réunion aujourd'hui" + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + MeetingPage + + + meetings_add + "Créer une réunion" + + + + + meetings_list_empty + "Aucune réunion" + + + + + meeting_schedule_cancel_dialog_message + "Souhaitez-vous annuler et supprimer cette réunion ?" + + + + + meeting_schedule_delete_dialog_message + Souhaitez-vous supprimer cette réunion ? + + + + + meeting_schedule_cancel_and_delete_action + "Annuler et supprimer" + + + + + meeting_schedule_delete_only_action + "Supprimer seulement" + + + + + meeting_schedule_delete_action + "Supprimer" + + + + + back_action + Retour + + + + + meetings_list_title + Réunions + + + + + meetings_search_hint + "Rechercher une réunion" + + + + + list_filter_no_result_found + "Aucun résultat…" + + + + + meetings_empty_list + "Aucune réunion" + + + + + + meeting_schedule_title + "Nouvelle réunion" + + + + + create + + + + + + + + + + information_popup_error_title + + + + + + meeting_schedule_mandatory_field_not_filled_toast + Veuillez saisir un titre et sélectionner au moins un participant + + + + + + meeting_schedule_duration_error_toast + "La fin de la conférence doit être plus récente que son début" + + + + + + meeting_schedule_creation_in_progress + "Création de la réunion en cours …" + + + + + meeting_info_created_toast + "Réunion planifiée avec succès" + + + + + meeting_failed_to_schedule_toast + "Échec de création de la réunion !" + + + + + save + + + + + + saved + "Enregistré" + + + + + meeting_info_updated_toast + "Réunion mise à jour" + + + + + meeting_schedule_edit_in_progress + "Modification de la réunion en cours…" + + + + + meeting_failed_to_edit_toast + "Échec de la modification de la réunion !" + + + + + meeting_schedule_add_participants_title + "Ajouter des participants" + + + + + meeting_schedule_add_participants_apply + + + + + group_call_participant_selected + "%n participant(s) sélectionné(s)" + + + + + + + + meeting_info_delete + "Supprimer la réunion" + + + + + meeting_address_copied_to_clipboard_toast + "Adresse de la réunion copiée" + + + + + meeting_schedule_timezone_title + "Fuseau horaire" + + + + + meeting_info_organizer_label + "Organisateur" + + + + + meeting_info_join_title + "Rejoindre la réunion" + + + + + MeetingsSettingsLayout + + + settings_meetings_display_title + "Affichage" + + + + + settings_meetings_default_layout_title + "Mode d’affichage par défaut" + + + + + settings_meetings_default_layout_subtitle + "Le mode d’affichage des participants en réunions" + + + + + MessageImdnStatusInfos + + + message_details_status_title + Message status + + + + + MessageReactionsInfos + + + message_details_reactions_title + Reactions + + + + + click_to_delete_reaction_info + Click to delete + + + + + MessageSharedFilesInfos + + + no_shared_medias + No media + + + + + no_shared_documents + No document + + + + + MultimediaSettings + + + + multimedia_settings_ringer_title + Ringtone - Incoming calls + + + + + + + + choose_something_accessible_name + Choose %1 + + + + + + + multimedia_settings_speaker_title + "Haut-parleurs" + + + + + + device_volume_accessible_name + %1 volume + + + + + + + multimedia_settings_microphone_title + "Microphone" + + + + + + multimedia_settings_camera_title + "Caméra" + + + + + NetworkSettingsLayout + + + settings_network_title + "Réseau" + + + + + settings_network_allow_ipv6 + "Autoriser l'IPv6" + + + + + NewCallForm + + + call_transfer_active_calls_label + "Appels en cours" + + + + + call_start_group_call_title + Appel de groupe + + + + + NewChatForm + + + chat_start_group_chat_title + Nouveau groupe + + + + + NotificationReceivedCall + + + call_audio_incoming + "Appel entrant" + + + + + dialog_accept + "Accepter" + + + + + dialog_deny + "Refuser + + + + + Notifier + + + new_call_alert_accessible_name + New call from %1 + + + + + new_voice_message + 'Voice message received!' : message to warn the user in a notofication for voice messages. + + + + + new_file_message + + + + + new_conference_invitation + 'Conference invitation received!' : Notification about receiving an invitation to a conference. + + + + + new_chat_room_messages + 'New messages received!' Notification that warn the user of new messages. + + + + + new_message_alert_accessible_name + New message on chatroom %1 + + + + + OIDCModel + + + OAuthHttpServerReplyHandler is not listening + + + + + oidc_authentication_timeout_message + Timeout: Not authenticated + + + + + oidc_authentication_granted_message + Authentication granted + + + + + oidc_authentication_not_authenticated_message + Not authenticated + + + + + oidc_authentication_refresh_message + Refreshing token + + + + + oidc_authentication_temporary_credentials_message + Temporary credentials received + + + + + oidc_authentication_network_error + Network error + + + + + oidc_authentication_server_error + Server error + + + + + oidc_authentication_token_not_found_error + OAuth token not found + + + + + oidc_authentication_token_secret_not_found_error + OAuth token secret not found + + + + + oidc_authentication_callback_not_verified_error + OAuth callback not verified + + + + + oidc_authentication_request_auth_message + Requesting authorization from browser + + + + + oidc_authentication_no_token_found_error + + + + + oidc_authentication_request_token_message + Requesting access token + + + + + oidc_authentication_refresh_token_message + Refreshing access token + + + + + oidc_authentication_request_authorization_message + Requesting authorization + + + + + oidc_authentication_request_temporary_credentials_message + Requesting temporary credentials + + + + + oidc_authentication_no_auth_found_in_config_error + No authorization endpoint found in OpenID configuration + + + + + oidc_authentication_no_token_found_in_config_error + No token endpoint found in OpenID configuration + + + + + ParticipantListView + + + meeting_participant_is_admin_label + "Admin" + + + + + meeting_add_participants_title + "Ajouter des participants" + + + + + PhoneNumberInput + + + prefix_phone_number_accessible_name + %1 prefix + + + + + number_phone_number_accessible_name + %1 number + + + + + PopupButton + + + close_popup_panel_accessible_name + "Close %1 popup" + + + + + open_popup_panel_accessible_name + "Open %1" popup + + + + + Presence + + + contact_presence_reset_status + + + + + contact_presence_button_set_custom_status + + + + + contact_presence_button_edit_custom_status + + + + + contact_presence_button_delete_custom_status + + + + + contact_presence_custom_status + + + + + PresenceNoteLayout + + + contact_presence_note_title + + + + + PresenceSetCustomStatus + + + contact_presence_button_set_custom_status_title + + + + + contact_presence_button_save_custom_status + + + + + QObject + + + media_encryption_dtls + + + + + media_encryption_none + + + + + media_encryption_srtp + + + + + media_encryption_post_quantum + "ZRTP - Post quantique" + + + + + message_state_in_progress + "delivery in progress" + + + + + message_state_delivered + sent + + + + + message_state_not_delivered + error + + + + + message_state_file_transfer_error + cannot get file from server + + + + + message_state_file_transfer_done + file transfer has been completed successfully + + + + + message_state_delivered_to_user + received + + + + + message_state_displayed + read + + + + + message_state_file_transfer__in_progress + file transfer in progress + + + + + message_state_pending_delivery + pending delivery + + + + + message_state_file_transfer_cancelling + file transfer canceled + + + + + incoming + "Entrant" + + + + + outgoing + "Sortant" + + + + + conference_layout_active_speaker + "Participant actif" + + + + + conference_layout_grid + "Mosaïque" + + + + + conference_layout_audio_only + "Audio uniquement" + + + + + RegisterCheckingPage + + + email + "email" + + + + + phone_number + "numéro de téléphone" + + + + + confirm_register_title + "Inscription | Confirmer votre %1" + + + + + assistant_account_creation_confirmation_explanation + Nous vous avons envoyé un code de vérification sur votre %1 %2<br> Merci de le saisir ci-dessous + + + + + assistant_account_creation_confirmation_did_not_receive_code + "Vous n'avez pas reçu le code ?" + + + + + assistant_account_creation_confirmation_resend_code + "Renvoyer un code" + + + + + RegisterPage + + + return_accessible_name + Return + + + + + assistant_account_register + "Inscription + + + + + assistant_already_have_an_account + + + + + assistant_account_login + + + + + assistant_account_register_with_phone_number + + + + + assistant_account_register_with_email + + + + + + username + + + + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + domain + + + + + + + phone_number + "Numéro de téléphone" + + + + + + email + + + + + + password + + + + + + assistant_account_register_password_confirmation + "Confirmation mot de passe" + + + + + assistant_dialog_cgu_and_privacy_policy_message + "J'accepte les %1 et la %2" + + + + + assistant_dialog_general_terms_label + "conditions d'utilisation" + + + + + assistant_dialog_privacy_policy_label + "politique de confidentialité" + + + + + assistant_account_create + "Créer" + + + + + assistant_account_create_missing_username_error + "Veuillez entrer un nom d'utilisateur" + + + + + assistant_account_create_missing_password_error + "Veuillez entrer un mot de passe" + + + + + assistant_account_create_confirm_password_error + "Les mots de passe sont différents" + + + + + assistant_account_create_missing_number_error + "Veuillez entrer un numéro de téléphone" + + + + + assistant_account_create_missing_email_error + "Veuillez entrer un email" + + + + + SIPLoginPage + + + return_accessible_name + Return + + + + + assistant_login_third_party_sip_account_title + Compte SIP tiers + + + + + assistant_no_account_yet + Pas encore de compte ? + + + + + assistant_account_register + S'inscrire + + + + + Certaines fonctionnalités telles que les conversations de groupe, les vidéo-conférences, etc… nécessitent un compte %1. + +Ces fonctionnalités seront masquées si vous utilisez un compte SIP tiers. + +Pour les activer dans un projet commercial, merci de nous contacter. + + + + + assistant_third_party_sip_account_create_linphone_account + "Créer un compte linphone" + + + + + assistant_third_party_sip_account_warning_ok + "Je comprends" + + + + + + username + "Nom d'utilisateur" + + + + + + mandatory_field_accessible_name + "%1 mandatory" + + + + + + password + + + + + + sip_address_domain + "Domaine" + + + + + + sip_address_display_name + Nom d'affichage + + + + + + transport + "Transport" + + + + + + assistant_account_login + + + + + assistant_account_login_missing_username + + + + + assistant_account_login_missing_password + + + + + assistant_account_login_missing_domain + "Veuillez saisir un nom de domaine + + + + + login_advanced_parameters_label + Advanced parameters + + + + + + login_proxy_server_url + "Outbound SIP Proxy URI" + + + + + login_proxy_server_url_tooltip + "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." + + + + + + login_registrar_uri + "Registrar URI" + + + + + + login_id + "Authentication ID (if different)" + + + + + ScreencastSettings + + + screencast_settings_choose_window_text + "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" + + + + + screencast_settings_all_screen_label + "Ecran entier" + + + + + screencast_settings_one_window_label + "Fenêtre" + + + + + screencast_settings_screen + "Ecran %1" + + + + + stop + "Stop + + + + + share + "Partager" + + + + + SearchBar + + + open_dialer_acccessibility_label + "Open dialer" + + + + + clear_text_input_acccessibility_label + "Clear text input" + + + + + SecurityModePage + + + manage_account_choose_mode_title + "Choisir votre mode" + + + + + manage_account_choose_mode_message + "Vous pourrez changer de mode plus tard." + + + + + manage_account_e2e_encrypted_mode_default_title + "Chiffrement de bout en bout" + + + + + manage_account_e2e_encrypted_mode_default_summary + "Ce mode vous garanti la confidentialité de tous vos échanges. Notre technologie de chiffrement de bout en bout assure un niveau de sécurité maximal pour tous vos échanges." + + + + + manage_account_e2e_encrypted_mode_interoperable_title + "Interoperable" + + + + + manage_account_e2e_encrypted_mode_interoperable_summary + "Ce mode vous permet de profiter de toute les fonctionnalités de Linphone, toute en restant interopérable avec n’importe qu’elle autre service SIP." + + + + + dialog_continue + "Continuer" + + + + + SecuritySettingsLayout + + + settings_security_enable_vfs_title + "Chiffrer tous les fichiers" + + + + + settings_security_enable_vfs_subtitle + "Attention, vous ne pourrez pas revenir en arrière !" + + + + + SelectedChatView + + + chat_view_group_call_toast_message + + + + + unencrypted_conversation_warning + This conversation is not encrypted ! + + + + + reply_to_label + Reply to %1 + + + + + shared_medias_title + Shared medias + + + + + shared_documents_title + Shared documents + + + + + forward_to_title + Forward to… + + + + + conversations_title + Conversations + + + + + SettingsMenuItem + + + setting_tab_accessible_name + %1 settings + + + + + SettingsPage + + + settings_title + "Paramètres" + + + + + settings_calls_title + "Appels" + + + + + settings_call_forward + "Transfert d'appel" + + + + + settings_conversations_title + "Conversations" + + + + + settings_contacts_title + "Contacts" + + + + + settings_meetings_title + "Réunions" + + + + + settings_network_title + "Affichage" "Security" "Réseau" + + + + + settings_advanced_title + "Paramètres avancés" + + + + + contact_editor_popup_abort_confirmation_title + Modifications non enregistrées + + + + + contact_editor_popup_abort_confirmation_message + Vous avez des modifications non enregistrées. Si vous quittez cette page, vos changements seront perdus. Voulez-vous enregistrer vos modifications avant de continuer ? + + + + + contact_editor_dialog_abort_confirmation_do_not_save + "Ne pas enregistrer" + + + + + contact_editor_dialog_abort_confirmation_save + "Enregistrer" + + + + + Sticker + + + conference_participant_joining_text + "rejoint…" + + + + + conference_participant_paused_text + "En pause" + + + + + TextField + + + show_accessible_name + Show %1 + + + + + hide_accessible_name + Hide %1 + + + + + ToolModel + + + call_error_uninterpretable_sip_address + "The calling address is not an interpretable SIP address : %1 + + + + + group_call_error_no_account + + + + + group_call_error_participants_invite + + + + + group_call_error_creation + + + + + voice_recording_duration + "Voice recording (%1)" : %1 is the duration formated in mm:ss + + + + + unknown_audio_device_name + + + + + conference_invitation + + + + + conference_invitation_cancelled + + + + + conference_invitation_updated + + + + + Utils + + + nSeconds + + + + + + + + nMinute + + + + + + + + chat_message_forward_error + Cannot forward an invalid message + + + + + info_popup_forward_message_error + Could not forward message : %1 + + + + + info_popup_send_forward_message_error_message + Failed to create forward message + + + + + chat_message_reply_error + Cannot reply to invalid message + + + + + info_popup_reply_message_error + Could not send reply message : %1 + + + + + info_popup_send_reply_message_error_message + Failed to create reply message + + + + + nHour + + + + + + + + + nDay + + + + + + + + nWeek + + + + + + + + contact_presence_status_available + + + + + contact_presence_status_busy + + + + + contact_presence_status_do_not_disturb + + + + + contact_presence_status_offline + + + + + contact_presence_status_away + + + + + information_popup_call_not_created_message + "L'appel n'a pas pu être créé" + + + + + + + + information_popup_error_title + Error +---------- +Failed to create 1-1 conversation with %1 ! + + + + + information_popup_group_call_not_created_message + + + + + number_of_years + %n an(s) + + + + + + + + number_of_month + "%n mois" + + + + + + + + number_of_weeks + %n semaine(s) + + + + + + + + number_of_days + %n jour(s) + + + + + + + + today + "Aujourd'hui" + + + + + yesterday + "Hier + + + + + duration_tomorrow + Tomorrow + + + + + duration_number_of_days + %1 jour(s) + + + + + + + + call_zrtp_token_verification_possible_characters + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + + + + + information_popup_chatroom_creation_error_message + Failed to create 1-1 conversation with %1 ! + + + + + recorder_error + Error with the recorder + + + + + + + chat_error + + + + + + + + + + info_popup_error_title + Error + + + + + info_popup_send_voice_message_error_message + Could not send voice message : %1 + + + + + info_popup_send_voice_message_sending_error_message + Failed to create message from record + + + + + WaitingRoom + + + meeting_waiting_room_title + Participer à : + + + + + meeting_waiting_room_join + "Rejoindre" + + + + + + cancel + Cancel + + + + + meeting_waiting_room_joining_title + "Connexion à la réunion" + + + + + meeting_waiting_room_joining_subtitle + "Vous allez rejoindre la réunion dans quelques instants…" + + + + + WelcomePage + + + welcome_page_title + "Bienvenue" + + + + + welcome_page_subtitle + "sur %1" + + + + + welcome_carousel_skip + "Passer" + + + + + welcome_page_1_message + "Une application de communication <b>sécurisée</b>,<br> <b>open source</b> et <b>française</b>." + + + + + welcome_page_2_title + "Sécurisé" + + + + + welcome_page_2_message + "Vos communications sont en sécurité grâce aux <br><b>Chiffrement de bout en bout</b>." + + + + + welcome_page_3_title + "Open Source" + + + + + welcome_page_3_message + "Une application open source et un <b>service gratuit</b> <br>depuis <b>2001</b>" + + + + + next + "Suivant" + + + + + start + "Commencer" + + + + + ZrtpAuthenticationDialog + + + call_dialog_zrtp_validate_trust_title + Vérification de sécurité + + + + + call_zrtp_sas_validation_skip + "Passer" + + + + + call_dialog_zrtp_validate_trust_warning_message + "Pour garantir le chiffrement, nous avons besoin de réauthentifier l’appareil de votre correspondant. Echangez vos codes :" + + + + + call_dialog_zrtp_validate_trust_message + "Pour garantir le chiffrement, nous avons besoin d’authentifier l’appareil de votre correspondant. Veuillez échanger vos codes : " + + + + + call_dialog_zrtp_validate_trust_local_code_label + "Votre code :" + + + + + call_dialog_zrtp_validate_trust_remote_code_label + "Code correspondant :" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match_text + "Le code fourni ne correspond pas." + + + + + call_dialog_zrtp_security_alert_message + "La confidentialité de votre appel peut être compromise !" + + + + + call_dialog_zrtp_validate_trust_letters_do_not_match + "Aucune correspondance" + + + + + call_action_hang_up + "Raccrocher" + + + + + country + + + Afghanistan + + + + + Albania + + + + + Algeria + + + + + AmericanSamoa + + + + + Andorra + + + + + Angola + + + + + Anguilla + + + + + AntiguaAndBarbuda + + + + + Argentina + + + + + Armenia + + + + + Aruba + + + + + Australia + + + + + Austria + + + + + Azerbaijan + + + + + Bahamas + + + + + Bahrain + + + + + Bangladesh + + + + + Barbados + + + + + Belarus + + + + + Belgium + + + + + Belize + + + + + Benin + + + + + Bermuda + + + + + Bhutan + + + + + Bolivia + + + + + BosniaAndHerzegowina + + + + + Botswana + + + + + Brazil + + + + + Brunei + + + + + Bulgaria + + + + + BurkinaFaso + + + + + Burundi + + + + + Cambodia + + + + + Cameroon + + + + + Canada + + + + + CapeVerde + + + + + CaymanIslands + + + + + CentralAfricanRepublic + + + + + Chad + + + + + Chile + + + + + China + + + + + Colombia + + + + + Comoros + + + + + PeoplesRepublicOfCongo + + + + + CookIslands + + + + + CostaRica + + + + + IvoryCoast + + + + + Croatia + + + + + Cuba + + + + + Cyprus + + + + + CzechRepublic + + + + + Denmark + + + + + Djibouti + + + + + Dominica + + + + + DominicanRepublic + + + + + Ecuador + + + + + Egypt + + + + + ElSalvador + + + + + EquatorialGuinea + + + + + Eritrea + + + + + Estonia + + + + + Ethiopia + + + + + FalklandIslands + + + + + FaroeIslands + + + + + Fiji + + + + + Finland + + + + + France + + + + + FrenchGuiana + + + + + FrenchPolynesia + + + + + Gabon + + + + + Gambia + + + + + Georgia + + + + + Germany + + + + + Ghana + + + + + Gibraltar + + + + + Greece + + + + + Greenland + + + + + Grenada + + + + + Guadeloupe + + + + + Guam + + + + + Guatemala + + + + + Guinea + + + + + GuineaBissau + + + + + Guyana + + + + + Haiti + + + + + Honduras + + + + + DemocraticRepublicOfCongo + + + + + HongKong + + + + + Hungary + + + + + Iceland + + + + + India + + + + + Indonesia + + + + + Iran + + + + + Iraq + + + + + Ireland + + + + + Israel + + + + + Italy + + + + + Jamaica + + + + + Japan + + + + + Jordan + + + + + Kazakhstan + + + + + Kenya + + + + + Kiribati + + + + + DemocraticRepublicOfKorea + + + + + RepublicOfKorea + + + + + Kuwait + + + + + Kyrgyzstan + + + + + Laos + + + + + Latvia + + + + + Lebanon + + + + + Lesotho + + + + + Liberia + + + + + Libya + + + + + Liechtenstein + + + + + Lithuania + + + + + Luxembourg + + + + + Macau + + + + + Macedonia + + + + + Madagascar + + + + + Malawi + + + + + Malaysia + + + + + Maldives + + + + + Mali + + + + + Malta + + + + + MarshallIslands + + + + + Martinique + + + + + Mauritania + + + + + Mauritius + + + + + Mayotte + + + + + Mexico + + + + + Micronesia + + + + + Moldova + + + + + Monaco + + + + + Mongolia + + + + + Montenegro + + + + + Montserrat + + + + + Morocco + + + + + Mozambique + + + + + Myanmar + + + + + Namibia + + + + + NauruCountry + + + + + Nepal + + + + + Netherlands + + + + + NewCaledonia + + + + + NewZealand + + + + + Nicaragua + + + + + Niger + + + + + Nigeria + + + + + Niue + + + + + NorfolkIsland + + + + + NorthernMarianaIslands + + + + + Norway + + + + + Oman + + + + + Pakistan + + + + + Palau + + + + + PalestinianTerritories + + + + + Panama + + + + + PapuaNewGuinea + + + + + Paraguay + + + + + Peru + + + + + Philippines + + + + + Poland + + + + + Portugal + + + + + PuertoRico + + + + + Qatar + + + + + Reunion + + + + + Romania + + + + + RussianFederation + + + + + Rwanda + + + + + SaintHelena + + + + + SaintKittsAndNevis + + + + + SaintLucia + + + + + SaintPierreAndMiquelon + + + + + SaintVincentAndTheGrenadines + + + + + Samoa + + + + + SanMarino + + + + + SaoTomeAndPrincipe + + + + + SaudiArabia + + + + + Senegal + + + + + Serbia + + + + + Seychelles + + + + + SierraLeone + + + + + Singapore + + + + + Slovakia + + + + + Slovenia + + + + + SolomonIslands + + + + + Somalia + + + + + SouthAfrica + + + + + Spain + + + + + SriLanka + + + + + Sudan + + + + + Suriname + + + + + Swaziland + + + + + Sweden + + + + + Switzerland + + + + + Syria + + + + + Taiwan + + + + + Tajikistan + + + + + Tanzania + + + + + Thailand + + + + + Togo + + + + + Tokelau + + + + + Tonga + + + + + TrinidadAndTobago + + + + + Tunisia + + + + + Turkey + + + + + Turkmenistan + + + + + TurksAndCaicosIslands + + + + + Tuvalu + + + + + Uganda + + + + + Ukraine + + + + + UnitedArabEmirates + + + + + UnitedKingdom + + + + + UnitedStates + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Vietnam + + + + + WallisAndFutunaIslands + + + + + Yemen + + + + + Zambia + + + + + Zimbabwe + + + + + utils + + + formatYears + '%1 year' + + + + + + + + formatMonths + '%1 month' + + + + + + + + formatWeeks + '%1 week' + + + + + + + + formatDays + '%1 day' + + + + + + + + formatHours + '%1 hour' + + + + + + + + formatMinutes + '%1 minute' + + + + + + + + formatSeconds + '%1 second' + + + + + + + + codec_install + "Installation de codec" + + + + + download_codec + "Télécharger le codec %1 (%2) ?" + + + + + information_popup_success_title + "Succès" + + + + + information_popup_codec_install_success_text + "Le codec a été installé avec succès." + + + + + + + information_popup_error_title + + + + + information_popup_codec_install_error_text + "Le codec n'a pas pu être installé." + + + + + information_popup_codec_save_error_text + "Le codec n'a pas pu être sauvegardé." + + + + + information_popup_codec_download_error_text + "Le codec n'a pas pu être téléchargé." + + + + + loading_popup_codec_install_progress + "Téléchargement en cours …" + + + + + okButton + + + + diff --git a/Linphone/data/languages/hu.ts b/Linphone/data/languages/hu.ts index 1e3ed8a1a..52635c2ff 100644 --- a/Linphone/data/languages/hu.ts +++ b/Linphone/data/languages/hu.ts @@ -2241,18 +2241,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore diff --git a/Linphone/data/languages/mk.ts b/Linphone/data/languages/mk.ts index cbffaa64c..90b2b22e0 100644 --- a/Linphone/data/languages/mk.ts +++ b/Linphone/data/languages/mk.ts @@ -2241,18 +2241,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore diff --git a/Linphone/data/languages/nl.ts b/Linphone/data/languages/nl.ts index 676498636..8fe09f544 100644 --- a/Linphone/data/languages/nl.ts +++ b/Linphone/data/languages/nl.ts @@ -2241,18 +2241,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore diff --git a/Linphone/data/languages/pt.ts b/Linphone/data/languages/pt.ts index 4d54f70fa..8bbbbd0f2 100644 --- a/Linphone/data/languages/pt.ts +++ b/Linphone/data/languages/pt.ts @@ -1121,7 +1121,7 @@ call_error_io_error_toast "Unavailable service or network error" - + Serviço indisponível ou erro de rede @@ -1668,7 +1668,7 @@ conference_participants_list_title "Participants (%1)" - + Participantes (%1) @@ -2187,6 +2187,11 @@ Could not open file : unknown path %1 + + + info_popup_error_titile + Erro + ChatMessageContentList @@ -2241,18 +2246,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - Erro - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore @@ -3229,7 +3222,7 @@ Error group_infos_participants - + Participantes (%1) @@ -7429,4 +7422,12 @@ Failed to create 1-1 conversation with %1 ! Ok + + CoreModel + + + info_popup_error_title + Erro + + diff --git a/Linphone/data/languages/pt_BR.ts b/Linphone/data/languages/pt_BR.ts index 223d8605b..6177ea99a 100644 --- a/Linphone/data/languages/pt_BR.ts +++ b/Linphone/data/languages/pt_BR.ts @@ -7,7 +7,7 @@ return_accessible_name Return - + Voltar @@ -19,7 +19,7 @@ save_settings_accessible_name Save %1 settings - + Salvar configurações %1 @@ -62,7 +62,7 @@ drawer_menu_account_connection_status_cleared - Desativado + Desabilitado @@ -107,7 +107,7 @@ assistant_account_login_already_connected_error "The account is already connected" - A conta está conectada + A conta já está conectada @@ -119,7 +119,7 @@ assistant_account_login_address_configuration_error "Unable to configure address: `%1`." - Impossível de configurar o endereço: `%1`. + Falha ao configurar o endereço: `%1`. @@ -152,37 +152,37 @@ set_mwi_server_address_failed_error_message "Unable to set voicemail server address, failed creating address from %1" : %1 is address - + Não foi possível definir o endereço do servidor de correio de voz, falha ao criar endereço de %1 set_server_address_failed_error_message "Unable to set server address, failed creating address from %1" - + Não foi possível definir o endereço do servidor, falha ao criar endereço de %1 set_outbound_proxy_uri_failed_error_message Unable to set outbound proxy uri, failed creating address from %1 - + Não foi possível definir URI do proxy de saída, falha ao criar endereço de %1 set_conference_factory_address_failed_error_message "Unable to set the conversation server address, failed creating address from %1" - + Não foi possível definir o endereço do servidor de conversa, falha ao criar endereço de %1 set_audio_conference_factory_address_failed_error_message "Unable to set the meeting server address, failed creating address from %1" - + Não foi possível definir o endereço do servidor de conferência, falha ao criar endereço de %1 set_voicemail_address_failed_error_message Unable to set voicemail address, failed creating address from %1 - + Não foi possível definir o endereço do correio de voz, falha ao criar endereço de %1 @@ -197,7 +197,7 @@ manage_account_details_subtitle Éditer les informations de votre compte. - Editar informações da conta. + Editar informações da sua conta. @@ -215,7 +215,7 @@ manage_account_add_picture "Ajouter une image" - Adicione uma imagem + Adicionar uma imagem @@ -256,7 +256,7 @@ manage_account_delete "Déconnecter mon compte" - Desconecte minha conta + Desconectar minha conta @@ -290,19 +290,19 @@ manage_account_device_remove_confirm_dialog - Excluir %1? + Apagar %1? manage_account_device_last_connection "Dernière connexion:" - Ultimo login: + Último login: device_last_updated_time_no_info "No information" - + Sem informação @@ -371,7 +371,7 @@ info_popup_invalid_outbound_proxy_message Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - + O URI do proxy de saída está inválido. Por favor, certifique-se que ele está no seguinte formato: sip:<host>:<porta>;transport=<transporte> (:<porta> é opcional) @@ -420,13 +420,13 @@ account_settings_sip_proxy_url_title - + URI do proxy SIP de saída login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." - + Se este campo estiver preenchido, o proxy de saída será ativado automaticamente. Deixe vazio para desabilitá-lo. @@ -462,13 +462,13 @@ account_settings_conference_factory_uri_title "URI du serveur de conversations" - URI do servidor de conferencia + URI da fábrica de conferência account_settings_audio_video_conference_factory_uri_title "URI du serveur de réunions" - URI do servidor de vídeo conferência + URI da fábrica de vídeoconferência @@ -490,22 +490,22 @@ add_participant_selected_count 0 "%n participant(s) sélectionné(s)" - - - + + %1 participante selecionado + %1 participantes selecionados remove_participant_accessible_name Remove participant %1 - + Remover participante %1 list_filter_no_result_found "Aucun contact" - Não encontrado… + Nenhum resultado encontrado… @@ -585,19 +585,19 @@ settings_advanced_media_encryption_title Media encryption - Encriptação de mídia + Criptografia de mídia settings_advanced_media_encryption_mandatory_title Media encryption mandatory - Encriptação de mídia obrigatória + Criptografia de mídia obrigatória settings_advanced_create_endtoend_encrypted_meetings_title Create end to end encrypted meetings and group calls - Criar conferências e grupos de chamadas encriptadas fim-a-fim + Criar conferências e grupos de chamadas com criptografia de ponta-a-ponta @@ -646,13 +646,13 @@ info_popup_configuration_failed_message Remote provisioning failed : %1 - Provisionamento remoto falhou : %1 + O provisionamento remoto falhou: %1 configuration_error_detail not reachable - não acessível + Não alcançável @@ -696,13 +696,13 @@ command_line_option_log_to_stdout - Gerar log de debug para a saída padrão durante a execução + Registrar na saída padrão informações de depuração durante a execução command_line_option_print_app_logs_only "Print only logs from the application" - Imprimir somente logs da aplicação + Imprimir somente registros da aplicação @@ -750,7 +750,7 @@ cancel "Annuler - Cancel + Cancelar @@ -804,7 +804,7 @@ call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" - Buffer de jitter? %1 ms + Buffer de jitter: %1 ms @@ -840,7 +840,7 @@ media_encryption_post_quantum "ZRTP - Post quantique" - ZRTP Pós-quântico + ZRTP pós-quântico @@ -849,37 +849,37 @@ settings_call_forward_activate_title "Forward calls" - + Encaminhar chamadas settings_call_forward_activate_subtitle "Enable call forwarding to voicemail or sip address" - + Encaminhar chamadas para um correio de voz, um número ou endereço SIP settings_call_forward_destination_choose Forward to destination - + Encaminhar chamadas para: settings_call_forward_to_voicemail - + Correio de voz settings_call_forward_to_sipaddress - + Número / Endereço SIP settings_call_forward_sipaddress_title SIP Address - + Número / Endereço SIP: @@ -889,32 +889,32 @@ settings_call_forward_address_cannot_be_empty - + Um número ou endereço SIP é exigido settings_call_forward_address_timeout - + Não foi possível definir encaminhamento de chamada, tempo de requisição esgotado settings_call_forward_address_progress_disabling - + Desabilitando encaminhamento de chamada settings_call_forward_address_progress_enabling - + Habilitando encaminhamento de chamada para: settings_call_forward_activation_success - + Encaminhamento de chamada ativado para: settings_call_forward_deactivation_success - + Encaminhamento de chamada desativado @@ -950,7 +950,7 @@ call_name_accessible_button Call %1 - + Ligar para %1 @@ -1003,12 +1003,12 @@ remote_group_call Remote group call - + Chamada em grupo remota local_group_call - + Chamada em grupo local @@ -1019,7 +1019,7 @@ info_popup_merge_calls_failed_message Failed to merge calls ! - + Falha ao unir chamadas! @@ -1052,25 +1052,25 @@ transfer_call_name_accessible_name Transfer call %1 - + Transferir chamada %1 resume_call_name_accessible_name Resume %1 call - + Retomar chamada %1 pause_call_name_accessible_name Pause %1 call - + Pausar chamada %1 end_call_name_accessible_name End %1 call - + Encerrar chamada %1 @@ -1079,19 +1079,19 @@ call_error_no_response_toast "No response" - + Sem resposta call_error_forbidden_resource_toast "403 : Forbidden resource" - + 403: recurso proibido call_error_not_answered_toast "Request timeout" - + Tempo de requisição esgotado @@ -1127,19 +1127,19 @@ call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" - + O usuário não pode ser perturbado call_error_temporarily_unavailable_toast "Temporarily unavailable" - + Indisponível temporariamente call_error_server_timeout_toast "Server tiemout" - Tempo esgotado do Servidor + Tempo esgotado do servidor @@ -1147,12 +1147,12 @@ call_forward_to_address_info - + Encaminhar chamadas para: call_forward_to_address_info_voicemail - + Correio de voz @@ -1170,55 +1170,55 @@ history_dialog_delete_all_call_logs_title Supprimer l'historique d'appels ? - Excluir histórico de chamadas? + Apagar histórico de chamadas? history_dialog_delete_all_call_logs_message "L'ensemble de votre historique d'appels sera définitivement supprimé." - O histórico de chamadas será excluído permanentemente. + O histórico de chamadas será apagado permanentemente. history_dialog_delete_call_logs_title Supprimer l'historique d'appels ? - Excluir histórico de chamadas? + Apagar histórico de chamadas? history_dialog_delete_call_logs_message "L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé." - O histórico de chamadas deste usuário será excluído permanentemente. + O histórico de chamadas deste usuário será apagado permanentemente. call_history_call_list_title "Appels" - Ligações + Chamadas call_history_options_accessible_name - + Opções de histórico de chamada menu_delete_history "Supprimer l'historique" - Excluir histórico + Apagar histórico call_history_list_options_accessible_name Call history options - + Opções de histórico de chamada create_new_call_accessible_name Create new call - + Criar nova chamada @@ -1242,7 +1242,7 @@ return_to_call_history_accessible_name Return to call history - + Retornar para o histórico de chamada @@ -1354,13 +1354,13 @@ settings_calls_echo_canceller_title "Annulateur d'écho" - Cancelador de ruído + Cancelador de eco settings_calls_echo_canceller_subtitle "Évite que de l'écho soit entendu par votre correspondant" - Impede que o ruído seja ouvido pelo seu correspondente + Impede que o eco seja ouvido pelo seu correspondente @@ -1390,7 +1390,7 @@ settings_calls_command_line_title Command line - + Linha de comando para executar ao receber chamada @@ -1401,19 +1401,19 @@ settings_calls_change_ringtone_title "Change ringtone" - + Alterar toque de chamada settings_calls_current_ringtone_filename Current ringtone : - + Toque de chamada atual: choose_ringtone_file_accessible_name Choose ringtone file - + Selecionar arquivo de toque de chamada @@ -1422,7 +1422,7 @@ close_name_panel_accessible_button Close %1 panel - + Fechar painel %1 @@ -1642,7 +1642,7 @@ conference_action_screen_sharing "Partage de votre écran" - Compartilhe sua tela + Compartilhar sua tela @@ -1660,7 +1660,7 @@ information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier - O link da reunião foi copiado para a área de transferência + O endereço da reunião foi copiado para a área de transferência @@ -1674,9 +1674,9 @@ group_call_participant_selected - - - + + %1 participante selecionado + %1 participantes selecionados @@ -1693,13 +1693,13 @@ open_statistic_panel_accessible_name - + Abrir painel de estatísticas conference_user_is_sharing_screen "You are sharing your screen" - + Você está compartilhando sua tela @@ -1711,13 +1711,13 @@ stop_recording_accessible_name Stop recording - Parar de gravar + Parar gravação stop_screen_sharing_accessible_name "Stop screen sharing" - + Parar compartilhamento de tela @@ -1751,7 +1751,7 @@ call_action_transfer_call "Transférer l'appel" - Chamada de transferência + Transferir chamada @@ -1806,7 +1806,7 @@ call_open_chat_hint Open chat… - + Abrir conversa… @@ -1992,7 +1992,7 @@ information_popup_voice_message_error_message Failed to create voice message : error in recorder - + Falha ao criar mensagem de voz: erro no gravador @@ -2001,13 +2001,13 @@ info_toast_deleted_title Deleted - + Apagado info_toast_deleted_message_history Message history has been deleted - + O histórico de mensagem foi apagado @@ -2016,13 +2016,13 @@ chat_view_send_area_placeholder_text Say something… : placeholder text for sending message text area - + Diga algo… cannot_record_while_in_call_tooltip Cannot record a message while a call is ongoing - + Não é possível gravar uma mensagem enquanto uma chamada está em progresso @@ -2031,12 +2031,12 @@ chat_message_is_writing_info %1 is writing… - + %1 está escrevendo… chat_message_draft_sending_text - + Rascunho: %1 @@ -2047,7 +2047,7 @@ chat_room_mute - + Silenciar @@ -2059,37 +2059,37 @@ chat_room_mark_as_read "Mark as read" - + Marcar como lida chat_room_leave "leave" - + Sair chat_list_leave_chat_popup_title leave the conversation ? - + Sair da conversa? chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + Você não será mais capaz de enviar ou receber mensagens nesta conversa. Você deseja continuar? chat_list_delete_chat_popup_title Delete the conversation ? - + Apagar a conversa? chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? - + Esta conversa e todas as suas mensagens serão apagadas. Você deseja continuar? @@ -2098,13 +2098,13 @@ chat_message_copy_selection "Copy selection" - + Copiar seleção chat_message_copy "Copy" - + Copiar @@ -2116,37 +2116,37 @@ chat_message_copied_to_clipboard_toast "to clipboard" - + na área de transferência chat_message_remote_replied %1 replied - + %1 respondeu chat_message_forwarded Forwarded - + Encaminhado chat_message_remote_replied_to %1 replied to %2 - + %1 respondeu %2 chat_message_user_replied_to You replied to %1 - + Você respondeu %1 chat_message_user_replied You replied - + Você respondeu @@ -2158,13 +2158,13 @@ chat_message_reply Reply - + Responder chat_message_forward Forward - + Encaminhar @@ -2185,7 +2185,12 @@ popup_open_file_error_does_not_exist_message Could not open file : unknown path %1 - + Não foi possível abrir o arquivo: caminho %1 desconhecido + + + + info_popup_error_titile + Erro @@ -2199,60 +2204,48 @@ Error adding file ---------- Error - + Erro ao adicionar arquivo popup_error_path_does_not_exist_message File was not found: %1 - + O arquivo não foi encontrado: %1 popup_error_nb_files_not_found_message - + %1 arquivos não foram encontrados popup_error_max_files_count_message You can send 12 files maximum at a time. %n files were ignored - - - + + Você pode enviar um máximo de 12 arquivos por vez. %n arquivo foi ignorado + Você pode enviar um máximo de 12 arquivos por vez. %n arquivos foram ignorados popup_error_file_too_big_message %n files were ignored cause they exceed the maximum size. (Size limit=%2) - + %n arquivos foram ignorados porque eles excedem o tamanho máximo. (Limite de tamanho=%2) popup_error_unsupported_files_message - + Não foi possível obter o tipo MIME suportado para %1 arquivos. popup_error_unsupported_file_message Unable to get supported mime type for: `%1`. - + Não foi possível obter o tipo MIME suportado para: `%1`. ChatMessageContentModel - - - popup_error_title - Error - Erro - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore @@ -2260,19 +2253,19 @@ Error all_reactions_label "Reactions": all reactions for one message label - + Reações info_toast_deleted_title Deleted - + Apagado info_toast_deleted_message The message has been deleted - + Esta mensagem foi apagada @@ -2280,35 +2273,35 @@ Error ics_bubble_meeting_from - + de ics_bubble_meeting_to - + para ics_bubble_meeting_modified Meeting has been updated - + A conferência foi atualizada ics_bubble_meeting_cancelled Meeting has been canceled - + A conferência foi cancelada - + de %1 para %2 (UTC%3) ics_bubble_description_title Description - + Descrição @@ -2320,9 +2313,9 @@ Error ics_bubble_participants %n participant(s) - - - + + %1 participante + %1 participantes @@ -2333,57 +2326,59 @@ Error popup_info_find_message_title Find message - + Encontrar mensagem info_popup_no_result_message No result found - + Nenhum resultado encontrado info_popup_first_result_message First result reached - + Primeiro resultado alcançado info_popup_last_result_message Last result reached - + Último resultado alcançado chat_message_list_encrypted_header_title End to end encrypted chat - + Conversa criptografada de ponta-a-ponta unencrypted_conversation_warning This conversation is not encrypted ! - + Esta conversa não está criptografada! chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. - + Mensagens nesta conversa possuem criptografia E2EE. +Apenas seu correspondente pode descriptografá-las. chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! - + As mensagens não possuem criptografia de ponta-a-ponta, + certifique-se de não compartilhar informações sensíveis! chat_message_is_writing_info %1 is writing… - + %1 está escrevendo… @@ -2392,25 +2387,25 @@ Error chat_start_title "Nouvelle conversation" - + Nova conversa chat_empty_title "Aucune conversation" - + Nenhuma conversa chat_dialog_delete_chat_title Supprimer la conversation ? - + Apagar conversa? chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." - + Esta conversa e todas as suas mensagens serão apagadas. @@ -2422,13 +2417,13 @@ Error menu_mark_all_as_read "mark all as read" - + Marcar todas como lidas chat_search_in_history "Rechercher une conversation" - + Procurar por uma conversa @@ -2440,19 +2435,19 @@ Error chat_list_empty_history "Aucune conversation dans votre historique" - + Nenhuma conversa no histórico chat_action_start_new_chat "New chat" - + Nova conversa chat_start_group_chat_title "Nouveau groupe" - + Novo grupo @@ -2471,13 +2466,13 @@ Error information_popup_chat_creation_failed_message "La création a échoué" - + Falha ao criar group_chat_error_must_have_name "Un nom doit être donné au groupe - + Um nome deve ser definido para o grupo @@ -2489,7 +2484,7 @@ Error chat_creation_in_progress Creation de la conversation en cours … - + Criando conversa… @@ -2498,19 +2493,19 @@ Error settings_chat_attached_files_title Attached files - + Arquivos anexados settings_chat_attached_files_auto_download_title "Automatic download" - + Download automático settings_chat_attached_files_auto_download_subtitle "Automatically download transferred or received files in conversations" - + Automaticamente baixar arquivos transferidos ou recebidos nas conversas @@ -2579,7 +2574,7 @@ Error account_settings_name_accessible_name Account settings of %1 - + Configurações de conta de %1 @@ -2607,13 +2602,13 @@ Error close_accessible_name Close %n - + Fechar %1 contact_editor_mandatory_first_name_or_company_not_filled "Veuillez saisir un prénom ou un nom d'entreprise" - + Por favor, insira um primeiro nome ou o nome de uma empresa @@ -2637,7 +2632,7 @@ Error edit_contact_image_accessible_name "Edit contact image" - + Editar imagem de contato @@ -2649,7 +2644,7 @@ Error delete_contact_image_accessible_name "Delete contact image" - + Apagar imagem de contato @@ -2663,7 +2658,7 @@ Error contact_editor_last_name "Nom" - Ultimo nome + Último nome @@ -2689,37 +2684,37 @@ Error sip_address_number_accessible_name "SIP address number %1" - + Número de endereço SIP %1 remove_sip_address_accessible_name "Remove SIP address %1" - + Apagar endereço SIP %1 new_sip_address_accessible_name "New SIP address" - + Novo endereço SIP phone_number_number_accessible_name "Phone number number %1" - + Número de número de telefone %1 remove_phone_number_accessible_name Remove phone number %1 - + Apagar número de telefone %1 new_phone_number_accessible_name "New phone number" - + Novo número de telefone @@ -2790,13 +2785,13 @@ Error shrink_accessible_name Shrink %1 - + Contrair %1 expand_accessible_name Expand %1 - + Expandir %1 @@ -2839,25 +2834,25 @@ Error contact_dialog_delete_title Supprimer %1 ?" - Excluir %1? + Apagar %1? contact_dialog_delete_message Ce contact sera définitivement supprimé. - Este contato será excluído permanentemente. + Este contato será apagado permanentemente. contact_deleted_toast "Contact supprimé" - Contato excluído + Contato apagado contact_deleted_message "%1 a été supprimé" - %1 foi excluído + %1 foi apagado @@ -2880,13 +2875,13 @@ Error cancel - Cancel + Cancelar dialog_call "Appeler" - Chamada + Chamar @@ -2934,25 +2929,25 @@ Error expand_accessible_name Expand %1 - + Expandir %1 shrink_accessible_name Shrink %1 - + Contrair %1 create_contact_accessible_name Create new contact - + Criar novo contato more_info_accessible_name More info %1 - + Mais informações %1 @@ -2967,13 +2962,13 @@ Error contact_call_action "Appel" - Chamada + Chamar contact_message_action "Message" - Mensagem + Enviar mensagem @@ -2991,13 +2986,13 @@ Error call_adress_accessible_name Call address %1 - + Endereço de chamada %1 contact_details_company_name "Société :" - Companhia: + Empresa: @@ -3016,7 +3011,7 @@ Error contact_details_medias_subtitle "Afficher les medias partagés" - Mostrar mídia compartilhada + Mostrar mídias compartilhadas @@ -3052,7 +3047,7 @@ Error verify_device_accessible_name Verify %1 device - + Verificar dispositivo %1 @@ -3154,13 +3149,13 @@ Error edit_ldap_server_accessible_name "Editer le serveur LDAP %1" - + Editar o servidor LDAP %1 use_ldap_server_accessible_name "Utiliser le serveur LDAP %1" - + Usar o servidor LDAP %1 @@ -3178,13 +3173,13 @@ Error edit_cardav_server_accessible_name "Editer le carnet d'adresses CardDAV %1" - + Editar a lista de endereço CardDAV %1 use_cardav_server_accessible_name "Utiliser le d'adresses CardDAV %1" - + Usar a lista de endereço CardDAV %1 @@ -3224,7 +3219,7 @@ Error one_one_infos_mute - + Silenciar @@ -3235,19 +3230,19 @@ Error group_infos_media_docs Medias & documents - + Mídias e documentos group_infos_shared_medias Shared medias - + Mídias compartilhadas group_infos_shared_docs Shared documents - + Documentos compartilhados @@ -3269,25 +3264,25 @@ Error group_infos_meeting Schedule a meeting - + Agendar uma conferência group_infos_leave_room Leave chat room - + Sair da sala de conversa group_infos_leave_room_toast_title Leave Chat Room ? - + Sair da sala de conversa? group_infos_leave_room_toast_message All the messages will be removed from the chat room. Do you want to continue ? - + Todas as mensagens serão removidas da sala de conversa. Você deseja continuar? @@ -3299,13 +3294,13 @@ Error group_infos_delete_history_toast_title Delete history ? - + Apagar o histórico? group_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? - + Todas as mensagens serão removidas da sala de conversa. Você deseja continuar? @@ -3317,7 +3312,7 @@ Error one_one_infos_create_contact Create contact - + Criar contato @@ -3338,13 +3333,13 @@ Error one_one_infos_delete_history_toast_title Delete history ? - + Apagar histórico? one_one_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? - + Todas as mensagens serão removidas da sala de conversa. Você deseja continuar? @@ -3362,7 +3357,7 @@ Error settings_debug_clean_logs_message "Les traces de débogage seront supprimées. Souhaitez-vous continuer ?" - Os rastreamentos de depuração serão excluídos. Deseja continuar? + Os rastreamentos de depuração serão apagados. Deseja continuar? @@ -3411,7 +3406,7 @@ Error settings_debug_enable_full_logs_title "Activer les traces de débogage intégrales" - Habilitar logs completos + Habilitar registros completos @@ -3479,7 +3474,7 @@ Error dialog_cancel "Annuler" - Cancel + Cancelar @@ -3488,7 +3483,7 @@ Error call_stats_media_encryption_title "Encryption :" - Encriptação: + Criptografia: @@ -3548,22 +3543,22 @@ Error one_minute - + 1 minuto one_hour - + 1 hora one_day - + 1 dia one_week - + 1 semana @@ -3573,7 +3568,7 @@ Error custom - + Customizado: @@ -3581,32 +3576,32 @@ Error conference_created_event - + Você entrou no grupo conference_created_terminated - + Você saiu do grupo conference_participant_added_event - + %1 entrou conference_participant_removed_event - + %1 não está mais na conversa conference_participant_set_admin_event - + %1 agora é um administrador conference_participant_unset_admin_event - + %1 não é mais um administrador @@ -3627,7 +3622,7 @@ Error conference_subject_changed_event - + Novo assunto: %1 @@ -3695,32 +3690,32 @@ Error group_infos_give_admin_rights - + Dar direitos de administrador group_infos_remove_admin_rights - + Remover direitos de administrador group_infos_copy_sip_address - + Copiar endereço SIP group_infos_remove_participant - + Remover participante group_infos_remove_participants_toast_title - + Remover participante? group_infos_remove_participants_toast_message - + O participante será removido da sala de conversa. @@ -3729,7 +3724,7 @@ Error return_accessible_name Return - + Retornar @@ -3841,7 +3836,7 @@ Error delete_ldap_server_accessible_name Delete LDAP server - + Apagar servidor LDAP @@ -3919,13 +3914,13 @@ Error settings_contacts_ldap_sip_domain_title "Domaine SIP" - SIP domain + Domínio SIP settings_contacts_ldap_debug_title "Débogage" - Debug + Depuração @@ -3933,7 +3928,7 @@ Error cancel - Cancel + Cancelar @@ -3956,7 +3951,7 @@ Error mandatory_field_accessible_name "%1 mandatory" - + %1 exigido @@ -4036,7 +4031,7 @@ Error return_accessible_name Return - + Retornar @@ -4048,7 +4043,7 @@ Error assistant_no_account_yet "Pas encore de compte ?" - Ainda não há conta? + Ainda não possui uma conta? @@ -4083,7 +4078,7 @@ Error cancel - Cancel + Cancelar @@ -4123,7 +4118,7 @@ Error open_calls_page_accessible_name "Open calls page" - + Abrir páginas de chamada @@ -4135,7 +4130,7 @@ Error open_contacts_page_accessible_name "Open contacts page" - + Abrir página de contatos @@ -4147,7 +4142,7 @@ Error open_conversations_page_accessible_name "Open conversations page" - + Abrir página de conversas @@ -4159,7 +4154,7 @@ Error open_contact_page_accessible_name "Open meetings page" - + Abrir página de conferências @@ -4171,7 +4166,7 @@ Error searchbar_placeholder_text_chat_feature_enabled "ou envoyer un message …" - ou enviar mensagem … + ou envie uma mensagem… @@ -4201,13 +4196,13 @@ Error account_list_accessible_name "Account list" - + lista de contas application_options_accessible_name "Application options" - + Opções da aplicação @@ -4242,13 +4237,13 @@ Error help_quit_title "Quitter l'application" - Sair do app + Sair do aplicativo quit_app_question "Quitter %1 ?" - Sair %1? + Sair do %1? @@ -4341,7 +4336,7 @@ Error group_infos_manage_participants - + Participantes @@ -4422,25 +4417,25 @@ Error meeting_schedule_cancel_dialog_message "Souhaitez-vous annuler et supprimer cette réunion ?" - Gostaria de cancelar e excluir esta reunião? + Gostaria de cancelar e apagar esta reunião? meeting_schedule_delete_dialog_message Souhaitez-vous supprimer cette réunion ? - Gostaria de excluir esta reunião? + Gostaria de apagar esta reunião? meeting_schedule_cancel_and_delete_action "Annuler et supprimer" - Cancelar e excluir + Cancelar e apagar meeting_schedule_delete_only_action "Supprimer seulement" - Excluir apenas + Apenas apagar @@ -4572,15 +4567,15 @@ Error meeting_schedule_add_participants_apply - + Aplicar group_call_participant_selected "%n participant(s) sélectionné(s)" - - - + + %1 participante selecionado + %1 participantes selecionados @@ -4641,7 +4636,7 @@ Error message_details_status_title Message status - + Estado da mensagem @@ -4650,13 +4645,13 @@ Error message_details_reactions_title Reactions - + Reações click_to_delete_reaction_info Click to delete - + Clique para apagar @@ -4665,13 +4660,13 @@ Error no_shared_medias No media - + Sem mídia no_shared_documents No document - + Sem documento @@ -4690,7 +4685,7 @@ Error choose_something_accessible_name Choose %1 - + Escolher %1 @@ -4705,7 +4700,7 @@ Error device_volume_accessible_name %1 volume - + %1 volume @@ -4735,7 +4730,7 @@ Error settings_network_allow_ipv6 "Autoriser l'IPv6" - + Habilitar IPv6 @@ -4759,7 +4754,7 @@ Error chat_start_group_chat_title Nouveau groupe - + Novo grupo @@ -4789,36 +4784,36 @@ Error new_call_alert_accessible_name New call from %1 - + Nova chamada de %1 new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. - + Mensagem de voz recebida! new_file_message - + Arquivo recebido! new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. - + Convite de conferência recebido! new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. - + Novas mensagens recebidas! new_message_alert_accessible_name New message on chatroom %1 - + Nova mensagem na sala de conversa %1 @@ -4897,7 +4892,7 @@ Error oidc_authentication_no_token_found_error - + Nenhum token encontrado @@ -4957,13 +4952,13 @@ Error prefix_phone_number_accessible_name %1 prefix - + Prefixo %1 number_phone_number_accessible_name %1 number - + Número %1 @@ -4972,13 +4967,13 @@ Error close_popup_panel_accessible_name "Close %1 popup" - + Fechar popup %1 open_popup_panel_accessible_name "Open %1" popup - + Abrir popup %1 @@ -4986,12 +4981,12 @@ Error contact_presence_reset_status - + Redefinir estado contact_presence_button_set_custom_status - + Definir @@ -5006,7 +5001,7 @@ Error contact_presence_custom_status - + Estado customizado @@ -5014,7 +5009,7 @@ Error contact_presence_note_title - + Mensagem customizada @@ -5022,7 +5017,7 @@ Error contact_presence_button_set_custom_status_title - + Definir uma mensagem de estado customizada @@ -5057,61 +5052,61 @@ Error message_state_in_progress "delivery in progress" - + encaminhamento em progresso message_state_delivered sent - + enviado message_state_not_delivered error - + erro message_state_file_transfer_error cannot get file from server - + não foi possível obter arquivo do servidor message_state_file_transfer_done file transfer has been completed successfully - + transferência de arquivo completada com sucesso message_state_delivered_to_user received - + recebido message_state_displayed read - + lido message_state_file_transfer__in_progress file transfer in progress - + transferência de arquivo em progresso message_state_pending_delivery pending delivery - + encaminhamento pendente message_state_file_transfer_cancelling file transfer canceled - + transferência de arquivo cancelada @@ -5189,7 +5184,7 @@ Error return_accessible_name Return - + Voltar @@ -5231,7 +5226,7 @@ Error mandatory_field_accessible_name "%1 mandatory" - + %1 exigido @@ -5326,7 +5321,7 @@ Error return_accessible_name Return - + Voltar @@ -5383,7 +5378,7 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. mandatory_field_accessible_name "%1 mandatory" - + %1 exigido @@ -5445,13 +5440,13 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. login_proxy_server_url "Outbound SIP Proxy URI" - + URI do proxy SIP de saída login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." - + Se este campo for preenchido, o proxy de saída será ativado automaticamente. Mantenha vazio para desabilitá-lo. @@ -5465,7 +5460,7 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. login_id "Authentication ID (if different)" - + ID de autenticação (caso diferente) @@ -5519,7 +5514,7 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. clear_text_input_acccessibility_label "Clear text input" - + Limpar entrada de texto @@ -5587,37 +5582,37 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. chat_view_group_call_toast_message - + Iniciar uma chamada em grupo? unencrypted_conversation_warning This conversation is not encrypted ! - + Esta conversa não está criptografada! reply_to_label Reply to %1 - + Responder %1 shared_medias_title Shared medias - + Mídias compartilhadas shared_documents_title Shared documents - + Documentos compartilhados forward_to_title Forward to… - + Encaminhar para… @@ -5632,7 +5627,7 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. setting_tab_accessible_name %1 settings - + Configurações %1 @@ -5647,13 +5642,13 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. settings_calls_title "Appels" - Ligações + Chamadas settings_call_forward "Transfert d'appel" - + Encaminhamento de chamada @@ -5731,13 +5726,13 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. show_accessible_name Show %1 - + Exibir %1 hide_accessible_name Hide %1 - + Esconder %1 @@ -5767,7 +5762,7 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. voice_recording_duration "Voice recording (%1)" : %1 is the duration formated in mm:ss - + Gravação de voz (%1) @@ -5777,17 +5772,17 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. conference_invitation - + Convite de conferência conference_invitation_cancelled - + Cancelamento de conferência conference_invitation_updated - + Modificação de conferência @@ -5795,84 +5790,84 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. nSeconds - - - + + %1 segundo + %1 segundos nMinute - - - + + %1 minuto + %1 minutos chat_message_forward_error Cannot forward an invalid message - + Não é possível encaminhar uma mensagem inválida info_popup_forward_message_error Could not forward message : %1 - + Não foi possível encaminhar a mensagem: %1 info_popup_send_forward_message_error_message Failed to create forward message - + Falhar ao criar encaminhamento de mensagem chat_message_reply_error Cannot reply to invalid message - + Não é possível responder uma mensagem inválida info_popup_reply_message_error Could not send reply message : %1 - + Não foi possível enviar mensagem de resposta: %1 info_popup_send_reply_message_error_message Failed to create reply message - + Falha ao criar mensagem de resposta nHour - - - + + %1 hora + %1 horas nDay - - - + + %1 dia + %1 dias nWeek - - - + + %1 semana + %1 semanas contact_presence_status_available - + Disponível @@ -5892,7 +5887,7 @@ Para habilitá-las em um projeto comercial, por favor, entre em contato conosco. contact_presence_status_away - + Ocioso/Ausente @@ -5929,9 +5924,9 @@ Failed to create 1-1 conversation with %1 ! number_of_month "%n mois" - - - + + um mês + %1 meses @@ -5968,15 +5963,15 @@ Failed to create 1-1 conversation with %1 ! duration_tomorrow Tomorrow - + Amanhã duration_number_of_days %1 jour(s) - - - + + %n dia + %n dias @@ -5990,20 +5985,20 @@ Failed to create 1-1 conversation with %1 ! information_popup_chatroom_creation_error_message Failed to create 1-1 conversation with %1 ! - + Falha ao criar conversa única com %1! recorder_error Error with the recorder - + Erro com o gravador chat_error - + Erro na conversa @@ -6020,13 +6015,13 @@ Failed to create 1-1 conversation with %1 ! info_popup_send_voice_message_error_message Could not send voice message : %1 - + Não foi possível enviar mensagem de voz: %1 info_popup_send_voice_message_sending_error_message Failed to create message from record - + Falha ao criar mensagem a partir de gravação @@ -6048,7 +6043,7 @@ Failed to create 1-1 conversation with %1 ! cancel Cancel - Cancel + Cancelar @@ -7433,4 +7428,12 @@ Failed to create 1-1 conversation with %1 ! Ok + + CoreModel + + + info_popup_error_title + Erro + + diff --git a/Linphone/data/languages/ru.ts b/Linphone/data/languages/ru.ts index d81e467b7..adef95db8 100644 --- a/Linphone/data/languages/ru.ts +++ b/Linphone/data/languages/ru.ts @@ -2189,6 +2189,11 @@ Could not open file : unknown path %1 + + + info_popup_error_titile + Ошибка + ChatMessageContentList @@ -2244,18 +2249,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - Ошибка - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore @@ -7455,4 +7448,12 @@ Failed to create 1-1 conversation with %1 ! Ок + + CoreModel + + + info_popup_error_title + Ошибка + + diff --git a/Linphone/data/languages/sk.ts b/Linphone/data/languages/sk.ts index 4f959ace6..b00d4959b 100644 --- a/Linphone/data/languages/sk.ts +++ b/Linphone/data/languages/sk.ts @@ -2244,18 +2244,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore diff --git a/Linphone/data/languages/uk.ts b/Linphone/data/languages/uk.ts index 1496e05e0..057eed2a3 100644 --- a/Linphone/data/languages/uk.ts +++ b/Linphone/data/languages/uk.ts @@ -2189,6 +2189,11 @@ Could not open file : unknown path %1 + + + info_popup_error_titile + Помилка + ChatMessageContentList @@ -2244,18 +2249,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - Помилка - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore @@ -7455,4 +7448,12 @@ Failed to create 1-1 conversation with %1 ! Ок + + CoreModel + + + info_popup_error_title + Помилка + + diff --git a/Linphone/data/languages/zh_Hans.ts b/Linphone/data/languages/zh_Hans.ts index 2ed842b6b..f2b52559d 100644 --- a/Linphone/data/languages/zh_Hans.ts +++ b/Linphone/data/languages/zh_Hans.ts @@ -7,7 +7,7 @@ return_accessible_name Return - + 返回 @@ -19,7 +19,7 @@ save_settings_accessible_name Save %1 settings - + 保存%1设置 @@ -152,37 +152,37 @@ set_mwi_server_address_failed_error_message "Unable to set voicemail server address, failed creating address from %1" : %1 is address - + 无法设置语音信箱服务器地址,未能从%1创建地址 set_server_address_failed_error_message "Unable to set server address, failed creating address from %1" - + 无法设置服务器地址,未能从%1创建地址 set_outbound_proxy_uri_failed_error_message Unable to set outbound proxy uri, failed creating address from %1 - + 无法设置出站代理 URI,无法从 %1 创建地址 set_conference_factory_address_failed_error_message "Unable to set the conversation server address, failed creating address from %1" - + 无法设置会话服务器地址,未能从%1创建地址 set_audio_conference_factory_address_failed_error_message "Unable to set the meeting server address, failed creating address from %1" - + 无法设置会议服务器地址,未能从%1创建地址 set_voicemail_address_failed_error_message Unable to set voicemail address, failed creating address from %1 - + 无法设置语音信箱地址,无法从%1创建地址 @@ -302,7 +302,7 @@ device_last_updated_time_no_info "No information" - + 无信息 @@ -645,13 +645,13 @@ info_popup_configuration_failed_message Remote provisioning failed : %1 - + 远程配置失败:%1 configuration_error_detail not reachable - + 无法接通 @@ -725,6 +725,11 @@ mark_all_read_action + + + info_popup_new_version_download_label + + AuthenticationDialog @@ -2185,6 +2190,11 @@ Could not open file : unknown path %1 + + + info_popup_error_titile + 错误 + ChatMessageContentList @@ -2238,18 +2248,6 @@ Error ChatMessageContentModel - - - popup_error_title - Error - 错误 - - - - popup_download_error_message - This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it - - ChatMessageCore @@ -7411,4 +7409,12 @@ Failed to create 1-1 conversation with %1 ! OK + + CoreModel + + + info_popup_error_title + 错误 + + From afc03daa226f53fb6ed13cb8aa6b9daedfb25f83 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 7 Nov 2025 15:40:38 +0100 Subject: [PATCH 26/72] fix admin rights modification #LINQT-2114 --- Linphone/core/chat/ChatCore.cpp | 16 +++++++++------ Linphone/data/languages/de.ts | 20 +++++++++---------- Linphone/data/languages/en.ts | 20 +++++++++---------- Linphone/data/languages/fr.ts | 20 +++++++++---------- Linphone/view/Control/Button/Button.qml | 2 +- .../Layout/Chat/GroupChatInfoParticipants.qml | 12 +++++------ 6 files changed, 46 insertions(+), 44 deletions(-) diff --git a/Linphone/core/chat/ChatCore.cpp b/Linphone/core/chat/ChatCore.cpp index 30547bb63..8a8365940 100644 --- a/Linphone/core/chat/ChatCore.cpp +++ b/Linphone/core/chat/ChatCore.cpp @@ -362,12 +362,16 @@ void ChatCore::setSelf(QSharedPointer me) { auto participants = buildParticipants(chatRoom); mChatModelConnection->invokeToCore([this, participants]() { setParticipants(participants); }); }); - mChatModelConnection->makeConnectToModel( - &ChatModel::participantAdminStatusChanged, [this](const std::shared_ptr &chatRoom, - const std::shared_ptr &eventLog) { - auto participants = buildParticipants(chatRoom); - mChatModelConnection->invokeToCore([this, participants]() { setParticipants(participants); }); - }); + mChatModelConnection->makeConnectToModel(&ChatModel::participantAdminStatusChanged, + [this](const std::shared_ptr &chatRoom, + const std::shared_ptr &eventLog) { + auto participants = buildParticipants(chatRoom); + bool meAdmin = chatRoom->getMe()->isAdmin(); + mChatModelConnection->invokeToCore([this, participants, meAdmin]() { + setParticipants(participants); + setMeAdmin(meAdmin); + }); + }); mChatModelConnection->makeConnectToCore(&ChatCore::lRemoveParticipantAtIndex, [this](int index) { mChatModelConnection->invokeToModel([this, index]() { mChatModel->removeParticipantAtIndex(index); }); }); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 5177784de..6f0f67d73 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -3849,55 +3849,55 @@ Error GroupChatInfoParticipants - + group_infos_participant_is_admin Admin - + group_infos_manage_participants_title "Gérer des participants" Manage Participants - + menu_see_existing_contact "Show contact" Kontakt anzeigen - + menu_add_address_to_contacts "Add to contacts" Zu Kontakten hinzufügen - + group_infos_give_admin_rights Give admin rights - + group_infos_remove_admin_rights Remove admin rights - + group_infos_copy_sip_address Copy SIP Address - + group_infos_remove_participant Remove participant - + group_infos_remove_participants_toast_title Remove participant ? - + group_infos_remove_participants_toast_message Participant will be removed from chat room. diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index df289fb95..ccf93ae5d 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -3770,55 +3770,55 @@ Expiration : %1 GroupChatInfoParticipants - + group_infos_manage_participants_title "Gérer des participants" Manage participants - + group_infos_participant_is_admin Admin - + menu_see_existing_contact "Show contact" Show contact - + menu_add_address_to_contacts "Add to contacts" Add to contacts - + group_infos_give_admin_rights Give admin rights - + group_infos_remove_admin_rights Remove admin rights - + group_infos_copy_sip_address Copy SIP Address - + group_infos_remove_participant Remove participant - + group_infos_remove_participants_toast_title Remove participant ? - + group_infos_remove_participants_toast_message Participant will be removed from chat room. diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 4a8db8600..5bf22ecfa 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -3770,55 +3770,55 @@ Expiration : %1 GroupChatInfoParticipants - + group_infos_manage_participants_title "Gérer des participants" Gérer les participants - + group_infos_participant_is_admin Admin - + menu_see_existing_contact "Show contact" Voir le contact - + menu_add_address_to_contacts "Add to contacts" Ajouter aux contacts - + group_infos_give_admin_rights Donner les droits admins - + group_infos_remove_admin_rights Retirer les droits admins - + group_infos_copy_sip_address Copier l’adresse SIP - + group_infos_remove_participant Retirer le participant - + group_infos_remove_participants_toast_title Retirer le participant ? - + group_infos_remove_participants_toast_message La participant sere retiré de la conversation diff --git a/Linphone/view/Control/Button/Button.qml b/Linphone/view/Control/Button/Button.qml index 6552f67bc..a93c138b0 100644 --- a/Linphone/view/Control/Button/Button.qml +++ b/Linphone/view/Control/Button/Button.qml @@ -52,7 +52,7 @@ Control.Button { property real keyboardFocusedBorderWidth: Utils.getSizeWithScreenRatio(3) // Image properties property var contentImageColor: style?.image? style.image.normal : DefaultStyle.main2_600 - property var hoveredImageColor: style?.image? style.image.pressed : Qt.darker(contentImageColor, 1.05) + property var hoveredImageColor: style?.image? style.image.hovered : Qt.darker(contentImageColor, 1.05) property var checkedImageColor: style?.image? style.image.checked : Qt.darker(contentImageColor, 1.1) property var pressedImageColor: style?.image? style.image.pressed : Qt.darker(contentImageColor, 1.1) icon.source: style?.iconSource || "" diff --git a/Linphone/view/Page/Layout/Chat/GroupChatInfoParticipants.qml b/Linphone/view/Page/Layout/Chat/GroupChatInfoParticipants.qml index 8eb72692e..ad50a401e 100644 --- a/Linphone/view/Page/Layout/Chat/GroupChatInfoParticipants.qml +++ b/Linphone/view/Page/Layout/Chat/GroupChatInfoParticipants.qml @@ -18,9 +18,7 @@ ColumnLayout { property var chatCore signal manageParticipantsRequested() - function isGroupEditable() { - return chatCore && chatCore.meAdmin && !chatCore.isReadOnly - } + property bool isGroupEditable: chatCore && chatCore.meAdmin && !chatCore.isReadOnly RowLayout { Text { @@ -139,7 +137,7 @@ ColumnLayout { } } IconLabelButton { - visible: mainItem.isGroupEditable() + visible: mainItem.isGroupEditable Layout.fillWidth: true text: participantCore.isAdmin ? qsTr("group_infos_remove_admin_rights") : qsTr("group_infos_give_admin_rights") icon.source: AppIcons.profile @@ -163,7 +161,7 @@ ColumnLayout { } } Rectangle { - visible: mainItem.isGroupEditable() + visible: mainItem.isGroupEditable color: DefaultStyle.main2_200 Layout.fillWidth: true height: Utils.getSizeWithScreenRatio(1) @@ -171,7 +169,7 @@ ColumnLayout { Layout.leftMargin: Utils.getSizeWithScreenRatio(17) } IconLabelButton { - visible: mainItem.isGroupEditable() + visible: mainItem.isGroupEditable Layout.fillWidth: true text: qsTr("group_infos_remove_participant") icon.source: AppIcons.trashCan @@ -199,7 +197,7 @@ ColumnLayout { MediumButton { id: manageParticipants - visible: mainItem.isGroupEditable() + visible: mainItem.isGroupEditable height: Utils.getSizeWithScreenRatio(40) icon.source: AppIcons.plusCircle icon.width: Utils.getSizeWithScreenRatio(16) From a7c8e8db90f8163e7f111e9bc23228995dd2732d Mon Sep 17 00:00:00 2001 From: gaelle Date: Fri, 7 Nov 2025 16:41:31 +0100 Subject: [PATCH 27/72] do not minimize app on Windows auto start (fix #BC-97) --- Linphone/core/App.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index 29533ab37..d2d177288 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -267,9 +267,7 @@ void App::setAutoStart(bool enabled) { void App::setAutoStart(bool enabled) { QSettings settings(AutoStartSettingsFilePath, QSettings::NativeFormat); - QString parameters; - if (!mSettings->getExitOnClose()) parameters = " --minimized"; - if (enabled) settings.setValue(EXECUTABLE_NAME, QDir::toNativeSeparators(applicationFilePath()) + parameters); + if (enabled) settings.setValue(EXECUTABLE_NAME, QDir::toNativeSeparators(applicationFilePath())); else settings.remove(EXECUTABLE_NAME); mAutoStart = enabled; @@ -1525,4 +1523,4 @@ QAction *App::createMarkAsReadAction(QQuickWindow *window) { mCoreModelConnection->invokeToModel([this]() { CoreModel::getInstance()->unreadNotificationsChanged(); }); }); return markAllReadAction; -} \ No newline at end of file +} From f2e49f21b01b4e1999bd67e8a110c2d1ed6b5639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20J=C3=B6rgensen?= Date: Tue, 21 Oct 2025 15:22:40 +0200 Subject: [PATCH 28/72] Correct typo weight #LINQT-2078 --- .../view/Control/Button/CalendarComboBox.qml | 2 +- Linphone/view/Control/Button/ComboBox.qml | 2 +- Linphone/view/Control/Tool/Helper/utils.js | 2 +- .../view/Page/Form/Meeting/MeetingForm.qml | 6 +-- Linphone/view/Page/Main/Call/CallPage.qml | 12 +++--- Linphone/view/Page/Main/Chat/ChatPage.qml | 12 +++--- .../view/Page/Main/Contact/ContactPage.qml | 12 +++--- .../view/Page/Main/Meeting/MeetingPage.qml | 11 +++--- Linphone/view/Style/Typography.qml | 38 +++++++++---------- 9 files changed, 49 insertions(+), 48 deletions(-) diff --git a/Linphone/view/Control/Button/CalendarComboBox.qml b/Linphone/view/Control/Button/CalendarComboBox.qml index f671f8cfe..c4eba3189 100644 --- a/Linphone/view/Control/Button/CalendarComboBox.qml +++ b/Linphone/view/Control/Button/CalendarComboBox.qml @@ -21,7 +21,7 @@ ComboBox { verticalAlignment: Text.AlignVCenter font { pixelSize: Utils.getSizeWithScreenRatio(14) - weight: Math.min(Utils.getSizeWithScreenRatio(700), 1000) + weight: Font.Bold } } popup: Control.Popup { diff --git a/Linphone/view/Control/Button/ComboBox.qml b/Linphone/view/Control/Button/ComboBox.qml index 1dd66ca8c..5175ffc3d 100644 --- a/Linphone/view/Control/Button/ComboBox.qml +++ b/Linphone/view/Control/Button/ComboBox.qml @@ -223,7 +223,7 @@ Control.ComboBox { font { family: DefaultStyle.defaultFont pixelSize: Utils.getSizeWithScreenRatio(15) - weight: Math.min(Utils.getSizeWithScreenRatio(400), 1000) + weight: Font.Normal } } } diff --git a/Linphone/view/Control/Tool/Helper/utils.js b/Linphone/view/Control/Tool/Helper/utils.js index 79011e8a7..683e34ef5 100644 --- a/Linphone/view/Control/Tool/Helper/utils.js +++ b/Linphone/view/Control/Tool/Helper/utils.js @@ -876,4 +876,4 @@ function getSizeWithScreenRatio(size){ : size > 0 ? Math.max(Math.round(size * Linphone.DefaultStyle.dp), 1) : Math.min(Math.round(size * Linphone.DefaultStyle.dp), -1); -} \ No newline at end of file +} diff --git a/Linphone/view/Page/Form/Meeting/MeetingForm.qml b/Linphone/view/Page/Form/Meeting/MeetingForm.qml index b50d307f5..18cdad514 100644 --- a/Linphone/view/Page/Form/Meeting/MeetingForm.qml +++ b/Linphone/view/Page/Form/Meeting/MeetingForm.qml @@ -108,7 +108,7 @@ FocusScope { id: startDate background.visible: mainItem.isCreation indicator.visible: mainItem.isCreation - contentText.font.weight: Math.min(Utils.getSizeWithScreenRatio(isCreation ? 700 : 400), 1000) + contentText.font.weight: isCreation ? Font.Bold : Font.Normal Layout.fillWidth: true Layout.preferredHeight: Utils.getSizeWithScreenRatio(30) KeyNavigation.up: confTitle @@ -134,7 +134,7 @@ FocusScope { Layout.preferredWidth: Utils.getSizeWithScreenRatio(94) Layout.preferredHeight: Utils.getSizeWithScreenRatio(30) background.visible: mainItem.isCreation - contentText.font.weight: Math.min(Utils.getSizeWithScreenRatio(isCreation ? 700 : 400), 1000) + contentText.font.weight: isCreation ? Font.Bold : Font.Normal KeyNavigation.up: startDate KeyNavigation.down: timeZoneCbox KeyNavigation.left: endHour @@ -154,7 +154,7 @@ FocusScope { Layout.preferredWidth: Utils.getSizeWithScreenRatio(94) Layout.preferredHeight: Utils.getSizeWithScreenRatio(30) background.visible: mainItem.isCreation - contentText.font.weight: Math.min(Utils.getSizeWithScreenRatio(isCreation ? 700 : 400), 1000) + contentText.font.weight: isCreation ? Font.Bold : Font.Normal onSelectedDateTimeChanged: mainItem.conferenceInfoGui.core.endDateTime = selectedDateTime KeyNavigation.up: startDate KeyNavigation.down: timeZoneCbox diff --git a/Linphone/view/Page/Main/Call/CallPage.qml b/Linphone/view/Page/Main/Call/CallPage.qml index 77b2fff86..33b5a63ed 100644 --- a/Linphone/view/Page/Main/Call/CallPage.qml +++ b/Linphone/view/Page/Main/Call/CallPage.qml @@ -138,9 +138,13 @@ AbstractMainPage { ColumnLayout { anchors.fill: parent spacing: 0 - RowLayout { + FlexboxLayout { id: titleCallLayout - spacing: Utils.getSizeWithScreenRatio(16) + direction: FlexboxLayout.Row + gap: Utils.getSizeWithScreenRatio(16) + alignItems: FlexboxLayout.AlignCenter + Layout.rightMargin: Utils.getSizeWithScreenRatio(39) + Layout.fillHeight: false Text { Layout.fillWidth: true //: "Appels" @@ -149,9 +153,6 @@ AbstractMainPage { font.pixelSize: Typography.h2.pixelSize font.weight: Typography.h2.weight } - Item { - Layout.fillWidth: true - } PopupButton { id: removeHistory icon.width: Utils.getSizeWithScreenRatio(24) @@ -190,7 +191,6 @@ AbstractMainPage { icon.source: AppIcons.newCall Layout.preferredWidth: Utils.getSizeWithScreenRatio(34) Layout.preferredHeight: Utils.getSizeWithScreenRatio(34) - Layout.rightMargin: Utils.getSizeWithScreenRatio(39) icon.width: Utils.getSizeWithScreenRatio(28) icon.height: Utils.getSizeWithScreenRatio(28) KeyNavigation.left: removeHistory diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index 26fbd82df..b2c3e8820 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -96,8 +96,12 @@ AbstractMainPage { ColumnLayout { anchors.fill: parent spacing: 0 - RowLayout { - spacing: Utils.getSizeWithScreenRatio(16) + FlexboxLayout { + direction: FlexboxLayout.Row + gap: Utils.getSizeWithScreenRatio(16) + alignItems: FlexboxLayout.AlignCenter + Layout.rightMargin: Utils.getSizeWithScreenRatio(39) + Layout.fillHeight: false Text { Layout.fillWidth: true //: "Conversations" @@ -106,9 +110,6 @@ AbstractMainPage { font.pixelSize: Typography.h2.pixelSize font.weight: Typography.h2.weight } - Item { - Layout.fillWidth: true - } PopupButton { id: chatListMenu width: Utils.getSizeWithScreenRatio(24) @@ -137,7 +138,6 @@ AbstractMainPage { icon.source: AppIcons.plusCircle Layout.preferredWidth: Utils.getSizeWithScreenRatio(28) Layout.preferredHeight: Utils.getSizeWithScreenRatio(28) - Layout.rightMargin: Utils.getSizeWithScreenRatio(39) icon.width: Utils.getSizeWithScreenRatio(28) icon.height: Utils.getSizeWithScreenRatio(28) KeyNavigation.down: searchBar diff --git a/Linphone/view/Page/Main/Contact/ContactPage.qml b/Linphone/view/Page/Main/Contact/ContactPage.qml index 989a514d6..47008aadc 100644 --- a/Linphone/view/Page/Main/Contact/ContactPage.qml +++ b/Linphone/view/Page/Main/Contact/ContactPage.qml @@ -213,25 +213,25 @@ FriendGui{ Layout.fillHeight: true Layout.fillWidth: true - RowLayout { + FlexboxLayout { id: title - spacing: 0 + direction: FlexboxLayout.Row + gap: Utils.getSizeWithScreenRatio(16) + alignItems: FlexboxLayout.AlignCenter anchors.top: leftPanel.top anchors.right: leftPanel.right anchors.left: leftPanel.left anchors.leftMargin: leftPanel.leftMargin anchors.rightMargin: leftPanel.rightMargin - + Layout.fillHeight: false Text { + Layout.fillWidth: true //: "Contacts" text: qsTr("bottom_navigation_contacts_label") color: DefaultStyle.main2_700 font.pixelSize: Typography.h2.pixelSize font.weight: Typography.h2.weight } - Item { - Layout.fillWidth: true - } Button { id: createContactButton visible: !rightPanelStackView.currentItem diff --git a/Linphone/view/Page/Main/Meeting/MeetingPage.qml b/Linphone/view/Page/Main/Meeting/MeetingPage.qml index 5b93e49c7..e845d46cc 100644 --- a/Linphone/view/Page/Main/Meeting/MeetingPage.qml +++ b/Linphone/view/Page/Main/Meeting/MeetingPage.qml @@ -177,11 +177,13 @@ AbstractMainPage { ColumnLayout { anchors.fill: parent spacing: 0 - RowLayout { - Layout.rightMargin: Utils.getSizeWithScreenRatio(38) + FlexboxLayout { + direction: FlexboxLayout.Row + gap: Utils.getSizeWithScreenRatio(16) + alignItems: FlexboxLayout.AlignCenter + Layout.rightMargin: Utils.getSizeWithScreenRatio(39) Layout.alignment: Qt.AlignTop - Layout.fillWidth: true - spacing: 0 + Layout.fillHeight: false Text { Layout.fillWidth: true //: Réunions @@ -190,7 +192,6 @@ AbstractMainPage { font.pixelSize: Typography.h2.pixelSize font.weight: Typography.h2.weight } - Item{Layout.fillWidth: true} Button { id: newConfButton style: ButtonStyle.noBackground diff --git a/Linphone/view/Style/Typography.qml b/Linphone/view/Style/Typography.qml index c132cba6d..0e0a8bf5f 100644 --- a/Linphone/view/Style/Typography.qml +++ b/Linphone/view/Style/Typography.qml @@ -8,132 +8,132 @@ QtObject { property font h4: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(16), - weight: Math.min(Utils.getSizeWithScreenRatio(800), 1000) + weight: Font.ExtraBold }) // Title/H3M - Bloc title property font h3m: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(16), - weight: Math.min(Utils.getSizeWithScreenRatio(700), 1000) + weight: Font.Bold }) // Title/H3 - Bloc title property font h3: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(22), - weight: Math.min(Utils.getSizeWithScreenRatio(800), 1000) + weight: Font.ExtraBold }) // Title/H2M - Large bloc title property font h2m: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(20), - weight: Math.min(Utils.getSizeWithScreenRatio(800), 1000) + weight: Font.ExtraBold }) // Title/H2 - Large bloc title property font h2: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(29), - weight: Math.min(Utils.getSizeWithScreenRatio(800), 1000) + weight: Font.ExtraBold }) // Title/H1 - Large bloc title property font h1: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(36), - weight: Math.min(Utils.getSizeWithScreenRatio(800), 1000) + weight: Font.ExtraBold }) // Text/P4 - Xsmall paragraph text property font p4: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(10), - weight: Math.min(Utils.getSizeWithScreenRatio(300), 1000) + weight: Font.Light }) // Text/P3 - Reduced paragraph text property font p3: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(12), - weight: Math.min(Utils.getSizeWithScreenRatio(300), 1000) + weight: Font.Light }) // Text/P2 - Bold, reduced paragraph text property font p2: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(13), - weight: Math.min(Utils.getSizeWithScreenRatio(700), 1000) + weight: Font.Bold }) // Text/P2l - Large Bold, reduced paragraph text property font p2l: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(14), - weight: Math.min(Utils.getSizeWithScreenRatio(700), 1000) + weight: Font.Bold }) // Text/P1 - Paragraph text property font p1: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(14), - weight: Math.min(Utils.getSizeWithScreenRatio(400), 1000) + weight: Font.Normal }) // Text/P1s - Paragraph text property font p1s: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(13), - weight: Math.min(Utils.getSizeWithScreenRatio(400), 1000) + weight: Font.Normal }) // Text/P1 - Paragraph text property font p1b: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(15), - weight: Math.min(Utils.getSizeWithScreenRatio(400), 1000) + weight: Font.Normal }) // Button/B1 - Big Button property font b1: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(18), - weight: Math.min(Utils.getSizeWithScreenRatio(600), 1000) + weight: Font.DemiBold }) // Button/B2 - Medium Button property font b2: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(15), - weight: Math.min(Utils.getSizeWithScreenRatio(600), 1000) + weight: Font.DemiBold }) // Button/B3 - Small Button property font b3: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(13), - weight: Math.min(Utils.getSizeWithScreenRatio(600), 1000) + weight: Font.DemiBold }) // FileView/F1 - File View name text property font f1: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(11), - weight: Math.min(Utils.getSizeWithScreenRatio(700), 1000) + weight: Font.Bold }) // FileView/F1light - File View size text property font f1l: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(10), - weight: Math.min(Utils.getSizeWithScreenRatio(500), 1000) + weight: Font.Medium }) // FileView/F1light - Duration text property font d1: Qt.font( { family: DefaultStyle.defaultFont, pixelSize: Utils.getSizeWithScreenRatio(8), - weight: Math.min(Utils.getSizeWithScreenRatio(600), 1000) + weight: Font.DemiBold }) } From ca73193f6c15b49ea23082edb6080b022f5b88ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20J=C3=B6rgensen?= Date: Fri, 7 Nov 2025 16:28:37 +0100 Subject: [PATCH 29/72] Fix accessibility screen reader: * Error on login page not sayed #LINQT-2095 * Incorect translation of close button in french #LINQT-2094 --- Linphone/data/languages/ca.ts | 2 +- Linphone/data/languages/cs.ts | 2 +- Linphone/data/languages/de.ts | 2 +- Linphone/data/languages/en.ts | 2 +- Linphone/data/languages/es.ts | 2 +- Linphone/data/languages/eu.ts | 2 +- Linphone/data/languages/fi.ts | 2 +- Linphone/data/languages/fr.ts | 4 ++-- Linphone/data/languages/hu.ts | 2 +- Linphone/data/languages/mk.ts | 2 +- Linphone/data/languages/nl.ts | 2 +- Linphone/data/languages/pt.ts | 2 +- Linphone/data/languages/pt_BR.ts | 2 +- Linphone/data/languages/ru.ts | 2 +- Linphone/data/languages/sk.ts | 2 +- Linphone/data/languages/uk.ts | 2 +- Linphone/data/languages/zh_Hans.ts | 2 +- Linphone/model/account/AccountManager.cpp | 2 ++ Linphone/view/Page/Form/Contact/ContactEdition.qml | 2 +- 19 files changed, 21 insertions(+), 19 deletions(-) diff --git a/Linphone/data/languages/ca.ts b/Linphone/data/languages/ca.ts index 3f628b379..4efecfa43 100644 --- a/Linphone/data/languages/ca.ts +++ b/Linphone/data/languages/ca.ts @@ -2599,7 +2599,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/cs.ts b/Linphone/data/languages/cs.ts index be8063b26..0452638e6 100644 --- a/Linphone/data/languages/cs.ts +++ b/Linphone/data/languages/cs.ts @@ -2610,7 +2610,7 @@ proto nezveřejňujte žádné citlivé informace! close_accessible_name - Close %n + Close %1 Zavřít %1 diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 6f0f67d73..84eaddf33 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2740,7 +2740,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index ccf93ae5d..f3cf2fa28 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2684,7 +2684,7 @@ Only your correspondent can decrypt them. close_accessible_name - Close %n + Close %1 Close %1 diff --git a/Linphone/data/languages/es.ts b/Linphone/data/languages/es.ts index 6c283131d..ddd4efe3b 100644 --- a/Linphone/data/languages/es.ts +++ b/Linphone/data/languages/es.ts @@ -2594,7 +2594,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/eu.ts b/Linphone/data/languages/eu.ts index f9f6fed2c..ece0dfa03 100644 --- a/Linphone/data/languages/eu.ts +++ b/Linphone/data/languages/eu.ts @@ -2599,7 +2599,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/fi.ts b/Linphone/data/languages/fi.ts index ab539d18b..68d861f00 100644 --- a/Linphone/data/languages/fi.ts +++ b/Linphone/data/languages/fi.ts @@ -2594,7 +2594,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 5bf22ecfa..f8dacfd43 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2684,8 +2684,8 @@ en bout. Seul votre correspondant peut les déchiffrer. close_accessible_name - Close %n - Fermer %n + Close %1 + Fermer %1 diff --git a/Linphone/data/languages/hu.ts b/Linphone/data/languages/hu.ts index 52635c2ff..9233ba8af 100644 --- a/Linphone/data/languages/hu.ts +++ b/Linphone/data/languages/hu.ts @@ -2594,7 +2594,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/mk.ts b/Linphone/data/languages/mk.ts index 90b2b22e0..19c3d4189 100644 --- a/Linphone/data/languages/mk.ts +++ b/Linphone/data/languages/mk.ts @@ -2594,7 +2594,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/nl.ts b/Linphone/data/languages/nl.ts index 8fe09f544..38c5c9c28 100644 --- a/Linphone/data/languages/nl.ts +++ b/Linphone/data/languages/nl.ts @@ -2594,7 +2594,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/pt.ts b/Linphone/data/languages/pt.ts index 8bbbbd0f2..65de2cf2a 100644 --- a/Linphone/data/languages/pt.ts +++ b/Linphone/data/languages/pt.ts @@ -2599,7 +2599,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/pt_BR.ts b/Linphone/data/languages/pt_BR.ts index 6177ea99a..aebcd953f 100644 --- a/Linphone/data/languages/pt_BR.ts +++ b/Linphone/data/languages/pt_BR.ts @@ -2601,7 +2601,7 @@ Apenas seu correspondente pode descriptografá-las. close_accessible_name - Close %n + Close %1 Fechar %1 diff --git a/Linphone/data/languages/ru.ts b/Linphone/data/languages/ru.ts index adef95db8..245f37034 100644 --- a/Linphone/data/languages/ru.ts +++ b/Linphone/data/languages/ru.ts @@ -2603,7 +2603,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/sk.ts b/Linphone/data/languages/sk.ts index b00d4959b..558c38d6d 100644 --- a/Linphone/data/languages/sk.ts +++ b/Linphone/data/languages/sk.ts @@ -2598,7 +2598,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/uk.ts b/Linphone/data/languages/uk.ts index 057eed2a3..dc540ce80 100644 --- a/Linphone/data/languages/uk.ts +++ b/Linphone/data/languages/uk.ts @@ -2603,7 +2603,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/data/languages/zh_Hans.ts b/Linphone/data/languages/zh_Hans.ts index f2b52559d..7e4f33e58 100644 --- a/Linphone/data/languages/zh_Hans.ts +++ b/Linphone/data/languages/zh_Hans.ts @@ -2600,7 +2600,7 @@ Error close_accessible_name - Close %n + Close %1 diff --git a/Linphone/model/account/AccountManager.cpp b/Linphone/model/account/AccountManager.cpp index 10532bbd3..4d8911e3f 100644 --- a/Linphone/model/account/AccountManager.cpp +++ b/Linphone/model/account/AccountManager.cpp @@ -19,6 +19,7 @@ */ #include "AccountManager.hpp" +#include "tool/accessibility/AccessibilityHelper.hpp" #include #include @@ -153,6 +154,7 @@ bool AccountManager::login(QString username, errorMessage = tr("assistant_account_login_forbidden_error"); //: "Error during connection, please verify your parameters" else errorMessage = tr("assistant_account_login_error"); + AccessibilityHelper::announceMessage(errorMessage); mAccountModel->removeAccount(); } else if (state == linphone::RegistrationState::Ok) { core->setDefaultAccount(account); diff --git a/Linphone/view/Page/Form/Contact/ContactEdition.qml b/Linphone/view/Page/Form/Contact/ContactEdition.qml index 994c69ce6..902058eed 100644 --- a/Linphone/view/Page/Form/Contact/ContactEdition.qml +++ b/Linphone/view/Page/Form/Contact/ContactEdition.qml @@ -58,7 +58,7 @@ MainRightPanel { icon.source: AppIcons.closeX icon.width: Utils.getSizeWithScreenRatio(24) icon.height: Utils.getSizeWithScreenRatio(24) - //: Close %n + //: Close %1 Accessible.name: qsTr("close_accessible_name").arg(mainItem.title) onClicked: { if (contact.core.isSaved) mainItem.closeEdition('') From 58eb93d13bb3d15459ca4a3d00e648ae0fb175b0 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Wed, 12 Nov 2025 14:41:24 +0100 Subject: [PATCH 30/72] UI fixes : display real error message when carddav sync fails hide mark as read button if no unread message #LINQT-2144 fix screencast panel hidden while user is sharing screen #LINQT-2136 disable selection for cancelled meetings #LINQT-2121 --- .../address-books/carddav/CarddavCore.cpp | 6 +- .../address-books/carddav/CarddavCore.hpp | 2 +- .../core/conference/ConferenceInfoList.cpp | 8 +- .../core/conference/ConferenceInfoList.hpp | 2 +- .../core/conference/ConferenceInfoProxy.cpp | 2 +- .../core/conference/ConferenceInfoProxy.hpp | 2 +- Linphone/data/languages/de.ts | 248 ++++++++--------- Linphone/data/languages/en.ts | 250 +++++++++--------- Linphone/data/languages/fr.ts | 250 +++++++++--------- .../address-books/carddav/CarddavModel.cpp | 5 +- .../address-books/carddav/CarddavModel.hpp | 9 +- .../view/Control/Button/IconLabelButton.qml | 5 +- .../Control/Display/Chat/ChatListView.qml | 1 + .../Form/Settings/ScreencastSettings.qml | 7 +- .../Layout/Settings/CarddavSettingsLayout.qml | 6 +- .../view/Page/Window/Call/CallsWindow.qml | 3 +- 16 files changed, 412 insertions(+), 394 deletions(-) diff --git a/Linphone/core/address-books/carddav/CarddavCore.cpp b/Linphone/core/address-books/carddav/CarddavCore.cpp index 32b06ece9..01ff930c9 100644 --- a/Linphone/core/address-books/carddav/CarddavCore.cpp +++ b/Linphone/core/address-books/carddav/CarddavCore.cpp @@ -73,10 +73,10 @@ void CarddavCore::remove() { void CarddavCore::setSelf(QSharedPointer me) { mCarddavModelConnection = SafeConnection::create(me, mCarddavModel); - mCarddavModelConnection->makeConnectToModel(&CarddavModel::saved, [this](bool success) { - mCarddavModelConnection->invokeToCore([this, success]() { + mCarddavModelConnection->makeConnectToModel(&CarddavModel::saved, [this](bool success, QString message) { + mCarddavModelConnection->invokeToCore([this, success, message]() { if (success) emit App::getInstance()->getSettings()->cardDAVAddressBookSynchronized(); - emit saved(success); + emit saved(success, message); }); }); } diff --git a/Linphone/core/address-books/carddav/CarddavCore.hpp b/Linphone/core/address-books/carddav/CarddavCore.hpp index 89b4a69cc..fe7cba1e9 100644 --- a/Linphone/core/address-books/carddav/CarddavCore.hpp +++ b/Linphone/core/address-books/carddav/CarddavCore.hpp @@ -50,7 +50,7 @@ public: DECLARE_CORE_MEMBER(bool, storeNewFriendsInIt, StoreNewFriendsInIt) signals: - void saved(bool success); + void saved(bool success, QString message); private: std::shared_ptr mCarddavModel; diff --git a/Linphone/core/conference/ConferenceInfoList.cpp b/Linphone/core/conference/ConferenceInfoList.cpp index 715e23837..65cf2daf9 100644 --- a/Linphone/core/conference/ConferenceInfoList.cpp +++ b/Linphone/core/conference/ConferenceInfoList.cpp @@ -235,13 +235,17 @@ int ConferenceInfoList::getCurrentDateIndex() { return it == confInfoList.end() ? -1 : std::distance(confInfoList.begin(), it); } -QSharedPointer ConferenceInfoList::getCurrentDateConfInfo() { +QSharedPointer ConferenceInfoList::getCurrentDateConfInfo(bool enableCancelledConference) { auto today = QDate::currentDate(); auto confInfoList = getSharedList(); QList>::iterator it; if (mHaveCurrentDate) { it = std::find_if(confInfoList.begin(), confInfoList.end(), - [today](const QSharedPointer &item) { + [today, enableCancelledConference](const QSharedPointer &item) { + if (!item) return false; + if (!enableCancelledConference && + item->getConferenceInfoState() == LinphoneEnums::ConferenceInfoState::Cancelled) + return false; return item && item->getDateTimeUtc().date() == today; }); } else it = std::find(confInfoList.begin(), confInfoList.end(), nullptr); diff --git a/Linphone/core/conference/ConferenceInfoList.hpp b/Linphone/core/conference/ConferenceInfoList.hpp index afc1ed176..da57e7818 100644 --- a/Linphone/core/conference/ConferenceInfoList.hpp +++ b/Linphone/core/conference/ConferenceInfoList.hpp @@ -48,7 +48,7 @@ public: void updateHaveCurrentDate(); int getCurrentDateIndex(); - QSharedPointer getCurrentDateConfInfo(); + QSharedPointer getCurrentDateConfInfo(bool enableCancelledConference = false); QSharedPointer build(const std::shared_ptr &conferenceInfo); void connectItem(QSharedPointer confInfoCore); diff --git a/Linphone/core/conference/ConferenceInfoProxy.cpp b/Linphone/core/conference/ConferenceInfoProxy.cpp index 82ed0247b..81816d985 100644 --- a/Linphone/core/conference/ConferenceInfoProxy.cpp +++ b/Linphone/core/conference/ConferenceInfoProxy.cpp @@ -105,7 +105,7 @@ void ConferenceInfoProxy::clear() { mList->clearData(); } -ConferenceInfoGui *ConferenceInfoProxy::getCurrentDateConfInfo() { +ConferenceInfoGui *ConferenceInfoProxy::getCurrentDateConfInfo(bool enableCancelledConference) { if (mList) { auto confInfo = mList->getCurrentDateConfInfo(); return confInfo ? new ConferenceInfoGui(confInfo) : nullptr; diff --git a/Linphone/core/conference/ConferenceInfoProxy.hpp b/Linphone/core/conference/ConferenceInfoProxy.hpp index 0055e9a2e..a84802deb 100644 --- a/Linphone/core/conference/ConferenceInfoProxy.hpp +++ b/Linphone/core/conference/ConferenceInfoProxy.hpp @@ -47,7 +47,7 @@ public: bool getAccountConnected() const; Q_INVOKABLE void clear(); - Q_INVOKABLE ConferenceInfoGui *getCurrentDateConfInfo(); + Q_INVOKABLE ConferenceInfoGui *getCurrentDateConfInfo(bool enableCancelledConference = false); Q_INVOKABLE int loadUntil(ConferenceInfoGui *confInfo); int loadUntil(QSharedPointer data); signals: diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 84eaddf33..772bdb588 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" Das Konto ist bereits verbunden - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Proxy-Adresse konnte nicht erstellt werden. Bitte überprüfen Sie den Domänenname. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Folgende Adresse konnte nicht konfiguriert werden: `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Kontoeinstellungen konnten nicht konfiguriert werden. - + assistant_account_login_forbidden_error "Username and password do not match" Benutzername und Passwort stimmen nicht überein - + assistant_account_login_error "Error during connection, please verify your parameters" Fehler bei der Verbindung - + assistant_account_add_error "Unable to add account." Konto konnte nicht hinzugefügt werden. @@ -634,141 +634,141 @@ App - + remote_provisioning_dialog Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? Möchten Sie die Remote-Konfiguration von dieser Adresse herunterladen und anwenden? - - - + + + info_popup_error_title Error Fehler - - + + info_popup_configuration_failed_message Remote provisioning failed : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. - + info_popup_new_version_download_label - + info_popup_new_version_available_title New version available ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 - + info_popup_version_up_to_date_title - + info_popup_version_up_to_date_message Your version is up to date - + configuration_error_detail not reachable - + application_description "A free and open source SIP video-phone." Ein kostenloses Open-Source SIP Video-Telefon. - + command_line_arg_order "Send an order to the application towards a command line" Kommandozeilen-Befehl an die Anwendung schicken - + command_line_option_show_help Zeige Hilfe - + command_line_option_show_app_version App-Version anzeigen - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, Pfad oder Datei - + command_line_option_minimized - + command_line_option_log_to_stdout Debug-Informationen auf der Standardausgabe ausgeben - + command_line_option_print_app_logs_only "Print only logs from the application" Nur Anwendungs-Logs ausgeben - + hide_action "Cacher" "Afficher" Ausblenden - + show_action Zeigen - + quit_action "Quitter" Beenden - + check_for_update Check for update - + mark_all_read_action @@ -1227,7 +1227,7 @@ Das Anrufprotokoll mit diesem Benutzer wird dauerhaft gelöscht. - + call_history_call_list_title "Appels" Anrufe @@ -1238,14 +1238,14 @@ - + menu_delete_history "Supprimer l'historique" Verlauf löschen - + call_history_list_options_accessible_name Call history options @@ -1672,7 +1672,7 @@ - + call_action_show_dialer "Pavé numérique" Wähltastatur @@ -1697,7 +1697,7 @@ - + call_action_go_to_settings "Paramètres" Einstellungen @@ -1709,34 +1709,34 @@ Bildschirm teilen - + conference_share_link_title Partager le lien de la réunion Besprechungs-Link teilen - + copied Copié Kopiert - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Der Besprechungs-Link wurde in die Zwischenablage kopiert - - - + + + conference_participants_list_title "Participants (%1)" Teilnehmer (%1) - - + + group_call_participant_selected 1 ausgewählter Teilnehmer @@ -1744,7 +1744,7 @@ - + meeting_schedule_add_participants_title Teilnehmer hinzufügen @@ -1790,148 +1790,148 @@ Statistiken - + call_action_end_call "Terminer l'appel" Anruf beenden - - + + call_action_resume_call "Reprendre l'appel" Anruf fortsetzen - + call_action_pause_call "Mettre l'appel en pause" Anruf pausieren - + call_action_transfer_call "Transférer l'appel" Anruf weiterleiten - + call_action_start_new_call_hint "Initier un nouvel appel" Neuen Anruf starten - + call_display_call_list_hint "Afficher la liste d'appels" Anrufliste anzeigen - + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Video deaktivieren - + call_activate_video_hint Video aktivieren - - + + call_activate_microphone "Activer le micro" Mikrofon aktivieren - + call_deactivate_microphone "Désactiver le micro" Mikrofon stummschalten - + call_share_screen_hint Partager l'écran… Bildschirm teilen… - + call_open_chat_hint Open chat… - + call_rise_hand_hint "Lever la main" Hand heben - + call_send_reaction_hint "Envoyer une réaction" Reaktion senden - + call_manage_participants_hint "Gérer les participants" Teilnehmer verwalten - + call_more_options_hint "Plus d'options…" Weitere Optionen… - + call_action_change_conference_layout "Modifier la disposition" Layout ändern - + call_action_full_screen "Mode Plein écran" Vollbildmodus - + call_action_stop_recording "Terminer l'enregistrement" Aufnahme beenden - + call_action_record "Enregistrer l'appel" Anruf aufnehmen - + call_activate_speaker_hint "Activer le son" Lautsprecher aktivieren - + call_deactivate_speaker_hint "Désactiver le son" Lautsprecher stummschalten @@ -1981,7 +1981,7 @@ settings_contacts_carddav_popup_synchronization_error_message - "Erreur de synchronisation!" + "Erreur de synchronisation : %1" Synchronisierungsfehler! @@ -2103,7 +2103,7 @@ - + chat_room_delete "Delete" Löschen @@ -2120,37 +2120,37 @@ - + chat_room_mark_as_read "Mark as read" - + chat_room_leave "leave" - + chat_list_leave_chat_popup_title leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? @@ -2517,13 +2517,13 @@ Error - + chat_list_title "Conversations" Konversationen - + menu_mark_all_as_read "mark all as read" @@ -3041,7 +3041,7 @@ Error Ok - + bottom_navigation_contacts_label "Contacts" Kontakte @@ -4645,122 +4645,122 @@ Error Zurück - + meetings_list_title Réunions Besprechungen - + meetings_search_hint "Rechercher une réunion" Besprechung suchen - + list_filter_no_result_found "Aucun résultat…" Kein Ergebnis… - + meetings_empty_list "Aucune réunion" Keine Besprechungen - - + + meeting_schedule_title "Nouvelle réunion" Neue Besprechung - + create Erstellen - - - - - - + + + + + + information_popup_error_title Fehler - - + + meeting_schedule_mandatory_field_not_filled_toast Veuillez saisir un titre et sélectionner au moins un participant Bitte Titel bestimmen und mindestens einen Teilnehmer auswählen - - + + meeting_schedule_duration_error_toast "La fin de la conférence doit être plus récente que son début" Das Ende der Besprechung muss nach dem Beginn liegen - - + + meeting_schedule_creation_in_progress "Création de la réunion en cours …" Besprechung wird erstellt… - + meeting_info_created_toast "Réunion planifiée avec succès" Besprechung erfolgreich erstellt - + meeting_failed_to_schedule_toast "Échec de création de la réunion !" Besprechung konnte nicht erstellt werden! - + save Speichern - - + + saved "Enregistré" Gespeichert - + meeting_info_updated_toast "Réunion mise à jour" Besprechung geändert - + meeting_schedule_edit_in_progress "Modification de la réunion en cours…" Bersprechung wird geändert… - + meeting_failed_to_edit_toast "Échec de la modification de la réunion !" Besprechung konnte nicht geändert werden! - + meeting_schedule_add_participants_title "Ajouter des participants" Teilnehmer hinzufügen - + meeting_schedule_add_participants_apply Apply @@ -4769,7 +4769,7 @@ Error Hinzufügen - + group_call_participant_selected "%n participant(s) sélectionné(s)" @@ -4778,31 +4778,31 @@ Error - + meeting_info_delete "Supprimer la réunion" Besprechung löschen - + meeting_address_copied_to_clipboard_toast "Adresse de la réunion copiée" Besprechungs-URI kopiert - + meeting_schedule_timezone_title "Fuseau horaire" Zeitzone - + meeting_info_organizer_label "Organisateur" Organisator - + meeting_info_join_title "Rejoindre la réunion" Besprechung beitreten @@ -5688,37 +5688,37 @@ Pour les activer dans un projet commercial, merci de nous contacter. ScreencastSettings - + screencast_settings_choose_window_text "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" Bitte wählen Sie den Bildschirm oder das Fenster aus, das Sie mit anderen Teilnehmern teilen möchten. - + screencast_settings_all_screen_label "Ecran entier" Vollbild - + screencast_settings_one_window_label "Fenêtre" Fenster - + screencast_settings_screen "Ecran %1" Bildschirm %1 - + stop "Stop Stopp - + share "Partager" Teilen diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index f3cf2fa28..ffe5edeed 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" The account is already connected - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Unable to create proxy address. Please check the domain name. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Unable to configure address: `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Unable to configure account settings. - + assistant_account_login_forbidden_error "Username and password do not match" Username and password do not match - + assistant_account_login_error "Error during connection, please verify your parameters" Error during connection - + assistant_account_add_error "Unable to add account." Unable to add account. @@ -629,141 +629,141 @@ App - + remote_provisioning_dialog Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? Do you want to download and apply remote provisioning from this address ? - - - + + + info_popup_error_title Error Error - - + + info_popup_configuration_failed_message Remote provisioning failed : %1 Remote provisioning failed : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. An error occured while trying to check update. Please try again later or contact support team. - + info_popup_new_version_download_label Download it ! - + info_popup_new_version_available_title New version available ! New version available ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 A new version of Linphone (%1) is available at %1 - + info_popup_version_up_to_date_title Up to date - + info_popup_version_up_to_date_message Your version is up to date Up to date Your version is up to date - + configuration_error_detail not reachable not reachable - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Show app version - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimize - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Hide - + show_action Show - + quit_action "Quitter" Quit - + check_for_update Check for update Check for update - + mark_all_read_action Marquer tout comme lu @@ -1232,7 +1232,7 @@ Call history with this user will be permanently deleted. - + call_history_call_list_title "Appels" Calls @@ -1243,14 +1243,14 @@ Call history options - + menu_delete_history "Supprimer l'historique" Delete history - + call_history_list_options_accessible_name Call history options Call history options @@ -1649,7 +1649,7 @@ - + call_action_show_dialer "Pavé numérique" Dialer @@ -1674,7 +1674,7 @@ - + call_action_go_to_settings "Paramètres" Settings @@ -1686,34 +1686,34 @@ Share your screen - + conference_share_link_title Partager le lien de la réunion Share meeting link - + copied Copié Copied - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Meeting link has been copied to the clipboard - - - + + + conference_participants_list_title "Participants (%1)" Participants (%1) - - + + group_call_participant_selected %1 selected participant @@ -1721,7 +1721,7 @@ - + meeting_schedule_add_participants_title Add participants @@ -1767,148 +1767,148 @@ Statistics - + call_action_end_call "Terminer l'appel" End call - - + + call_action_resume_call "Reprendre l'appel" Resume call - + call_action_pause_call "Mettre l'appel en pause" Pause call - + call_action_transfer_call "Transférer l'appel" Transfer call - + call_action_start_new_call_hint "Initier un nouvel appel" Start new call - + call_display_call_list_hint "Afficher la liste d'appels" View call list - + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Turn off video - + call_activate_video_hint Enable video - - + + call_activate_microphone "Activer le micro" Activate microphone - + call_deactivate_microphone "Désactiver le micro" Mute microphone - + call_share_screen_hint Partager l'écran… Share screen… - + call_open_chat_hint Open chat… Open conversation… - + call_rise_hand_hint "Lever la main" Rise hand - + call_send_reaction_hint "Envoyer une réaction" Send reaction - + call_manage_participants_hint "Gérer les participants" Manage participants - + call_more_options_hint "Plus d'options…" More options… - + call_action_change_conference_layout "Modifier la disposition" Change layout - + call_action_full_screen "Mode Plein écran" Full screen mode - + call_action_stop_recording "Terminer l'enregistrement" End recording - + call_action_record "Enregistrer l'appel" Record call - + call_activate_speaker_hint "Activer le son" Activate speaker - + call_deactivate_speaker_hint "Désactiver le son" Mute speaker @@ -1958,8 +1958,8 @@ settings_contacts_carddav_popup_synchronization_error_message - "Erreur de synchronisation!" - Synchronization error ! + "Erreur de synchronisation : %1" + Synchronization error : %1 @@ -2080,7 +2080,7 @@ Draft : %1 - + chat_room_delete "Delete" Delete @@ -2097,37 +2097,37 @@ Unmute - + chat_room_mark_as_read "Mark as read" Mark as read - + chat_room_leave "leave" Leave - + chat_list_leave_chat_popup_title leave the conversation ? Leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? This conversation and all its messages will be deleted. Do You want to continue ? @@ -2491,13 +2491,13 @@ Only your correspondent can decrypt them. This conversation and all its messages will be deleted. - + chat_list_title "Conversations" Conversations - + menu_mark_all_as_read "mark all as read" Mark all as read @@ -2985,7 +2985,7 @@ Only your correspondent can decrypt them. Ok - + bottom_navigation_contacts_label "Contacts" Contacts @@ -4561,127 +4561,127 @@ Expiration : %1 Back - + meetings_list_title Réunions Meetings - + meetings_search_hint "Rechercher une réunion" Find meeting - + list_filter_no_result_found "Aucun résultat…" No result… - + meetings_empty_list "Aucune réunion" No meeting - - + + meeting_schedule_title "Nouvelle réunion" New meeting - + create Create - - - - - - + + + + + + information_popup_error_title Error - - + + meeting_schedule_mandatory_field_not_filled_toast Veuillez saisir un titre et sélectionner au moins un participant Please fill the title and select at least one participant - - + + meeting_schedule_duration_error_toast "La fin de la conférence doit être plus récente que son début" The end of the conference must be more recent than its beginning - - + + meeting_schedule_creation_in_progress "Création de la réunion en cours …" Creation in progress… - + meeting_info_created_toast "Réunion planifiée avec succès" Meeting successfully created - + meeting_failed_to_schedule_toast "Échec de création de la réunion !" Failed to create meeting! - + save Save - - + + saved "Enregistré" Saved - + meeting_info_updated_toast "Réunion mise à jour" Meeting updated - + meeting_schedule_edit_in_progress "Modification de la réunion en cours…" Meeting update in progress… - + meeting_failed_to_edit_toast "Échec de la modification de la réunion !" Failed to update meeting ! - + meeting_schedule_add_participants_title "Ajouter des participants" Add participants - + meeting_schedule_add_participants_apply Apply - + group_call_participant_selected "%n participant(s) sélectionné(s)" @@ -4690,31 +4690,31 @@ Expiration : %1 - + meeting_info_delete "Supprimer la réunion" Delete meeting - + meeting_address_copied_to_clipboard_toast "Adresse de la réunion copiée" Meeting URI copied - + meeting_schedule_timezone_title "Fuseau horaire" Timezone - + meeting_info_organizer_label "Organisateur" Organizer - + meeting_info_join_title "Rejoindre la réunion" Join meeting @@ -5583,37 +5583,37 @@ To enable them in a commercial project, please contact us. ScreencastSettings - + screencast_settings_choose_window_text "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" Please choose the screen or window you would like to share with other participants. - + screencast_settings_all_screen_label "Ecran entier" Full screen - + screencast_settings_one_window_label "Fenêtre" Window - + screencast_settings_screen "Ecran %1" Screen %1 - + stop "Stop Stop - + share "Partager" Share diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index f8dacfd43..7a70cbfdc 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" Le compte est déjà connecté - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Impossible de créer l'adresse proxy. Merci de vérifier le nom de domaine. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Impossible de configurer l'adresse : `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Impossible de configurer les paramètres du compte. - + assistant_account_login_forbidden_error "Username and password do not match" Le couple identifiant mot de passe ne correspond pas - + assistant_account_login_error "Error during connection, please verify your parameters" Erreur durant la connexion, veuillez vérifier vos paramètres - + assistant_account_add_error "Unable to add account." Impossible d'ajouter le compte. @@ -629,141 +629,141 @@ App - + remote_provisioning_dialog Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? Voulez-vous télécharger et appliquer la configuration depuis cette adresse ? - - - + + + info_popup_error_title Error Erreur - - + + info_popup_configuration_failed_message Remote provisioning failed : %1 La configuration distante a échoué : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. Une erreur est survenue lors de la recherche de mise à jour. Merci de réessayer plus tard ou de contacter l'équipe de support. - + info_popup_new_version_download_label Téléchargez-là ! - + info_popup_new_version_available_title New version available ! Nouvelle version disponible ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 Une nouvelle version de Linphone (%1) est disponible. %2 - + info_popup_version_up_to_date_title À jour - + info_popup_version_up_to_date_message Your version is up to date Votre version est à jour - + configuration_error_detail not reachable indisponible - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Afficher la version de l'application - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimiser - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Cacher - + show_action Afficher - + quit_action "Quitter" Quitter - + check_for_update Check for update Rechercher une mise à jour - + mark_all_read_action Marquer tout comme lu @@ -1222,7 +1222,7 @@ L'ensemble de votre historique d'appels avec ce correspondant sera définitivement supprimé. - + call_history_call_list_title "Appels" Appels @@ -1233,14 +1233,14 @@ Options de l' - + menu_delete_history "Supprimer l'historique" Supprimer l'historique - + call_history_list_options_accessible_name Call history options Options de la liste de l'historique d'appel @@ -1649,7 +1649,7 @@ - + call_action_show_dialer "Pavé numérique" Pavé numérique @@ -1674,7 +1674,7 @@ - + call_action_go_to_settings "Paramètres" Paramètres @@ -1686,34 +1686,34 @@ Partage de votre écran - + conference_share_link_title Partager le lien de la réunion Partager le lien de la réunion - + copied Copié Copié - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Le lien de la réunion a été copié dans le presse-papier - - - + + + conference_participants_list_title "Participants (%1)" Participants (%1) - - + + group_call_participant_selected %1 participant sélectionné @@ -1721,7 +1721,7 @@ - + meeting_schedule_add_participants_title Ajouter des participants @@ -1767,148 +1767,148 @@ Statistiques - + call_action_end_call "Terminer l'appel" Terminer l'appel - - + + call_action_resume_call "Reprendre l'appel" Reprendre l'appel - + call_action_pause_call "Mettre l'appel en pause" Mettre l'appel en pause - + call_action_transfer_call "Transférer l'appel" Transférer l'appel - + call_action_start_new_call_hint "Initier un nouvel appel" Initier un nouvel appel - + call_display_call_list_hint "Afficher la liste d'appels" Afficher la liste d'appels - + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Désactiver la vidéo - + call_activate_video_hint Activer la vidéo - - + + call_activate_microphone "Activer le micro" Activer le micro - + call_deactivate_microphone "Désactiver le micro" Désactiver le micro - + call_share_screen_hint Partager l'écran… Partager l'écran… - + call_open_chat_hint Open chat… Ouvrir le chat… - + call_rise_hand_hint "Lever la main" Lever la main - + call_send_reaction_hint "Envoyer une réaction" Envoyer une réaction - + call_manage_participants_hint "Gérer les participants" Gérer les participants - + call_more_options_hint "Plus d'options…" Plus d'options… - + call_action_change_conference_layout "Modifier la disposition" Modifier la disposition - + call_action_full_screen "Mode Plein écran" Mode Plein écran - + call_action_stop_recording "Terminer l'enregistrement" Terminer l'enregistrement - + call_action_record "Enregistrer l'appel" Enregistrer l'appel - + call_activate_speaker_hint "Activer le son" Activer le son - + call_deactivate_speaker_hint "Désactiver le son" Désactiver le son @@ -1958,8 +1958,8 @@ settings_contacts_carddav_popup_synchronization_error_message - "Erreur de synchronisation!" - Erreur de synchronisation! + "Erreur de synchronisation : %1" + Erreur de synchronisation : %1 @@ -2080,7 +2080,7 @@ Brouillon : %1 - + chat_room_delete "Delete" Supprimer @@ -2097,37 +2097,37 @@ Enlever la sourdine - + chat_room_mark_as_read "Mark as read" Marquer comme lu - + chat_room_leave "leave" Quitter la conversation - + chat_list_leave_chat_popup_title leave the conversation ? Quitter la conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ? - + chat_list_delete_chat_popup_title Delete the conversation ? Supprimer la conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ? @@ -2491,13 +2491,13 @@ en bout. Seul votre correspondant peut les déchiffrer. La conversation et tous ses messages seront supprimés. - + chat_list_title "Conversations" Conversations - + menu_mark_all_as_read "mark all as read" Tout marquer comme lu @@ -2985,7 +2985,7 @@ en bout. Seul votre correspondant peut les déchiffrer. Ok - + bottom_navigation_contacts_label "Contacts" Contacts @@ -4561,127 +4561,127 @@ Expiration : %1 Retour - + meetings_list_title Réunions Réunions - + meetings_search_hint "Rechercher une réunion" Rechercher une réunion - + list_filter_no_result_found "Aucun résultat…" Aucun résultat… - + meetings_empty_list "Aucune réunion" Aucune réunion - - + + meeting_schedule_title "Nouvelle réunion" Nouvelle réunion - + create Créer - - - - - - + + + + + + information_popup_error_title Erreur - - + + meeting_schedule_mandatory_field_not_filled_toast Veuillez saisir un titre et sélectionner au moins un participant Veuillez saisir un titre et sélectionner au moins un participant - - + + meeting_schedule_duration_error_toast "La fin de la conférence doit être plus récente que son début" La fin de la conférence doit être plus récente que son début - - + + meeting_schedule_creation_in_progress "Création de la réunion en cours …" Création de la réunion en cours… - + meeting_info_created_toast "Réunion planifiée avec succès" Réunion planifiée avec succès - + meeting_failed_to_schedule_toast "Échec de création de la réunion !" Échec de création de la réunion ! - + save Enregistrer - - + + saved "Enregistré" Enregistré - + meeting_info_updated_toast "Réunion mise à jour" Réunion mise à jour - + meeting_schedule_edit_in_progress "Modification de la réunion en cours…" Modification de la réunion en cours… - + meeting_failed_to_edit_toast "Échec de la modification de la réunion !" Échec de la modification de la réunion ! - + meeting_schedule_add_participants_title "Ajouter des participants" Ajouter des participants - + meeting_schedule_add_participants_apply Appliquer - + group_call_participant_selected "%n participant(s) sélectionné(s)" @@ -4690,31 +4690,31 @@ Expiration : %1 - + meeting_info_delete "Supprimer la réunion" Supprimer la réunion - + meeting_address_copied_to_clipboard_toast "Adresse de la réunion copiée" Adresse de la réunion copiée - + meeting_schedule_timezone_title "Fuseau horaire" Fuseau horaire - + meeting_info_organizer_label "Organisateur" Organisateur - + meeting_info_join_title "Rejoindre la réunion" Rejoindre la réunion @@ -5583,37 +5583,37 @@ Pour les activer dans un projet commercial, merci de nous contacter. ScreencastSettings - + screencast_settings_choose_window_text "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants - + screencast_settings_all_screen_label "Ecran entier" Écran entier - + screencast_settings_one_window_label "Fenêtre" Fenêtre - + screencast_settings_screen "Ecran %1" Écran %1 - + stop "Stop Stop - + share "Partager" Partager diff --git a/Linphone/model/address-books/carddav/CarddavModel.cpp b/Linphone/model/address-books/carddav/CarddavModel.cpp index 8786268e8..38621b04e 100644 --- a/Linphone/model/address-books/carddav/CarddavModel.cpp +++ b/Linphone/model/address-books/carddav/CarddavModel.cpp @@ -97,15 +97,16 @@ void CarddavModel::remove() { void CarddavModel::onSyncStatusChanged(const std::shared_ptr &friendList, linphone::FriendList::SyncStatus status, const std::string &message) { + lInfo() << log().arg("carddav sync status changed :") << message; if (status == linphone::FriendList::SyncStatus::Successful) { lInfo() << log().arg("Successfully synchronized:") << mCarddavFriendList->getUri(); setMonitor(nullptr); SettingsModel::setCardDAVListForNewFriends(mStoreNewFriendsInIt ? friendList->getDisplayName() : ""); - emit saved(true); + emit saved(true, Utils::coreStringToAppString(message)); } if (status == linphone::FriendList::SyncStatus::Failure) { lWarning() << log().arg("Synchronization failure:") << mCarddavFriendList->getUri(); setMonitor(nullptr); - emit saved(false); + emit saved(false, Utils::coreStringToAppString(message)); } } diff --git a/Linphone/model/address-books/carddav/CarddavModel.hpp b/Linphone/model/address-books/carddav/CarddavModel.hpp index 30287a063..f94de0157 100644 --- a/Linphone/model/address-books/carddav/CarddavModel.hpp +++ b/Linphone/model/address-books/carddav/CarddavModel.hpp @@ -36,12 +36,17 @@ public: CarddavModel(const std::shared_ptr &carddavFriendList, QObject *parent = nullptr); ~CarddavModel(); - void save(std::string displayName, std::string uri, std::string username, std::string password, std::string realm, bool storeNewFriendsInIt); + void save(std::string displayName, + std::string uri, + std::string username, + std::string password, + std::string realm, + bool storeNewFriendsInIt); void remove(); bool storeNewFriendsInIt(); signals: - void saved(bool success); + void saved(bool success, QString message); void removed(); private: diff --git a/Linphone/view/Control/Button/IconLabelButton.qml b/Linphone/view/Control/Button/IconLabelButton.qml index 1bb535681..fbe322714 100644 --- a/Linphone/view/Control/Button/IconLabelButton.qml +++ b/Linphone/view/Control/Button/IconLabelButton.qml @@ -15,9 +15,10 @@ Button { shadowEnabled: mainItem.activeFocus || hovered style: ButtonStyle.hoveredBackground property bool inverseLayout: false - + spacing: Utils.getSizeWithScreenRatio(5) + contentItem: RowLayout { - spacing: Utils.getSizeWithScreenRatio(5) + spacing: mainItem.spacing layoutDirection: mainItem.inverseLayout ? Qt.RightToLeft: Qt.LeftToRight EffectImage { imageSource: mainItem.icon.source diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index a0b2244f5..46fca2b80 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -377,6 +377,7 @@ ListView { } } IconLabelButton { + visible: modelData.core.unreadMessagesCount !== 0 //: "Mark as read" text: qsTr("chat_room_mark_as_read") icon.source: AppIcons.checks diff --git a/Linphone/view/Control/Form/Settings/ScreencastSettings.qml b/Linphone/view/Control/Form/Settings/ScreencastSettings.qml index ef2078aa2..8801975a0 100644 --- a/Linphone/view/Control/Form/Settings/ScreencastSettings.qml +++ b/Linphone/view/Control/Form/Settings/ScreencastSettings.qml @@ -15,6 +15,8 @@ ColumnLayout { property bool isLocalScreenSharing : conference?.core.isLocalScreenSharing || false property bool screenSharingAvailable: !!conference && (!conference.core.isScreenSharingEnabled || isLocalScreenSharing) + signal screenSharingToggled() + spacing: Utils.getSizeWithScreenRatio(12) onIsLocalScreenSharingChanged: {if(isLocalScreenSharing) mainItem.call.core.videoSourceDescriptor = mainItem.desc } @@ -179,7 +181,10 @@ ColumnLayout { ? qsTr("stop") //: "Partager" : qsTr("share") - onClicked: mainItem.conference.core.lToggleScreenSharing() + onClicked: { + mainItem.conference.core.lToggleScreenSharing() + mainItem.screenSharingToggled() + } style: ButtonStyle.main } } diff --git a/Linphone/view/Page/Layout/Settings/CarddavSettingsLayout.qml b/Linphone/view/Page/Layout/Settings/CarddavSettingsLayout.qml index b2e966a84..ae7bf8396 100644 --- a/Linphone/view/Page/Layout/Settings/CarddavSettingsLayout.qml +++ b/Linphone/view/Page/Layout/Settings/CarddavSettingsLayout.qml @@ -35,15 +35,15 @@ AbstractSettingsLayout { } Connections { target: carddavGui.core - function onSaved(success) { + function onSaved(success, message) { if (success) UtilsCpp.showInformationPopup(qsTr("information_popup_synchronization_success_title"), //: "Le carnet d'adresse CardDAV est synchronisé." qsTr("settings_contacts_carddav_synchronization_success_message"), true, mainWindow) else UtilsCpp.showInformationPopup(qsTr("settings_contacts_carddav_popup_synchronization_error_title"), - //: "Erreur de synchronisation!" - qsTr("settings_contacts_carddav_popup_synchronization_error_message"), false, mainWindow) + //: "Erreur de synchronisation : %1" + qsTr("settings_contacts_carddav_popup_synchronization_error_message").arg(message), false, mainWindow) } } Component { diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index 68e82b676..000398c02 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -1039,7 +1039,8 @@ AbstractWindow { anchors.topMargin: Utils.getSizeWithScreenRatio(16) width: parent.width call: mainWindow.call - onIsLocalScreenSharingChanged: if (isLocalScreenSharing) rightPanel.visible = false + // auto close panel just before activating screen sharing + onScreenSharingToggled: if (!isLocalScreenSharing) rightPanel.visible = false } } } From ac03de66635963a787cfddf39256512044bb161c Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Thu, 13 Nov 2025 12:51:39 +0100 Subject: [PATCH 31/72] update audio device when changed automatically in sdk --- Linphone/model/call/CallModel.cpp | 1 + Linphone/model/core/CoreModel.cpp | 9 +++++++ Linphone/model/core/CoreModel.hpp | 6 +++++ Linphone/model/setting/SettingsModel.cpp | 34 +++++++++++++++++++++++- Linphone/model/setting/SettingsModel.hpp | 1 + 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/Linphone/model/call/CallModel.cpp b/Linphone/model/call/CallModel.cpp index a753b377e..900d45729 100644 --- a/Linphone/model/call/CallModel.cpp +++ b/Linphone/model/call/CallModel.cpp @@ -491,6 +491,7 @@ void CallModel::onVideoDisplayErrorOccurred(const std::shared_ptr &call, const std::shared_ptr &audioDevice) { + lInfo() << log().arg("audio device changed"); emit audioDeviceChanged(call, audioDevice); } diff --git a/Linphone/model/core/CoreModel.cpp b/Linphone/model/core/CoreModel.cpp index 226d47c97..6ac9f2207 100644 --- a/Linphone/model/core/CoreModel.cpp +++ b/Linphone/model/core/CoreModel.cpp @@ -626,3 +626,12 @@ void CoreModel::onFriendListRemoved(const std::shared_ptr &core, } */ } + +void CoreModel::onAudioDevicesListUpdated(const std::shared_ptr &core) { + emit audioDevicesListUpdated(core); +} + +void CoreModel::onAudioDeviceChanged(const std::shared_ptr &core, + const std::shared_ptr &device) { + emit audioDeviceChanged(core, device); +} \ No newline at end of file diff --git a/Linphone/model/core/CoreModel.hpp b/Linphone/model/core/CoreModel.hpp index 0bbc46c82..94caad489 100644 --- a/Linphone/model/core/CoreModel.hpp +++ b/Linphone/model/core/CoreModel.hpp @@ -206,6 +206,9 @@ private: const std::string &url) override; virtual void onFriendListRemoved(const std::shared_ptr &core, const std::shared_ptr &friendList) override; + virtual void onAudioDevicesListUpdated(const std::shared_ptr &core) override; + virtual void onAudioDeviceChanged(const std::shared_ptr &core, + const std::shared_ptr &device) override; signals: void accountAdded(const std::shared_ptr &core, const std::shared_ptr &account); @@ -289,6 +292,9 @@ signals: bool checkRequestedByUser); void friendListRemoved(const std::shared_ptr &core, const std::shared_ptr &friendList); + void audioDevicesListUpdated(const std::shared_ptr &core); + void audioDeviceChanged(const std::shared_ptr &core, + const std::shared_ptr &device); }; #endif diff --git a/Linphone/model/setting/SettingsModel.cpp b/Linphone/model/setting/SettingsModel.cpp index 79bd40b58..d88bfd0c6 100644 --- a/Linphone/model/setting/SettingsModel.cpp +++ b/Linphone/model/setting/SettingsModel.cpp @@ -81,6 +81,20 @@ SettingsModel::SettingsModel() { QObject::connect(CoreModel::getInstance().get(), &CoreModel::lastCallEnded, this, [this]() { if (mCaptureGraphListenerCount > 0) createCaptureGraph(); // Repair the capture graph }); + QObject::connect(CoreModel::getInstance().get(), &CoreModel::audioDevicesListUpdated, this, + [this](const std::shared_ptr &core) { + lInfo() << log().arg("audio device list updated"); + updateCallSettings(); + }); + QObject::connect( + CoreModel::getInstance().get(), &CoreModel::audioDeviceChanged, this, + [this](const std::shared_ptr &core, const std::shared_ptr &device) { + lInfo() << log().arg("audio device changed"); + if (device) lInfo() << "device :" << device->getDeviceName(); + emit playbackDeviceChanged(getPlaybackDevice()); + emit captureDeviceChanged(getCaptureDevice()); + emit ringerDeviceChanged(getRingerDevice()); + }); } SettingsModel::~SettingsModel() { @@ -173,9 +187,10 @@ void SettingsModel::stopCaptureGraph() { // Force a call on the 'detect' method of all audio filters, updating new or removed devices void SettingsModel::accessCallSettings() { - // Audio mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); startCaptureGraph(); + + // Audio CoreModel::getInstance()->getCore()->reloadSoundDevices(); emit captureDevicesChanged(getCaptureDevices()); emit playbackDevicesChanged(getPlaybackDevices()); @@ -191,6 +206,23 @@ void SettingsModel::accessCallSettings() { emit videoDevicesChanged(getVideoDevices()); } +void SettingsModel::updateCallSettings() { + mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); + + // Audio + emit captureDevicesChanged(getCaptureDevices()); + emit playbackDevicesChanged(getPlaybackDevices()); + emit playbackDeviceChanged(getPlaybackDevice()); + emit ringerDevicesChanged(getRingerDevices()); + emit ringerDeviceChanged(getRingerDevice()); + emit captureDeviceChanged(getCaptureDevice()); + emit playbackGainChanged(getPlaybackGain()); + emit captureGainChanged(getCaptureGain()); + + // Video + emit videoDevicesChanged(getVideoDevices()); +} + void SettingsModel::closeCallSettings() { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); stopCaptureGraph(); diff --git a/Linphone/model/setting/SettingsModel.hpp b/Linphone/model/setting/SettingsModel.hpp index 416dbf954..25b57b2a7 100644 --- a/Linphone/model/setting/SettingsModel.hpp +++ b/Linphone/model/setting/SettingsModel.hpp @@ -70,6 +70,7 @@ public: bool getIsInCall() const; void accessCallSettings(); + void updateCallSettings(); void closeCallSettings(); void startCaptureGraph(); From bc5022c8f5d549ae959bb530d08128e48a9e8d2f Mon Sep 17 00:00:00 2001 From: Andrea Gianarda Date: Mon, 10 Nov 2025 09:51:31 +0100 Subject: [PATCH 32/72] Move include of application_info.cmake after setting LINPHONEAPP_APPLICATION_NAME because its value must be known to set the APPLICATION_NAME variable --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e1946b3e5..261f358f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,7 +60,6 @@ project(linphoneqt) include(GNUInstallDirs) include(CheckCXXCompilerFlag) -include(Linphone/application_info.cmake) set(CMAKE_CXX_STANDARD 17) if(LINPHONEAPP_INSTALL_PREFIX) @@ -75,6 +74,9 @@ set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}") set(LINPHONEAPP_APPLICATION_NAME "Linphone6" CACHE STRING "Application name" ) set(LINPHONEAPP_EXECUTABLE_NAME "linphone6" CACHE STRING "Executable name" ) +# Include application_info.cmake here as the LINPHONEAPP_APPLICATION_NAME variable must be known as it is set to the APPLICATION_NAME variable. +include(Linphone/application_info.cmake) + if( APPLE ) set(LINPHONEAPP_MACOS_ARCHS "arm64" CACHE STRING "MacOS architectures to build: comma-separated list of values in [arm64, x86_64]") set(LINPHONESDK_BUILD_TYPE "Default")#Using Mac will remove all SDK targets. From a0850b9967d5381dedcd29b74556b537d616dd39 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Thu, 13 Nov 2025 14:21:30 +0100 Subject: [PATCH 33/72] fix #LINQT-2130 enable video in conference for the participant to be able to see shared screen without activating camera do not display notification if message already read display notif when copying account sip address #LINQT-2126 prevent adding our own address in participants (fix #LINQT-2164) --- Linphone/core/call/CallCore.cpp | 9 +- Linphone/core/notifier/Notifier.cpp | 1 + Linphone/core/search/MagicSearchList.cpp | 28 ++++- Linphone/core/search/MagicSearchList.hpp | 7 +- Linphone/core/search/MagicSearchProxy.cpp | 8 ++ Linphone/core/search/MagicSearchProxy.hpp | 5 + Linphone/data/languages/de.ts | 110 +++++++++++------- Linphone/data/languages/en.ts | 110 +++++++++++------- Linphone/data/languages/fr.ts | 110 +++++++++++------- Linphone/model/call/CallModel.cpp | 11 ++ Linphone/model/call/CallModel.hpp | 3 +- .../Display/Contact/AllContactListView.qml | 2 + .../Page/Form/Meeting/AddParticipantsForm.qml | 1 + .../Settings/AccountSettingsGeneralLayout.qml | 14 ++- 14 files changed, 275 insertions(+), 144 deletions(-) diff --git a/Linphone/core/call/CallCore.cpp b/Linphone/core/call/CallCore.cpp index 3058c61ce..8a15f4800 100644 --- a/Linphone/core/call/CallCore.cpp +++ b/Linphone/core/call/CallCore.cpp @@ -107,7 +107,8 @@ CallCore::CallCore(const std::shared_ptr &call) : QObject(nullpt mCallModel->setSelf(mCallModel); mDuration = call->getDuration(); mIsStarted = mDuration > 0; - auto videoDirection = call->getParams()->getVideoDirection(); + auto callParams = call->getParams(); + auto videoDirection = callParams->getVideoDirection(); mLocalVideoEnabled = videoDirection == linphone::MediaDirection::SendOnly || videoDirection == linphone::MediaDirection::SendRecv; auto remoteParams = call->getRemoteParams(); @@ -133,7 +134,7 @@ CallCore::CallCore(const std::shared_ptr &call) : QObject(nullpt mTransferState = LinphoneEnums::fromLinphone(call->getTransferState()); mLocalToken = Utils::coreStringToAppString(mCallModel->getLocalAtuhenticationToken()); mRemoteTokens = mCallModel->getRemoteAtuhenticationTokens(); - mEncryption = LinphoneEnums::fromLinphone(call->getParams()->getMediaEncryption()); + mEncryption = LinphoneEnums::fromLinphone(callParams->getMediaEncryption()); auto tokenVerified = call->getAuthenticationTokenVerified(); mIsMismatch = call->getZrtpCacheMismatchFlag(); mIsSecured = (mEncryption == LinphoneEnums::MediaEncryption::Zrtp && tokenVerified) || @@ -160,7 +161,7 @@ CallCore::CallCore(const std::shared_ptr &call) : QObject(nullpt mPaused = mState == LinphoneEnums::CallState::Pausing || mState == LinphoneEnums::CallState::Paused || mState == LinphoneEnums::CallState::PausedByRemote; - mRecording = call->getParams() && call->getParams()->isRecording(); + mRecording = callParams && callParams->isRecording(); mRemoteRecording = call->getRemoteParams() && call->getRemoteParams()->isRecording(); auto settingsModel = SettingsModel::getInstance(); mMicrophoneVolume = call->getRecordVolume(); @@ -344,6 +345,8 @@ void CallCore::setSelf(QSharedPointer me) { }); mCallModelConnection->makeConnectToModel(&CallModel::conferenceChanged, [this]() { auto conference = mCallModel->getMonitor()->getConference(); + // Force enable video if in conference to handle screen sharing + if (conference && !mCallModel->videoEnabled()) mCallModel->enableVideo(true); QSharedPointer core = conference ? ConferenceCore::create(conference) : nullptr; mCallModelConnection->invokeToCore([this, core]() { setConference(core); }); }); diff --git a/Linphone/core/notifier/Notifier.cpp b/Linphone/core/notifier/Notifier.cpp index 4a12e56be..0175e2a10 100644 --- a/Linphone/core/notifier/Notifier.cpp +++ b/Linphone/core/notifier/Notifier.cpp @@ -369,6 +369,7 @@ void Notifier::notifyReceivedMessages(const std::shared_ptr }; if (messages.size() == 1) { // Display only sender on mono message. + if (message->isRead()) return; getMessage(message); if (txt.isEmpty()) { // Do not notify message without content qDebug() << "empty notif, return"; diff --git a/Linphone/core/search/MagicSearchList.cpp b/Linphone/core/search/MagicSearchList.cpp index bef53989a..984ae9c16 100644 --- a/Linphone/core/search/MagicSearchList.cpp +++ b/Linphone/core/search/MagicSearchList.cpp @@ -94,18 +94,29 @@ void MagicSearchList::setSelf(QSharedPointer me) { [this](const std::list> &results) { auto *contacts = new QList>(); auto ldapContacts = ToolModel::getLdapFriendList(); - + auto core = CoreModel::getInstance()->getCore(); + auto userAddress = core->getDefaultAccount() && core->getDefaultAccount()->getParams() + ? core->getDefaultAccount()->getParams()->getIdentityAddress() + : nullptr; for (auto it : results) { QSharedPointer contact; auto linphoneFriend = it->getFriend(); bool isStored = false; if (linphoneFriend) { + if (!mShowMe && userAddress && userAddress->weakEqual(linphoneFriend->getAddress())) { + lWarning() << log().arg("do not show my own address in this contact list"); + continue; + } isStored = (ldapContacts->findFriendByAddress(linphoneFriend->getAddress()) != linphoneFriend); contact = FriendCore::create(linphoneFriend, isStored, it->getSourceFlags()); contacts->append(contact); } else if (auto address = it->getAddress()) { - auto linphoneFriend = CoreModel::getInstance()->getCore()->createFriend(); + if (!mShowMe && userAddress && userAddress->weakEqual(address)) { + lWarning() << log().arg("do not show my own address in this contact list"); + continue; + } + auto linphoneFriend = core->createFriend(); linphoneFriend->setAddress(address); contact = FriendCore::create(linphoneFriend, isStored, it->getSourceFlags()); auto displayName = Utils::coreStringToAppString(address->getDisplayName()); @@ -125,7 +136,7 @@ void MagicSearchList::setSelf(QSharedPointer me) { contacts->append(contact); } else if (!it->getPhoneNumber().empty()) { auto phoneNumber = it->getPhoneNumber(); - linphoneFriend = CoreModel::getInstance()->getCore()->createFriend(); + linphoneFriend = core->createFriend(); linphoneFriend->addPhoneNumber(phoneNumber); contact = FriendCore::create(linphoneFriend, isStored, it->getSourceFlags()); contact->setGivenName(Utils::coreStringToAppString(it->getPhoneNumber())); @@ -202,6 +213,17 @@ void MagicSearchList::setMaxResults(int maxResults) { } } +bool MagicSearchList::getShowMe() const { + return mShowMe; +} + +void MagicSearchList::setShowMe(bool showMe) { + if (mShowMe != showMe) { + mShowMe = showMe; + emit showMeChanged(mShowMe); + } +} + LinphoneEnums::MagicSearchAggregation MagicSearchList::getAggregationFlag() const { return mAggregationFlag; } diff --git a/Linphone/core/search/MagicSearchList.hpp b/Linphone/core/search/MagicSearchList.hpp index d546ed212..ea61dec1d 100644 --- a/Linphone/core/search/MagicSearchList.hpp +++ b/Linphone/core/search/MagicSearchList.hpp @@ -41,7 +41,7 @@ public: ~MagicSearchList(); void setSelf(QSharedPointer me); - void connectContact(FriendCore* data); + void connectContact(FriendCore *data); void setSearch(const QString &search); void setResults(const QList> &contacts); void add(QSharedPointer contact); @@ -55,6 +55,9 @@ public: int getMaxResults() const; void setMaxResults(int maxResults); + bool getShowMe() const; + void setShowMe(bool showMe); + virtual QHash roleNames() const override; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; @@ -68,6 +71,7 @@ signals: void sourceFlagsChanged(int sourceFlags); void aggregationFlagChanged(LinphoneEnums::MagicSearchAggregation flag); void maxResultsChanged(int maxResults); + void showMeChanged(bool showMe); void friendCreated(int index, FriendGui *data); void friendStarredChanged(); @@ -81,6 +85,7 @@ private: LinphoneEnums::MagicSearchAggregation mAggregationFlag; QString mSearchFilter; int mMaxResults = -1; + bool mShowMe = false; std::shared_ptr mMagicSearch; QSharedPointer> mModelConnection; diff --git a/Linphone/core/search/MagicSearchProxy.cpp b/Linphone/core/search/MagicSearchProxy.cpp index 106f6b4cf..3da478af7 100644 --- a/Linphone/core/search/MagicSearchProxy.cpp +++ b/Linphone/core/search/MagicSearchProxy.cpp @@ -148,6 +148,14 @@ void MagicSearchProxy::setMaxResults(int flags) { mList->setMaxResults(flags); } +bool MagicSearchProxy::getShowMe() const { + return mList->getShowMe(); +} + +void MagicSearchProxy::setShowMe(bool showMe) { + mList->setShowMe(showMe); +} + MagicSearchProxy *MagicSearchProxy::getParentProxy() const { return mParentProxy; } diff --git a/Linphone/core/search/MagicSearchProxy.hpp b/Linphone/core/search/MagicSearchProxy.hpp index e6d48d89c..66a71b6b9 100644 --- a/Linphone/core/search/MagicSearchProxy.hpp +++ b/Linphone/core/search/MagicSearchProxy.hpp @@ -34,6 +34,7 @@ class MagicSearchProxy : public LimitProxy { Q_PROPERTY(int sourceFlags READ getSourceFlags WRITE setSourceFlags NOTIFY sourceFlagsChanged) Q_PROPERTY(int maxResults READ getMaxResults WRITE setMaxResults NOTIFY maxResultsChanged) + Q_PROPERTY(bool showMe READ getShowMe WRITE setShowMe NOTIFY showMeChanged) Q_PROPERTY(LinphoneEnums::MagicSearchAggregation aggregationFlag READ getAggregationFlag WRITE setAggregationFlag NOTIFY aggregationFlagChanged) @@ -60,6 +61,9 @@ public: int getMaxResults() const; void setMaxResults(int maxResults); + bool getShowMe() const; + void setShowMe(bool showMe); + MagicSearchProxy *getParentProxy() const; void setList(QSharedPointer list); Q_INVOKABLE void setParentProxy(MagicSearchProxy *proxy); @@ -77,6 +81,7 @@ signals: void sourceFlagsChanged(int sourceFlags); void aggregationFlagChanged(LinphoneEnums::MagicSearchAggregation aggregationFlag); void maxResultsChanged(int maxResults); + void showMeChanged(bool showMe); void forceUpdate(); void localFriendCreated(int index); void parentProxyChanged(); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 772bdb588..f372462bd 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -230,76 +230,96 @@ Bild löschen - + sip_address + SIP address SIP-Adresse - + + copied + Copied + Kopiert + + + + account_settings_sip_address_copied_message + Your SIP address has been copied in the clipboard + + + + + account_settings_sip_address_copied_error_message + Error copying your SIP address + + + + sip_address_display_name "Nom d'affichage Anzeigename - + sip_address_display_name_explaination "Le nom qui sera affiché à vos correspondants lors de vos échanges." Der Name, der Ihren Kontakten während der Kommunikation angezeigt wird. - + manage_account_international_prefix Indicatif international* Internationale Vorwahl* - + manage_account_delete "Déconnecter mon compte" Konto trennen - + manage_account_delete_message Ihr Konto wird aus diesem Linphone-Client entfernt, bleibt jedoch auf Ihren anderen Geräten verbunden - + manage_account_dialog_remove_account_title "Se déconnecter du compte ?" Vom Konto abmelden? - + manage_account_dialog_remove_account_message Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org Wenn Sie Ihr Konto dauerhaft löschen möchten, besuchen Sie: https://sip.linphone.org - + + error Erreur Fehler - + manage_account_device_remove "Supprimer" Löschen - + manage_account_device_remove_confirm_dialog %1 löschen? - + manage_account_device_last_connection "Dernière connexion:" Letzte Anmeldung: - + device_last_updated_time_no_info "No information" @@ -613,19 +633,19 @@ AllContactListView - + car_favorites_contacts_title "Favoris" Favoriten - + generic_address_picker_contacts_list_title 'Contacts' Kontakte - + generic_address_picker_suggestions_list_title "Suggestions" Vorschläge @@ -814,76 +834,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Aufnahme beendet - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Die Aufnahme wurde in der folgenden Datei gespeichert: %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bandbreite: %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Verlustquote: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Jitter-Puffer: %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Videoauflösung: %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None Nichts - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" Post-quantum ZRTP @@ -1122,67 +1142,67 @@ CallModel - + call_error_no_response_toast "No response" - + call_error_forbidden_resource_toast "403 : Forbidden resource" - + call_error_not_answered_toast "Request timeout" - + call_error_user_declined_toast "User declined the call" Der Benutzer hat den Anruf abgelehnt - + call_error_user_not_found_toast "User was not found" Benutzer nicht gefunden - + call_error_user_busy_toast "User is busy" Der Benutzer ist beschäftigt - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" Der Benutzer kann Ihren Anruf nicht annehmen - + call_error_io_error_toast "Unavailable service or network error" Dienst nicht verfügbar oder Netzwerkfehler - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Vorübergehend nicht verfügbar - + call_error_server_timeout_toast "Server tiemout" Server-Zeitüberschreitung @@ -4296,7 +4316,7 @@ Error MagicSearchList - + device_id Telefon @@ -5008,13 +5028,13 @@ Error - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. - + new_message_alert_accessible_name New message on chatroom %1 diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index ffe5edeed..a1d78f477 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -230,76 +230,96 @@ Delete image - + sip_address + SIP address SIP address - + + copied + Copied + Copied + + + + account_settings_sip_address_copied_message + Your SIP address has been copied in the clipboard + Your SIP address has been copied in the clipboard + + + + account_settings_sip_address_copied_error_message + Error copying your SIP address + Error copying your SIP address + + + sip_address_display_name "Nom d'affichage Display name - + sip_address_display_name_explaination "Le nom qui sera affiché à vos correspondants lors de vos échanges." The name displayed to your contacts during exchanges. - + manage_account_international_prefix Indicatif international* International code* - + manage_account_delete "Déconnecter mon compte" Disconnect my account - + manage_account_delete_message Your account will be removed from this Linphone client, but you will remain connected on your other clients - + manage_account_dialog_remove_account_title "Se déconnecter du compte ?" Log out of the account? - + manage_account_dialog_remove_account_message Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org If you wish to permanently delete your account, go to: https://sip.linphone.org - + + error Erreur Error - + manage_account_device_remove "Supprimer" Delete - + manage_account_device_remove_confirm_dialog Delete %1? - + manage_account_device_last_connection "Dernière connexion:" Last login: - + device_last_updated_time_no_info "No information" No information @@ -608,19 +628,19 @@ AllContactListView - + car_favorites_contacts_title "Favoris" Favorites - + generic_address_picker_contacts_list_title 'Contacts' Contacts - + generic_address_picker_suggestions_list_title "Suggestions" Suggestions @@ -809,76 +829,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Recording ended - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Recording has been saved in file : %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bandwidth : %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Loss rate: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Jitter buffer : %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Video resolution: %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None None - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" Post quantum ZRTP @@ -1117,67 +1137,67 @@ CallModel - + call_error_no_response_toast "No response" No response - + call_error_forbidden_resource_toast "403 : Forbidden resource" 403 : Forbidden resource - + call_error_not_answered_toast "Request timeout" Request timeout - + call_error_user_declined_toast "User declined the call" User declined the call - + call_error_user_not_found_toast "User was not found" User was not found - + call_error_user_busy_toast "User is busy" User is busy - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" User can't accept your call - + call_error_io_error_toast "Unavailable service or network error" Unavailable service or network error - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" User cannot be disturbed - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Temporarily unavailable - + call_error_server_timeout_toast "Server tiemout" Server tiemout @@ -4212,7 +4232,7 @@ Expiration : %1 MagicSearchList - + device_id Phone @@ -4915,13 +4935,13 @@ Expiration : %1 Conference invitation received ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. New messages received ! - + new_message_alert_accessible_name New message on chatroom %1 New message on chatroom %1 diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 7a70cbfdc..42d98aa13 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -230,76 +230,96 @@ Supprimer l'image - + sip_address + SIP address Adresse SIP - + + copied + Copied + Copié + + + + account_settings_sip_address_copied_message + Your SIP address has been copied in the clipboard + Votre adresse SIP a été copié dans le presse-papiers + + + + account_settings_sip_address_copied_error_message + Error copying your SIP address + Erreur lors de la copie de votre adresse SIP + + + sip_address_display_name "Nom d'affichage Nom d'affichage - + sip_address_display_name_explaination "Le nom qui sera affiché à vos correspondants lors de vos échanges." Le nom qui sera affiché à vos correspondants lors de vos échanges. - + manage_account_international_prefix Indicatif international* Indicatif international* - + manage_account_delete "Déconnecter mon compte" Déconnecter mon compte - + manage_account_delete_message Votre compte sera retiré de ce client linphone, mais vous restez connecté sur vos autres clients - + manage_account_dialog_remove_account_title "Se déconnecter du compte ?" Se déconnecter du compte ? - + manage_account_dialog_remove_account_message Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org Si vous souhaitez supprimer définitivement votre compte rendez-vous sur : https://sip.linphone.org - + + error Erreur Erreur - + manage_account_device_remove "Supprimer" Supprimer - + manage_account_device_remove_confirm_dialog Supprimer %1 ? - + manage_account_device_last_connection "Dernière connexion:" Dernière connexion: - + device_last_updated_time_no_info "No information" Pas d'information @@ -608,19 +628,19 @@ AllContactListView - + car_favorites_contacts_title "Favoris" Favoris - + generic_address_picker_contacts_list_title 'Contacts' Contacts - + generic_address_picker_suggestions_list_title "Suggestions" Suggestions @@ -809,76 +829,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Enregistrement terminé - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" L'appel a été enregistré dans le fichier : %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bande passante : %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Taux de perte: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Tampon de gigue: %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Définition vidéo : %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None None - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" ZRTP - Post quantique @@ -1117,67 +1137,67 @@ CallModel - + call_error_no_response_toast "No response" Pas de réponse - + call_error_forbidden_resource_toast "403 : Forbidden resource" 403 : Forbidden resource - + call_error_not_answered_toast "Request timeout" La requête a expiré - + call_error_user_declined_toast "User declined the call" Le correspondant a décliné l'appel - + call_error_user_not_found_toast "User was not found" Le correspondant n'a pas été trouvé - + call_error_user_busy_toast "User is busy" Le correspondant est occupé - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" Le correspondant ne peut accepter votre appel - + call_error_io_error_toast "Unavailable service or network error" Service indisponible ou erreur réseau - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" Le correspondant ne peut être dérangé - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Temporairement indisponible - + call_error_server_timeout_toast "Server tiemout" Délai d'attente du serveur dépassé @@ -4212,7 +4232,7 @@ Expiration : %1 MagicSearchList - + device_id Téléphone @@ -4915,13 +4935,13 @@ Expiration : %1 Nouvelle invitation à une conférence ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. Nouveaux messages reçus ! - + new_message_alert_accessible_name New message on chatroom %1 Nouveau message sur la conversation %1 diff --git a/Linphone/model/call/CallModel.cpp b/Linphone/model/call/CallModel.cpp index 900d45729..f4045ceac 100644 --- a/Linphone/model/call/CallModel.cpp +++ b/Linphone/model/call/CallModel.cpp @@ -128,6 +128,17 @@ void CallModel::setSpeakerMuted(bool isMuted) { emit speakerMutedChanged(isMuted); } +void CallModel::enableVideo(bool enable) { + mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); + auto params = CoreModel::getInstance()->getCore()->createCallParams(mMonitor); + params->enableVideo(enable); + mMonitor->update(params); +} + +bool CallModel::videoEnabled() const { + return mMonitor->getParams()->videoEnabled(); +} + void CallModel::activateLocalVideo(std::shared_ptr ¶ms, bool enable) { lInfo() << sLog() .arg("Updating call with video enabled and media direction set to %1") diff --git a/Linphone/model/call/CallModel.hpp b/Linphone/model/call/CallModel.hpp index 847f50f41..cdcc0b15d 100644 --- a/Linphone/model/call/CallModel.hpp +++ b/Linphone/model/call/CallModel.hpp @@ -82,7 +82,8 @@ public: LinphoneEnums::VideoSourceScreenSharingType getVideoSourceType() const; int getScreenSharingIndex() const; void setVideoSourceDescriptorModel(std::shared_ptr model = nullptr); - + void enableVideo(bool enable); + bool videoEnabled() const; static void activateLocalVideo(std::shared_ptr ¶ms, bool enable); void sendDtmf(const QString &dtmf); diff --git a/Linphone/view/Control/Display/Contact/AllContactListView.qml b/Linphone/view/Control/Display/Contact/AllContactListView.qml index 7c6b7d43c..2965d20b8 100644 --- a/Linphone/view/Control/Display/Contact/AllContactListView.qml +++ b/Linphone/view/Control/Display/Contact/AllContactListView.qml @@ -18,6 +18,7 @@ Flickable { property bool showContactMenu: true // Display the dot menu for contacts. property bool showFavorites: true // Display the favorites in the header property bool hideSuggestions: false // Hide not stored contacts (not suggestions) + property bool showMe: true // Wether to display current account address or not (disabled for adding participants) property string highlightText: searchText // Bold characters in Display name. property var sourceFlags: LinphoneEnums.MagicSearchSource.All @@ -295,6 +296,7 @@ Flickable { property MagicSearchProxy proxy: MagicSearchProxy { id: favoritesProxy parentProxy: mainItem.mainModel + showMe: mainItem.showMe filterType: MagicSearchProxy.FilteringTypes.Favorites } model: mainItem.showFavorites diff --git a/Linphone/view/Page/Form/Meeting/AddParticipantsForm.qml b/Linphone/view/Page/Form/Meeting/AddParticipantsForm.qml index d808f991b..95815f484 100644 --- a/Linphone/view/Page/Form/Meeting/AddParticipantsForm.qml +++ b/Linphone/view/Page/Form/Meeting/AddParticipantsForm.qml @@ -161,6 +161,7 @@ FocusScope { itemsRightMargin: Utils.getSizeWithScreenRatio(28) multiSelectionEnabled: true showContactMenu: false + showMe: false confInfoGui: mainItem.conferenceInfoGui selectedContacts: mainItem.selectedParticipants onSelectedContactsChanged: Qt.callLater(function () { diff --git a/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml b/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml index 8f70da2df..6c9345f9a 100644 --- a/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml +++ b/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml @@ -103,6 +103,7 @@ AbstractSettingsLayout { spacing: Utils.getSizeWithScreenRatio(5) Text { Layout.alignment: Qt.AlignLeft + //: SIP address text: "%1 :".arg(qsTr("sip_address")) color: DefaultStyle.main2_600 font: Typography.p2l @@ -120,7 +121,18 @@ AbstractSettingsLayout { Layout.alignment: Qt.AlignRight icon.source: AppIcons.copy style: ButtonStyle.noBackground - onClicked: UtilsCpp.copyToClipboard(model.core.identityAddress) + onClicked: { + if (UtilsCpp.copyToClipboard(model.core.identityAddress)) { + //: Copied + UtilsCpp.showInformationPopup(qsTr("copied"), + //: Your SIP address has been copied in the clipboard + qsTr("account_settings_sip_address_copied_message")) + } else { + UtilsCpp.showInformationPopup(qsTr("error"), + //: Error copying your SIP address + qsTr("account_settings_sip_address_copied_error_message")) + } + } } } ColumnLayout { From a4b38e4fd1d6626c1545b428fb9994090b5c9635 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 14 Nov 2025 10:12:00 +0100 Subject: [PATCH 34/72] Fix crash by replacing unsafe reverse iterator loop in EventLogList (cherry pick 23875ce1) --- Linphone/core/chat/message/EventLogList.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Linphone/core/chat/message/EventLogList.cpp b/Linphone/core/chat/message/EventLogList.cpp index 8b233359f..764c5cca9 100644 --- a/Linphone/core/chat/message/EventLogList.cpp +++ b/Linphone/core/chat/message/EventLogList.cpp @@ -156,9 +156,12 @@ void EventLogList::displayMore() { } mCoreModelConnection->invokeToCore([this, events] { int currentCount = mList.count(); - for (auto it = events->end() - 1; it >= events->begin(); --it) { - connectItem(*it); - prepend(*it); + if (!events->isEmpty()) { + for (int i = events->size() - 1; i >= 0; --i) { + const auto &ev = events->at(i); + connectItem(ev); + prepend(ev); + } } }); }); From e113058ae90753916a89bc3d6b7b410a8638cd64 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 14 Nov 2025 10:38:57 +0100 Subject: [PATCH 35/72] hide group call button if no videoconference uri set avoid displaying more messages when the list is not yet initialized fix meeting form end hour combobox list display #LINQT-2127 check if at least one participant when creating group chat #LINQT-2134 display all the errors at a time if they all occur #LINQT-2133 add signal to add chat to list when state Created #LINQT-2131 fix chat deletion --- Linphone/core/chat/ChatList.cpp | 29 ++++++- Linphone/core/chat/ChatList.hpp | 5 +- Linphone/core/chat/ChatProxy.cpp | 4 + Linphone/core/chat/ChatProxy.hpp | 2 + Linphone/data/languages/de.ts | 78 ++++++++++--------- Linphone/data/languages/en.ts | 78 ++++++++++--------- Linphone/data/languages/fr.ts | 78 ++++++++++--------- Linphone/model/tool/ToolModel.cpp | 1 + Linphone/tool/Utils.cpp | 4 +- Linphone/tool/Utils.hpp | 2 +- .../Control/Container/CreationFormLayout.qml | 2 + .../view/Control/Container/FormItemLayout.qml | 7 ++ .../Container/GroupCreationFormLayout.qml | 39 ++++------ .../Control/Display/Chat/ChatListView.qml | 11 +-- .../Display/Chat/ChatMessagesListView.qml | 5 +- Linphone/view/Page/Form/Call/NewCallForm.qml | 1 + Linphone/view/Page/Main/Chat/ChatPage.qml | 33 ++++---- 17 files changed, 220 insertions(+), 159 deletions(-) diff --git a/Linphone/core/chat/ChatList.cpp b/Linphone/core/chat/ChatList.cpp index ba0fbc846..69878049b 100644 --- a/Linphone/core/chat/ChatList.cpp +++ b/Linphone/core/chat/ChatList.cpp @@ -167,6 +167,30 @@ void ChatList::setSelf(QSharedPointer me) { addChatToList(core, room, message); }); + mModelConnection->makeConnectToModel( + &CoreModel::chatRoomStateChanged, + [this](const std::shared_ptr &core, const std::shared_ptr &chatRoom, + linphone::ChatRoom::State state) { + auto chatRoomAccount = chatRoom->getAccount(); + auto currentAccount = CoreModel::getInstance()->getCore()->getDefaultAccount(); + if (!chatRoomAccount || !currentAccount || !chatRoomAccount->getParams() || !currentAccount->getParams() || + !chatRoomAccount->getParams()->getIdentityAddress()->weakEqual( + currentAccount->getParams()->getIdentityAddress())) { + lInfo() << "ChatRoom state of another account changed, return"; + return; + } + if (chatRoom->getState() == linphone::ChatRoom::State::Created) { + lInfo() << "ChatRoom created, add it to the list" << chatRoom.get(); + auto chatCore = ChatCore::create(chatRoom); + mModelConnection->invokeToCore([this, chatCore] { + if (chatCore) { + bool added = addChatInList(chatCore); + if (added) emit chatCreated(new ChatGui(chatCore)); + } + }); + } + }); + connect(this, &ChatList::filterChanged, [this](QString filter) { mFilter = filter; lUpdate(); @@ -184,7 +208,8 @@ int ChatList::findChatIndex(ChatGui *chatGui) { return it == chatList.end() ? -1 : std::distance(chatList.begin(), it); } -void ChatList::addChatInList(QSharedPointer chatCore) { +bool ChatList::addChatInList(QSharedPointer chatCore) { + mustBeInMainThread(log().arg(Q_FUNC_INFO)); auto chatList = getSharedList(); auto it = std::find_if(chatList.begin(), chatList.end(), [chatCore](const QSharedPointer item) { return item && chatCore && item->getModel() && chatCore->getModel() && @@ -193,8 +218,10 @@ void ChatList::addChatInList(QSharedPointer chatCore) { if (it == chatList.end()) { connectItem(chatCore); add(chatCore); + return true; emit chatAdded(); } + return false; } QVariant ChatList::data(const QModelIndex &index, int role) const { diff --git a/Linphone/core/chat/ChatList.hpp b/Linphone/core/chat/ChatList.hpp index 335e06a2b..6757e615f 100644 --- a/Linphone/core/chat/ChatList.hpp +++ b/Linphone/core/chat/ChatList.hpp @@ -42,7 +42,7 @@ public: void connectItem(QSharedPointer chat); int findChatIndex(ChatGui *chat); - void addChatInList(QSharedPointer chatCore); + bool addChatInList(QSharedPointer chatCore); virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; signals: @@ -50,6 +50,9 @@ signals: void filterChanged(QString filter); void chatAdded(); void chatUpdated(); + // emit this signal to force selection when + // newly created chat added to the list + void chatCreated(ChatGui *chatGui); private: QString mFilter; diff --git a/Linphone/core/chat/ChatProxy.cpp b/Linphone/core/chat/ChatProxy.cpp index 9b34f3e11..87778d97a 100644 --- a/Linphone/core/chat/ChatProxy.cpp +++ b/Linphone/core/chat/ChatProxy.cpp @@ -46,6 +46,10 @@ void ChatProxy::setSourceModel(QAbstractItemModel *model) { connect(this, &ChatProxy::filterTextChanged, newChatList, [this, newChatList] { emit newChatList->filterChanged(getFilterText()); }); connect(newChatList, &ChatList::chatAdded, this, [this] { invalidate(); }); + connect(newChatList, &ChatList::chatCreated, this, [this](ChatGui *chatGui) { + invalidate(); + emit chatCreated(chatGui); + }); connect(newChatList, &ChatList::dataChanged, this, [this] { invalidate(); }); } auto firstList = new SortFilterList(model, Qt::AscendingOrder); diff --git a/Linphone/core/chat/ChatProxy.hpp b/Linphone/core/chat/ChatProxy.hpp index c90548f33..f15ae999f 100644 --- a/Linphone/core/chat/ChatProxy.hpp +++ b/Linphone/core/chat/ChatProxy.hpp @@ -41,6 +41,8 @@ public: Q_INVOKABLE int findChatIndex(ChatGui *chatGui); Q_INVOKABLE void addChatInList(ChatGui *chatGui); +signals: + void chatCreated(ChatGui *chatGui); protected: QSharedPointer mList; diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index f372462bd..a4faeb690 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2112,65 +2112,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… - + chat_message_draft_sending_text - + chat_room_delete "Delete" Löschen - + chat_room_mute - + chat_room_unmute "Mute" - + chat_room_mark_as_read "Mark as read" - + chat_room_leave "leave" - + chat_list_leave_chat_popup_title leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? @@ -2453,58 +2453,58 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message - + info_popup_no_result_message No result found - + info_popup_first_result_message First result reached - + info_popup_last_result_message Last result reached - + chat_message_list_encrypted_header_title End to end encrypted chat - + unencrypted_conversation_warning This conversation is not encrypted ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! - + chat_message_is_writing_info %1 is writing… @@ -2567,32 +2567,32 @@ Error - + chat_action_start_new_chat "New chat" - + chat_start_group_chat_title "Nouveau groupe" - + chat_action_start_group_chat "Créer" Erstellen - - - + + + information_popup_error_title Fehler - + information_popup_chat_creation_failed_message "La création a échoué" @@ -2603,19 +2603,25 @@ Error Der Codec konnte nicht installiert werden. - + group_chat_error_must_have_name "Un nom doit être donné au groupe - + + group_chat_error_no_participant + "Please select at least one participant + + + + group_call_error_not_connected "Vous n'etes pas connecté" Sie sind nicht verbunden - + chat_creation_in_progress Creation de la conversation en cours … @@ -3543,7 +3549,7 @@ Error CreationFormLayout - + search_bar_look_for_contact_text "Rechercher un contact" Kontakt suchen @@ -3930,20 +3936,20 @@ Error Gruppenname - + return_accessible_name Return - + group_start_dialog_subject_hint "Nom du groupe" Gruppenname - + required "Requis" Erforderlich @@ -4955,7 +4961,7 @@ Error NewCallForm - + call_transfer_active_calls_label "Appels en cours" Laufender Anruf diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index a1d78f477..fb7df7795 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 is writing… - + chat_message_draft_sending_text Draft : %1 - + chat_room_delete "Delete" Delete - + chat_room_mute Mute - + chat_room_unmute "Mute" Unmute - + chat_room_mark_as_read "Mark as read" Mark as read - + chat_room_leave "leave" Leave - + chat_list_leave_chat_popup_title leave the conversation ? Leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? This conversation and all its messages will be deleted. Do You want to continue ? @@ -2425,44 +2425,44 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message Find message - + info_popup_no_result_message No result found No result found - + info_popup_first_result_message First result reached First result reached - + info_popup_last_result_message Last result reached Last result reached - + chat_message_list_encrypted_header_title End to end encrypted chat End to end encrypted chat - + unencrypted_conversation_warning This conversation is not encrypted ! This conversation is not encrypted ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. @@ -2470,7 +2470,7 @@ Error Only your correspondent can decrypt them. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! @@ -2478,7 +2478,7 @@ Only your correspondent can decrypt them. may sure you don't share any sensitive information ! - + chat_message_is_writing_info %1 is writing… %1 is writing… @@ -2541,50 +2541,56 @@ Only your correspondent can decrypt them. No conversation in history - + chat_action_start_new_chat "New chat" New conversation - + chat_start_group_chat_title "Nouveau groupe" New group - + chat_action_start_group_chat "Créer" Create - - - + + + information_popup_error_title Error - + information_popup_chat_creation_failed_message "La création a échoué" Creation failed - + group_chat_error_must_have_name "Un nom doit être donné au groupe A name must be set for the group - + + group_chat_error_no_participant + "Please select at least one participant + Please select at least one participant + + + group_call_error_not_connected "Vous n'etes pas connecté" You are not connected - + chat_creation_in_progress Creation de la conversation en cours … Chat creation pending… @@ -3462,7 +3468,7 @@ Only your correspondent can decrypt them. CreationFormLayout - + search_bar_look_for_contact_text "Rechercher un contact" Find contact @@ -3846,20 +3852,20 @@ Expiration : %1 GroupCreationFormLayout - + return_accessible_name Return Return - + group_start_dialog_subject_hint "Nom du groupe" Group name - + required "Requis" Required @@ -4867,7 +4873,7 @@ Expiration : %1 NewCallForm - + call_transfer_active_calls_label "Appels en cours" Ongoing call diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 42d98aa13..232c0d1cd 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… - + chat_message_draft_sending_text Brouillon : %1 - + chat_room_delete "Delete" Supprimer - + chat_room_mute Mettre en sourdine - + chat_room_unmute "Mute" Enlever la sourdine - + chat_room_mark_as_read "Mark as read" Marquer comme lu - + chat_room_leave "leave" Quitter la conversation - + chat_list_leave_chat_popup_title leave the conversation ? Quitter la conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ? - + chat_list_delete_chat_popup_title Delete the conversation ? Supprimer la conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ? @@ -2425,44 +2425,44 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message Trouver un message - + info_popup_no_result_message No result found Aucun résultat trouvé - + info_popup_first_result_message First result reached Premier résultat atteint - + info_popup_last_result_message Last result reached Dernier résultat atteint - + chat_message_list_encrypted_header_title End to end encrypted chat Conversation chiffrée de bout en bout - + unencrypted_conversation_warning This conversation is not encrypted ! Cette conversation n'est pas chiffrée ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. @@ -2470,7 +2470,7 @@ Error en bout. Seul votre correspondant peut les déchiffrer. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! @@ -2478,7 +2478,7 @@ en bout. Seul votre correspondant peut les déchiffrer. assurez-vous de ne pas partager d’informations sensibles ! - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… @@ -2541,50 +2541,56 @@ en bout. Seul votre correspondant peut les déchiffrer. Aucune conversation dans votre historique - + chat_action_start_new_chat "New chat" Nouvelle conversation - + chat_start_group_chat_title "Nouveau groupe" Nouveau groupe - + chat_action_start_group_chat "Créer" Créer - - - + + + information_popup_error_title Erreur - + information_popup_chat_creation_failed_message "La création a échoué" La création a échoué - + group_chat_error_must_have_name "Un nom doit être donné au groupe Un nom doit être donné au groupe - + + group_chat_error_no_participant + "Please select at least one participant + Veuillez sélectionner au moins un participant + + + group_call_error_not_connected "Vous n'etes pas connecté" Vous n'êtes pas connecté - + chat_creation_in_progress Creation de la conversation en cours … Création de la conversation en cours… @@ -3462,7 +3468,7 @@ en bout. Seul votre correspondant peut les déchiffrer. CreationFormLayout - + search_bar_look_for_contact_text "Rechercher un contact" Rechercher un contact @@ -3846,20 +3852,20 @@ Expiration : %1 GroupCreationFormLayout - + return_accessible_name Return Retour - + group_start_dialog_subject_hint "Nom du groupe" Nom du groupe - + required "Requis" Requis @@ -4867,7 +4873,7 @@ Expiration : %1 NewCallForm - + call_transfer_active_calls_label "Appels en cours" Appels en cours diff --git a/Linphone/model/tool/ToolModel.cpp b/Linphone/model/tool/ToolModel.cpp index c21c8bbda..2ce9478ed 100644 --- a/Linphone/model/tool/ToolModel.cpp +++ b/Linphone/model/tool/ToolModel.cpp @@ -760,6 +760,7 @@ ToolModel::createGroupChatRoom(QString subject, std::listgetParams(); auto chatRoom = core->createChatRoom(params, participantsAddresses); + if (!chatRoom) lWarning() << ("[ToolModel] Failed to create group chat"); return chatRoom; } diff --git a/Linphone/tool/Utils.cpp b/Linphone/tool/Utils.cpp index 77bec4724..efbdd42c1 100644 --- a/Linphone/tool/Utils.cpp +++ b/Linphone/tool/Utils.cpp @@ -1435,9 +1435,9 @@ QDateTime Utils::addYears(QDateTime date, int years) { return date; } -int Utils::timeOffset(QDateTime start, QDateTime end) { +int Utils::timeOffset(QTime start, QTime end) { int offset = start.secsTo(end); - return std::min(offset, INT_MAX); + return std::max(std::min(offset, INT_MAX), INT_MIN); } int Utils::daysOffset(QDateTime start, QDateTime end) { diff --git a/Linphone/tool/Utils.hpp b/Linphone/tool/Utils.hpp index 7b8f1ea68..23839f879 100644 --- a/Linphone/tool/Utils.hpp +++ b/Linphone/tool/Utils.hpp @@ -126,7 +126,7 @@ public: Q_INVOKABLE static int secsTo(const QString &start, const QString &end); Q_INVOKABLE static QDateTime addSecs(QDateTime date, int secs); Q_INVOKABLE static QDateTime addYears(QDateTime date, int years); - Q_INVOKABLE static int timeOffset(QDateTime start, QDateTime end); + Q_INVOKABLE static int timeOffset(QTime start, QTime end); Q_INVOKABLE static int daysOffset(QDateTime start, QDateTime end); Q_INVOKABLE static VariantObject *interpretUrl(QString uri); Q_INVOKABLE static bool isValidURL(const QString &url); diff --git a/Linphone/view/Control/Container/CreationFormLayout.qml b/Linphone/view/Control/Container/CreationFormLayout.qml index 8fbcbd286..d93454cf7 100644 --- a/Linphone/view/Control/Container/CreationFormLayout.qml +++ b/Linphone/view/Control/Container/CreationFormLayout.qml @@ -14,6 +14,7 @@ FocusScope { property color searchBarBorderColor: "transparent" property alias searchBar: searchBar property string startGroupButtonText + property bool startGroupButtonVisible: true property NumericPadPopup numPadPopup signal groupCreationRequested() signal contactClicked(FriendGui contact) @@ -52,6 +53,7 @@ FocusScope { spacing: Utils.getSizeWithScreenRatio(32) Button { id: groupCreationButton + visible: mainItem.startGroupButtonVisible Layout.preferredWidth: Utils.getSizeWithScreenRatio(320) Layout.preferredHeight: Utils.getSizeWithScreenRatio(44) padding: 0 diff --git a/Linphone/view/Control/Container/FormItemLayout.qml b/Linphone/view/Control/Container/FormItemLayout.qml index 090581cef..fceaf1296 100644 --- a/Linphone/view/Control/Container/FormItemLayout.qml +++ b/Linphone/view/Control/Container/FormItemLayout.qml @@ -9,6 +9,7 @@ FocusScope{ id: mainItem property alias contentItem: contentItem.data property string label: "" + property string labelIndication property string tooltip: "" property bool mandatory: false @@ -73,6 +74,12 @@ FocusScope{ text: mainItem.tooltip } } + Text { + visible: mainItem.labelIndication !== undefined + font.pixelSize: Utils.getSizeWithScreenRatio(12) + font.weight: Utils.getSizeWithScreenRatio(300) + text: mainItem.labelIndication + } } Item { diff --git a/Linphone/view/Control/Container/GroupCreationFormLayout.qml b/Linphone/view/Control/Container/GroupCreationFormLayout.qml index bd01db9c8..e2c1c80d3 100644 --- a/Linphone/view/Control/Container/GroupCreationFormLayout.qml +++ b/Linphone/view/Control/Container/GroupCreationFormLayout.qml @@ -12,6 +12,7 @@ import "qrc:/qt/qml/Linphone/view/Style/buttonStyle.js" as ButtonStyle FocusScope { id: mainItem property alias addParticipantsLayout: addParticipantsLayout + property alias groupNameItem: groupNameItem property alias groupName: groupName property string formTitle property string createGroupButtonText @@ -65,34 +66,24 @@ FocusScope { } } } - RowLayout { - spacing: 0 + FormItemLayout { + id: groupNameItem + enableErrorText: true + Layout.fillWidth: true Layout.topMargin: Utils.getSizeWithScreenRatio(18) Layout.rightMargin: Utils.getSizeWithScreenRatio(38) - Text { - font.pixelSize: Typography.p2.pixelSize - font.weight: Typography.p2.weight - //: "Nom du groupe" - text: qsTr("group_start_dialog_subject_hint") - } - Item { + //: "Nom du groupe" + label: qsTr("group_start_dialog_subject_hint") + //: "Requis" + labelIndication: qsTr("required") + contentItem: TextField { + id: groupName Layout.fillWidth: true + Layout.preferredHeight: Utils.getSizeWithScreenRatio(49) + focus: true + KeyNavigation.down: addParticipantsLayout //participantList.count > 0 ? participantList : searchbar + Accessible.name: qsTr("group_start_dialog_subject_hint") } - Text { - font.pixelSize: Utils.getSizeWithScreenRatio(12) - font.weight: Utils.getSizeWithScreenRatio(300) - //: "Requis" - text: qsTr("required") - } - } - TextField { - id: groupName - Layout.fillWidth: true - Layout.rightMargin: Utils.getSizeWithScreenRatio(38) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(49) - focus: true - KeyNavigation.down: addParticipantsLayout //participantList.count > 0 ? participantList : searchbar - Accessible.name: qsTr("group_start_dialog_subject_hint") } AddParticipantsForm { id: addParticipantsLayout diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index 46fca2b80..8009ed150 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -60,6 +60,9 @@ ListView { onLayoutChanged: { selectChat(mainItem.currentChatGui) } + onChatCreated: (chat) => { + selectChat(chat) + } } // flickDeceleration: 10000 spacing: Utils.getSizeWithScreenRatio(10) @@ -67,14 +70,6 @@ ListView { function selectChat(chatGui) { var index = chatProxy.findChatIndex(chatGui) mainItem.currentIndex = index - // if the chat exists, it may not be displayed - // in list if hide_empty_chatrooms is set. Thus, we need - // to force adding it in the list so it is displayed - if (index === -1 && chatGui) { - chatProxy.addChatInList(chatGui) - var index = chatProxy.findChatIndex(chatGui) - mainItem.currentIndex = index - } } Component.onCompleted: cacheBuffer = Math.max(contentHeight, 0) //contentHeight>0 ? contentHeight : 0// cache all items diff --git a/Linphone/view/Control/Display/Chat/ChatMessagesListView.qml b/Linphone/view/Control/Display/Chat/ChatMessagesListView.qml index 38fbfebe6..05acbf862 100644 --- a/Linphone/view/Control/Display/Chat/ChatMessagesListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatMessagesListView.qml @@ -73,7 +73,10 @@ ListView { onAtYEndChanged: if (atYEnd && chat) { chat.core.lMarkAsRead() } - onAtYBeginningChanged: if (atYBeginning) { + // Workaround : check if there is already items in the list + // so this function is only called when the user actually scroll + // the view till the begining + onAtYBeginningChanged: if (atYBeginning && count !== 0) { eventLogProxy.displayMore() } diff --git a/Linphone/view/Page/Form/Call/NewCallForm.qml b/Linphone/view/Page/Form/Call/NewCallForm.qml index 8af410caf..29801021c 100644 --- a/Linphone/view/Page/Form/Call/NewCallForm.qml +++ b/Linphone/view/Page/Form/Call/NewCallForm.qml @@ -15,6 +15,7 @@ CreationFormLayout { //: Appel de groupe startGroupButtonText: qsTr("call_start_group_call_title") + startGroupButtonVisible: !SettingsCpp.disableMeetingsFeature topLayoutVisible: mainItem.displayCurrentCalls && callList.count > 0 topContent: [ diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index b2c3e8820..c1db27782 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -198,8 +198,8 @@ AbstractMainPage { Connections { target: mainItem - function onSelectedChatGuiChanged() { - chatListView.selectChat(mainItem.selectedChatGui) + function onRemoteChatChanged() { + if (mainItem.remoteChat) chatListView.chatToSelect = mainItem.remoteChat } function onOpenChatRequested(chat) { chatListView.chatToSelect = chat @@ -322,22 +322,29 @@ AbstractMainPage { } onGroupCreationRequested: { + var hasError = false if (groupName.text.length === 0) { + //: "Un nom doit être donné au groupe + groupNameItem.errorMessage = qsTr("group_chat_error_must_have_name") + hasError = true + } if (addParticipantsLayout.selectedParticipantsCount === 0) { UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), - //: "Un nom doit être donné au groupe - qsTr("group_chat_error_must_have_name"), false) - } else if (!mainItem.isRegistered) { + //: "Please select at least one participant + qsTr("group_chat_error_no_participant"), false) + hasError = true + } if (!mainItem.isRegistered) { UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), //: "Vous n'etes pas connecté" qsTr("group_call_error_not_connected"), false) - } else { - console.log("create group chat") - //: Creation de la conversation en cours … - mainWindow.showLoadingPopup(qsTr("chat_creation_in_progress"), true, function () { - if (chatCreationLayout.groupChat) chatCreationLayout.groupChat.core.lDelete() - }) - chatCreationLayout.groupChatObj = UtilsCpp.createGroupChat(chatCreationLayout.groupName.text, addParticipantsLayout.selectedParticipants) - } + hasError = true + } + if (hasError) return + console.log("Create group chat") + //: Creation de la conversation en cours … + mainWindow.showLoadingPopup(qsTr("chat_creation_in_progress"), true, function () { + if (chatCreationLayout.groupChat) chatCreationLayout.groupChat.core.lDelete() + }) + chatCreationLayout.groupChatObj = UtilsCpp.createGroupChat(chatCreationLayout.groupName.text, addParticipantsLayout.selectedParticipants) } } } From 38700379053e82959b3e089daba2dbacee158837 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 14 Nov 2025 14:08:20 +0100 Subject: [PATCH 36/72] update SDK to 5.4.60 --- external/linphone-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/linphone-sdk b/external/linphone-sdk index 7b12e544e..5a1d0fedd 160000 --- a/external/linphone-sdk +++ b/external/linphone-sdk @@ -1 +1 @@ -Subproject commit 7b12e544ecd212bb64aa9e5bee18d0f7a8d3d70e +Subproject commit 5a1d0fedd44d4702fc717b2819204d9ba96b6815 From 0b9a0ead2a3ef6988a46600663b456e61ab1e382 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 17 Nov 2025 10:49:29 +0100 Subject: [PATCH 37/72] fix screen sharing --- Linphone/data/languages/de.ts | 128 +++++++++--------- Linphone/data/languages/en.ts | 128 +++++++++--------- Linphone/data/languages/fr.ts | 128 +++++++++--------- .../Control/Display/Chat/ChatListView.qml | 2 +- .../Form/Settings/ScreencastSettings.qml | 5 +- .../view/Page/Window/Call/CallsWindow.qml | 7 +- 6 files changed, 199 insertions(+), 199 deletions(-) diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index a4faeb690..28ee0a332 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -1692,7 +1692,7 @@ - + call_action_show_dialer "Pavé numérique" Wähltastatur @@ -1717,7 +1717,7 @@ - + call_action_go_to_settings "Paramètres" Einstellungen @@ -1729,34 +1729,34 @@ Bildschirm teilen - + conference_share_link_title Partager le lien de la réunion Besprechungs-Link teilen - + copied Copié Kopiert - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Der Besprechungs-Link wurde in die Zwischenablage kopiert - - - + + + conference_participants_list_title "Participants (%1)" Teilnehmer (%1) - - + + group_call_participant_selected 1 ausgewählter Teilnehmer @@ -1764,7 +1764,7 @@ - + meeting_schedule_add_participants_title Teilnehmer hinzufügen @@ -1810,148 +1810,148 @@ Statistiken - - + + call_action_end_call "Terminer l'appel" Anruf beenden - + call_action_resume_call "Reprendre l'appel" Anruf fortsetzen - - + + call_action_pause_call "Mettre l'appel en pause" Anruf pausieren - - + + call_action_transfer_call "Transférer l'appel" Anruf weiterleiten - - + + call_action_start_new_call_hint "Initier un nouvel appel" Neuen Anruf starten - - + + call_display_call_list_hint "Afficher la liste d'appels" Anrufliste anzeigen - - + + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Video deaktivieren - - + + call_activate_video_hint Video aktivieren - + call_activate_microphone "Activer le micro" Mikrofon aktivieren - - + + call_deactivate_microphone "Désactiver le micro" Mikrofon stummschalten - - + + call_share_screen_hint Partager l'écran… Bildschirm teilen… - - + + call_open_chat_hint Open chat… - - + + call_rise_hand_hint "Lever la main" Hand heben - - + + call_send_reaction_hint "Envoyer une réaction" Reaktion senden - - + + call_manage_participants_hint "Gérer les participants" Teilnehmer verwalten - - + + call_more_options_hint "Plus d'options…" Weitere Optionen… - + call_action_change_conference_layout "Modifier la disposition" Layout ändern - + call_action_full_screen "Mode Plein écran" Vollbildmodus - + call_action_stop_recording "Terminer l'enregistrement" Aufnahme beenden - + call_action_record "Enregistrer l'appel" Anruf aufnehmen - + call_activate_speaker_hint "Activer le son" Lautsprecher aktivieren - + call_deactivate_speaker_hint "Désactiver le son" Lautsprecher stummschalten @@ -2567,32 +2567,32 @@ Error - + chat_action_start_new_chat "New chat" - + chat_start_group_chat_title "Nouveau groupe" - + chat_action_start_group_chat "Créer" Erstellen - - - + + + information_popup_error_title Fehler - + information_popup_chat_creation_failed_message "La création a échoué" @@ -2603,25 +2603,25 @@ Error Der Codec konnte nicht installiert werden. - + group_chat_error_must_have_name "Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" Sie sind nicht verbunden - + chat_creation_in_progress Creation de la conversation en cours … @@ -5714,37 +5714,37 @@ Pour les activer dans un projet commercial, merci de nous contacter. ScreencastSettings - + screencast_settings_choose_window_text "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" Bitte wählen Sie den Bildschirm oder das Fenster aus, das Sie mit anderen Teilnehmern teilen möchten. - + screencast_settings_all_screen_label "Ecran entier" Vollbild - + screencast_settings_one_window_label "Fenêtre" Fenster - + screencast_settings_screen "Ecran %1" Bildschirm %1 - + stop "Stop Stopp - + share "Partager" Teilen diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index fb7df7795..fc2600385 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -1669,7 +1669,7 @@ - + call_action_show_dialer "Pavé numérique" Dialer @@ -1694,7 +1694,7 @@ - + call_action_go_to_settings "Paramètres" Settings @@ -1706,34 +1706,34 @@ Share your screen - + conference_share_link_title Partager le lien de la réunion Share meeting link - + copied Copié Copied - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Meeting link has been copied to the clipboard - - - + + + conference_participants_list_title "Participants (%1)" Participants (%1) - - + + group_call_participant_selected %1 selected participant @@ -1741,7 +1741,7 @@ - + meeting_schedule_add_participants_title Add participants @@ -1787,148 +1787,148 @@ Statistics - - + + call_action_end_call "Terminer l'appel" End call - + call_action_resume_call "Reprendre l'appel" Resume call - - + + call_action_pause_call "Mettre l'appel en pause" Pause call - - + + call_action_transfer_call "Transférer l'appel" Transfer call - - + + call_action_start_new_call_hint "Initier un nouvel appel" Start new call - - + + call_display_call_list_hint "Afficher la liste d'appels" View call list - - + + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Turn off video - - + + call_activate_video_hint Enable video - + call_activate_microphone "Activer le micro" Activate microphone - - + + call_deactivate_microphone "Désactiver le micro" Mute microphone - - + + call_share_screen_hint Partager l'écran… Share screen… - - + + call_open_chat_hint Open chat… Open conversation… - - + + call_rise_hand_hint "Lever la main" Rise hand - - + + call_send_reaction_hint "Envoyer une réaction" Send reaction - - + + call_manage_participants_hint "Gérer les participants" Manage participants - - + + call_more_options_hint "Plus d'options…" More options… - + call_action_change_conference_layout "Modifier la disposition" Change layout - + call_action_full_screen "Mode Plein écran" Full screen mode - + call_action_stop_recording "Terminer l'enregistrement" End recording - + call_action_record "Enregistrer l'appel" Record call - + call_activate_speaker_hint "Activer le son" Activate speaker - + call_deactivate_speaker_hint "Désactiver le son" Mute speaker @@ -2541,56 +2541,56 @@ Only your correspondent can decrypt them. No conversation in history - + chat_action_start_new_chat "New chat" New conversation - + chat_start_group_chat_title "Nouveau groupe" New group - + chat_action_start_group_chat "Créer" Create - - - + + + information_popup_error_title Error - + information_popup_chat_creation_failed_message "La création a échoué" Creation failed - + group_chat_error_must_have_name "Un nom doit être donné au groupe A name must be set for the group - + group_chat_error_no_participant "Please select at least one participant Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" You are not connected - + chat_creation_in_progress Creation de la conversation en cours … Chat creation pending… @@ -5609,37 +5609,37 @@ To enable them in a commercial project, please contact us. ScreencastSettings - + screencast_settings_choose_window_text "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" Please choose the screen or window you would like to share with other participants. - + screencast_settings_all_screen_label "Ecran entier" Full screen - + screencast_settings_one_window_label "Fenêtre" Window - + screencast_settings_screen "Ecran %1" Screen %1 - + stop "Stop Stop - + share "Partager" Share diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 232c0d1cd..42d2bd247 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -1669,7 +1669,7 @@ - + call_action_show_dialer "Pavé numérique" Pavé numérique @@ -1694,7 +1694,7 @@ - + call_action_go_to_settings "Paramètres" Paramètres @@ -1706,34 +1706,34 @@ Partage de votre écran - + conference_share_link_title Partager le lien de la réunion Partager le lien de la réunion - + copied Copié Copié - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Le lien de la réunion a été copié dans le presse-papier - - - + + + conference_participants_list_title "Participants (%1)" Participants (%1) - - + + group_call_participant_selected %1 participant sélectionné @@ -1741,7 +1741,7 @@ - + meeting_schedule_add_participants_title Ajouter des participants @@ -1787,148 +1787,148 @@ Statistiques - - + + call_action_end_call "Terminer l'appel" Terminer l'appel - + call_action_resume_call "Reprendre l'appel" Reprendre l'appel - - + + call_action_pause_call "Mettre l'appel en pause" Mettre l'appel en pause - - + + call_action_transfer_call "Transférer l'appel" Transférer l'appel - - + + call_action_start_new_call_hint "Initier un nouvel appel" Initier un nouvel appel - - + + call_display_call_list_hint "Afficher la liste d'appels" Afficher la liste d'appels - - + + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Désactiver la vidéo - - + + call_activate_video_hint Activer la vidéo - + call_activate_microphone "Activer le micro" Activer le micro - - + + call_deactivate_microphone "Désactiver le micro" Désactiver le micro - - + + call_share_screen_hint Partager l'écran… Partager l'écran… - - + + call_open_chat_hint Open chat… Ouvrir le chat… - - + + call_rise_hand_hint "Lever la main" Lever la main - - + + call_send_reaction_hint "Envoyer une réaction" Envoyer une réaction - - + + call_manage_participants_hint "Gérer les participants" Gérer les participants - - + + call_more_options_hint "Plus d'options…" Plus d'options… - + call_action_change_conference_layout "Modifier la disposition" Modifier la disposition - + call_action_full_screen "Mode Plein écran" Mode Plein écran - + call_action_stop_recording "Terminer l'enregistrement" Terminer l'enregistrement - + call_action_record "Enregistrer l'appel" Enregistrer l'appel - + call_activate_speaker_hint "Activer le son" Activer le son - + call_deactivate_speaker_hint "Désactiver le son" Désactiver le son @@ -2541,56 +2541,56 @@ en bout. Seul votre correspondant peut les déchiffrer. Aucune conversation dans votre historique - + chat_action_start_new_chat "New chat" Nouvelle conversation - + chat_start_group_chat_title "Nouveau groupe" Nouveau groupe - + chat_action_start_group_chat "Créer" Créer - - - + + + information_popup_error_title Erreur - + information_popup_chat_creation_failed_message "La création a échoué" La création a échoué - + group_chat_error_must_have_name "Un nom doit être donné au groupe Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant Veuillez sélectionner au moins un participant - + group_call_error_not_connected "Vous n'etes pas connecté" Vous n'êtes pas connecté - + chat_creation_in_progress Creation de la conversation en cours … Création de la conversation en cours… @@ -5609,37 +5609,37 @@ Pour les activer dans un projet commercial, merci de nous contacter. ScreencastSettings - + screencast_settings_choose_window_text "Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants" Veuillez choisir l’écran ou la fenêtre que vous souihaitez partager au autres participants - + screencast_settings_all_screen_label "Ecran entier" Écran entier - + screencast_settings_one_window_label "Fenêtre" Fenêtre - + screencast_settings_screen "Ecran %1" Écran %1 - + stop "Stop Stop - + share "Partager" Partager diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index 8009ed150..e9eedf35c 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -372,7 +372,7 @@ ListView { } } IconLabelButton { - visible: modelData.core.unreadMessagesCount !== 0 + visible: modelData && modelData.core.unreadMessagesCount !== 0 || false //: "Mark as read" text: qsTr("chat_room_mark_as_read") icon.source: AppIcons.checks diff --git a/Linphone/view/Control/Form/Settings/ScreencastSettings.qml b/Linphone/view/Control/Form/Settings/ScreencastSettings.qml index 8801975a0..340c834dd 100644 --- a/Linphone/view/Control/Form/Settings/ScreencastSettings.qml +++ b/Linphone/view/Control/Form/Settings/ScreencastSettings.qml @@ -15,8 +15,6 @@ ColumnLayout { property bool isLocalScreenSharing : conference?.core.isLocalScreenSharing || false property bool screenSharingAvailable: !!conference && (!conference.core.isScreenSharingEnabled || isLocalScreenSharing) - signal screenSharingToggled() - spacing: Utils.getSizeWithScreenRatio(12) onIsLocalScreenSharingChanged: {if(isLocalScreenSharing) mainItem.call.core.videoSourceDescriptor = mainItem.desc } @@ -175,7 +173,7 @@ ColumnLayout { Layout.preferredHeight: height height: implicitHeight visible: mainItem.screenSharingAvailable$ - enabled: windowsLayout.currentIndex !== -1 || screensLayout.currentIndex !== -1 + enabled: mainItem.isLocalScreenSharing || windowsLayout.currentIndex !== -1 || screensLayout.currentIndex !== -1 text: mainItem.conference && mainItem.conference.core.isLocalScreenSharing //: "Stop ? qsTr("stop") @@ -183,7 +181,6 @@ ColumnLayout { : qsTr("share") onClicked: { mainItem.conference.core.lToggleScreenSharing() - mainItem.screenSharingToggled() } style: ButtonStyle.main } diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index 000398c02..bde37f29a 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -1039,8 +1039,11 @@ AbstractWindow { anchors.topMargin: Utils.getSizeWithScreenRatio(16) width: parent.width call: mainWindow.call - // auto close panel just before activating screen sharing - onScreenSharingToggled: if (!isLocalScreenSharing) rightPanel.visible = false + onIsLocalScreenSharingChanged: { + // Check if component is ready as well so we can reopen the panel after starting sharing screen + // and change shared window or screen if needed + if (isLocalScreenSharing && status === Component.Ready) rightPanel.visible = false + } } } } From 2fc4439e1624b82881b02eda6b7558de766b7968 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 17 Nov 2025 10:56:57 +0100 Subject: [PATCH 38/72] Disable notifications if Offline status #LINQT-2173 --- Linphone/model/account/AccountModel.cpp | 2 +- Linphone/view/Page/Main/Account/AccountListView.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Linphone/model/account/AccountModel.cpp b/Linphone/model/account/AccountModel.cpp index e47b10a9f..44f8d0925 100644 --- a/Linphone/model/account/AccountModel.cpp +++ b/Linphone/model/account/AccountModel.cpp @@ -585,7 +585,7 @@ void AccountModel::setPresence(LinphoneEnums::Presence presence, } setNotificationsAllowed( - presence != LinphoneEnums::Presence::DoNotDisturb && + presence != LinphoneEnums::Presence::Offline && presence != LinphoneEnums::Presence::DoNotDisturb && (presence != LinphoneEnums::Presence::Away || core->getConfig()->getBool(accountSection, "allow_notifications_in_presence_away", true)) && (presence != LinphoneEnums::Presence::Busy || diff --git a/Linphone/view/Page/Main/Account/AccountListView.qml b/Linphone/view/Page/Main/Account/AccountListView.qml index 8026ace43..98d80954b 100644 --- a/Linphone/view/Page/Main/Account/AccountListView.qml +++ b/Linphone/view/Page/Main/Account/AccountListView.qml @@ -94,6 +94,6 @@ ColumnLayout{ != 0 ? getNextItem( AppCpp.accounts.getCount()) : null } - } +} From fa3ef0b1a8d305f824e78d16ac65153cdc18db9b Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 17 Nov 2025 15:22:16 +0100 Subject: [PATCH 39/72] try to fix crash when ChatCore destroyed and connection with model is still alive --- Linphone/core/chat/ChatCore.cpp | 1 + Linphone/data/languages/de.ts | 4 ++-- Linphone/data/languages/en.ts | 4 ++-- Linphone/data/languages/fr.ts | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Linphone/core/chat/ChatCore.cpp b/Linphone/core/chat/ChatCore.cpp index 8a8365940..5e8ae5bde 100644 --- a/Linphone/core/chat/ChatCore.cpp +++ b/Linphone/core/chat/ChatCore.cpp @@ -118,6 +118,7 @@ ChatCore::ChatCore(const std::shared_ptr &chatRoom) : QObjec ChatCore::~ChatCore() { lDebug() << "[ChatCore] delete" << this; mustBeInMainThread("~" + getClassName()); + if (mChatModelConnection) mChatModelConnection->disconnect(); emit mChatModel->removeListener(); } diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 28ee0a332..b79517892 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2082,13 +2082,13 @@ ChatCore - + info_toast_deleted_title Deleted - + info_toast_deleted_message_history Message history has been deleted diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index fc2600385..75fea3cea 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2059,13 +2059,13 @@ ChatCore - + info_toast_deleted_title Deleted Deleted - + info_toast_deleted_message_history Message history has been deleted Message history has been deleted diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 42d2bd247..8f4907ad2 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2059,13 +2059,13 @@ ChatCore - + info_toast_deleted_title Deleted Supprimé - + info_toast_deleted_message_history Message history has been deleted L'historique des messages a été supprimé From 7a4adbcbb45f681b47596f194e0ea75d46d681b4 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 17 Nov 2025 17:09:24 +0100 Subject: [PATCH 40/72] remove loader from image so the icons are not reloaded each time a list layout change remove button color warning --- Linphone/view/Control/Button/Button.qml | 9 +- .../view/Control/Display/Contact/Avatar.qml | 1 - Linphone/view/Control/Display/EffectImage.qml | 139 +++++++++--------- 3 files changed, 71 insertions(+), 78 deletions(-) diff --git a/Linphone/view/Control/Button/Button.qml b/Linphone/view/Control/Button/Button.qml index a93c138b0..e6007dff9 100644 --- a/Linphone/view/Control/Button/Button.qml +++ b/Linphone/view/Control/Button/Button.qml @@ -52,14 +52,14 @@ Control.Button { property real keyboardFocusedBorderWidth: Utils.getSizeWithScreenRatio(3) // Image properties property var contentImageColor: style?.image? style.image.normal : DefaultStyle.main2_600 - property var hoveredImageColor: style?.image? style.image.hovered : Qt.darker(contentImageColor, 1.05) - property var checkedImageColor: style?.image? style.image.checked : Qt.darker(contentImageColor, 1.1) - property var pressedImageColor: style?.image? style.image.pressed : Qt.darker(contentImageColor, 1.1) + property var hoveredImageColor: style && style.image && style.image.hovered ? style.image.hovered : Qt.darker(contentImageColor, 1.05) + property var checkedImageColor: style && style.image && style.image.checked ? style.image.checked : Qt.darker(contentImageColor, 1.1) + property var pressedImageColor: style && style.image && style.image.pressed ? style.image.pressed : Qt.darker(contentImageColor, 1.1) icon.source: style?.iconSource || "" property color colorizationColor: checkable && checked ? checkedImageColor : pressed - ? pressedImageColor + ? pressedImageColor : hovered ? hoveredImageColor : contentImageColor @@ -153,7 +153,6 @@ Control.Button { } component ButtonImage: EffectImage { - asynchronous: mainItem.asynchronous imageSource: mainItem.icon.source imageWidth: mainItem.icon.width imageHeight: mainItem.icon.height diff --git a/Linphone/view/Control/Display/Contact/Avatar.qml b/Linphone/view/Control/Display/Contact/Avatar.qml index 6dc981534..301f771c0 100644 --- a/Linphone/view/Control/Display/Contact/Avatar.qml +++ b/Linphone/view/Control/Display/Contact/Avatar.qml @@ -102,7 +102,6 @@ Loader{ anchors.bottom: parent.bottom width: parent.width / 4.5 height: width - asynchronous: true imageSource: mainItem.secured ? AppIcons.trusted : AppIcons.notTrusted fillMode: Image.PreserveAspectFit diff --git a/Linphone/view/Control/Display/EffectImage.qml b/Linphone/view/Control/Display/EffectImage.qml index d285b93a4..9a406f80d 100644 --- a/Linphone/view/Control/Display/EffectImage.qml +++ b/Linphone/view/Control/Display/EffectImage.qml @@ -5,85 +5,80 @@ import QtQuick.Effects import Linphone -// The loader is needed here to refresh the colorization effect (effect2) which is not refreshed when visibility change -// and causes colorization issue when effect image is inside a popup -Loader { +// TODO : A loader may be needed here to refresh the colorization effect (effect2) which is not refreshed when visibility change +// and causes colorization issue when effect image is inside a popup (not seen in the popup recently tested, may be an obsolete bug) +Item { id: mainItem - active: visible property url imageSource: "" property var fillMode: Image.PreserveAspectFit property var colorizationColor - property real imageWidth: width - property real imageHeight: height + property real imageWidth: width + property real imageHeight: height property bool useColor: colorizationColor != undefined property bool shadowEnabled: false property bool isImageReady: false - asynchronous: true - sourceComponent: Component{Item { - Image { - id: image - visible: !effect2.effectEnabled - source: mainItem.imageSource - fillMode: mainItem.fillMode - sourceSize.width: width - sourceSize.height: height - width: mainItem.imageWidth - height: mainItem.imageHeight - Layout.preferredWidth: mainItem.imageWidth - Layout.preferredHeight: mainItem.imageHeight - anchors.centerIn: parent - onStatusChanged: mainItem.isImageReady = (status == Image.Ready) - } - MultiEffect { - id: effect - visible: false - anchors.fill: image - source: image - maskSource: image - brightness: effect2.effectEnabled ? 1.0 : 0.0 - } - - MultiEffect { - id: effect2 - enabled: effectEnabled - visible: mainItem.useColor - property bool effectEnabled: mainItem.useColor - anchors.fill: effect - source: effect - maskSource: effect - colorizationColor: effectEnabled && mainItem.colorizationColor ? mainItem.colorizationColor : 'black' - colorization: effectEnabled ? 1.0: 0.0 - } - /* Alernative to shadow for no blackcolors - MultiEffect { - visible: mainItem.shadowEnabled - source: image - width: image.width - height: image.height - x: image.x - y: image.y + 6 - z: -1 - blurEnabled: true - blurMax: 12 - blur: 1.0 - contrast: -1.0 - brightness: 1.0 - colorizationColor: DefaultStyle.grey_400 - colorization: 1.0 - }*/ - MultiEffect { - id: shadow - enabled: mainItem.shadowEnabled - anchors.fill: image - source: image - visible: mainItem.shadowEnabled - // Crash : https://bugreports.qt.io/browse/QTBUG-124730? - shadowEnabled: true //mainItem.shadowEnabled - shadowColor: DefaultStyle.grey_1000 - shadowBlur: 0 - shadowOpacity: mainItem.shadowEnabled ? 0.7 : 0.0 - z: mainItem.z - 1 - } + Image { + id: image + visible: !effect2.effectEnabled + source: mainItem.imageSource + fillMode: mainItem.fillMode + sourceSize.width: width + sourceSize.height: height + width: mainItem.imageWidth + height: mainItem.imageHeight + Layout.preferredWidth: mainItem.imageWidth + Layout.preferredHeight: mainItem.imageHeight + anchors.centerIn: parent + onStatusChanged: mainItem.isImageReady = (status == Image.Ready) } + MultiEffect { + id: effect + visible: false + anchors.fill: image + source: image + maskSource: image + brightness: effect2.effectEnabled ? 1.0 : 0.0 + } + + MultiEffect { + id: effect2 + enabled: effectEnabled + visible: mainItem.useColor + property bool effectEnabled: mainItem.useColor + anchors.fill: effect + source: effect + maskSource: effect + colorizationColor: effectEnabled && mainItem.colorizationColor ? mainItem.colorizationColor : 'black' + colorization: effectEnabled ? 1.0: 0.0 + } + /* Alernative to shadow for no blackcolors + MultiEffect { + visible: mainItem.shadowEnabled + source: image + width: image.width + height: image.height + x: image.x + y: image.y + 6 + z: -1 + blurEnabled: true + blurMax: 12 + blur: 1.0 + contrast: -1.0 + brightness: 1.0 + colorizationColor: DefaultStyle.grey_400 + colorization: 1.0 + }*/ + MultiEffect { + id: shadow + enabled: mainItem.shadowEnabled + anchors.fill: image + source: image + visible: mainItem.shadowEnabled + // Crash : https://bugreports.qt.io/browse/QTBUG-124730? + shadowEnabled: true //mainItem.shadowEnabled + shadowColor: DefaultStyle.grey_1000 + shadowBlur: 0 + shadowOpacity: mainItem.shadowEnabled ? 0.7 : 0.0 + z: mainItem.z - 1 } } From bfbafab84b84402d2ac9177e44722d8b77acd711 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 17 Nov 2025 17:45:20 +0100 Subject: [PATCH 41/72] fix verification when trying to connect to an account that is already connected --- Linphone/data/languages/de.ts | 14 +++++++------- Linphone/data/languages/en.ts | 14 +++++++------- Linphone/data/languages/fr.ts | 14 +++++++------- Linphone/model/account/AccountManager.cpp | 11 ++++++++--- 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index b79517892..23cc870a6 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" Das Konto ist bereits verbunden - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Proxy-Adresse konnte nicht erstellt werden. Bitte überprüfen Sie den Domänenname. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Folgende Adresse konnte nicht konfiguriert werden: `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Kontoeinstellungen konnten nicht konfiguriert werden. - + assistant_account_login_forbidden_error "Username and password do not match" Benutzername und Passwort stimmen nicht überein - + assistant_account_login_error "Error during connection, please verify your parameters" Fehler bei der Verbindung - + assistant_account_add_error "Unable to add account." Konto konnte nicht hinzugefügt werden. diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 75fea3cea..d73c3dc56 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" The account is already connected - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Unable to create proxy address. Please check the domain name. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Unable to configure address: `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Unable to configure account settings. - + assistant_account_login_forbidden_error "Username and password do not match" Username and password do not match - + assistant_account_login_error "Error during connection, please verify your parameters" Error during connection - + assistant_account_add_error "Unable to add account." Unable to add account. diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 8f4907ad2..b7e40b5dc 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" Le compte est déjà connecté - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Impossible de créer l'adresse proxy. Merci de vérifier le nom de domaine. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Impossible de configurer l'adresse : `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Impossible de configurer les paramètres du compte. - + assistant_account_login_forbidden_error "Username and password do not match" Le couple identifiant mot de passe ne correspond pas - + assistant_account_login_error "Error during connection, please verify your parameters" Erreur durant la connexion, veuillez vérifier vos paramètres - + assistant_account_add_error "Unable to add account." Impossible d'ajouter le compte. diff --git a/Linphone/model/account/AccountManager.cpp b/Linphone/model/account/AccountManager.cpp index 4d8911e3f..9649150f5 100644 --- a/Linphone/model/account/AccountManager.cpp +++ b/Linphone/model/account/AccountManager.cpp @@ -67,7 +67,7 @@ bool AccountManager::login(QString username, mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); auto core = CoreModel::getInstance()->getCore(); auto factory = linphone::Factory::get(); - QString assistantFile = (!QString::compare(domain, "sip.linphone.org") || domain.isEmpty()) + QString assistantFile = (!QString::compare(domain, "sip.linphone.org", Qt::CaseInsensitive) || domain.isEmpty()) ? "use-app-sip-account.rc" : "use-other-sip-account.rc"; auto account = createAccount(assistantFile); @@ -82,8 +82,13 @@ bool AccountManager::login(QString username, auto otherAccounts = core->getAccountList(); for (auto otherAccount : otherAccounts) { auto otherParams = otherAccount->getParams(); - if (otherParams->getIdentityAddress()->getUsername() == Utils::appStringToCoreString(username) && - otherParams->getDomain() == Utils::appStringToCoreString(domain)) { + if (domain.isEmpty()) { + lDebug() << "domain is empty, setting \"sip.linphone.org\" by default"; + domain = "sip.linphone.org"; + } + if (!QString::compare(Utils::coreStringToAppString(otherParams->getIdentityAddress()->getUsername()), username, + Qt::CaseInsensitive) && + !QString::compare(Utils::coreStringToAppString(otherParams->getDomain()), domain, Qt::CaseInsensitive)) { //: "The account is already connected" *errorMessage = tr("assistant_account_login_already_connected_error"); return false; From 72e32ec160586115b075ea037dbef6d3c37f82de Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Tue, 18 Nov 2025 08:33:13 +0100 Subject: [PATCH 42/72] fix third party connection #LINQT-2180 #LINQT-2181 --- Linphone/data/languages/de.ts | 14 +++++++------- Linphone/data/languages/en.ts | 14 +++++++------- Linphone/data/languages/fr.ts | 14 +++++++------- Linphone/model/account/AccountManager.cpp | 10 +++++++++- Linphone/view/Page/Form/Login/SIPLoginPage.qml | 2 +- 5 files changed, 31 insertions(+), 23 deletions(-) diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 23cc870a6..4ffe69aeb 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" Das Konto ist bereits verbunden - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Proxy-Adresse konnte nicht erstellt werden. Bitte überprüfen Sie den Domänenname. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Folgende Adresse konnte nicht konfiguriert werden: `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Kontoeinstellungen konnten nicht konfiguriert werden. - + assistant_account_login_forbidden_error "Username and password do not match" Benutzername und Passwort stimmen nicht überein - + assistant_account_login_error "Error during connection, please verify your parameters" Fehler bei der Verbindung - + assistant_account_add_error "Unable to add account." Konto konnte nicht hinzugefügt werden. diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index d73c3dc56..612674dc9 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" The account is already connected - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Unable to create proxy address. Please check the domain name. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Unable to configure address: `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Unable to configure account settings. - + assistant_account_login_forbidden_error "Username and password do not match" Username and password do not match - + assistant_account_login_error "Error during connection, please verify your parameters" Error during connection - + assistant_account_add_error "Unable to add account." Unable to add account. diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index b7e40b5dc..2a42761e8 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" Le compte est déjà connecté - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Impossible de créer l'adresse proxy. Merci de vérifier le nom de domaine. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Impossible de configurer l'adresse : `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Impossible de configurer les paramètres du compte. - + assistant_account_login_forbidden_error "Username and password do not match" Le couple identifiant mot de passe ne correspond pas - + assistant_account_login_error "Error during connection, please verify your parameters" Erreur durant la connexion, veuillez vérifier vos paramètres - + assistant_account_add_error "Unable to add account." Impossible d'ajouter le compte. diff --git a/Linphone/model/account/AccountManager.cpp b/Linphone/model/account/AccountManager.cpp index 9649150f5..8ef4817cb 100644 --- a/Linphone/model/account/AccountManager.cpp +++ b/Linphone/model/account/AccountManager.cpp @@ -65,6 +65,14 @@ bool AccountManager::login(QString username, QString outboundProxyAddress, QString connectionId) { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); + qDebug() << "login with parameters :"; + qDebug() << "username" << username; + qDebug() << "password" << password; + qDebug() << "displayName" << displayName; + qDebug() << "domain" << domain; + qDebug() << "registrarUri" << registrarUri; + qDebug() << "outboundProxyAddress" << outboundProxyAddress; + qDebug() << "connectionId" << connectionId; auto core = CoreModel::getInstance()->getCore(); auto factory = linphone::Factory::get(); QString assistantFile = (!QString::compare(domain, "sip.linphone.org", Qt::CaseInsensitive) || domain.isEmpty()) @@ -102,7 +110,7 @@ bool AccountManager::login(QString username, } if (!outboundProxyAddress.isEmpty()) { auto linOutboundProxyAddress = ToolModel::interpretUrl(outboundProxyAddress); - params->setRoutesAddresses({linOutboundProxyAddress}); + if (linOutboundProxyAddress) params->setRoutesAddresses({linOutboundProxyAddress}); } if (!domain.isEmpty()) { identity->setDomain(Utils::appStringToCoreString(domain)); diff --git a/Linphone/view/Page/Form/Login/SIPLoginPage.qml b/Linphone/view/Page/Form/Login/SIPLoginPage.qml index d36c3c2d6..55b5bbfd1 100644 --- a/Linphone/view/Page/Form/Login/SIPLoginPage.qml +++ b/Linphone/view/Page/Form/Login/SIPLoginPage.qml @@ -361,7 +361,7 @@ LoginLayout { } console.debug("[SIPLoginPage] User: Log in") LoginPageCpp.login(usernameEdit.text, passwordEdit.text, displayName.text, domainEdit.text, - transportCbox.currentValue, serverAddressEdit.text, connectionIdEdit.text); + transportCbox.currentValue, registrarUriEdit.text, outboundProxyUriEdit.text, connectionIdEdit.text); connectionButton.enabled = false connectionButtonContent.currentIndex = 1 } From 3c264fd3eea6c42726ea8532f81f21f7d98827b7 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Tue, 18 Nov 2025 11:27:59 +0100 Subject: [PATCH 43/72] Set camera state on call creation in order to avoid using not wanted state while updating the call. Cause: toggling screensharing will activate the camera if the call is a video call. --- Linphone/model/tool/ToolModel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Linphone/model/tool/ToolModel.cpp b/Linphone/model/tool/ToolModel.cpp index 2ce9478ed..f9363aca8 100644 --- a/Linphone/model/tool/ToolModel.cpp +++ b/Linphone/model/tool/ToolModel.cpp @@ -321,6 +321,7 @@ bool ToolModel::createCall(const QString &sipAddress, } std::shared_ptr params = core->createCallParams(nullptr); params->enableVideo(localVideoEnabled); + params->enableCamera(localVideoEnabled); auto videoDirection = localVideoEnabled ? linphone::MediaDirection::SendRecv : linphone::MediaDirection::RecvOnly; params->setVideoDirection(videoDirection); From b802fec33c49398f8ab5e97d93dac4a5e68633f2 Mon Sep 17 00:00:00 2001 From: "gaelle.braud" Date: Tue, 18 Nov 2025 14:41:09 +0100 Subject: [PATCH 44/72] hide chatroom actions if user left group #LINQT-2189 hide new group chat button if no conference factory uri defined for the account #LINQT-2178 --- Linphone/core/proxy/SortFilterProxy.cpp | 14 +++++++++++++ Linphone/data/languages/de.ts | 20 +++++++++---------- Linphone/data/languages/en.ts | 20 +++++++++---------- Linphone/data/languages/fr.ts | 20 +++++++++---------- .../view/Page/Form/Chat/SelectedChatView.qml | 2 +- .../Page/Layout/Chat/ConversationInfos.qml | 1 + .../Settings/AccountSettingsGeneralLayout.qml | 2 +- Linphone/view/Page/Main/Chat/ChatPage.qml | 1 + 8 files changed, 48 insertions(+), 32 deletions(-) diff --git a/Linphone/core/proxy/SortFilterProxy.cpp b/Linphone/core/proxy/SortFilterProxy.cpp index aaa532a6e..a7078f99e 100644 --- a/Linphone/core/proxy/SortFilterProxy.cpp +++ b/Linphone/core/proxy/SortFilterProxy.cpp @@ -63,9 +63,14 @@ int SortFilterProxy::getFilterType() const { void SortFilterProxy::setFilterType(int filterType) { if (getFilterType() != filterType) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) beginFilterChange(); mFilterType = filterType; endFilterChange(); +#else + mFilterType = filterType; + invalidateFilter(); +#endif emit filterTypeChanged(filterType); } } @@ -76,9 +81,14 @@ QString SortFilterProxy::getFilterText() const { void SortFilterProxy::setFilterText(const QString &filter) { if (mFilterText != filter) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) beginFilterChange(); mFilterText = filter; endFilterChange(); +#else + mFilterText = filter; + invalidateFilter(); +#endif emit filterTextChanged(); } } @@ -92,6 +102,10 @@ void SortFilterProxy::remove(int index, int count) { } void SortFilterProxy::invalidateFilter() { +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) QSortFilterProxyModel::beginFilterChange(); QSortFilterProxyModel::endFilterChange(); +#else + invalidateFilter(); +#endif } diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 4ffe69aeb..4b6bf5584 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2573,26 +2573,26 @@ Error - + chat_start_group_chat_title "Nouveau groupe" - + chat_action_start_group_chat "Créer" Erstellen - - - + + + information_popup_error_title Fehler - + information_popup_chat_creation_failed_message "La création a échoué" @@ -2603,25 +2603,25 @@ Error Der Codec konnte nicht installiert werden. - + group_chat_error_must_have_name "Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" Sie sind nicht verbunden - + chat_creation_in_progress Creation de la conversation en cours … diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 612674dc9..7f2532e2b 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2547,50 +2547,50 @@ Only your correspondent can decrypt them. New conversation - + chat_start_group_chat_title "Nouveau groupe" New group - + chat_action_start_group_chat "Créer" Create - - - + + + information_popup_error_title Error - + information_popup_chat_creation_failed_message "La création a échoué" Creation failed - + group_chat_error_must_have_name "Un nom doit être donné au groupe A name must be set for the group - + group_chat_error_no_participant "Please select at least one participant Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" You are not connected - + chat_creation_in_progress Creation de la conversation en cours … Chat creation pending… diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 2a42761e8..7aeb62926 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2547,50 +2547,50 @@ en bout. Seul votre correspondant peut les déchiffrer. Nouvelle conversation - + chat_start_group_chat_title "Nouveau groupe" Nouveau groupe - + chat_action_start_group_chat "Créer" Créer - - - + + + information_popup_error_title Erreur - + information_popup_chat_creation_failed_message "La création a échoué" La création a échoué - + group_chat_error_must_have_name "Un nom doit être donné au groupe Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant Veuillez sélectionner au moins un participant - + group_call_error_not_connected "Vous n'etes pas connecté" Vous n'êtes pas connecté - + chat_creation_in_progress Creation de la conversation en cours … Création de la conversation en cours… diff --git a/Linphone/view/Page/Form/Chat/SelectedChatView.qml b/Linphone/view/Page/Form/Chat/SelectedChatView.qml index ddd71235e..5043d0c5a 100644 --- a/Linphone/view/Page/Form/Chat/SelectedChatView.qml +++ b/Linphone/view/Page/Form/Chat/SelectedChatView.qml @@ -135,7 +135,7 @@ FocusScope { RowLayout { spacing: Utils.getSizeWithScreenRatio(16) RoundButton { - visible: !mainItem.call + visible: !mainItem.call && !mainItem.chat?.core.isReadOnly style: ButtonStyle.noBackground icon.source: AppIcons.phone onPressed: { diff --git a/Linphone/view/Page/Layout/Chat/ConversationInfos.qml b/Linphone/view/Page/Layout/Chat/ConversationInfos.qml index eddad7739..35bb8319d 100644 --- a/Linphone/view/Page/Layout/Chat/ConversationInfos.qml +++ b/Linphone/view/Page/Layout/Chat/ConversationInfos.qml @@ -171,6 +171,7 @@ ColumnLayout { } RowLayout { + visible: !mainItem.chatCore.isReadOnly spacing: Utils.getSizeWithScreenRatio(10) Layout.alignment: Qt.AlignHCenter Layout.topMargin: Utils.getSizeWithScreenRatio(30) diff --git a/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml b/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml index 6c9345f9a..7e36fddd0 100644 --- a/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml +++ b/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml @@ -130,7 +130,7 @@ AbstractSettingsLayout { } else { UtilsCpp.showInformationPopup(qsTr("error"), //: Error copying your SIP address - qsTr("account_settings_sip_address_copied_error_message")) + qsTr("account_settings_sip_address_copied_error_message"), false) } } } diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index c1db27782..315834520 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -261,6 +261,7 @@ AbstractMainPage { } NewChatForm { id: newChatForm + startGroupButtonVisible: mainItem.account && mainItem.account.core.conferenceFactoryAddress !== "" Layout.fillWidth: true Layout.fillHeight: true Layout.rightMargin: Utils.getSizeWithScreenRatio(8) From d0cf951fe45bb0c527078dbeb4e1ced5f2482dd8 Mon Sep 17 00:00:00 2001 From: gaelle Date: Wed, 19 Nov 2025 14:35:00 +0100 Subject: [PATCH 45/72] fix thumbnail download paths leading to wrong thumbnail path and thumbnail not displayed in message when multiple files sent remove qt5compat dependency README --- Linphone/core/setting/SettingsCore.cpp | 3 ++- .../model/chat/message/content/ChatMessageContentModel.cpp | 4 ++-- Linphone/view/Control/Display/Chat/FileView.qml | 2 +- README.md | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Linphone/core/setting/SettingsCore.cpp b/Linphone/core/setting/SettingsCore.cpp index 8a489118a..1044387d2 100644 --- a/Linphone/core/setting/SettingsCore.cpp +++ b/Linphone/core/setting/SettingsCore.cpp @@ -1038,7 +1038,8 @@ QString SettingsCore::getConfigLocale() const { QString SettingsCore::getDownloadFolder() const { auto path = mDownloadFolder; if (mDownloadFolder.isEmpty()) path = Paths::getDownloadDirPath(); - return QDir::cleanPath(path) + QDir::separator(); + QString cleanPath = QDir::cleanPath(path); + return cleanPath; } void SettingsCore::writeIntoModel(std::shared_ptr model) const { diff --git a/Linphone/model/chat/message/content/ChatMessageContentModel.cpp b/Linphone/model/chat/message/content/ChatMessageContentModel.cpp index 181049d04..2345c56fd 100644 --- a/Linphone/model/chat/message/content/ChatMessageContentModel.cpp +++ b/Linphone/model/chat/message/content/ChatMessageContentModel.cpp @@ -121,10 +121,10 @@ bool ChatMessageContentModel::downloadFile(const QString &name, QString *error) } else { lDebug() << log().arg("download file : %1").arg(name); auto downloaded = mChatMessageModel->getMonitor()->downloadContent(mContent); - if (!downloaded && error) { + if (!downloaded) { lWarning() << QStringLiteral("Unable to download file of entry %1.").arg(name); //: Unable to download file of entry %1 - *error = tr("download_file_error_unable_to_download").arg(name); + if (error) *error = tr("download_file_error_unable_to_download").arg(name); } return downloaded; } diff --git a/Linphone/view/Control/Display/Chat/FileView.qml b/Linphone/view/Control/Display/Chat/FileView.qml index fa9b7f399..9cd3e7860 100644 --- a/Linphone/view/Control/Display/Chat/FileView.qml +++ b/Linphone/view/Control/Display/Chat/FileView.qml @@ -14,7 +14,7 @@ import 'qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js' as Utils Item { id: mainItem property ChatMessageContentGui contentGui - property string thumbnail: contentGui && contentGui.core.thumbnail + property string thumbnail: contentGui && contentGui.core.thumbnail || "" property string name: contentGui && contentGui.core.name property string filePath: contentGui && contentGui.core.filePath property bool wasDownloaded: contentGui && contentGui.core.wasDownloaded diff --git a/README.md b/README.md index f722b117a..9e6de4739 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ For Desktop : you will need QT6 (_6.10.0 or newer_). `C++17` support is required - Using the [official QT installer](https://www.qt.io/download-thank-you) - Using an alternative installer like [aqtinstall](https://github.com/miurahr/aqtinstall) -The following QT optional modules are required: qt5compat, qtmultimedia qtnetworkauth qtshadertools . +The following QT optional modules are required: qtmultimedia qtnetworkauth qtshadertools . ### Set your environment From db5f6dc2af4fb616dd8d9aec3fd78c2c862edd7d Mon Sep 17 00:00:00 2001 From: gaelle Date: Thu, 20 Nov 2025 15:21:04 +0100 Subject: [PATCH 46/72] fix thumbnail path initialized with \\ when sent from Windows device --- .../core/chat/message/ChatMessageCore.cpp | 153 +++++++++--------- .../content/ChatMessageContentCore.cpp | 12 +- .../content/ChatMessageContentCore.hpp | 8 +- .../view/Control/Display/Chat/FileView.qml | 7 +- 4 files changed, 92 insertions(+), 88 deletions(-) diff --git a/Linphone/core/chat/message/ChatMessageCore.cpp b/Linphone/core/chat/message/ChatMessageCore.cpp index 8cbd82dbd..ff1dbe9fc 100644 --- a/Linphone/core/chat/message/ChatMessageCore.cpp +++ b/Linphone/core/chat/message/ChatMessageCore.cpp @@ -112,88 +112,91 @@ ChatMessageCore::ChatMessageCore(const std::shared_ptr &c // lDebug() << "[ChatMessageCore] new" << this; mustBeInLinphoneThread(getClassName()); App::getInstance()->mEngine->setObjectOwnership(this, QQmlEngine::CppOwnership); - mChatMessageModel = Utils::makeQObject_ptr(chatmessage); - mChatMessageModel->setSelf(mChatMessageModel); - mText = ToolModel::getMessageFromContent(chatmessage->getContents()); - mUtf8Text = mChatMessageModel->getUtf8Text(); - mHasTextContent = mChatMessageModel->getHasTextContent(); - mTimestamp = QDateTime::fromSecsSinceEpoch(chatmessage->getTime()); - mIsOutgoing = chatmessage->isOutgoing(); - mIsRemoteMessage = !chatmessage->isOutgoing(); - mPeerAddress = Utils::coreStringToAppString(chatmessage->getPeerAddress()->asStringUriOnly()); - mPeerName = ToolModel::getDisplayName(chatmessage->getPeerAddress()); - auto fromAddress = chatmessage->getFromAddress(); - // fromAddress->clean(); - mFromAddress = Utils::coreStringToAppString(fromAddress->asStringUriOnly()); - mFromName = ToolModel::getDisplayName(chatmessage->getFromAddress()); - mToName = ToolModel::getDisplayName(chatmessage->getToAddress()); + if (chatmessage) { + mChatMessageModel = Utils::makeQObject_ptr(chatmessage); + mChatMessageModel->setSelf(mChatMessageModel); + mText = ToolModel::getMessageFromContent(chatmessage->getContents()); + mUtf8Text = mChatMessageModel->getUtf8Text(); + mHasTextContent = mChatMessageModel->getHasTextContent(); + mTimestamp = QDateTime::fromSecsSinceEpoch(chatmessage->getTime()); + mIsOutgoing = chatmessage->isOutgoing(); + mIsRemoteMessage = !chatmessage->isOutgoing(); + mPeerAddress = Utils::coreStringToAppString(chatmessage->getPeerAddress()->asStringUriOnly()); + mPeerName = ToolModel::getDisplayName(chatmessage->getPeerAddress()); + auto fromAddress = chatmessage->getFromAddress(); + // fromAddress->clean(); + mFromAddress = Utils::coreStringToAppString(fromAddress->asStringUriOnly()); + mFromName = ToolModel::getDisplayName(chatmessage->getFromAddress()); + mToName = ToolModel::getDisplayName(chatmessage->getToAddress()); + auto chatroom = chatmessage->getChatRoom(); + mIsFromChatGroup = chatroom->hasCapability((int)linphone::ChatRoom::Capabilities::Conference) && + !chatroom->hasCapability((int)linphone::ChatRoom::Capabilities::OneToOne); + mIsRead = chatmessage->isRead(); + mMessageState = LinphoneEnums::fromLinphone(chatmessage->getState()); + mIsEphemeral = chatmessage->isEphemeral(); - auto chatroom = chatmessage->getChatRoom(); - mIsFromChatGroup = chatroom->hasCapability((int)linphone::ChatRoom::Capabilities::Conference) && - !chatroom->hasCapability((int)linphone::ChatRoom::Capabilities::OneToOne); - mIsRead = chatmessage->isRead(); - mMessageState = LinphoneEnums::fromLinphone(chatmessage->getState()); - mIsEphemeral = chatmessage->isEphemeral(); - if (mIsEphemeral) { - auto now = QDateTime::currentDateTime(); - mEphemeralDuration = chatmessage->getEphemeralExpireTime() == 0 - ? chatmessage->getEphemeralLifetime() - : now.secsTo(QDateTime::fromSecsSinceEpoch(chatmessage->getEphemeralExpireTime())); - } - mMessageId = Utils::coreStringToAppString(chatmessage->getMessageId()); - for (auto content : chatmessage->getContents()) { - auto contentCore = ChatMessageContentCore::create(content, mChatMessageModel); - mChatMessageContentList.push_back(contentCore); - if ((content->isFile() || content->isFileTransfer()) && !content->isVoiceRecording()) mHasFileContent = true; - if (content->isIcalendar()) mIsCalendarInvite = true; - if (content->isVoiceRecording()) { - mIsVoiceRecording = true; - mVoiceRecordingContent = contentCore; + if (mIsEphemeral) { + auto now = QDateTime::currentDateTime(); + mEphemeralDuration = chatmessage->getEphemeralExpireTime() == 0 + ? chatmessage->getEphemeralLifetime() + : now.secsTo(QDateTime::fromSecsSinceEpoch(chatmessage->getEphemeralExpireTime())); } - } - //: "Reactions": all reactions for one message label - mTotalReactionsLabel = tr("all_reactions_label"); - auto reac = chatmessage->getOwnReaction(); - mOwnReaction = reac ? Utils::coreStringToAppString(reac->getBody()) : QString(); - for (auto &reaction : chatmessage->getReactions()) { - if (reaction) { - auto fromAddr = reaction->getFromAddress()->clone(); - fromAddr->clean(); - auto reac = - Reaction::createMessageReactionVariant(Utils::coreStringToAppString(reaction->getBody()), - Utils::coreStringToAppString(fromAddr->asStringUriOnly())); - mReactions.append(reac); - - auto it = std::find_if(mReactionsSingletonMap.begin(), mReactionsSingletonMap.end(), - [body = reac.mBody](QVariant data) { - auto dataBody = data.toMap()["body"].toString(); - return body == dataBody; - }); - if (it == mReactionsSingletonMap.end()) - mReactionsSingletonMap.push_back(createReactionSingletonVariant(reac.mBody, 1)); - else { - auto map = it->toMap(); - auto count = map["count"].toInt(); - ++count; - map.remove("count"); - map.insert("count", count); - mReactionsSingletonMap.erase(it); - mReactionsSingletonMap.push_back(map); + mMessageId = Utils::coreStringToAppString(chatmessage->getMessageId()); + for (auto content : chatmessage->getContents()) { + auto contentCore = ChatMessageContentCore::create(content, mChatMessageModel); + mChatMessageContentList.push_back(contentCore); + if ((content->isFile() || content->isFileTransfer()) && !content->isVoiceRecording()) + mHasFileContent = true; + if (content->isIcalendar()) mIsCalendarInvite = true; + if (content->isVoiceRecording()) { + mIsVoiceRecording = true; + mVoiceRecordingContent = contentCore; } } - } - connect(this, &ChatMessageCore::messageReactionChanged, this, &ChatMessageCore::resetReactionsSingleton); + //: "Reactions": all reactions for one message label + mTotalReactionsLabel = tr("all_reactions_label"); + auto reac = chatmessage->getOwnReaction(); + mOwnReaction = reac ? Utils::coreStringToAppString(reac->getBody()) : QString(); + for (auto &reaction : chatmessage->getReactions()) { + if (reaction) { + auto fromAddr = reaction->getFromAddress()->clone(); + fromAddr->clean(); + auto reac = + Reaction::createMessageReactionVariant(Utils::coreStringToAppString(reaction->getBody()), + Utils::coreStringToAppString(fromAddr->asStringUriOnly())); + mReactions.append(reac); - mIsForward = chatmessage->isForward(); - mIsReply = chatmessage->isReply(); - if (mIsReply) { - auto replymessage = chatmessage->getReplyMessage(); - if (replymessage) { - mReplyText = ToolModel::getMessageFromContent(replymessage->getContents()); - if (mIsFromChatGroup) mRepliedToName = ToolModel::getDisplayName(replymessage->getFromAddress()); + auto it = std::find_if(mReactionsSingletonMap.begin(), mReactionsSingletonMap.end(), + [body = reac.mBody](QVariant data) { + auto dataBody = data.toMap()["body"].toString(); + return body == dataBody; + }); + if (it == mReactionsSingletonMap.end()) + mReactionsSingletonMap.push_back(createReactionSingletonVariant(reac.mBody, 1)); + else { + auto map = it->toMap(); + auto count = map["count"].toInt(); + ++count; + map.remove("count"); + map.insert("count", count); + mReactionsSingletonMap.erase(it); + mReactionsSingletonMap.push_back(map); + } + } } + connect(this, &ChatMessageCore::messageReactionChanged, this, &ChatMessageCore::resetReactionsSingleton); + + mIsForward = chatmessage->isForward(); + mIsReply = chatmessage->isReply(); + if (mIsReply) { + auto replymessage = chatmessage->getReplyMessage(); + if (replymessage) { + mReplyText = ToolModel::getMessageFromContent(replymessage->getContents()); + if (mIsFromChatGroup) mRepliedToName = ToolModel::getDisplayName(replymessage->getFromAddress()); + } + } + mImdnStatusList = computeDeliveryStatus(chatmessage); } - mImdnStatusList = computeDeliveryStatus(chatmessage); } ChatMessageCore::~ChatMessageCore() { diff --git a/Linphone/core/chat/message/content/ChatMessageContentCore.cpp b/Linphone/core/chat/message/content/ChatMessageContentCore.cpp index e37abf6f6..c68fd10e6 100644 --- a/Linphone/core/chat/message/content/ChatMessageContentCore.cpp +++ b/Linphone/core/chat/message/content/ChatMessageContentCore.cpp @@ -46,7 +46,7 @@ ChatMessageContentCore::ChatMessageContentCore(const std::shared_ptrgetFilePath()); + mFilePath = QDir::fromNativeSeparators(Utils::coreStringToAppString(content->getFilePath())); mIsFile = content->isFile(); mIsFileEncrypted = content->isFileEncrypted(); mIsFileTransfer = content->isFileTransfer(); @@ -67,8 +67,8 @@ ChatMessageContentCore::ChatMessageContentCore(const std::shared_ptr(content, chatMessageModel); } } @@ -92,7 +92,7 @@ void ChatMessageContentCore::setSelf(QSharedPointer me) }); mChatMessageContentModelConnection->makeConnectToModel( &ChatMessageContentModel::thumbnailChanged, [this, updateThumbnailType](QString thumbnail) { - mChatMessageContentModelConnection->invokeToCore([this, thumbnail] { setThumbnail(thumbnail); }); + mChatMessageContentModelConnection->invokeToCore([this, thumbnail] { setThumbnail(QUrl(thumbnail)); }); }); mChatMessageContentModelConnection->makeConnectToCore(&ChatMessageContentCore::lDownloadFile, [this]() { @@ -250,11 +250,11 @@ bool ChatMessageContentCore::wasDownloaded() const { return mWasDownloaded; } -QString ChatMessageContentCore::getThumbnail() const { +QUrl ChatMessageContentCore::getThumbnail() const { return mThumbnail; } -void ChatMessageContentCore::setThumbnail(const QString &data) { +void ChatMessageContentCore::setThumbnail(const QUrl &data) { if (mThumbnail != data) { mThumbnail = data; emit thumbnailChanged(); diff --git a/Linphone/core/chat/message/content/ChatMessageContentCore.hpp b/Linphone/core/chat/message/content/ChatMessageContentCore.hpp index 0c4652a05..b0f33c9d2 100644 --- a/Linphone/core/chat/message/content/ChatMessageContentCore.hpp +++ b/Linphone/core/chat/message/content/ChatMessageContentCore.hpp @@ -36,7 +36,7 @@ class ChatMessageContentCore : public QObject, public AbstractObject { Q_PROPERTY(QString name READ getName CONSTANT) Q_PROPERTY(quint64 fileOffset READ getFileOffset WRITE setFileOffset NOTIFY fileOffsetChanged) - Q_PROPERTY(QString thumbnail READ getThumbnail WRITE setThumbnail NOTIFY thumbnailChanged) + Q_PROPERTY(QUrl thumbnail READ getThumbnail WRITE setThumbnail NOTIFY thumbnailChanged) Q_PROPERTY(bool wasDownloaded READ wasDownloaded WRITE setWasDownloaded NOTIFY wasDownloadedChanged) Q_PROPERTY(QString filePath READ getFilePath WRITE setFilePath NOTIFY filePathChanged) Q_PROPERTY(QString utf8Text READ getUtf8Text CONSTANT) @@ -84,8 +84,8 @@ public: int getFileDuration() const; ConferenceInfoGui *getConferenceInfoGui() const; - void setThumbnail(const QString &data); - QString getThumbnail() const; + void setThumbnail(const QUrl &data); + QUrl getThumbnail() const; bool wasDownloaded() const; void setWasDownloaded(bool downloaded); @@ -121,7 +121,7 @@ private: bool mIsText; bool mIsVoiceRecording; int mFileDuration; - QString mThumbnail; + QUrl mThumbnail; QString mUtf8Text; QString mRichFormatText; QString mFilePath; diff --git a/Linphone/view/Control/Display/Chat/FileView.qml b/Linphone/view/Control/Display/Chat/FileView.qml index 9cd3e7860..f9725f992 100644 --- a/Linphone/view/Control/Display/Chat/FileView.qml +++ b/Linphone/view/Control/Display/Chat/FileView.qml @@ -19,7 +19,7 @@ Item { property string filePath: contentGui && contentGui.core.filePath property bool wasDownloaded: contentGui && contentGui.core.wasDownloaded property bool isAnimatedImage : contentGui && contentGui.core.wasDownloaded && UtilsCpp.isAnimatedImage(filePath) - property bool haveThumbnail: contentGui && UtilsCpp.canHaveThumbnail(filePath) + property bool haveThumbnail: contentGui && UtilsCpp.canHaveThumbnail(filePath) && UtilsCpp.fileExists(filePath) property int fileSize: contentGui ? contentGui.core.fileSize : 0 property bool isTransferring property bool isVideo: UtilsCpp.isVideo(filePath) @@ -68,9 +68,10 @@ Item { fillMode: Image.PreserveAspectFit } Image { + id: errorImage anchors.fill: parent z: image.z + 1 - visible: image.status == Image.Error || image.status == Image.Null || !UtilsCpp.fileExists(mainItem.filePath) + visible: image.status == Image.Error || image.status == Image.Null source: AppIcons.fileImage sourceSize.width: mainItem.width sourceSize.height: mainItem.height @@ -79,7 +80,7 @@ Item { Item { id: loadingImageItem anchors.fill: parent - visible: mainItem.isImage && image.status === Image.Loading + visible: image.status === Image.Loading && !image.visible && !errorImage.visilbe Rectangle { anchors.fill: parent color: DefaultStyle.main1_200 From 3f5797f453938ae3a27a07f3a3454a3f9f6eb6d7 Mon Sep 17 00:00:00 2001 From: gaelle Date: Wed, 19 Nov 2025 17:44:30 +0100 Subject: [PATCH 47/72] to fix : meeting detail ui fix meeting detail view #LINQT-2193 --- Linphone/data/languages/de.ts | 156 +++---- Linphone/data/languages/en.ts | 156 +++---- Linphone/data/languages/fr.ts | 156 +++---- .../view/Control/Button/CalendarComboBox.qml | 2 +- Linphone/view/Page/Main/AbstractMainPage.qml | 4 + .../view/Page/Main/Meeting/MeetingPage.qml | 399 +++++++++--------- 6 files changed, 430 insertions(+), 443 deletions(-) diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 4b6bf5584..39d583dd6 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2381,19 +2381,19 @@ Error ChatMessageCore - + all_reactions_label "Reactions": all reactions for one message label - + info_toast_deleted_title Deleted - + info_toast_deleted_message The message has been deleted @@ -3390,19 +3390,19 @@ Error ConversationInfos - + one_one_infos_call "Appel" Anrufen - + one_one_infos_unmute "Sourdine" Unmute - + one_one_infos_mute Stummschalten @@ -3412,121 +3412,121 @@ Error Suchen - + group_infos_participants Teilnehmer (%1) - + group_infos_media_docs Medias & documents Medien & Dokumente - + group_infos_shared_medias Shared medias - + group_infos_shared_docs Shared documents Geteilte Dokumente - + group_infos_other_actions Other actions Weitere Aktionen - + group_infos_ephemerals Ephemeral messages : - + group_infos_enable_ephemerals Flüchtige Nachrichten aktivieren - + group_infos_meeting Schedule a meeting Meeting - + group_infos_leave_room Leave chat room - + group_infos_leave_room_toast_title Leave Chat Room ? Chatraum verlassen? - + group_infos_leave_room_toast_message All the messages will be removed from the chat room. Do you want to continue ? Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren? - + group_infos_delete_history Delete history Verlauf löschen - + group_infos_delete_history_toast_title Delete history ? Verlauf löschen? - + group_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren? - + one_one_infos_open_contact Show contact Kontakt anzeigen - + one_one_infos_create_contact Create contact Kontakt erstellen - + one_one_infos_ephemerals Ephemeral messages : - + one_one_infos_enable_ephemerals Flüchtige Nachrichten aktivieren - + one_one_infos_delete_history Verlauf löschen - + one_one_infos_delete_history_toast_title Delete history ? Verlauf löschen? - + one_one_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren? @@ -4623,170 +4623,170 @@ Error MeetingPage - + meetings_add "Créer une réunion" Besprechung erstellen - + meetings_list_empty "Aucune réunion" Keine Besprechungen - + meeting_schedule_cancel_dialog_message "Souhaitez-vous annuler et supprimer cette réunion ?" Möchten Sie diese Besprechung absagen und löschen? - + meeting_schedule_delete_dialog_message Souhaitez-vous supprimer cette réunion ? Möchten Sie diese Besprechung löschen? - + meeting_schedule_cancel_and_delete_action "Annuler et supprimer" Absagen und löschen - + meeting_schedule_delete_only_action "Supprimer seulement" Nur löschen - + meeting_schedule_delete_action "Supprimer" Löschen - + back_action Retour Zurück - + meetings_list_title Réunions Besprechungen - + meetings_search_hint "Rechercher une réunion" Besprechung suchen - + list_filter_no_result_found "Aucun résultat…" Kein Ergebnis… - + meetings_empty_list "Aucune réunion" Keine Besprechungen - - + + meeting_schedule_title "Nouvelle réunion" Neue Besprechung - + create Erstellen - - - - - - + + + + + + information_popup_error_title Fehler - - + + meeting_schedule_mandatory_field_not_filled_toast Veuillez saisir un titre et sélectionner au moins un participant Bitte Titel bestimmen und mindestens einen Teilnehmer auswählen - - + + meeting_schedule_duration_error_toast "La fin de la conférence doit être plus récente que son début" Das Ende der Besprechung muss nach dem Beginn liegen - - + + meeting_schedule_creation_in_progress "Création de la réunion en cours …" Besprechung wird erstellt… - + meeting_info_created_toast "Réunion planifiée avec succès" Besprechung erfolgreich erstellt - + meeting_failed_to_schedule_toast "Échec de création de la réunion !" Besprechung konnte nicht erstellt werden! - + save Speichern - - + + saved "Enregistré" Gespeichert - + meeting_info_updated_toast "Réunion mise à jour" Besprechung geändert - + meeting_schedule_edit_in_progress "Modification de la réunion en cours…" Bersprechung wird geändert… - + meeting_failed_to_edit_toast "Échec de la modification de la réunion !" Besprechung konnte nicht geändert werden! - + meeting_schedule_add_participants_title "Ajouter des participants" Teilnehmer hinzufügen - + meeting_schedule_add_participants_apply Apply @@ -4795,7 +4795,7 @@ Error Hinzufügen - + group_call_participant_selected "%n participant(s) sélectionné(s)" @@ -4804,31 +4804,31 @@ Error - + meeting_info_delete "Supprimer la réunion" Besprechung löschen - + meeting_address_copied_to_clipboard_toast "Adresse de la réunion copiée" Besprechungs-URI kopiert - + meeting_schedule_timezone_title "Fuseau horaire" Zeitzone - + meeting_info_organizer_label "Organisateur" Organisator - + meeting_info_join_title "Rejoindre la réunion" Besprechung beitreten @@ -6004,43 +6004,43 @@ Pour les activer dans un projet commercial, merci de nous contacter. Die Anrufadresse ist keine interpretierbare SIP-Adresse: %1 - + group_call_error_no_account - + group_call_error_participants_invite - + group_call_error_creation - + voice_recording_duration "Voice recording (%1)" : %1 is the duration formated in mm:ss - + conference_invitation - + conference_invitation_updated - + conference_invitation_cancelled - + unknown_audio_device_name Unbekannter Gerätename diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 7f2532e2b..6dc178188 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2353,19 +2353,19 @@ Error ChatMessageCore - + all_reactions_label "Reactions": all reactions for one message label Reactions - + info_toast_deleted_title Deleted Deleted - + info_toast_deleted_message The message has been deleted The message has been deleted @@ -3314,138 +3314,138 @@ Only your correspondent can decrypt them. ConversationInfos - + one_one_infos_call "Appel" Call - + one_one_infos_unmute "Sourdine" Unmute - + one_one_infos_mute Mute - + group_infos_participants Participants (%1) - + group_infos_media_docs Medias & documents Medias & documents - + group_infos_shared_medias Shared medias Shared medias - + group_infos_shared_docs Shared documents Shared documents - + group_infos_other_actions Other actions Other actions - + group_infos_ephemerals Ephemeral messages : - + group_infos_enable_ephemerals Enable ephemeral messages - + group_infos_meeting Schedule a meeting Schedule a meeting - + group_infos_leave_room Leave chat room Leave Chat Room - + group_infos_leave_room_toast_title Leave Chat Room ? Leave Chat Room ? - + group_infos_leave_room_toast_message All the messages will be removed from the chat room. Do you want to continue ? All the messages will be removed from the chat room. Do you want to continue ? - + group_infos_delete_history Delete history Delete history - + group_infos_delete_history_toast_title Delete history ? Delete history ? - + group_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? All the messages will be removed from the chat room. Do you want to continue ? - + one_one_infos_open_contact Show contact Show contact - + one_one_infos_create_contact Create contact Create contact - + one_one_infos_ephemerals Ephemeral messages : - + one_one_infos_enable_ephemerals Enable ephemeral messages - + one_one_infos_delete_history Delete history - + one_one_infos_delete_history_toast_title Delete history ? Delete history ? - + one_one_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? All the messages will be removed from the chat room. Do you want to continue ? @@ -4539,175 +4539,175 @@ Expiration : %1 MeetingPage - + meetings_add "Créer une réunion" Create meeting - + meetings_list_empty "Aucune réunion" No meeting - + meeting_schedule_cancel_dialog_message "Souhaitez-vous annuler et supprimer cette réunion ?" Would you like to cancel and delete this meeting? - + meeting_schedule_delete_dialog_message Souhaitez-vous supprimer cette réunion ? Would you like to delete this meeting? - + meeting_schedule_cancel_and_delete_action "Annuler et supprimer" Cancel and delete - + meeting_schedule_delete_only_action "Supprimer seulement" Delete only - + meeting_schedule_delete_action "Supprimer" Delete - + back_action Retour Back - + meetings_list_title Réunions Meetings - + meetings_search_hint "Rechercher une réunion" Find meeting - + list_filter_no_result_found "Aucun résultat…" No result… - + meetings_empty_list "Aucune réunion" No meeting - - + + meeting_schedule_title "Nouvelle réunion" New meeting - + create Create - - - - - - + + + + + + information_popup_error_title Error - - + + meeting_schedule_mandatory_field_not_filled_toast Veuillez saisir un titre et sélectionner au moins un participant Please fill the title and select at least one participant - - + + meeting_schedule_duration_error_toast "La fin de la conférence doit être plus récente que son début" The end of the conference must be more recent than its beginning - - + + meeting_schedule_creation_in_progress "Création de la réunion en cours …" Creation in progress… - + meeting_info_created_toast "Réunion planifiée avec succès" Meeting successfully created - + meeting_failed_to_schedule_toast "Échec de création de la réunion !" Failed to create meeting! - + save Save - - + + saved "Enregistré" Saved - + meeting_info_updated_toast "Réunion mise à jour" Meeting updated - + meeting_schedule_edit_in_progress "Modification de la réunion en cours…" Meeting update in progress… - + meeting_failed_to_edit_toast "Échec de la modification de la réunion !" Failed to update meeting ! - + meeting_schedule_add_participants_title "Ajouter des participants" Add participants - + meeting_schedule_add_participants_apply Apply - + group_call_participant_selected "%n participant(s) sélectionné(s)" @@ -4716,31 +4716,31 @@ Expiration : %1 - + meeting_info_delete "Supprimer la réunion" Delete meeting - + meeting_address_copied_to_clipboard_toast "Adresse de la réunion copiée" Meeting URI copied - + meeting_schedule_timezone_title "Fuseau horaire" Timezone - + meeting_info_organizer_label "Organisateur" Organizer - + meeting_info_join_title "Rejoindre la réunion" Join meeting @@ -5887,43 +5887,43 @@ To enable them in a commercial project, please contact us. The calling address is not an interpretable SIP address : %1 - + group_call_error_no_account No default account found, can't create group call - + group_call_error_participants_invite Couldn't invite participants to group call - + group_call_error_creation Group call couldn't be created - + voice_recording_duration "Voice recording (%1)" : %1 is the duration formated in mm:ss Voice recording (%1) - + unknown_audio_device_name Unknown device name - + conference_invitation Meeting invitation - + conference_invitation_cancelled Meeting cancellation - + conference_invitation_updated Meeting modification diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 7aeb62926..6a7c3dcc8 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2353,19 +2353,19 @@ Error ChatMessageCore - + all_reactions_label "Reactions": all reactions for one message label Réactions - + info_toast_deleted_title Deleted Supprimé - + info_toast_deleted_message The message has been deleted Le message a été supprimé @@ -3314,138 +3314,138 @@ en bout. Seul votre correspondant peut les déchiffrer. ConversationInfos - + one_one_infos_call "Appel" Appel - + one_one_infos_unmute "Sourdine" Réactiver les notifications - + one_one_infos_mute Sourdine - + group_infos_participants Participants (%1) - + group_infos_media_docs Medias & documents Medias & documents - + group_infos_shared_medias Shared medias Médias partagés - + group_infos_shared_docs Shared documents Documents partagés - + group_infos_other_actions Other actions Autres actions - + group_infos_ephemerals Messages éphémères : - + group_infos_enable_ephemerals Activer les messages éphémères - + group_infos_meeting Schedule a meeting Programmer une réunion - + group_infos_leave_room Leave chat room Quitter la conversation - + group_infos_leave_room_toast_title Leave Chat Room ? Quitter la conversation ? - + group_infos_leave_room_toast_message All the messages will be removed from the chat room. Do you want to continue ? Vous ne recevrez ni pourrez envoyer des messages dans cette conversation, quitter ? - + group_infos_delete_history Delete history Supprimer l'historique - + group_infos_delete_history_toast_title Delete history ? Supprimer l'historique ? - + group_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? Tous les messages seront supprimés. Souhaitez-vous continuer ? - + one_one_infos_open_contact Show contact Voir le contact - + one_one_infos_create_contact Create contact Créer un contact - + one_one_infos_ephemerals Messages éphémères : - + one_one_infos_enable_ephemerals Activer les messages éphémères - + one_one_infos_delete_history Supprimer l'historique - + one_one_infos_delete_history_toast_title Delete history ? Supprimer l'historique ? - + one_one_infos_delete_history_toast_message All the messages will be removed from the chat room. Do you want to continue ? Tous les messages seront supprimés. Souhaitez-vous continuer ? @@ -4539,175 +4539,175 @@ Expiration : %1 MeetingPage - + meetings_add "Créer une réunion" Créer une réunion - + meetings_list_empty "Aucune réunion" Aucune réunion - + meeting_schedule_cancel_dialog_message "Souhaitez-vous annuler et supprimer cette réunion ?" Souhaitez-vous annuler et supprimer cette réunion ? - + meeting_schedule_delete_dialog_message Souhaitez-vous supprimer cette réunion ? Souhaitez-vous supprimer cette réunion ? - + meeting_schedule_cancel_and_delete_action "Annuler et supprimer" Annuler et supprimer - + meeting_schedule_delete_only_action "Supprimer seulement" Supprimer seulement - + meeting_schedule_delete_action "Supprimer" Supprimer - + back_action Retour Retour - + meetings_list_title Réunions Réunions - + meetings_search_hint "Rechercher une réunion" Rechercher une réunion - + list_filter_no_result_found "Aucun résultat…" Aucun résultat… - + meetings_empty_list "Aucune réunion" Aucune réunion - - + + meeting_schedule_title "Nouvelle réunion" Nouvelle réunion - + create Créer - - - - - - + + + + + + information_popup_error_title Erreur - - + + meeting_schedule_mandatory_field_not_filled_toast Veuillez saisir un titre et sélectionner au moins un participant Veuillez saisir un titre et sélectionner au moins un participant - - + + meeting_schedule_duration_error_toast "La fin de la conférence doit être plus récente que son début" La fin de la conférence doit être plus récente que son début - - + + meeting_schedule_creation_in_progress "Création de la réunion en cours …" Création de la réunion en cours… - + meeting_info_created_toast "Réunion planifiée avec succès" Réunion planifiée avec succès - + meeting_failed_to_schedule_toast "Échec de création de la réunion !" Échec de création de la réunion ! - + save Enregistrer - - + + saved "Enregistré" Enregistré - + meeting_info_updated_toast "Réunion mise à jour" Réunion mise à jour - + meeting_schedule_edit_in_progress "Modification de la réunion en cours…" Modification de la réunion en cours… - + meeting_failed_to_edit_toast "Échec de la modification de la réunion !" Échec de la modification de la réunion ! - + meeting_schedule_add_participants_title "Ajouter des participants" Ajouter des participants - + meeting_schedule_add_participants_apply Appliquer - + group_call_participant_selected "%n participant(s) sélectionné(s)" @@ -4716,31 +4716,31 @@ Expiration : %1 - + meeting_info_delete "Supprimer la réunion" Supprimer la réunion - + meeting_address_copied_to_clipboard_toast "Adresse de la réunion copiée" Adresse de la réunion copiée - + meeting_schedule_timezone_title "Fuseau horaire" Fuseau horaire - + meeting_info_organizer_label "Organisateur" Organisateur - + meeting_info_join_title "Rejoindre la réunion" Rejoindre la réunion @@ -5887,43 +5887,43 @@ Pour les activer dans un projet commercial, merci de nous contacter.L'adresse n'est pas interprétable comme une adresse SIP - + group_call_error_no_account Impossible de créer l'appel de groupe, le compte par défaut n'est pas défini - + group_call_error_participants_invite Impossible d'inviter les participants à l'appel de groupe - + group_call_error_creation L'appel de groupe n'a pas pu être créé - + voice_recording_duration "Voice recording (%1)" : %1 is the duration formated in mm:ss Message vocal (%1) - + unknown_audio_device_name Appareil inconnu - + conference_invitation Invitation à une réunion - + conference_invitation_cancelled Annulation d'une réunion - + conference_invitation_updated Modification d'une réunion diff --git a/Linphone/view/Control/Button/CalendarComboBox.qml b/Linphone/view/Control/Button/CalendarComboBox.qml index c4eba3189..f2d3a7d46 100644 --- a/Linphone/view/Control/Button/CalendarComboBox.qml +++ b/Linphone/view/Control/Button/CalendarComboBox.qml @@ -14,7 +14,7 @@ ComboBox { property alias contentText: contentText contentItem: Text { id: contentText - text: UtilsCpp.formatDate(calendar.selectedDate, false, true, "ddd d, MMMM") + text: calendar.selectedDate ? UtilsCpp.formatDate(calendar.selectedDate, false, true, "ddd d, MMMM") : "" anchors.fill: parent anchors.leftMargin: Utils.getSizeWithScreenRatio(15) anchors.verticalCenter: parent.verticalCenter diff --git a/Linphone/view/Page/Main/AbstractMainPage.qml b/Linphone/view/Page/Main/AbstractMainPage.qml index 282184a84..df78de0fa 100644 --- a/Linphone/view/Page/Main/AbstractMainPage.qml +++ b/Linphone/view/Page/Main/AbstractMainPage.qml @@ -21,6 +21,8 @@ FocusScope { property alias leftPanelContent: leftPanel.children property alias rightPanelStackView: rightPanelStackView property alias rightPanel: rightPanel + property int rightPanelStackTopMargin: 0 + property int rightPanelStackBottomMargin: 0 signal noItemButtonPressed() // Control.SplitView { @@ -193,6 +195,8 @@ FocusScope { id: rightPanelStackView Layout.fillWidth: true Layout.fillHeight: true + Layout.topMargin: mainItem.rightPanelStackTopMargin + Layout.bottomMargin: mainItem.rightPanelStackBottomMargin visible: false } } diff --git a/Linphone/view/Page/Main/Meeting/MeetingPage.qml b/Linphone/view/Page/Main/Meeting/MeetingPage.qml index e845d46cc..99a87e598 100644 --- a/Linphone/view/Page/Main/Meeting/MeetingPage.qml +++ b/Linphone/view/Page/Main/Meeting/MeetingPage.qml @@ -10,7 +10,6 @@ import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils // TODO : spacing AbstractMainPage { id: mainItem - property ConferenceInfoGui selectedConference property int meetingListCount: 0 signal returnRequested() @@ -23,6 +22,9 @@ AbstractMainPage { rightPanelColor: selectedConference ? DefaultStyle.grey_0 : DefaultStyle.grey_100 showDefaultItem: leftPanelStackView.currentItem && leftPanelStackView.currentItem.objectName === "listLayout" && meetingListCount === 0 + rightPanelStackView.width: Utils.getSizeWithScreenRatio(393) + rightPanelStackTopMargin: Utils.getSizeWithScreenRatio(45) + rightPanelStackBottomMargin: Utils.getSizeWithScreenRatio(30) function createPreFilledMeeting(subject, addresses) { mainItem.selectedConference = Qt.createQmlObject('import Linphone @@ -47,7 +49,7 @@ AbstractMainPage { item.forceActiveFocus() } else { mainItem.selectedConference = confInfoGui - item = overridenRightPanelStackView.push(editConf, {"conferenceInfoGui": mainItem.selectedConference}) + item = rightPanelStackView.push(editConf, {"conferenceInfoGui": mainItem.selectedConference}) item.forceActiveFocus() } } @@ -60,25 +62,14 @@ AbstractMainPage { onSelectedConferenceChanged: { // While a conference is being edited, we need to stay on the edit page - if (overridenRightPanelStackView.currentItem && (overridenRightPanelStackView.currentItem.objectName === "editConf" || overridenRightPanelStackView.currentItem.objectName === "createConf")) return - overridenRightPanelStackView.clear() + if (rightPanelStackView.currentItem && (rightPanelStackView.currentItem.objectName === "editConf")) return + rightPanelStackView.clear() if (selectedConference && selectedConference.core && selectedConference.core.haveModel) { - if (!overridenRightPanelStackView.currentItem || overridenRightPanelStackView.currentItem != meetingDetail) overridenRightPanelStackView.replace(meetingDetail, Control.StackView.Immediate) + rightPanelStackView.push(meetingDetail, Control.StackView.Immediate) } } onNoItemButtonPressed: editConference() - - Component.onCompleted: rightPanelStackView.push(overridenRightPanel, Control.StackView.Immediate) - - leftPanelContent: Control.StackView { - id: leftPanelStackView - Layout.fillWidth: true - Layout.fillHeight: true - Layout.leftMargin: Utils.getSizeWithScreenRatio(45) - initialItem: listLayout - clip: true - } Dialog { id: cancelAndDeleteConfDialog @@ -132,34 +123,13 @@ AbstractMainPage { ] } - Control.ScrollView { - id: overridenRightPanel - width: Utils.getSizeWithScreenRatio(393 + 10) - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.topMargin: Utils.getSizeWithScreenRatio(58) - anchors.bottomMargin: Utils.getSizeWithScreenRatio(30) - height: parent.height - anchors.topMargin - anchors.horizontalCenter: parent.horizontalCenter - contentWidth: width + leftPanelContent: Control.StackView { + id: leftPanelStackView + Layout.fillWidth: true + Layout.fillHeight: true + Layout.leftMargin: Utils.getSizeWithScreenRatio(45) + initialItem: listLayout clip: true - Control.ScrollBar.vertical: ScrollBar { - visible: overridenRightPanel.contentHeight > overridenRightPanel.height - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.right: parent.right - } - ColumnLayout { - anchors.fill: parent - anchors.rightMargin: Utils.getSizeWithScreenRatio(10) - width: Utils.getSizeWithScreenRatio(393) - Control.StackView { - id: overridenRightPanelStackView - Layout.fillWidth: true - Layout.fillHeight: true - Layout.preferredHeight: currentItem ? currentItem.childrenRect.height : 0 - } - } } Component { @@ -172,34 +142,34 @@ AbstractMainPage { Control.StackView.onActivated: { mainItem.selectedConference = conferenceList.selectedConference } - enabled: !overridenRightPanelStackView.currentItem || overridenRightPanelStackView.currentItem.objectName !== "editConf" - + enabled: !rightPanelStackView.currentItem || rightPanelStackView.currentItem.objectName !== "editConf" + ColumnLayout { anchors.fill: parent spacing: 0 FlexboxLayout { - direction: FlexboxLayout.Row - gap: Utils.getSizeWithScreenRatio(16) - alignItems: FlexboxLayout.AlignCenter - Layout.rightMargin: Utils.getSizeWithScreenRatio(39) + direction: FlexboxLayout.Row + gap: Utils.getSizeWithScreenRatio(16) + alignItems: FlexboxLayout.AlignCenter + Layout.rightMargin: Utils.getSizeWithScreenRatio(39) Layout.alignment: Qt.AlignTop - Layout.fillHeight: false + Layout.fillHeight: false Text { Layout.fillWidth: true - //: Réunions - text: qsTr("meetings_list_title") + //: Réunions + text: qsTr("meetings_list_title") color: DefaultStyle.main2_700 - font.pixelSize: Typography.h2.pixelSize - font.weight: Typography.h2.weight + font.pixelSize: Typography.h2.pixelSize + font.weight: Typography.h2.weight } Button { id: newConfButton style: ButtonStyle.noBackground icon.source: AppIcons.plusCircle - Layout.preferredWidth: Utils.getSizeWithScreenRatio(28) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(28) - icon.width: Utils.getSizeWithScreenRatio(28) - icon.height: Utils.getSizeWithScreenRatio(28) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(28) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(28) + icon.width: Utils.getSizeWithScreenRatio(28) + icon.height: Utils.getSizeWithScreenRatio(28) KeyNavigation.down: scrollToCurrentDateButton onClicked: { mainItem.editConference() @@ -238,27 +208,27 @@ AbstractMainPage { } Text { visible: conferenceList.count === 0 && !conferenceList.loading - Layout.topMargin: Utils.getSizeWithScreenRatio(137) + Layout.topMargin: Utils.getSizeWithScreenRatio(137) Layout.fillHeight: true Layout.alignment: Qt.AlignHCenter - //: "Aucun résultat…" - text: searchBar.text.length !== 0 ? qsTr("list_filter_no_result_found") - //: "Aucune réunion" - : qsTr("meetings_empty_list") + //: "Aucun résultat…" + text: searchBar.text.length !== 0 ? qsTr("list_filter_no_result_found") + //: "Aucune réunion" + : qsTr("meetings_empty_list") font { - pixelSize: Typography.h4.pixelSize - weight: Typography.h4.weight + pixelSize: Typography.h4.pixelSize + weight: Typography.h4.weight } } MeetingListView { id: conferenceList // Remove 24 from first section padding because we cannot know that it is the first section. 24 is the margins between sections. - Layout.topMargin: Utils.getSizeWithScreenRatio(38 - 24) + Layout.topMargin: Utils.getSizeWithScreenRatio(38 - 24) Layout.fillWidth: true Layout.fillHeight: true - + searchBarText: searchBar.text - + onCountChanged: { mainItem.meetingListCount = count } @@ -276,13 +246,13 @@ AbstractMainPage { cancelAndDeleteConfDialog.cancel = canCancel cancelAndDeleteConfDialog.open() } - + Keys.onPressed: (event) => { if(event.key == Qt.Key_Escape){ searchBar.forceActiveFocus() event.accepted = true }else if(event.key == Qt.Key_Right){ - overridenRightPanelStackView.currentItem.forceActiveFocus() + rightPanelStackView.currentItem.forceActiveFocus() event.accepted = true } } @@ -298,18 +268,18 @@ AbstractMainPage { objectName: "createConf" property ConferenceInfoGui conferenceInfoGui ColumnLayout { - spacing: Utils.getSizeWithScreenRatio(33) + spacing: Utils.getSizeWithScreenRatio(33) anchors.fill: parent RowLayout { - spacing: Utils.getSizeWithScreenRatio(5) + spacing: Utils.getSizeWithScreenRatio(5) Layout.rightMargin: Utils.getSizeWithScreenRatio(35) Button { id: backButton style: ButtonStyle.noBackground icon.source: AppIcons.leftArrow focus: true - icon.width: Utils.getSizeWithScreenRatio(24) - icon.height: Utils.getSizeWithScreenRatio(24) + icon.width: Utils.getSizeWithScreenRatio(24) + icon.height: Utils.getSizeWithScreenRatio(24) KeyNavigation.right: createButton KeyNavigation.down: meetingSetup onClicked: { @@ -318,38 +288,38 @@ AbstractMainPage { } } Text { - //: "Nouvelle réunion" - text: qsTr("meeting_schedule_title") + //: "Nouvelle réunion" + text: qsTr("meeting_schedule_title") color: DefaultStyle.main2_700 font { - pixelSize: Typography.h3.pixelSize - weight: Typography.h3.weight + pixelSize: Typography.h3.pixelSize + weight: Typography.h3.weight } Layout.fillWidth: true } Item {Layout.fillWidth: true} SmallButton { id: createButton - text: qsTr("create") + text: qsTr("create") style: ButtonStyle.main KeyNavigation.left: backButton KeyNavigation.down: meetingSetup - + onClicked: { - if (meetingSetup.conferenceInfoGui.core.subject.length === 0 || meetingSetup.conferenceInfoGui.core.participantCount === 0) { - UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), - //: Veuillez saisir un titre et sélectionner au moins un participant - qsTr("meeting_schedule_mandatory_field_not_filled_toast"), false) + if (meetingSetup.conferenceInfoGui.core.subject.length === 0 || meetingSetup.conferenceInfoGui.core.participantCount === 0) { + UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), + //: Veuillez saisir un titre et sélectionner au moins un participant + qsTr("meeting_schedule_mandatory_field_not_filled_toast"), false) } else if (meetingSetup.conferenceInfoGui.core.duration <= 0) { - UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), - //: "La fin de la conférence doit être plus récente que son début" - qsTr("meeting_schedule_duration_error_toast"), false) - } else { + UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), + //: "La fin de la conférence doit être plus récente que son début" + qsTr("meeting_schedule_duration_error_toast"), false) + } else { meetingSetup.conferenceInfoGui.core.save() - //: "Création de la réunion en cours …" - mainWindow.showLoadingPopup(qsTr("meeting_schedule_creation_in_progress"), true, function () { - meetingSetup.conferenceInfoGui.core.cancelCreation() - }) + //: "Création de la réunion en cours …" + mainWindow.showLoadingPopup(qsTr("meeting_schedule_creation_in_progress"), true, function () { + meetingSetup.conferenceInfoGui.core.cancelCreation() + }) } } } @@ -406,7 +376,7 @@ AbstractMainPage { } } onAddParticipantsRequested: { - leftPanelStackView.push(addParticipants, {"conferenceInfoGui": conferenceInfoGui, "container": leftPanelStackView}) + leftPanelStackView.push(addParticipants, {"conferenceInfoGui": conferenceInfoGui, "container": leftPanelStackView, "overridenWidth": leftPanelStackView.width}) } Connections { target: mainItem @@ -427,24 +397,26 @@ AbstractMainPage { id: editFocusScope objectName: "editConf" property ConferenceInfoGui conferenceInfoGui - width: overridenRightPanelStackView.width + anchors.horizontalCenter: parent?.horizontalCenter + width: Utils.getSizeWithScreenRatio(393) ColumnLayout { id: editLayout - anchors.left: parent.left - anchors.right: parent.right anchors.top: parent.top + width: Utils.getSizeWithScreenRatio(393) height: childrenRect.height + anchors.horizontalCenter: parent?.horizontalCenter spacing: 0 Section { - Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + Layout.fillWidth: true content: RowLayout { - spacing: Utils.getSizeWithScreenRatio(16) - Layout.preferredWidth: overridenRightPanelStackView.width + spacing: Utils.getSizeWithScreenRatio(16) + // Layout.preferredWidth: rightPanelStackView.width Button { id: backButton icon.source: AppIcons.leftArrow - icon.width: Utils.getSizeWithScreenRatio(24) - icon.height: Utils.getSizeWithScreenRatio(24) + icon.width: Utils.getSizeWithScreenRatio(24) + icon.height: Utils.getSizeWithScreenRatio(24) style: ButtonStyle.noBackground KeyNavigation.left: saveButton KeyNavigation.right: titleText @@ -452,16 +424,16 @@ AbstractMainPage { KeyNavigation.up: conferenceEdit onClicked: { conferenceEdit.conferenceInfoGui.core.undo() - overridenRightPanelStackView.pop() + rightPanelStackView.pop() } } RowLayout { - spacing: Utils.getSizeWithScreenRatio(8) + spacing: Utils.getSizeWithScreenRatio(8) EffectImage{ imageSource: AppIcons.usersThree colorizationColor: DefaultStyle.main2_600 - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) } TextInput { id: titleText @@ -469,8 +441,8 @@ AbstractMainPage { color: DefaultStyle.main2_600 clip: true font { - pixelSize: Utils.getSizeWithScreenRatio(20) - weight: Typography.h4.weight + pixelSize: Utils.getSizeWithScreenRatio(20) + weight: Typography.h4.weight } KeyNavigation.left: backButton KeyNavigation.right: saveButton @@ -486,19 +458,19 @@ AbstractMainPage { id: saveButton style: ButtonStyle.main focus: true - text: qsTr("save") + text: qsTr("save") KeyNavigation.left: titleText KeyNavigation.right: backButton KeyNavigation.down: conferenceEdit KeyNavigation.up: conferenceEdit onClicked: { - if (mainItem.selectedConference.core.subject.length === 0 || mainItem.selectedConference.core.participantCount === 0) { - UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), - qsTr("meeting_schedule_mandatory_field_not_filled_toast"), false) + if (mainItem.selectedConference.core.subject.length === 0 || mainItem.selectedConference.core.participantCount === 0) { + UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), + qsTr("meeting_schedule_mandatory_field_not_filled_toast"), false) } else if (mainItem.selectedConference.core.duration <= 0) { - UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), - qsTr("meeting_schedule_duration_error_toast"), false) - } else { + UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), + qsTr("meeting_schedule_duration_error_toast"), false) + } else { mainItem.selectedConference.core.save() } } @@ -509,18 +481,18 @@ AbstractMainPage { MeetingForm { id: conferenceEdit isCreation: false - conferenceInfoGui: editFocusScope.conferenceInfoGui Layout.fillWidth: true - Layout.preferredHeight: childrenRect.height - + Layout.fillHeight: true + conferenceInfoGui: editFocusScope.conferenceInfoGui + onAddParticipantsRequested: { - overridenRightPanelStackView.push(addParticipants, {"conferenceInfoGui": conferenceInfoGui, "container": overridenRightPanelStackView}) + rightPanelStackView.push(addParticipants, {"conferenceInfoGui": conferenceInfoGui, "container": rightPanelStackView, "overridenWidth": Utils.getSizeWithScreenRatio(393)}) } Connections { target: mainItem function onAddParticipantsValidated(selectedParticipants) { conferenceEdit.conferenceInfoGui.core.resetParticipants(selectedParticipants) - overridenRightPanelStackView.pop() + rightPanelStackView.pop() } } Connections { @@ -532,21 +504,21 @@ AbstractMainPage { function onSchedulerStateChanged() { editFocusScope.enabled = conferenceInfoGui.core.schedulerState != LinphoneEnums.ConferenceSchedulerState.AllocationPending if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Ready) { - overridenRightPanelStackView.pop() + rightPanelStackView.pop() UtilsCpp.getMainWindow().closeLoadingPopup() - //: "Enregistré" - UtilsCpp.showInformationPopup(qsTr("saved"), - //: "Réunion mise à jour" - qsTr("meeting_info_updated_toast"), true) + //: "Enregistré" + UtilsCpp.showInformationPopup(qsTr("saved"), + //: "Réunion mise à jour" + qsTr("meeting_info_updated_toast"), true) } else if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.AllocationPending || conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Updating) { - //: "Modification de la réunion en cours…" - UtilsCpp.getMainWindow().showLoadingPopup(qsTr("meeting_schedule_edit_in_progress")) + //: "Modification de la réunion en cours…" + UtilsCpp.getMainWindow().showLoadingPopup(qsTr("meeting_schedule_edit_in_progress")) } else if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Error) { - UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), - //: "Échec de la modification de la réunion !" - qsTr("meeting_failed_to_edit_toast"), false) + UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"), + //: "Échec de la modification de la réunion !" + qsTr("meeting_failed_to_edit_toast"), false) UtilsCpp.getMainWindow().closeLoadingPopup() } } @@ -560,20 +532,24 @@ AbstractMainPage { id: addParticipants FocusScope{ id: addParticipantInItem + property int overridenWidth property Control.StackView container property ConferenceInfoGui conferenceInfoGui + anchors.horizontalCenter: parent?.horizontalCenter ColumnLayout { id: addParticipantsLayout spacing: Utils.getSizeWithScreenRatio(18) + width: parent.overridenWidth ? parent.overridenWidth : parent.width + anchors.horizontalCenter: parent?.horizontalCenter anchors.rightMargin: Utils.getSizeWithScreenRatio(8) - anchors.left: parent.left - anchors.right: parent.right anchors.top: parent.top anchors.bottom: parent.bottom ColumnLayout { id: title - Layout.fillWidth: true - Layout.preferredHeight: childrenRect.height + Layout.fillHeight: true + Layout.fillWidth: false + Layout.preferredWidth: addParticipantsLayout.width + Layout.alignment: Qt.AlignHCenter spacing: Utils.getSizeWithScreenRatio(4) RowLayout { id: addParticipantsButtons @@ -585,7 +561,7 @@ AbstractMainPage { icon.width: Utils.getSizeWithScreenRatio(24) icon.height: Utils.getSizeWithScreenRatio(24) KeyNavigation.right: addButton - KeyNavigation.down: addParticipantLayout + KeyNavigation.down: addParticipantsForm onClicked: container.pop() } Text { @@ -601,20 +577,20 @@ AbstractMainPage { } SmallButton { id: addButton - enabled: addParticipantLayout.selectedParticipantsCount.length != 0 + enabled: addParticipantsForm.selectedParticipantsCount.length != 0 focus: enabled style: ButtonStyle.main text: qsTr("meeting_schedule_add_participants_apply") KeyNavigation.left: addParticipantsBackButton - KeyNavigation.down: addParticipantLayout + KeyNavigation.down: addParticipantsForm onClicked: { - mainItem.addParticipantsValidated(addParticipantLayout.selectedParticipants) + mainItem.addParticipantsValidated(addParticipantsForm.selectedParticipants) } } } Text { //: "%n participant(s) sélectionné(s)" - text: qsTr("group_call_participant_selected", '', addParticipantLayout.selectedParticipantsCount).arg(addParticipantLayout.selectedParticipantsCount) + text: qsTr("group_call_participant_selected", '', addParticipantsForm.selectedParticipantsCount).arg(addParticipantsForm.selectedParticipantsCount) color: DefaultStyle.main2_500_main Layout.leftMargin: addParticipantsBackButton.width + addParticipantsButtons.spacing maximumLineCount: 1 @@ -626,10 +602,9 @@ AbstractMainPage { } } AddParticipantsForm { - id: addParticipantLayout + id: addParticipantsForm Layout.fillWidth: true Layout.fillHeight: true - height: addParticipantInItem.height - title.height conferenceInfoGui: addParticipantInItem.conferenceInfoGui participantscSrollBarRightMargin: 0 } @@ -640,34 +615,37 @@ AbstractMainPage { Component { id: meetingDetail FocusScope{ - width: overridenRightPanelStackView.width - height: meetingDetailsLayout.childrenRect.height - ColumnLayout { + width: Utils.getSizeWithScreenRatio(393) + anchors.horizontalCenter: parent?.horizontalCenter + FlexboxLayout { id: meetingDetailsLayout - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - // anchors.fill: parent visible: mainItem.selectedConference - spacing: Utils.getSizeWithScreenRatio(16) + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottomMargin: Utils.getSizeWithScreenRatio(30) + width: Utils.getSizeWithScreenRatio(393) + direction: FlexboxLayout.Column + alignContent: FlexboxLayout.AlignSpaceBetween + gap: Utils.getSizeWithScreenRatio(16) Section { visible: mainItem.selectedConference Layout.fillWidth: true content: RowLayout { - spacing: Utils.getSizeWithScreenRatio(8) + spacing: Utils.getSizeWithScreenRatio(8) EffectImage { imageSource: AppIcons.usersThree colorizationColor: DefaultStyle.main2_600 - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) } Text { Layout.fillWidth: true text: mainItem.selectedConference && mainItem.selectedConference.core? mainItem.selectedConference.core.subject : "" maximumLineCount: 1 font { - pixelSize: Utils.getSizeWithScreenRatio(20) - weight: Typography.h4.weight + pixelSize: Utils.getSizeWithScreenRatio(20) + weight: Typography.h4.weight } } Item { @@ -688,22 +666,22 @@ AbstractMainPage { } PopupButton { id: deletePopup - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) contentImageColor: DefaultStyle.main1_500_main KeyNavigation.left: editButton.visible ? editButton : leftPanelStackView.currentItem KeyNavigation.right: leftPanelStackView.currentItem KeyNavigation.up: joinButton KeyNavigation.down: shareNetworkButton - + popup.contentItem: IconLabelButton { style: ButtonStyle.hoveredBackgroundRed property var isMeObj: UtilsCpp.isMe(mainItem.selectedConference?.core?.organizerAddress) property bool canCancel: isMeObj && isMeObj.value && mainItem.selectedConference?.core?.state !== LinphoneEnums.ConferenceInfoState.Cancelled icon.source: AppIcons.trashCan - //: "Supprimer la réunion" - text: qsTr("meeting_info_delete") - + //: "Supprimer la réunion" + text: qsTr("meeting_info_delete") + onClicked: { if (mainItem.selectedConference) { cancelAndDeleteConfDialog.confInfoToDelete = mainItem.selectedConference @@ -717,15 +695,16 @@ AbstractMainPage { } } Section { + Layout.fillWidth: true content: ColumnLayout { - spacing: Utils.getSizeWithScreenRatio(15) + spacing: Utils.getSizeWithScreenRatio(15) width: parent.width RowLayout { - spacing: Utils.getSizeWithScreenRatio(8) + spacing: Utils.getSizeWithScreenRatio(8) Layout.fillWidth: true EffectImage { - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) colorizationColor: DefaultStyle.main2_600 imageSource: AppIcons.videoCamera } @@ -762,47 +741,47 @@ AbstractMainPage { KeyNavigation.down: joinButton onClicked: { var success = UtilsCpp.copyToClipboard(mainItem.selectedConference.core.uri) - if (success) UtilsCpp.showInformationPopup(qsTr("saved"), - //: "Adresse de la réunion copiée" - qsTr("meeting_address_copied_to_clipboard_toast")) + if (success) UtilsCpp.showInformationPopup(qsTr("saved"), + //: "Adresse de la réunion copiée" + qsTr("meeting_address_copied_to_clipboard_toast")) } } } RowLayout { - spacing: Utils.getSizeWithScreenRatio(8) + spacing: Utils.getSizeWithScreenRatio(8) EffectImage { - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) imageSource: AppIcons.clock colorizationColor: DefaultStyle.main2_600 } Text { text: mainItem.selectedConference && mainItem.selectedConference.core - ? UtilsCpp.toDateString(mainItem.selectedConference.core.dateTime) - + " | " + UtilsCpp.toDateHourString(mainItem.selectedConference.core.dateTime) - + " - " + ? UtilsCpp.toDateString(mainItem.selectedConference.core.dateTime) + + " | " + UtilsCpp.toDateHourString(mainItem.selectedConference.core.dateTime) + + " - " + UtilsCpp.toDateHourString(mainItem.selectedConference.core.endDateTime) : '' font { - pixelSize: Utils.getSizeWithScreenRatio(14) + pixelSize: Utils.getSizeWithScreenRatio(14) capitalization: Font.Capitalize } } } RowLayout { - spacing: Utils.getSizeWithScreenRatio(8) + spacing: Utils.getSizeWithScreenRatio(8) EffectImage { - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) imageSource: AppIcons.globe colorizationColor: DefaultStyle.main2_600 } Text { Layout.fillWidth: true - //: "Fuseau horaire" - text: "%1: %2".arg(qsTr("meeting_schedule_timezone_title")).arg(mainItem.selectedConference && mainItem.selectedConference.core ? (mainItem.selectedConference.core.timeZoneModel.displayName + ", " + mainItem.selectedConference.core.timeZoneModel.countryName) : "") + //: "Fuseau horaire" + text: "%1: %2".arg(qsTr("meeting_schedule_timezone_title")).arg(mainItem.selectedConference && mainItem.selectedConference.core ? (mainItem.selectedConference.core.timeZoneModel.displayName + ", " + mainItem.selectedConference.core.timeZoneModel.countryName) : "") font { - pixelSize: Utils.getSizeWithScreenRatio(14) + pixelSize: Utils.getSizeWithScreenRatio(14) capitalization: Font.Capitalize } } @@ -810,12 +789,13 @@ AbstractMainPage { } } Section { + Layout.fillWidth: true visible: mainItem.selectedConference && mainItem.selectedConference.core?.description.length != 0 content: RowLayout { - spacing: Utils.getSizeWithScreenRatio(8) + spacing: Utils.getSizeWithScreenRatio(8) EffectImage { - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) imageSource: AppIcons.note colorizationColor: DefaultStyle.main2_600 } @@ -823,30 +803,31 @@ AbstractMainPage { text: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.description : "" Layout.fillWidth: true font { - pixelSize: Utils.getSizeWithScreenRatio(14) + pixelSize: Utils.getSizeWithScreenRatio(14) } } } } Section { + Layout.fillWidth: true content: RowLayout { - spacing: Utils.getSizeWithScreenRatio(8) + spacing: Utils.getSizeWithScreenRatio(8) EffectImage { - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) imageSource: AppIcons.userRectangle colorizationColor: DefaultStyle.main2_600 } Avatar { - Layout.preferredWidth: Utils.getSizeWithScreenRatio(45) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(45) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(45) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(45) _address: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.organizerAddress : "" secured: friendSecurityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified } Text { text: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.organizerName : "" font { - pixelSize: Utils.getSizeWithScreenRatio(14) + pixelSize: Utils.getSizeWithScreenRatio(14) capitalization: Font.Capitalize } } @@ -854,22 +835,25 @@ AbstractMainPage { } Section { visible: participantList.count > 0 + Layout.fillWidth: true + Layout.fillHeight: true + Layout.maximumHeight: participantList.contentHeight + Utils.getSizeWithScreenRatio(1) + spacing content: RowLayout { - Layout.preferredHeight: participantList.contentHeight - width: Utils.getSizeWithScreenRatio(393) - spacing: Utils.getSizeWithScreenRatio(8) + width: Utils.getSizeWithScreenRatio(393) + spacing: Utils.getSizeWithScreenRatio(8) EffectImage { - Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(24) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) Layout.alignment: Qt.AlignLeft | Qt.AlignTop - Layout.topMargin: Utils.getSizeWithScreenRatio(20) + Layout.topMargin: Utils.getSizeWithScreenRatio(20) imageSource: AppIcons.usersTwo colorizationColor: DefaultStyle.main2_600 } ListView { id: participantList - Layout.preferredHeight: contentHeight + // Layout.preferredHeight: contentHeight Layout.fillWidth: true + Layout.fillHeight: true model: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.participants : [] clip: true Control.ScrollBar.vertical: ScrollBar { @@ -880,11 +864,11 @@ AbstractMainPage { visible: participantList.height < participantList.contentHeight } delegate: RowLayout { - height: Utils.getSizeWithScreenRatio(56) + height: Utils.getSizeWithScreenRatio(56) width: participantList.width - participantScrollBar.width - Utils.getSizeWithScreenRatio(5) Avatar { - Layout.preferredWidth: Utils.getSizeWithScreenRatio(45) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(45) + Layout.preferredWidth: Utils.getSizeWithScreenRatio(45) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(45) _address: modelData.address secured: friendSecurityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified shadowEnabled: false @@ -895,18 +879,18 @@ AbstractMainPage { maximumLineCount: 1 Layout.fillWidth: true font { - pixelSize: Utils.getSizeWithScreenRatio(14) + pixelSize: Utils.getSizeWithScreenRatio(14) capitalization: Font.Capitalize } } Text { - //: "Organisateur" - text: qsTr("meeting_info_organizer_label") + //: "Organisateur" + text: qsTr("meeting_info_organizer_label") visible: mainItem.selectedConference && mainItem.selectedConference.core?.organizerAddress === modelData.address color: DefaultStyle.main2_400 font { - pixelSize: Utils.getSizeWithScreenRatio(12) - weight: Utils.getSizeWithScreenRatio(300) + pixelSize: Utils.getSizeWithScreenRatio(12) + weight: Utils.getSizeWithScreenRatio(300) } } } @@ -917,10 +901,8 @@ AbstractMainPage { id: joinButton visible: mainItem.selectedConference && mainItem.selectedConference.core?.state !== LinphoneEnums.ConferenceInfoState.Cancelled Layout.fillWidth: true - Layout.preferredHeight: implicitHeight - Layout.bottomMargin: Utils.getSizeWithScreenRatio(5) - //: "Rejoindre la réunion" - text: qsTr("meeting_info_join_title") + //: "Rejoindre la réunion" + text: qsTr("meeting_info_join_title") focus: true KeyNavigation.up: shareNetworkButton KeyNavigation.down: deletePopup @@ -936,4 +918,5 @@ AbstractMainPage { } } } + } From afd351496512006be996e42cd0b5def9092d0c6d Mon Sep 17 00:00:00 2001 From: gaelle Date: Fri, 21 Nov 2025 09:44:15 +0100 Subject: [PATCH 48/72] hide chat button if not supported for conference #LINQT-2192 --- Linphone/core/conference/ConferenceCore.cpp | 5 ++++ Linphone/core/conference/ConferenceCore.hpp | 4 +++ Linphone/data/languages/de.ts | 26 +++++++++---------- Linphone/data/languages/en.ts | 26 +++++++++---------- Linphone/data/languages/fr.ts | 26 +++++++++---------- .../view/Page/Window/Call/CallsWindow.qml | 1 + 6 files changed, 49 insertions(+), 39 deletions(-) diff --git a/Linphone/core/conference/ConferenceCore.cpp b/Linphone/core/conference/ConferenceCore.cpp index 9b9ddb5b0..d0b10f83f 100644 --- a/Linphone/core/conference/ConferenceCore.cpp +++ b/Linphone/core/conference/ConferenceCore.cpp @@ -47,6 +47,7 @@ ConferenceCore::ConferenceCore(const std::shared_ptr &conf mIsLocalScreenSharing = mConferenceModel->isLocalScreenSharing(); mIsScreenSharingEnabled = mConferenceModel->isScreenSharingEnabled(); mIsRecording = conference->isRecording(); + if (conference->getCurrentParams()) mIsChatEnabled = conference->getCurrentParams()->chatEnabled(); auto me = conference->getMe(); auto confAddress = conference->getConferenceAddress(); if (confAddress) { @@ -205,6 +206,10 @@ void ConferenceCore::setIsScreenSharingEnabled(bool state) { } } +bool ConferenceCore::isChatEnabled() const { + return mIsChatEnabled; +} + std::shared_ptr ConferenceCore::getModel() const { return mConferenceModel; } diff --git a/Linphone/core/conference/ConferenceCore.hpp b/Linphone/core/conference/ConferenceCore.hpp index 25d93fe47..19ce64657 100644 --- a/Linphone/core/conference/ConferenceCore.hpp +++ b/Linphone/core/conference/ConferenceCore.hpp @@ -37,6 +37,7 @@ class ConferenceCore : public QObject, public AbstractObject { Q_OBJECT public: Q_PROPERTY(QDateTime startDate READ getStartDate CONSTANT) + Q_PROPERTY(bool isChatEnabled READ isChatEnabled CONSTANT) // Q_PROPERTY(ParticipantDeviceList *participantDevices READ getParticipantDeviceList CONSTANT) // Q_PROPERTY(ParticipantModel* localParticipant READ getLocalParticipant NOTIFY localParticipantChanged) Q_PROPERTY(bool isReady MEMBER mIsReady WRITE setIsReady NOTIFY isReadyChanged) @@ -81,6 +82,8 @@ public: void setIsLocalScreenSharing(bool state); void setIsScreenSharingEnabled(bool state); + bool isChatEnabled() const; + std::shared_ptr getModel() const; //--------------------------------------------------------------------------- @@ -108,6 +111,7 @@ private: bool mIsRecording = false; bool mIsLocalScreenSharing = false; bool mIsScreenSharingEnabled = false; + bool mIsChatEnabled = false; QString mSubject; QString mConfUri; QDateTime mStartDate = QDateTime::currentDateTime(); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 39d583dd6..9b7ad0126 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -1692,7 +1692,7 @@ - + call_action_show_dialer "Pavé numérique" Wähltastatur @@ -1717,7 +1717,7 @@ - + call_action_go_to_settings "Paramètres" Einstellungen @@ -1886,72 +1886,72 @@ Bildschirm teilen… - + call_open_chat_hint Open chat… - + call_rise_hand_hint "Lever la main" Hand heben - + call_send_reaction_hint "Envoyer une réaction" Reaktion senden - + call_manage_participants_hint "Gérer les participants" Teilnehmer verwalten - + call_more_options_hint "Plus d'options…" Weitere Optionen… - + call_action_change_conference_layout "Modifier la disposition" Layout ändern - + call_action_full_screen "Mode Plein écran" Vollbildmodus - + call_action_stop_recording "Terminer l'enregistrement" Aufnahme beenden - + call_action_record "Enregistrer l'appel" Anruf aufnehmen - + call_activate_speaker_hint "Activer le son" Lautsprecher aktivieren - + call_deactivate_speaker_hint "Désactiver le son" Lautsprecher stummschalten diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 6dc178188..16e870808 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -1669,7 +1669,7 @@ - + call_action_show_dialer "Pavé numérique" Dialer @@ -1694,7 +1694,7 @@ - + call_action_go_to_settings "Paramètres" Settings @@ -1863,72 +1863,72 @@ Share screen… - + call_open_chat_hint Open chat… Open conversation… - + call_rise_hand_hint "Lever la main" Rise hand - + call_send_reaction_hint "Envoyer une réaction" Send reaction - + call_manage_participants_hint "Gérer les participants" Manage participants - + call_more_options_hint "Plus d'options…" More options… - + call_action_change_conference_layout "Modifier la disposition" Change layout - + call_action_full_screen "Mode Plein écran" Full screen mode - + call_action_stop_recording "Terminer l'enregistrement" End recording - + call_action_record "Enregistrer l'appel" Record call - + call_activate_speaker_hint "Activer le son" Activate speaker - + call_deactivate_speaker_hint "Désactiver le son" Mute speaker diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 6a7c3dcc8..9bbcddda9 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -1669,7 +1669,7 @@ - + call_action_show_dialer "Pavé numérique" Pavé numérique @@ -1694,7 +1694,7 @@ - + call_action_go_to_settings "Paramètres" Paramètres @@ -1863,72 +1863,72 @@ Partager l'écran… - + call_open_chat_hint Open chat… Ouvrir le chat… - + call_rise_hand_hint "Lever la main" Lever la main - + call_send_reaction_hint "Envoyer une réaction" Envoyer une réaction - + call_manage_participants_hint "Gérer les participants" Gérer les participants - + call_more_options_hint "Plus d'options…" Plus d'options… - + call_action_change_conference_layout "Modifier la disposition" Modifier la disposition - + call_action_full_screen "Mode Plein écran" Mode Plein écran - + call_action_stop_recording "Terminer l'enregistrement" Terminer l'enregistrement - + call_action_record "Enregistrer l'appel" Enregistrer l'appel - + call_activate_speaker_hint "Activer le son" Activer le son - + call_deactivate_speaker_hint "Désactiver le son" Désactiver le son diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index bde37f29a..162e2dcdc 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -1500,6 +1500,7 @@ AbstractWindow { // Chat panel button CheckableButton { id: chatPanelButton + visible: !mainWindow.conference || mainWindow.conference.core.isChatEnabled iconUrl: AppIcons.chatTeardropText //: Open chat… ToolTip.text: qsTr("call_open_chat_hint") From fea9a1b7be655429823fe86b0bcf3178f5159a2b Mon Sep 17 00:00:00 2001 From: "gaelle.braud" Date: Fri, 21 Nov 2025 14:01:16 +0100 Subject: [PATCH 49/72] fix binding loop in getLastFocusableItemInItem (fix #LINQT-2210) --- Linphone/view/Control/Tool/Helper/utils.js | 10 +++++----- Linphone/view/Page/Window/Call/CallsWindow.qml | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Linphone/view/Control/Tool/Helper/utils.js b/Linphone/view/Control/Tool/Helper/utils.js index 683e34ef5..9b72b4c14 100644 --- a/Linphone/view/Control/Tool/Helper/utils.js +++ b/Linphone/view/Control/Tool/Helper/utils.js @@ -154,8 +154,8 @@ function isDescendant(child, parent) { // ----------------------------------------------------------------------------- -// Retrieve first focussable item of an Item. If no item found, return undefined -function getFirstFocussableItemInItem(item) { +// Retrieve first focusable item of an Item. If no item found, return undefined +function getFirstFocusableItemInItem(item) { var next = item.nextItemInFocusChain(); if (next && isDescendant(next, item)){ return next; @@ -163,8 +163,8 @@ function getFirstFocussableItemInItem(item) { return undefined; } -// Retrieve last focussable item of an Item. If no item found, return undefined -function getLastFocussableItemInItem(item) { +// Retrieve last focusable item of an Item. If no item found, return undefined +function getLastFocusableItemInItem(item) { var next = item.nextItemInFocusChain(); if(next && !isDescendant(next, item)){ return undefined; @@ -173,7 +173,7 @@ function getLastFocussableItemInItem(item) { do{ current = next; next = current.nextItemInFocusChain(); - } while(isDescendant(next, item) && next.visible) + } while(isDescendant(next, item) && next.visible && next !== current) return current; } diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index 162e2dcdc..5a56d5b79 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -38,7 +38,7 @@ AbstractWindow { == LinphoneEnums.CallState.OutgoingEarlyMedia || mainWindow.callState == LinphoneEnums.CallState.IncomingReceived property Item firstButtonInBottomTab : mainWindow.startingCall ? endCallButton : (videoCameraButton.visible && videoCameraButton.enabled ? videoCameraButton : audioMicrophoneButton) - property Item lastButtonInBottomTab : mainWindow.startingCall ? Utils.getLastFocussableItemInItem(controlCallButtons) : endCallButton + property Item lastButtonInBottomTab : mainWindow.startingCall ? Utils.getLastFocusableItemInItem(controlCallButtons) : endCallButton onCallStateChanged: { if (callState === LinphoneEnums.CallState.Connected) { @@ -738,9 +738,9 @@ AbstractWindow { if (!rightPanel.contentLoader.item || rightPanel.contentLoader.item.objectName !== "participantListPanel") participantListButton.checked = false // Update tab focus properties - var firstContentFocusableItem = Utils.getFirstFocussableItemInItem(rightPanel.contentLoader.item) + var firstContentFocusableItem = Utils.getFirstFocusableItemInItem(rightPanel.contentLoader.item) rightPanel.firstContentFocusableItem = firstContentFocusableItem ?? mainWindow.firstButtonInBottomTab - var lastContentFocusableItem = Utils.getLastFocussableItemInItem(rightPanel.contentLoader.item) + var lastContentFocusableItem = Utils.getLastFocusableItemInItem(rightPanel.contentLoader.item) if(lastContentFocusableItem != undefined){ lastContentFocusableItem.KeyNavigation.tab = mainWindow.firstButtonInBottomTab } @@ -1302,7 +1302,7 @@ AbstractWindow { style: ButtonStyle.phoneRedLightBorder Layout.column: mainWindow.startingCall ? 0 : bottomButtonsLayout.columns - 1 KeyNavigation.tab: mainWindow.startingCall ? (videoCameraButton.visible && videoCameraButton.enabled ? videoCameraButton : audioMicrophoneButton) : openStatisticPanelButton - KeyNavigation.backtab: mainWindow.startingCall ? rightPanel.visible ? Utils.getLastFocussableItemInItem(rightPanel) : nextItemInFocusChain(false): callListButton + KeyNavigation.backtab: mainWindow.startingCall ? rightPanel.visible ? Utils.getLastFocusableItemInItem(rightPanel) : nextItemInFocusChain(false): callListButton onClicked: { mainWindow.callTerminatedByUser = true mainWindow.endCall(mainWindow.call) From 514c337192a086fd0c29fc9ec4fe64e58885ace9 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 21 Nov 2025 12:48:43 +0100 Subject: [PATCH 50/72] fix chatroom selection when filter change #LINQT-2199 --- Linphone/core/chat/message/EventLogList.cpp | 63 ++++++++----------- Linphone/data/languages/de.ts | 22 +++---- Linphone/data/languages/en.ts | 22 +++---- Linphone/data/languages/fr.ts | 22 +++---- .../Control/Display/Chat/ChatListView.qml | 29 +++++---- Linphone/view/Page/Main/Chat/ChatPage.qml | 8 +-- 6 files changed, 79 insertions(+), 87 deletions(-) diff --git a/Linphone/core/chat/message/EventLogList.cpp b/Linphone/core/chat/message/EventLogList.cpp index 764c5cca9..41c28e703 100644 --- a/Linphone/core/chat/message/EventLogList.cpp +++ b/Linphone/core/chat/message/EventLogList.cpp @@ -81,45 +81,32 @@ void EventLogList::connectItem(const QSharedPointer &item) { } void EventLogList::setChatCore(QSharedPointer core) { - auto updateChatCore = [this](QSharedPointer core) { - if (mChatCore != core) { - if (mChatCore) { - disconnect(mChatCore.get(), &ChatCore::eventsInserted, this, nullptr); - disconnect(mChatCore.get(), &ChatCore::eventListCleared, this, nullptr); - } - mChatCore = core; - if (mChatCore) { - connect(mChatCore.get(), &ChatCore::eventListCleared, this, [this] { resetData(); }); - connect(mChatCore.get(), &ChatCore::eventsInserted, this, - [this](QList> list) { - auto eventsList = getSharedList(); - for (auto &event : list) { - auto it = std::find_if( - eventsList.begin(), eventsList.end(), - [event](const QSharedPointer item) { return item == event; }); - if (it == eventsList.end()) { - connectItem(event); - add(event); - int index; - get(event.get(), &index); - emit eventInserted(index, new EventLogGui(event)); - } - } - }); - } - lUpdate(); - emit chatGuiChanged(); + if (mChatCore != core) { + if (mChatCore) { + disconnect(mChatCore.get(), &ChatCore::eventsInserted, this, nullptr); + disconnect(mChatCore.get(), &ChatCore::eventListCleared, this, nullptr); } - }; - if (mIsUpdating) { - connect(this, &EventLogList::isUpdatingChanged, this, [this, core, updateChatCore] { - if (!mIsUpdating) { - updateChatCore(core); - disconnect(this, &EventLogList::isUpdatingChanged, this, nullptr); - } - }); - } else { - updateChatCore(core); + mChatCore = core; + if (mChatCore) { + connect(mChatCore.get(), &ChatCore::eventListCleared, this, [this] { resetData(); }); + connect(mChatCore.get(), &ChatCore::eventsInserted, this, [this](QList> list) { + auto eventsList = getSharedList(); + for (auto &event : list) { + auto it = std::find_if(eventsList.begin(), eventsList.end(), + [event](const QSharedPointer item) { return item == event; }); + if (it == eventsList.end()) { + connectItem(event); + add(event); + int index; + get(event.get(), &index); + emit eventInserted(index, new EventLogGui(event)); + } + } + }); + } + lUpdate(); + // setIsUpdating(false); + emit chatGuiChanged(); } } diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 9b7ad0126..3c682aa01 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2112,65 +2112,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… - + chat_message_draft_sending_text - + chat_room_delete "Delete" Löschen - + chat_room_mute - + chat_room_unmute "Mute" - + chat_room_mark_as_read "Mark as read" - + chat_room_leave "leave" - + chat_list_leave_chat_popup_title leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 16e870808..61fe3a30d 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 is writing… - + chat_message_draft_sending_text Draft : %1 - + chat_room_delete "Delete" Delete - + chat_room_mute Mute - + chat_room_unmute "Mute" Unmute - + chat_room_mark_as_read "Mark as read" Mark as read - + chat_room_leave "leave" Leave - + chat_list_leave_chat_popup_title leave the conversation ? Leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? This conversation and all its messages will be deleted. Do You want to continue ? diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 9bbcddda9..7a9ac2d47 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… - + chat_message_draft_sending_text Brouillon : %1 - + chat_room_delete "Delete" Supprimer - + chat_room_mute Mettre en sourdine - + chat_room_unmute "Mute" Enlever la sourdine - + chat_room_mark_as_read "Mark as read" Marquer comme lu - + chat_room_leave "leave" Quitter la conversation - + chat_list_leave_chat_popup_title leave the conversation ? Quitter la conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ? - + chat_list_delete_chat_popup_title Delete the conversation ? Supprimer la conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ? diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index e9eedf35c..d7c34b315 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -18,7 +18,9 @@ ListView { property real busyIndicatorSize: Utils.getSizeWithScreenRatio(60) property ChatGui currentChatGui: model.getAt(currentIndex) || null + onCurrentChatGuiChanged: positionViewAtIndex(currentIndex, ListView.Center) property ChatGui chatToSelect: null + property ChatGui chatToSelectLater: null onChatToSelectChanged: { var index = chatProxy.findChatIndex(chatToSelect) if (index != -1) { @@ -28,10 +30,7 @@ ListView { } onChatClicked: (chat) => {selectChat(chat)} - onCountChanged: { - selectChat(currentChatGui) - } - + signal markAllAsRead() signal chatClicked(ChatGui chat) @@ -41,14 +40,11 @@ ListView { loading = true } filterText: mainItem.searchText + onFilterTextChanged: { + chatToSelectLater = currentChatGui + } initialDisplayItems: Math.max(20, Math.round(2 * mainItem.height / Utils.getSizeWithScreenRatio(56))) displayItemsStep: 3 * initialDisplayItems / 2 - onModelReset: { - loading = false - if (mainItem.chatToSelect) { - selectChat(mainItem.chatToSelect) - } - } onModelAboutToBeReset: { loading = true } @@ -58,7 +54,18 @@ ListView { mainItem.currentIndex = index } onLayoutChanged: { - selectChat(mainItem.currentChatGui) + loading = false + if (mainItem.chatToSelectLater) { + selectChat(mainItem.chatToSelectLater) + mainItem.chatToSelectLater = null + } + else if (mainItem.chatToSelect) { + selectChat(mainItem.chatToSelect) + mainItem.chatToSelect = null + } + else { + selectChat(mainItem.currentChatGui) + } } onChatCreated: (chat) => { selectChat(chat) diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index 315834520..7f091b00f 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -267,7 +267,7 @@ AbstractMainPage { Layout.rightMargin: Utils.getSizeWithScreenRatio(8) Layout.topMargin: Utils.getSizeWithScreenRatio(18) onGroupCreationRequested: { - console.log("groupe call requetsed") + console.log("groupe call requested") listStackView.push(groupChatItem) } onContactClicked: (contact) => { @@ -371,9 +371,7 @@ AbstractMainPage { visible: chat != undefined //&& (chat.core.isBasic || chat.core.conferenceJoined) anchors.fill: parent chat: mainItem.selectedChatGui ? mainItem.selectedChatGui : null - onChatChanged: { - if (mainItem.selectedChatGui !== chat) mainItem.selectedChatGui = chat - } + // Reset current chat when switching account, otherwise the binding makes // the last chat from last account the current chat for the new default account Connections { @@ -387,7 +385,7 @@ AbstractMainPage { Connections { target: mainItem function onSelectedChatGuiChanged() { - if (mainItem.selectedChatGui) selectedChatView.chat = mainItem.selectedChatGui + selectedChatView.chat = mainItem.selectedChatGui ? mainItem.selectedChatGui : null } } Binding { From bba3edd4b687d154aafd4767df66d3d916d4a81d Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 21 Nov 2025 14:34:59 +0100 Subject: [PATCH 51/72] fix check for update root url #LINQT-2177 --- Linphone/core/App.cpp | 11 +++++------ Linphone/data/languages/de.ts | 2 +- Linphone/data/languages/en.ts | 2 +- Linphone/data/languages/fr.ts | 2 +- Linphone/model/core/CoreModel.cpp | 10 ++++++++-- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index d2d177288..bed9b4079 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -438,11 +438,10 @@ void App::setSelf(QSharedPointer(me)) { mCoreModelConnection->invokeToCore([this, result, version, url, checkRequestedByUser] { switch (result) { case linphone::VersionUpdateCheckResult::Error: - if (checkRequestedByUser) - Utils::showInformationPopup(tr("info_popup_error_title"), - //: An error occured while trying to check update. Please - //: try again later or contact support team. - tr("info_popup_error_checking_update"), false); + Utils::showInformationPopup(tr("info_popup_error_title"), + //: An error occured while trying to check update. Please + //: try again later or contact support team. + tr("info_popup_error_checking_update"), false); break; case linphone::VersionUpdateCheckResult::NewVersionAvailable: { QString downloadLink = @@ -1398,7 +1397,7 @@ void App::setSysTrayIcon() { //: Check for update if (mSettings->isCheckForUpdateAvailable()) { QAction *checkForUpdateAction = new QAction(tr("check_for_update"), root); - root->connect(checkForUpdateAction, &QAction::triggered, this, [this] { checkForUpdate(); }); + root->connect(checkForUpdateAction, &QAction::triggered, this, [this] { checkForUpdate(true); }); menu->addAction(checkForUpdateAction); } menu->addAction(quitAction); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 3c682aa01..71b18e576 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -788,7 +788,7 @@ - + mark_all_read_action diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 61fe3a30d..7c6dbc717 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -783,7 +783,7 @@ Check for update - + mark_all_read_action Marquer tout comme lu diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 7a9ac2d47..59750f6c4 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -783,7 +783,7 @@ Rechercher une mise à jour - + mark_all_read_action Marquer tout comme lu diff --git a/Linphone/model/core/CoreModel.cpp b/Linphone/model/core/CoreModel.cpp index 6ac9f2207..f963839d2 100644 --- a/Linphone/model/core/CoreModel.cpp +++ b/Linphone/model/core/CoreModel.cpp @@ -374,8 +374,14 @@ void CoreModel::searchInMagicSearch(QString filter, void CoreModel::checkForUpdate(const std::string &applicationVersion, bool requestedByUser) { mCheckVersionRequestedByUser = requestedByUser; - if (SettingsModel::getInstance()->isCheckForUpdateEnabled()) { - CoreModel::getInstance()->getCore()->checkForUpdate(applicationVersion); + auto settingsModel = SettingsModel::getInstance(); + if (settingsModel->isCheckForUpdateEnabled()) { + if (settingsModel->getVersionCheckUrl().isEmpty()) + settingsModel->setVersionCheckUrl(Constants::VersionCheckReleaseUrl); + lInfo() << log().arg("Checking for update for version") << applicationVersion; + getCore()->checkForUpdate(applicationVersion); + } else { + lWarning() << log().arg("Check for update settings is not set"); } } From 735c473b3ce01d96e2590310d860adb08b84f65f Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 21 Nov 2025 15:54:58 +0100 Subject: [PATCH 52/72] add unread notification count on class window chat button #LINQT-2138 reset last active window if destroyed --- Linphone/core/chat/ChatCore.cpp | 13 +- Linphone/core/chat/ChatList.cpp | 11 +- Linphone/data/languages/de.ts | 292 +++++++++--------- Linphone/data/languages/en.ts | 292 +++++++++--------- Linphone/data/languages/fr.ts | 292 +++++++++--------- Linphone/view/CMakeLists.txt | 1 + .../view/Control/Container/VerticalTabBar.qml | 19 -- .../Control/Display/Chat/ChatListView.qml | 36 +-- .../Control/Display/UnreadNotification.qml | 42 +++ .../view/Page/Form/Chat/SelectedChatView.qml | 12 + Linphone/view/Page/Window/AbstractWindow.qml | 1 + .../view/Page/Window/Call/CallsWindow.qml | 14 +- 12 files changed, 520 insertions(+), 505 deletions(-) create mode 100644 Linphone/view/Control/Display/UnreadNotification.qml diff --git a/Linphone/core/chat/ChatCore.cpp b/Linphone/core/chat/ChatCore.cpp index 5e8ae5bde..937f69702 100644 --- a/Linphone/core/chat/ChatCore.cpp +++ b/Linphone/core/chat/ChatCore.cpp @@ -235,13 +235,14 @@ void ChatCore::setSelf(QSharedPointer me) { }); mChatModelConnection->makeConnectToCore(&ChatCore::lMarkAsRead, [this]() { - auto mainWindow = Utils::getMainWindow(); - if (mainWindow->isActive()) mChatModelConnection->invokeToModel([this]() { mChatModel->markAsRead(); }); + auto lastActiveWindow = Utils::getLastActiveWindow(); + if (lastActiveWindow && lastActiveWindow->isActive()) + mChatModelConnection->invokeToModel([this]() { mChatModel->markAsRead(); }); else { - connect(mainWindow, &QQuickWindow::activeChanged, this, [this, mainWindow] { - if (mainWindow->isActive()) { - disconnect(mainWindow, &QQuickWindow::activeChanged, this, nullptr); - mChatModelConnection->invokeToModel([this, mainWindow] { mChatModel->markAsRead(); }); + connect(lastActiveWindow, &QQuickWindow::activeChanged, this, [this, lastActiveWindow] { + if (lastActiveWindow->isActive()) { + disconnect(lastActiveWindow, &QQuickWindow::activeChanged, this, nullptr); + mChatModelConnection->invokeToModel([this, lastActiveWindow] { mChatModel->markAsRead(); }); } }); } diff --git a/Linphone/core/chat/ChatList.cpp b/Linphone/core/chat/ChatList.cpp index 69878049b..f98bca9a3 100644 --- a/Linphone/core/chat/ChatList.cpp +++ b/Linphone/core/chat/ChatList.cpp @@ -182,12 +182,11 @@ void ChatList::setSelf(QSharedPointer me) { if (chatRoom->getState() == linphone::ChatRoom::State::Created) { lInfo() << "ChatRoom created, add it to the list" << chatRoom.get(); auto chatCore = ChatCore::create(chatRoom); - mModelConnection->invokeToCore([this, chatCore] { - if (chatCore) { - bool added = addChatInList(chatCore); - if (added) emit chatCreated(new ChatGui(chatCore)); - } - }); + if (chatCore) { + bool added = addChatInList(chatCore); + if (added) + mModelConnection->invokeToCore([this, chatCore] { emit chatCreated(new ChatGui(chatCore)); }); + } } }); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 71b18e576..eb9185f1f 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -25,13 +25,13 @@ AbstractWindow - + contact_dialog_pick_phone_number_or_sip_address_title "Choisissez un numéro ou adresse SIP" Telefonnummer oder SIP-Adresse wählen - + fps_counter %1 FPS @@ -661,134 +661,134 @@ - - + + info_popup_error_title Error Fehler - + info_popup_configuration_failed_message Remote provisioning failed : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. - + info_popup_new_version_download_label - + info_popup_new_version_available_title New version available ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 - + info_popup_version_up_to_date_title - + info_popup_version_up_to_date_message Your version is up to date - + configuration_error_detail not reachable - + application_description "A free and open source SIP video-phone." Ein kostenloses Open-Source SIP Video-Telefon. - + command_line_arg_order "Send an order to the application towards a command line" Kommandozeilen-Befehl an die Anwendung schicken - + command_line_option_show_help Zeige Hilfe - + command_line_option_show_app_version App-Version anzeigen - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, Pfad oder Datei - + command_line_option_minimized - + command_line_option_log_to_stdout Debug-Informationen auf der Standardausgabe ausgeben - + command_line_option_print_app_logs_only "Print only logs from the application" Nur Anwendungs-Logs ausgeben - + hide_action "Cacher" "Afficher" Ausblenden - + show_action Zeigen - + quit_action "Quitter" Beenden - + check_for_update Check for update - + mark_all_read_action @@ -1527,236 +1527,236 @@ CallsWindow - + call_transfer_in_progress_toast "Transfert en cours, veuillez patienter" Weiterleitung läuft, bitte warten - - + + information_popup_error_title Fehler - + call_transfer_failed_toast "Le transfert d'appel a échoué" Weiterleitung fehlgeschlagen - + conference_error_empty_uri "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." Die Besprechung konnte aufgrund eines URI-Fehlers nicht gestartet werden. - + call_close_window_dialog_title "Terminer tous les appels en cours ?" Alle laufenden Anrufe beenden? - + call_close_window_dialog_message "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." Das Fenster wird gleich geschlossen. Dies beendet alle laufenden Anrufe. - + call_can_be_trusted_toast "Appareil authentifié" Gerät vertrauenswürdig - + call_dir %1 Anruf - + call_ended Appel terminé Anruf beendet - + conference_paused Meeting paused Besprechung pausiert - + call_paused Call paused Anruf pausiert - + call_srtp_point_to_point_encrypted Appel chiffré de point à point Punkt-zu-Punkt verschlüsselter Anruf - + call_zrtp_sas_validation_required Vérification nécessaire Validierung erforderlich - + call_zrtp_end_to_end_encrypted Appel chiffré de bout en bout Ende-zu-Ende verschlüsselter Anruf - + call_not_encrypted "Appel non chiffré" Unverschlüsselter Anruf - - + + call_waiting_for_encryption_info Waiting for encryption Warten auf Verschlüsselung - + call_paused_by_remote Call paused by remote - + conference_user_is_recording "You are recording the meeting" Sie nehmen die Besprechung auf - + call_user_is_recording "You are recording the call" Sie nehmen den Anruf auf - + conference_remote_is_recording "Someone is recording the meeting" Jemand nimmt die Besprechung auf - + call_remote_recording "%1 is recording the call" %1 nimmt den Anruf auf - + call_stop_recording "Stop recording" Aufnahme stoppen - + add Hinzufügen - + call_transfer_current_call_title "Transférer %1 à…" %1 weiterleiten an… - - + + call_transfer_confirm_dialog_tittle "Confirmer le transfert" Weiterleitung bestätigen - - + + call_transfer_confirm_dialog_message "Vous allez transférer %1 à %2." Sie werden %1 an %2 weiterleiten. - + call_action_start_new_call "Nouvel appel" Neuen Anruf starten - - + + call_action_show_dialer "Pavé numérique" Wähltastatur - + call_action_change_layout "Modifier la disposition" Layout ändern - + call_action_go_to_calls_list "Liste d'appel" Anrufliste - + Merger tous les appels call_action_merge_calls Alle Anrufe zusammenführen - - + + call_action_go_to_settings "Paramètres" Einstellungen - + conference_action_screen_sharing "Partage de votre écran" Bildschirm teilen - + conference_share_link_title Partager le lien de la réunion Besprechungs-Link teilen - + copied Copié Kopiert - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Der Besprechungs-Link wurde in die Zwischenablage kopiert - - + + conference_participants_list_title "Participants (%1)" Teilnehmer (%1) - - + + group_call_participant_selected 1 ausgewählter Teilnehmer @@ -1764,194 +1764,194 @@ - + meeting_schedule_add_participants_title Teilnehmer hinzufügen - + call_encryption_title Chiffrement Verschlüsselung - + open_statistic_panel_accessible_name - + conference_user_is_sharing_screen "You are sharing your screen" - + call_stop_screen_sharing "Stop sharing" Stopp - + stop_recording_accessible_name Stop recording Aufnahme stoppen - + stop_screen_sharing_accessible_name "Stop screen sharing" - + call_stats_title Statistiques Statistiken - - + + call_action_end_call "Terminer l'appel" Anruf beenden - - + + call_action_resume_call "Reprendre l'appel" Anruf fortsetzen - - + + call_action_pause_call "Mettre l'appel en pause" Anruf pausieren - - + + call_action_transfer_call "Transférer l'appel" Anruf weiterleiten - - + + call_action_start_new_call_hint "Initier un nouvel appel" Neuen Anruf starten - - + + call_display_call_list_hint "Afficher la liste d'appels" Anrufliste anzeigen - - + + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Video deaktivieren - - + + call_activate_video_hint Video aktivieren - - + + call_activate_microphone "Activer le micro" Mikrofon aktivieren - - + + call_deactivate_microphone "Désactiver le micro" Mikrofon stummschalten - - + + call_share_screen_hint Partager l'écran… Bildschirm teilen… - - + + call_open_chat_hint Open chat… - - + + call_rise_hand_hint "Lever la main" Hand heben - - + + call_send_reaction_hint "Envoyer une réaction" Reaktion senden - - + + call_manage_participants_hint "Gérer les participants" Teilnehmer verwalten - - + + call_more_options_hint "Plus d'options…" Weitere Optionen… - + call_action_change_conference_layout "Modifier la disposition" Layout ändern - + call_action_full_screen "Mode Plein écran" Vollbildmodus - + call_action_stop_recording "Terminer l'enregistrement" Aufnahme beenden - + call_action_record "Enregistrer l'appel" Anruf aufnehmen - + call_activate_speaker_hint "Activer le son" Lautsprecher aktivieren - + call_deactivate_speaker_hint "Désactiver le son" Lautsprecher stummschalten @@ -2112,65 +2112,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… - + chat_message_draft_sending_text - + chat_room_delete "Delete" Löschen - + chat_room_mute - + chat_room_unmute "Mute" - + chat_room_mark_as_read "Mark as read" - + chat_room_leave "leave" - + chat_list_leave_chat_popup_title leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? @@ -2453,58 +2453,58 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message - + info_popup_no_result_message No result found - + info_popup_first_result_message First result reached - + info_popup_last_result_message Last result reached - + chat_message_list_encrypted_header_title End to end encrypted chat - + unencrypted_conversation_warning This conversation is not encrypted ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! - + chat_message_is_writing_info %1 is writing… @@ -5828,42 +5828,42 @@ Pour les activer dans un projet commercial, merci de nous contacter. SelectedChatView - + chat_view_group_call_toast_message Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! - + reply_to_label Reply to %1 - + shared_medias_title Shared medias - + shared_documents_title Shared documents - + forward_to_title Forward to… - + conversations_title Conversations Konversationen diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 7c6dbc717..8d1d26009 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -25,13 +25,13 @@ AbstractWindow - + contact_dialog_pick_phone_number_or_sip_address_title "Choisissez un numéro ou adresse SIP" Choose a SIP number or address - + fps_counter %1 FPS @@ -656,134 +656,134 @@ - - + + info_popup_error_title Error Error - + info_popup_configuration_failed_message Remote provisioning failed : %1 Remote provisioning failed : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. An error occured while trying to check update. Please try again later or contact support team. - + info_popup_new_version_download_label Download it ! - + info_popup_new_version_available_title New version available ! New version available ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 A new version of Linphone (%1) is available at %1 - + info_popup_version_up_to_date_title Up to date - + info_popup_version_up_to_date_message Your version is up to date Up to date Your version is up to date - + configuration_error_detail not reachable not reachable - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Show app version - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimize - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Hide - + show_action Show - + quit_action "Quitter" Quit - + check_for_update Check for update Check for update - + mark_all_read_action Marquer tout comme lu @@ -1504,236 +1504,236 @@ CallsWindow - + call_transfer_in_progress_toast "Transfert en cours, veuillez patienter" Transfer in progress, please wait - - + + information_popup_error_title Error - + call_transfer_failed_toast "Le transfert d'appel a échoué" Transfer failed - + conference_error_empty_uri "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." Meeting could start due to URI error. - + call_close_window_dialog_title "Terminer tous les appels en cours ?" End all current calls ? - + call_close_window_dialog_message "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." The window is about to be closed. This will end all current calls. - + call_can_be_trusted_toast "Appareil authentifié" Device trusted - + call_dir %1 call - + call_ended Appel terminé Call ended - + conference_paused Meeting paused Meeting paused - + call_paused Call paused Call paused - + call_srtp_point_to_point_encrypted Appel chiffré de point à point Point-to-point encrypted call - + call_zrtp_sas_validation_required Vérification nécessaire Validation required - + call_zrtp_end_to_end_encrypted Appel chiffré de bout en bout End-to-end encrypted call - + call_not_encrypted "Appel non chiffré" Unencrypted call - - + + call_waiting_for_encryption_info Waiting for encryption Waiting for encryption - + call_paused_by_remote Call paused by remote Call paused by remote - + conference_user_is_recording "You are recording the meeting" You are recording the meeting - + call_user_is_recording "You are recording the call" You are recording the call - + conference_remote_is_recording "Someone is recording the meeting" Someone is recording the meeting - + call_remote_recording "%1 is recording the call" %1 records the call - + call_stop_recording "Stop recording" Stop recording - + add Add - + call_transfer_current_call_title "Transférer %1 à…" Transfer %1 to… - - + + call_transfer_confirm_dialog_tittle "Confirmer le transfert" Confirm transfer - - + + call_transfer_confirm_dialog_message "Vous allez transférer %1 à %2." You are going to transfer %1 to %2. - + call_action_start_new_call "Nouvel appel" New call - - + + call_action_show_dialer "Pavé numérique" Dialer - + call_action_change_layout "Modifier la disposition" Change layout - + call_action_go_to_calls_list "Liste d'appel" Call list - + Merger tous les appels call_action_merge_calls Merge all calls - - + + call_action_go_to_settings "Paramètres" Settings - + conference_action_screen_sharing "Partage de votre écran" Share your screen - + conference_share_link_title Partager le lien de la réunion Share meeting link - + copied Copié Copied - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Meeting link has been copied to the clipboard - - + + conference_participants_list_title "Participants (%1)" Participants (%1) - - + + group_call_participant_selected %1 selected participant @@ -1741,194 +1741,194 @@ - + meeting_schedule_add_participants_title Add participants - + call_encryption_title Chiffrement Encryption - + open_statistic_panel_accessible_name Open statistic panel - + conference_user_is_sharing_screen "You are sharing your screen" You are sharing your screen - + call_stop_screen_sharing "Stop sharing" Stop - + stop_recording_accessible_name Stop recording Stop recording - + stop_screen_sharing_accessible_name "Stop screen sharing" Stop screen sharing - + call_stats_title Statistiques Statistics - - + + call_action_end_call "Terminer l'appel" End call - - + + call_action_resume_call "Reprendre l'appel" Resume call - - + + call_action_pause_call "Mettre l'appel en pause" Pause call - - + + call_action_transfer_call "Transférer l'appel" Transfer call - - + + call_action_start_new_call_hint "Initier un nouvel appel" Start new call - - + + call_display_call_list_hint "Afficher la liste d'appels" View call list - - + + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Turn off video - - + + call_activate_video_hint Enable video - - + + call_activate_microphone "Activer le micro" Activate microphone - - + + call_deactivate_microphone "Désactiver le micro" Mute microphone - - + + call_share_screen_hint Partager l'écran… Share screen… - - + + call_open_chat_hint Open chat… Open conversation… - - + + call_rise_hand_hint "Lever la main" Rise hand - - + + call_send_reaction_hint "Envoyer une réaction" Send reaction - - + + call_manage_participants_hint "Gérer les participants" Manage participants - - + + call_more_options_hint "Plus d'options…" More options… - + call_action_change_conference_layout "Modifier la disposition" Change layout - + call_action_full_screen "Mode Plein écran" Full screen mode - + call_action_stop_recording "Terminer l'enregistrement" End recording - + call_action_record "Enregistrer l'appel" Record call - + call_activate_speaker_hint "Activer le son" Activate speaker - + call_deactivate_speaker_hint "Désactiver le son" Mute speaker @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 is writing… - + chat_message_draft_sending_text Draft : %1 - + chat_room_delete "Delete" Delete - + chat_room_mute Mute - + chat_room_unmute "Mute" Unmute - + chat_room_mark_as_read "Mark as read" Mark as read - + chat_room_leave "leave" Leave - + chat_list_leave_chat_popup_title leave the conversation ? Leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? This conversation and all its messages will be deleted. Do You want to continue ? @@ -2425,44 +2425,44 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message Find message - + info_popup_no_result_message No result found No result found - + info_popup_first_result_message First result reached First result reached - + info_popup_last_result_message Last result reached Last result reached - + chat_message_list_encrypted_header_title End to end encrypted chat End to end encrypted chat - + unencrypted_conversation_warning This conversation is not encrypted ! This conversation is not encrypted ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. @@ -2470,7 +2470,7 @@ Error Only your correspondent can decrypt them. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! @@ -2478,7 +2478,7 @@ Only your correspondent can decrypt them. may sure you don't share any sensitive information ! - + chat_message_is_writing_info %1 is writing… %1 is writing… @@ -5723,42 +5723,42 @@ To enable them in a commercial project, please contact us. SelectedChatView - + chat_view_group_call_toast_message Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! This conversation is not encrypted ! - + reply_to_label Reply to %1 Reply to %1 - + shared_medias_title Shared medias Shared medias - + shared_documents_title Shared documents Shared documents - + forward_to_title Forward to… Froward to… - + conversations_title Conversations Conversations diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 59750f6c4..1f806520e 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -25,13 +25,13 @@ AbstractWindow - + contact_dialog_pick_phone_number_or_sip_address_title "Choisissez un numéro ou adresse SIP" Choisissez un numéro ou adresse SIP - + fps_counter %1 FPS @@ -656,134 +656,134 @@ - - + + info_popup_error_title Error Erreur - + info_popup_configuration_failed_message Remote provisioning failed : %1 La configuration distante a échoué : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. Une erreur est survenue lors de la recherche de mise à jour. Merci de réessayer plus tard ou de contacter l'équipe de support. - + info_popup_new_version_download_label Téléchargez-là ! - + info_popup_new_version_available_title New version available ! Nouvelle version disponible ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 Une nouvelle version de Linphone (%1) est disponible. %2 - + info_popup_version_up_to_date_title À jour - + info_popup_version_up_to_date_message Your version is up to date Votre version est à jour - + configuration_error_detail not reachable indisponible - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Afficher la version de l'application - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimiser - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Cacher - + show_action Afficher - + quit_action "Quitter" Quitter - + check_for_update Check for update Rechercher une mise à jour - + mark_all_read_action Marquer tout comme lu @@ -1504,236 +1504,236 @@ CallsWindow - + call_transfer_in_progress_toast "Transfert en cours, veuillez patienter" Transfert en cours, veuillez patienter - - + + information_popup_error_title Erreur - + call_transfer_failed_toast "Le transfert d'appel a échoué" Le transfert d'appel a échoué - + conference_error_empty_uri "La conférence n'a pas pu démarrer en raison d'une erreur d'uri." La conférence n'a pas pu démarrer en raison d'une erreur d'uri. - + call_close_window_dialog_title "Terminer tous les appels en cours ?" Terminer tous les appels en cours ? - + call_close_window_dialog_message "La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours." La fenêtre est sur le point d'être fermée. Cela terminera tous les appels en cours. - + call_can_be_trusted_toast "Appareil authentifié" Appareil authentifié - + call_dir Appel %1 - + call_ended Appel terminé Appel terminé - + conference_paused Meeting paused Réunion mise en pause - + call_paused Call paused Appel mis en pause - + call_srtp_point_to_point_encrypted Appel chiffré de point à point Appel chiffré de point à point - + call_zrtp_sas_validation_required Vérification nécessaire Vérification nécessaire - + call_zrtp_end_to_end_encrypted Appel chiffré de bout en bout Appel chiffré de bout en bout - + call_not_encrypted "Appel non chiffré" Appel non chiffré - - + + call_waiting_for_encryption_info Waiting for encryption En attente de chiffrement - + call_paused_by_remote Call paused by remote Appel mis en pause par votre correspondant - + conference_user_is_recording "You are recording the meeting" Vous enregistrez la réunion - + call_user_is_recording "You are recording the call" Vous enregistrez l'appel - + conference_remote_is_recording "Someone is recording the meeting" Un participant enregistre la réunion - + call_remote_recording "%1 is recording the call" %1 enregistre l'appel - + call_stop_recording "Stop recording" Arrêter l'enregistrement - + add Ajouter - + call_transfer_current_call_title "Transférer %1 à…" Transférer %1 à… - - + + call_transfer_confirm_dialog_tittle "Confirmer le transfert" Confirmer le transfert - - + + call_transfer_confirm_dialog_message "Vous allez transférer %1 à %2." Vous allez transférer %1 à %2. - + call_action_start_new_call "Nouvel appel" Nouvel appel - - + + call_action_show_dialer "Pavé numérique" Pavé numérique - + call_action_change_layout "Modifier la disposition" Modifier la disposition - + call_action_go_to_calls_list "Liste d'appel" Liste d'appel - + Merger tous les appels call_action_merge_calls Merger tous les appels - - + + call_action_go_to_settings "Paramètres" Paramètres - + conference_action_screen_sharing "Partage de votre écran" Partage de votre écran - + conference_share_link_title Partager le lien de la réunion Partager le lien de la réunion - + copied Copié Copié - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Le lien de la réunion a été copié dans le presse-papier - - + + conference_participants_list_title "Participants (%1)" Participants (%1) - - + + group_call_participant_selected %1 participant sélectionné @@ -1741,194 +1741,194 @@ - + meeting_schedule_add_participants_title Ajouter des participants - + call_encryption_title Chiffrement Chiffrement - + open_statistic_panel_accessible_name Ouvrir le panneau de statistiques - + conference_user_is_sharing_screen "You are sharing your screen" Vous partagez votre écran - + call_stop_screen_sharing "Stop sharing" Arrêter le partage - + stop_recording_accessible_name Stop recording Arrêter l'enregistrement - + stop_screen_sharing_accessible_name "Stop screen sharing" Arrêter le partage d'écran - + call_stats_title Statistiques Statistiques - - + + call_action_end_call "Terminer l'appel" Terminer l'appel - - + + call_action_resume_call "Reprendre l'appel" Reprendre l'appel - - + + call_action_pause_call "Mettre l'appel en pause" Mettre l'appel en pause - - + + call_action_transfer_call "Transférer l'appel" Transférer l'appel - - + + call_action_start_new_call_hint "Initier un nouvel appel" Initier un nouvel appel - - + + call_display_call_list_hint "Afficher la liste d'appels" Afficher la liste d'appels - - + + call_deactivate_video_hint "Désactiver la vidéo" "Activer la vidéo" Désactiver la vidéo - - + + call_activate_video_hint Activer la vidéo - - + + call_activate_microphone "Activer le micro" Activer le micro - - + + call_deactivate_microphone "Désactiver le micro" Désactiver le micro - - + + call_share_screen_hint Partager l'écran… Partager l'écran… - - + + call_open_chat_hint Open chat… Ouvrir le chat… - - + + call_rise_hand_hint "Lever la main" Lever la main - - + + call_send_reaction_hint "Envoyer une réaction" Envoyer une réaction - - + + call_manage_participants_hint "Gérer les participants" Gérer les participants - - + + call_more_options_hint "Plus d'options…" Plus d'options… - + call_action_change_conference_layout "Modifier la disposition" Modifier la disposition - + call_action_full_screen "Mode Plein écran" Mode Plein écran - + call_action_stop_recording "Terminer l'enregistrement" Terminer l'enregistrement - + call_action_record "Enregistrer l'appel" Enregistrer l'appel - + call_activate_speaker_hint "Activer le son" Activer le son - + call_deactivate_speaker_hint "Désactiver le son" Désactiver le son @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… - + chat_message_draft_sending_text Brouillon : %1 - + chat_room_delete "Delete" Supprimer - + chat_room_mute Mettre en sourdine - + chat_room_unmute "Mute" Enlever la sourdine - + chat_room_mark_as_read "Mark as read" Marquer comme lu - + chat_room_leave "leave" Quitter la conversation - + chat_list_leave_chat_popup_title leave the conversation ? Quitter la conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ? - + chat_list_delete_chat_popup_title Delete the conversation ? Supprimer la conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ? @@ -2425,44 +2425,44 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message Trouver un message - + info_popup_no_result_message No result found Aucun résultat trouvé - + info_popup_first_result_message First result reached Premier résultat atteint - + info_popup_last_result_message Last result reached Dernier résultat atteint - + chat_message_list_encrypted_header_title End to end encrypted chat Conversation chiffrée de bout en bout - + unencrypted_conversation_warning This conversation is not encrypted ! Cette conversation n'est pas chiffrée ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. @@ -2470,7 +2470,7 @@ Error en bout. Seul votre correspondant peut les déchiffrer. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! @@ -2478,7 +2478,7 @@ en bout. Seul votre correspondant peut les déchiffrer. assurez-vous de ne pas partager d’informations sensibles ! - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… @@ -5723,42 +5723,42 @@ Pour les activer dans un projet commercial, merci de nous contacter. SelectedChatView - + chat_view_group_call_toast_message Démarrer un appel de groupe ? - + unencrypted_conversation_warning This conversation is not encrypted ! Cette conversation n'est pas chiffrée ! - + reply_to_label Reply to %1 Réponse à %1 - + shared_medias_title Shared medias Médias partagés - + shared_documents_title Shared documents Documents partagés - + forward_to_title Forward to… Transférer à… - + conversations_title Conversations Conversations diff --git a/Linphone/view/CMakeLists.txt b/Linphone/view/CMakeLists.txt index af4931e7f..54d73d826 100644 --- a/Linphone/view/CMakeLists.txt +++ b/Linphone/view/CMakeLists.txt @@ -54,6 +54,7 @@ list(APPEND _LINPHONEAPP_QML_FILES view/Control/Display/TemporaryText.qml view/Control/Display/Text.qml view/Control/Display/ToolTip.qml + view/Control/Display/UnreadNotification.qml view/Control/Display/Call/CallListView.qml view/Control/Display/Call/CallHistoryListView.qml view/Control/Display/Call/CallStatistics.qml diff --git a/Linphone/view/Control/Container/VerticalTabBar.qml b/Linphone/view/Control/Container/VerticalTabBar.qml index 8190fc03a..329ece59e 100644 --- a/Linphone/view/Control/Container/VerticalTabBar.qml +++ b/Linphone/view/Control/Container/VerticalTabBar.qml @@ -35,25 +35,6 @@ Control.TabBar { initButtons() } } - - component UnreadNotification: Rectangle { - property int unread: 0 - visible: unread > 0 - width: Utils.getSizeWithScreenRatio(15) - height: Utils.getSizeWithScreenRatio(15) - radius: width/2 - color: DefaultStyle.danger_500_main - Text{ - id: unreadCount - anchors.fill: parent - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - color: DefaultStyle.grey_0 - fontSizeMode: Text.Fit - font.pixelSize: Utils.getSizeWithScreenRatio(15) - text: parent.unread > 100 ? '99+' : parent.unread - } - } contentItem: ListView { model: mainItem.contentModel diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index d7c34b315..720361d2a 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -133,40 +133,6 @@ ListView { // So we need to use this variable to switch off all hovered items. property int lastMouseContainsIndex: -1 - component UnreadNotification: Item { - id: unreadNotif - property int unread: 0 - width: Utils.getSizeWithScreenRatio(14) - height: Utils.getSizeWithScreenRatio(14) - visible: unread > 0 - Rectangle { - id: background - anchors.fill: parent - radius: width/2 - color: DefaultStyle.danger_500_main - Text{ - anchors.fill: parent - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - color: DefaultStyle.grey_0 - fontSizeMode: Text.Fit - font.pixelSize: Utils.getSizeWithScreenRatio(10) - text: parent.unreadNotif > 100 ? '99+' : unreadNotif.unread - } - } - MultiEffect { - id: shadow - anchors.fill: background - source: background - // Crash : https://bugreports.qt.io/browse/QTBUG-124730? - shadowEnabled: true - shadowColor: DefaultStyle.grey_1000 - shadowBlur: 1 - shadowOpacity: 0.15 - z: unreadNotif.z - 1 - } - } - delegate: FocusScope { visible: !mainItem.loading width: mainItem.width @@ -333,6 +299,8 @@ ListView { } UnreadNotification { id: unreadCount + Layout.preferredWidth: Utils.getSizeWithScreenRatio(14) + Layout.preferredHeight: Utils.getSizeWithScreenRatio(14) unread: modelData?.core.unreadMessagesCount || false } EffectImage { diff --git a/Linphone/view/Control/Display/UnreadNotification.qml b/Linphone/view/Control/Display/UnreadNotification.qml new file mode 100644 index 000000000..a99c6ab0c --- /dev/null +++ b/Linphone/view/Control/Display/UnreadNotification.qml @@ -0,0 +1,42 @@ +import QtQuick +import Linphone +import QtQuick.Controls.Basic as Control +import QtQuick.Effects +import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils + +Control.Control { + id: mainItem + property int unread: 0 + width: Utils.getSizeWithScreenRatio(14) + height: Utils.getSizeWithScreenRatio(14) + visible: unread > 0 + background: Item { + anchors.fill: parent + Rectangle { + id: background + anchors.fill: parent + radius: width/2 + color: DefaultStyle.danger_500_main + } + MultiEffect { + id: shadow + anchors.fill: background + source: background + // Crash : https://bugreports.qt.io/browse/QTBUG-124730? + shadowEnabled: true + shadowColor: DefaultStyle.grey_1000 + shadowBlur: 1 + shadowOpacity: 0.15 + z: mainItem.z - 1 + } + } + contentItem: Text { + anchors.fill: parent + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + color: DefaultStyle.grey_0 + fontSizeMode: Text.Fit + font.pixelSize: Utils.getSizeWithScreenRatio(10) + text: mainItem.unread > 100 ? '99+' : mainItem.unread + } +} \ No newline at end of file diff --git a/Linphone/view/Page/Form/Chat/SelectedChatView.qml b/Linphone/view/Page/Form/Chat/SelectedChatView.qml index 5043d0c5a..685cdf693 100644 --- a/Linphone/view/Page/Form/Chat/SelectedChatView.qml +++ b/Linphone/view/Page/Form/Chat/SelectedChatView.qml @@ -26,6 +26,18 @@ FocusScope { signal oneOneCall(bool video) signal groupCall() + onActiveFocusChanged: if(activeFocus) { + console.log("selected has active focus, mark as read") + chat.core.lMarkAsRead() + } + MouseArea{ + anchors.fill: parent + onPressed: { + console.log("selected chat view pressed") + forceActiveFocus() + } + } + onOneOneCall: { if (contact) mainWindow.startCallWithContact(contact, video, mainItem) diff --git a/Linphone/view/Page/Window/AbstractWindow.qml b/Linphone/view/Page/Window/AbstractWindow.qml index b8ddc8d2b..d680754d8 100644 --- a/Linphone/view/Page/Window/AbstractWindow.qml +++ b/Linphone/view/Page/Window/AbstractWindow.qml @@ -17,6 +17,7 @@ ApplicationWindow { height: Math.min(Utils.getSizeWithScreenRatio(982), Screen.desktopAvailableHeight) onActiveChanged: if (active) UtilsCpp.setLastActiveWindow(this) + Component.onDestruction: if (UtilsCpp.getLastActiveWindow() === this) UtilsCpp.setLastActiveWindow(null) property bool isFullscreen: visibility == Window.FullScreen onIsFullscreenChanged: DesktopToolsCpp.screenSaverStatus = !isFullscreen diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index 5a56d5b79..fb0de7802 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -22,6 +22,10 @@ AbstractWindow { property ConferenceGui conference: call && call.core.conference || null property bool isConference: call ? call.core.isConference : false + // Chat related to call + property var chatObj: UtilsCpp.getCurrentCallChat(mainWindow.call) + property ChatGui chat: chatObj ? chatObj.value : null + property int conferenceLayout: call && call.core.conferenceVideoLayout || 0 property bool localVideoEnabled: call && call.core.localVideoEnabled property bool remoteVideoEnabled: call && call.core.remoteVideoEnabled @@ -989,6 +993,7 @@ AbstractWindow { Control.Control { objectName: "chatPanel" width: parent.width + Component.onCompleted: chatView.forceActiveFocus() SelectedChatView { id: chatView width: parent.width @@ -998,8 +1003,7 @@ AbstractWindow { event.accepted = true } call: mainWindow.call - property var chatObj: UtilsCpp.getCurrentCallChat(mainWindow.call) - chat: chatObj ? chatObj.value : null + chat: mainWindow.chat } Connections { target: rightPanel.contentLoader @@ -1495,6 +1499,7 @@ AbstractWindow { rightPanel.visible = false } } + } // Chat panel button @@ -1509,6 +1514,11 @@ AbstractWindow { Layout.preferredHeight: Utils.getSizeWithScreenRatio(55) icon.width: Utils.getSizeWithScreenRatio(32) icon.height: Utils.getSizeWithScreenRatio(32) + UnreadNotification { + anchors.top: parent.top + anchors.right: parent.right + unread: mainWindow.chat ? mainWindow.chat.core.unreadMessagesCount : 0 + } onToggled: { if (checked) { rightPanel.visible = true From 29691485bf5808bc656eb9eb14d33c07ef2dd33e Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 24 Nov 2025 15:17:34 +0100 Subject: [PATCH 53/72] hide conference joined/left events if not in a chat group #LINQT-2146 --- Linphone/core/chat/ChatCore.cpp | 6 +++--- Linphone/core/chat/ChatList.cpp | 9 +++++---- Linphone/core/chat/message/EventLogCore.cpp | 19 ++++++++++++++----- Linphone/core/chat/message/EventLogCore.hpp | 9 ++++++--- Linphone/core/chat/message/EventLogList.cpp | 15 ++++++++------- 5 files changed, 36 insertions(+), 22 deletions(-) diff --git a/Linphone/core/chat/ChatCore.cpp b/Linphone/core/chat/ChatCore.cpp index 937f69702..c60cc6dce 100644 --- a/Linphone/core/chat/ChatCore.cpp +++ b/Linphone/core/chat/ChatCore.cpp @@ -209,7 +209,7 @@ void ChatCore::setSelf(QSharedPointer me) { const std::shared_ptr &eventLog) { if (mChatModel->getMonitor() != chatRoom) return; lDebug() << "EVENT LOG RECEIVED IN CHATROOM" << mChatModel->getTitle(); - auto event = EventLogCore::create(eventLog); + auto event = EventLogCore::create(eventLog, chatRoom); if (event->isHandled()) { mChatModelConnection->invokeToCore([this, event]() { emit eventsInserted({event}); }); } @@ -224,7 +224,7 @@ void ChatCore::setSelf(QSharedPointer me) { lDebug() << "CHAT MESSAGE RECEIVED IN CHATROOM" << mChatModel->getTitle(); QList> list; for (auto &e : eventsLog) { - auto event = EventLogCore::create(e); + auto event = EventLogCore::create(e, chatRoom); list.push_back(event); } mChatModelConnection->invokeToCore([this, list]() { @@ -287,7 +287,7 @@ void ChatCore::setSelf(QSharedPointer me) { mChatModelConnection->makeConnectToModel( &ChatModel::chatMessageSending, [this](const std::shared_ptr &chatRoom, const std::shared_ptr &eventLog) { - auto event = EventLogCore::create(eventLog); + auto event = EventLogCore::create(eventLog, chatRoom); mChatModelConnection->invokeToCore([this, event]() { emit eventsInserted({event}); }); }); mChatModelConnection->makeConnectToCore( diff --git a/Linphone/core/chat/ChatList.cpp b/Linphone/core/chat/ChatList.cpp index f98bca9a3..7d0a662c2 100644 --- a/Linphone/core/chat/ChatList.cpp +++ b/Linphone/core/chat/ChatList.cpp @@ -143,7 +143,7 @@ void ChatList::setSelf(QSharedPointer me) { return; } auto chatCore = ChatCore::create(room); - addChatInList(chatCore); + mModelConnection->invokeToCore([this, chatCore] { addChatInList(chatCore); }); }; mModelConnection->makeConnectToModel(&CoreModel::messageReceived, [this, addChatToList](const std::shared_ptr &core, @@ -183,9 +183,10 @@ void ChatList::setSelf(QSharedPointer me) { lInfo() << "ChatRoom created, add it to the list" << chatRoom.get(); auto chatCore = ChatCore::create(chatRoom); if (chatCore) { - bool added = addChatInList(chatCore); - if (added) - mModelConnection->invokeToCore([this, chatCore] { emit chatCreated(new ChatGui(chatCore)); }); + mModelConnection->invokeToCore([this, chatCore] { + bool added = addChatInList(chatCore); + if (added) emit chatCreated(new ChatGui(chatCore)); + }); } } }); diff --git a/Linphone/core/chat/message/EventLogCore.cpp b/Linphone/core/chat/message/EventLogCore.cpp index 53faca722..c2e689d71 100644 --- a/Linphone/core/chat/message/EventLogCore.cpp +++ b/Linphone/core/chat/message/EventLogCore.cpp @@ -26,14 +26,16 @@ DEFINE_ABSTRACT_OBJECT(EventLogCore) -QSharedPointer EventLogCore::create(const std::shared_ptr &eventLog) { - auto sharedPointer = QSharedPointer(new EventLogCore(eventLog), &QObject::deleteLater); +QSharedPointer EventLogCore::create(const std::shared_ptr &eventLog, + const std::shared_ptr &chatRoom) { + auto sharedPointer = QSharedPointer(new EventLogCore(eventLog, chatRoom), &QObject::deleteLater); sharedPointer->setSelf(sharedPointer); sharedPointer->moveToThread(App::getInstance()->thread()); return sharedPointer; } -EventLogCore::EventLogCore(const std::shared_ptr &eventLog) { +EventLogCore::EventLogCore(const std::shared_ptr &eventLog, + const std::shared_ptr &chatRoom) { mustBeInLinphoneThread(getClassName()); App::getInstance()->mEngine->setObjectOwnership(this, QQmlEngine::CppOwnership); mEventLogType = LinphoneEnums::fromLinphone(eventLog->getType()); @@ -52,7 +54,7 @@ EventLogCore::EventLogCore(const std::shared_ptr &even QString type = QString::fromLatin1( QMetaEnum::fromType().valueToKey(static_cast(mEventLogType))); mEventId = type + QString::number(static_cast(eventLog->getCreationTime())); - computeEvent(eventLog); + computeEvent(eventLog, chatRoom); } } @@ -94,7 +96,8 @@ std::shared_ptr EventLogCore::getModel() const { // Events (other than ChatMessage and CallLog which are handled in their respective Core) -void EventLogCore::computeEvent(const std::shared_ptr &eventLog) { +void EventLogCore::computeEvent(const std::shared_ptr &eventLog, + const std::shared_ptr &chatRoom) { mustBeInLinphoneThread(getClassName()); mHandled = true; mImportant = false; @@ -104,9 +107,15 @@ void EventLogCore::computeEvent(const std::shared_ptr switch (eventLog->getType()) { case linphone::EventLog::Type::ConferenceCreated: + if (chatRoom->hasCapability((int)linphone::ChatRoom::Capabilities::OneToOne) && + !chatRoom->hasCapability((int)linphone::ChatRoom::Capabilities::Conference)) + mHandled = false; mEventDetails = tr("conference_created_event"); break; case linphone::EventLog::Type::ConferenceTerminated: + if (chatRoom->hasCapability((int)linphone::ChatRoom::Capabilities::OneToOne) && + !chatRoom->hasCapability((int)linphone::ChatRoom::Capabilities::Conference)) + mHandled = false; mEventDetails = tr("conference_created_terminated"); mImportant = true; break; diff --git a/Linphone/core/chat/message/EventLogCore.hpp b/Linphone/core/chat/message/EventLogCore.hpp index fe0b4c550..0bf8ae5fd 100644 --- a/Linphone/core/chat/message/EventLogCore.hpp +++ b/Linphone/core/chat/message/EventLogCore.hpp @@ -51,8 +51,10 @@ class EventLogCore : public QObject, public AbstractObject { Q_PROPERTY(QDateTime timestamp READ getTimestamp CONSTANT) public: - static QSharedPointer create(const std::shared_ptr &eventLog); - EventLogCore(const std::shared_ptr &eventLog); + static QSharedPointer create(const std::shared_ptr &eventLog, + const std::shared_ptr &chatRoom); + EventLogCore(const std::shared_ptr &eventLog, + const std::shared_ptr &chatRoom); ~EventLogCore(); void setSelf(QSharedPointer me); QString getEventLogId(); @@ -87,7 +89,8 @@ private: ChatMessageCore *getChatMessageCorePointer(); CallHistoryCore *getCallHistoryCorePointer(); std::shared_ptr mEventLogModel; - void computeEvent(const std::shared_ptr &eventLog); + void computeEvent(const std::shared_ptr &eventLog, + const std::shared_ptr &chatRoom); }; #endif // EventLogCore_H_ diff --git a/Linphone/core/chat/message/EventLogList.cpp b/Linphone/core/chat/message/EventLogList.cpp index 41c28e703..1fd0d3d13 100644 --- a/Linphone/core/chat/message/EventLogList.cpp +++ b/Linphone/core/chat/message/EventLogList.cpp @@ -138,7 +138,7 @@ void EventLogList::displayMore() { auto linphoneLogs = chatModel->getHistoryRange(totalItemsCount, newCount); QList> *events = new QList>(); for (auto it : linphoneLogs) { - auto model = EventLogCore::create(it); + auto model = EventLogCore::create(it, chatModel->getMonitor()); events->push_back(model); } mCoreModelConnection->invokeToCore([this, events] { @@ -176,16 +176,17 @@ void EventLogList::loadMessagesUpTo(std::shared_ptr event) { auto beforeEvents = chatModel->getHistoryRangeNear(mItemsToLoadBeforeSearchResult, 0, event, filters); auto linphoneLogs = chatModel->getHistoryRangeBetween(event, linOldest, filters); QList> *events = new QList>(); - for (auto it : beforeEvents) { - auto model = EventLogCore::create(it); + const auto &linChatRoom = chatModel->getMonitor(); + for (const auto &it : beforeEvents) { + auto model = EventLogCore::create(it, linChatRoom); events->push_back(model); } - for (auto it : linphoneLogs) { - auto model = EventLogCore::create(it); + for (const auto &it : linphoneLogs) { + auto model = EventLogCore::create(it, linChatRoom); events->push_back(model); } mCoreModelConnection->invokeToCore([this, events, event] { - for (auto &e : *events) { + for (const auto &e : *events) { connectItem(e); add(e); } @@ -286,7 +287,7 @@ void EventLogList::setSelf(QSharedPointer me) { auto linphoneLogs = chatModel->getHistoryRange(0, mDisplayItemsStep); QList> *events = new QList>(); for (auto it : linphoneLogs) { - auto model = EventLogCore::create(it); + auto model = EventLogCore::create(it, chatModel->getMonitor()); events->push_back(model); } mCoreModelConnection->invokeToCore([this, events] { From a7ba374b8f7e61b3fa5dbf4269278164a56a34af Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 24 Nov 2025 18:37:42 +0100 Subject: [PATCH 54/72] improve chat messages list view fix auto scroll when receiving new message #LINQT-2154 --- Linphone/core/chat/message/EventLogList.cpp | 55 ++++-- Linphone/core/chat/message/EventLogList.hpp | 9 +- Linphone/core/chat/message/EventLogProxy.cpp | 171 ++++++++++++------ Linphone/core/chat/message/EventLogProxy.hpp | 46 ++++- Linphone/data/languages/de.ts | 58 +++--- Linphone/data/languages/en.ts | 58 +++--- Linphone/data/languages/fr.ts | 58 +++--- .../Display/Chat/ChatMessagesListView.qml | 55 +++--- .../view/Page/Form/Chat/SelectedChatView.qml | 4 +- 9 files changed, 304 insertions(+), 210 deletions(-) diff --git a/Linphone/core/chat/message/EventLogList.cpp b/Linphone/core/chat/message/EventLogList.cpp index 1fd0d3d13..16831dfaf 100644 --- a/Linphone/core/chat/message/EventLogList.cpp +++ b/Linphone/core/chat/message/EventLogList.cpp @@ -96,10 +96,12 @@ void EventLogList::setChatCore(QSharedPointer core) { [event](const QSharedPointer item) { return item == event; }); if (it == eventsList.end()) { connectItem(event); - add(event); + prepend(event); int index; get(event.get(), &index); - emit eventInserted(index, new EventLogGui(event)); + if (event->getChatMessageCore() && !event->getChatMessageCore()->isRemoteMessage()) { + emit eventInsertedByUser(index); + } } } }); @@ -122,6 +124,13 @@ void EventLogList::setDisplayItemsStep(int displayItemsStep) { } } +void EventLogList::markIndexAsRead(int index) { + if (index < mList.count()) { + auto eventLog = mList[index].objectCast(); + if (eventLog && eventLog->getChatMessageCore()) eventLog->getChatMessageCore()->lMarkAsRead(); + } +} + void EventLogList::displayMore() { auto loadMoreItems = [this] { if (!mChatCore) return; @@ -139,7 +148,7 @@ void EventLogList::displayMore() { QList> *events = new QList>(); for (auto it : linphoneLogs) { auto model = EventLogCore::create(it, chatModel->getMonitor()); - events->push_back(model); + if (it->getChatMessage() || model->isHandled()) events->push_front(model); } mCoreModelConnection->invokeToCore([this, events] { int currentCount = mList.count(); @@ -147,8 +156,8 @@ void EventLogList::displayMore() { for (int i = events->size() - 1; i >= 0; --i) { const auto &ev = events->at(i); connectItem(ev); - prepend(ev); } + add(*events); } }); }); @@ -166,8 +175,10 @@ void EventLogList::displayMore() { void EventLogList::loadMessagesUpTo(std::shared_ptr event) { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); - auto oldestEventLoaded = getAt(0); - auto linOldest = std::const_pointer_cast(oldestEventLoaded->getModel()->getEventLog()); + auto oldestEventLoaded = mList.count() > 0 ? getAt(mList.count() - 1) : nullptr; + auto linOldest = oldestEventLoaded + ? std::const_pointer_cast(oldestEventLoaded->getModel()->getEventLog()) + : nullptr; auto chatModel = mChatCore->getModel(); assert(chatModel); if (!chatModel) return; @@ -179,45 +190,52 @@ void EventLogList::loadMessagesUpTo(std::shared_ptr event) { const auto &linChatRoom = chatModel->getMonitor(); for (const auto &it : beforeEvents) { auto model = EventLogCore::create(it, linChatRoom); - events->push_back(model); + if (it->getChatMessage() || model->isHandled()) events->push_front(model); } for (const auto &it : linphoneLogs) { auto model = EventLogCore::create(it, linChatRoom); - events->push_back(model); + if (it->getChatMessage() || model->isHandled()) events->push_front(model); } mCoreModelConnection->invokeToCore([this, events, event] { for (const auto &e : *events) { connectItem(e); - add(e); } + add(*events); emit messagesLoadedUpTo(event); }); } int EventLogList::findFirstUnreadIndex() { auto eventList = getSharedList(); - auto it = std::find_if(eventList.begin(), eventList.end(), [](const QSharedPointer item) { - return item->getChatMessageCore() && !item->getChatMessageCore()->isRead(); + auto it = std::find_if(eventList.rbegin(), eventList.rend(), [](const QSharedPointer item) { + auto chatmessage = item->getChatMessageCore(); + return chatmessage && !chatmessage->isRead(); }); - return it == eventList.end() ? -1 : std::distance(eventList.begin(), it); + return it == eventList.rend() ? -1 : std::distance(it, eventList.rend()) - 1; } -void EventLogList::findChatMessageWithFilter(QString filter, - QSharedPointer startEvent, - bool forward, - bool isFirstResearch) { +void EventLogList::findChatMessageWithFilter(QString filter, int startIndex, bool forward, bool isFirstResearch) { if (mChatCore) { if (isFirstResearch) mLastFoundResult.reset(); auto chatModel = mChatCore->getModel(); + auto startEvent = + startIndex >= 0 && startIndex < mList.count() ? mList[startIndex].objectCast() : nullptr; + lInfo() << log().arg("searching event starting from index") << startIndex << "| event :" + << (startEvent && startEvent->getChatMessageCore() ? startEvent->getChatMessageCore()->getText() + : "null") + << "| filter :" << filter; auto startEventModel = startEvent ? startEvent->getModel() : nullptr; mCoreModelConnection->invokeToModel([this, chatModel, startEventModel, filter, forward, isFirstResearch] { auto linStartEvent = startEventModel ? startEventModel->getEventLog() : nullptr; auto eventLog = chatModel->searchMessageByText(filter, linStartEvent, forward); - if (!eventLog) + if (!eventLog) { // event not found, search in the entire history + lInfo() << log().arg("not found, search in entire history"); auto eventLog = chatModel->searchMessageByText(filter, nullptr, forward); + } int index = -1; if (eventLog) { + lInfo() << log().arg("event with filter found") << eventLog.get(); auto eventList = getSharedList(); auto it = std::find_if(eventList.begin(), eventList.end(), [eventLog](const QSharedPointer item) { @@ -245,6 +263,7 @@ void EventLogList::findChatMessageWithFilter(QString filter, loadMessagesUpTo(eventLog); } } else { + lInfo() << log().arg("event not found at all in history"); mCoreModelConnection->invokeToCore([this, index] { emit messageWithFilterFound(index); }); } }); @@ -288,7 +307,7 @@ void EventLogList::setSelf(QSharedPointer me) { QList> *events = new QList>(); for (auto it : linphoneLogs) { auto model = EventLogCore::create(it, chatModel->getMonitor()); - events->push_back(model); + if (it->getChatMessage() || model->isHandled()) events->push_front(model); } mCoreModelConnection->invokeToCore([this, events] { for (auto &event : *events) { diff --git a/Linphone/core/chat/message/EventLogList.hpp b/Linphone/core/chat/message/EventLogList.hpp index 679738185..deec5b88e 100644 --- a/Linphone/core/chat/message/EventLogList.hpp +++ b/Linphone/core/chat/message/EventLogList.hpp @@ -54,13 +54,12 @@ public: int findFirstUnreadIndex(); + void markIndexAsRead(int index); + void displayMore(); void setDisplayItemsStep(int displayItemsStep); - void findChatMessageWithFilter(QString filter, - QSharedPointer startEvent, - bool forward = true, - bool isFirstResearch = true); + void findChatMessageWithFilter(QString filter, int startIndex, bool forward = true, bool isFirstResearch = true); void setSelf(QSharedPointer me); virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; @@ -69,7 +68,7 @@ public: signals: void lUpdate(); void filterChanged(QString filter); - void eventInserted(int index, EventLogGui *message); + void eventInsertedByUser(int index); void messageWithFilterFound(int index); void listAboutToBeReset(); void chatGuiChanged(); diff --git a/Linphone/core/chat/message/EventLogProxy.cpp b/Linphone/core/chat/message/EventLogProxy.cpp index 5fddfdf38..a1e45850d 100644 --- a/Linphone/core/chat/message/EventLogProxy.cpp +++ b/Linphone/core/chat/message/EventLogProxy.cpp @@ -26,7 +26,7 @@ DEFINE_ABSTRACT_OBJECT(EventLogProxy) -EventLogProxy::EventLogProxy(QObject *parent) : LimitProxy(parent) { +EventLogProxy::EventLogProxy(QObject *parent) : QSortFilterProxyModel(parent) { mList = EventLogList::create(); setSourceModel(mList.get()); } @@ -35,58 +35,41 @@ EventLogProxy::~EventLogProxy() { } void EventLogProxy::setSourceModel(QAbstractItemModel *model) { - auto oldEventLogList = getListModel(); + auto oldEventLogList = dynamic_cast(sourceModel()); if (oldEventLogList) { - disconnect(oldEventLogList, &EventLogList::listAboutToBeReset, this, nullptr); - disconnect(oldEventLogList, &EventLogList::chatGuiChanged, this, nullptr); disconnect(oldEventLogList, &EventLogList::displayItemsStepChanged, this, nullptr); - disconnect(oldEventLogList, &EventLogList::eventInserted, this, nullptr); disconnect(oldEventLogList, &EventLogList::messageWithFilterFound, this, nullptr); + disconnect(oldEventLogList, &EventLogList::eventInsertedByUser, this, nullptr); } auto newEventLogList = dynamic_cast(model); if (newEventLogList) { - connect(newEventLogList, &EventLogList::listAboutToBeReset, this, &EventLogProxy::listAboutToBeReset); - connect(newEventLogList, &EventLogList::chatGuiChanged, this, &EventLogProxy::chatGuiChanged); connect(this, &EventLogProxy::displayItemsStepChanged, newEventLogList, [this, newEventLogList] { newEventLogList->setDisplayItemsStep(mDisplayItemsStep); }); - connect(newEventLogList, &EventLogList::eventInserted, this, - [this, newEventLogList](int index, EventLogGui *event) { - invalidate(); - int proxyIndex = -1; - if (index != -1) { - proxyIndex = dynamic_cast(sourceModel()) - ->mapFromSource(newEventLogList->index(index, 0)) - .row(); - } - loadUntil(proxyIndex); - emit eventInserted(proxyIndex, event); - }); connect(newEventLogList, &EventLogList::messageWithFilterFound, this, [this, newEventLogList](int i) { - connect(this, &EventLogProxy::layoutChanged, newEventLogList, [this, i, newEventLogList] { - disconnect(this, &EventLogProxy::layoutChanged, newEventLogList, nullptr); - auto model = getListModel(); - int proxyIndex = - dynamic_cast(sourceModel())->mapFromSource(newEventLogList->index(i, 0)).row(); - if (i != -1) { - loadUntil(proxyIndex); - } - emit indexWithFilterFound(proxyIndex); - }); - invalidate(); + auto model = dynamic_cast(sourceModel()); + int proxyIndex = mapFromSource(newEventLogList->index(i, 0)).row(); + if (i != -1) { + loadUntil(proxyIndex); + } + emit indexWithFilterFound(proxyIndex); + }); + connect(newEventLogList, &EventLogList::eventInsertedByUser, this, [this, newEventLogList](int i) { + int proxyIndex = mapFromSource(newEventLogList->index(i, 0)).row(); + emit eventInsertedByUser(proxyIndex); }); } - setSourceModels(new SortFilterList(model, Qt::DescendingOrder)); - sort(0, Qt::DescendingOrder); + QSortFilterProxyModel::setSourceModel(model); } ChatGui *EventLogProxy::getChatGui() { - auto model = getListModel(); + auto model = dynamic_cast(sourceModel()); if (!mChatGui && model) mChatGui = model->getChat(); return mChatGui; } void EventLogProxy::setChatGui(ChatGui *chat) { - getListModel()->setChatGui(chat); + auto model = dynamic_cast(sourceModel()); + if (model) model->setChatGui(chat); } EventLogGui *EventLogProxy::getEventAtIndex(int i) { @@ -94,29 +77,86 @@ EventLogGui *EventLogProxy::getEventAtIndex(int i) { return eventCore == nullptr ? nullptr : new EventLogGui(eventCore); } +int EventLogProxy::getCount() const { + return rowCount(); +} + +int EventLogProxy::getInitialDisplayItems() const { + return mInitialDisplayItems; +} + +void EventLogProxy::setInitialDisplayItems(int initialItems) { + if (mInitialDisplayItems != initialItems) { + mInitialDisplayItems = initialItems; + if (getMaxDisplayItems() <= mInitialDisplayItems) setMaxDisplayItems(initialItems); + if (getDisplayItemsStep() <= 0) setDisplayItemsStep(initialItems); + emit initialDisplayItemsChanged(); + } +} + +int EventLogProxy::getDisplayCount(int listCount, int maxCount) { + return maxCount >= 0 ? qMin(listCount, maxCount) : listCount; +} + +int EventLogProxy::getDisplayCount(int listCount) const { + return getDisplayCount(listCount, mMaxDisplayItems); +} + QSharedPointer EventLogProxy::getEventCoreAtIndex(int i) { - return getItemAt(i); + auto model = dynamic_cast(sourceModel()); + if (model) { + return model->getAt(mapToSource(index(i, 0)).row()); + } + return nullptr; } void EventLogProxy::displayMore() { - auto model = getListModel(); + auto model = dynamic_cast(sourceModel()); if (model) { model->displayMore(); } } +int EventLogProxy::getMaxDisplayItems() const { + return mMaxDisplayItems; +} + +void EventLogProxy::setMaxDisplayItems(int maxItems) { + if (mMaxDisplayItems != maxItems) { + auto model = sourceModel(); + int modelCount = model ? model->rowCount() : 0; + int oldCount = getDisplayCount(modelCount); + mMaxDisplayItems = maxItems; + if (getInitialDisplayItems() > mMaxDisplayItems) setInitialDisplayItems(maxItems); + if (getDisplayItemsStep() <= 0) setDisplayItemsStep(maxItems); + emit maxDisplayItemsChanged(); + + if (model && getDisplayCount(modelCount) != oldCount) { + invalidate(); + } + } +} + +int EventLogProxy::getDisplayItemsStep() const { + return mDisplayItemsStep; +} + +void EventLogProxy::setDisplayItemsStep(int step) { + if (step > 0 && mDisplayItemsStep != step) { + mDisplayItemsStep = step; + emit displayItemsStepChanged(); + } +} void EventLogProxy::loadUntil(int index) { - auto confInfoList = getListModel(); if (mMaxDisplayItems < index) setMaxDisplayItems(index + mDisplayItemsStep); } int EventLogProxy::findFirstUnreadIndex() { - auto eventLogList = getListModel(); + auto eventLogList = dynamic_cast(sourceModel()); if (eventLogList) { auto listIndex = eventLogList->findFirstUnreadIndex(); if (listIndex != -1) { - listIndex = - dynamic_cast(sourceModel())->mapFromSource(eventLogList->index(listIndex, 0)).row(); + listIndex = mapFromSource(eventLogList->index(listIndex, 0)).row(); if (mMaxDisplayItems <= listIndex) setMaxDisplayItems(listIndex + mDisplayItemsStep); return listIndex; } else { @@ -126,32 +166,43 @@ int EventLogProxy::findFirstUnreadIndex() { return 0; } +QString EventLogProxy::getFilterText() const { + return mFilterText; +} + +void EventLogProxy::setFilterText(const QString &filter) { + if (mFilterText != filter) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 10, 0) + beginFilterChange(); + mFilterText = filter; + endFilterChange(); +#else + mFilterText = filter; + invalidateFilter(); +#endif + emit filterTextChanged(); + } +} + +QSharedPointer EventLogProxy::getAt(int atIndex) const { + auto model = dynamic_cast(sourceModel()); + if (model) { + return model->getAt(mapToSource(index(atIndex, 0)).row()); + } + return nullptr; +} + void EventLogProxy::markIndexAsRead(int proxyIndex) { - auto event = getItemAt(proxyIndex); + auto event = getAt(proxyIndex); if (event && event->getChatMessageCore()) event->getChatMessageCore()->lMarkAsRead(); } void EventLogProxy::findIndexCorrespondingToFilter(int startIndex, bool forward, bool isFirstResearch) { auto filter = getFilterText(); if (filter.isEmpty()) return; - auto eventLogList = getListModel(); + auto eventLogList = dynamic_cast(sourceModel()); if (eventLogList) { - auto startEvent = mLastSearchStart; - if (!startEvent) { - startEvent = getItemAt(startIndex); - } - eventLogList->findChatMessageWithFilter(filter, startEvent, forward, isFirstResearch); + auto listIndex = mapToSource(index(startIndex, 0)).row(); + eventLogList->findChatMessageWithFilter(filter, listIndex, forward, isFirstResearch); } -} - -bool EventLogProxy::SortFilterList::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { - auto l = getItemAtSource(sourceRow); - return l != nullptr; -} - -bool EventLogProxy::SortFilterList::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const { - auto l = getItemAtSource(sourceLeft.row()); - auto r = getItemAtSource(sourceRight.row()); - if (l && r) return l->getTimestamp() < r->getTimestamp(); - return true; -} +} \ No newline at end of file diff --git a/Linphone/core/chat/message/EventLogProxy.hpp b/Linphone/core/chat/message/EventLogProxy.hpp index 738a39472..093c19543 100644 --- a/Linphone/core/chat/message/EventLogProxy.hpp +++ b/Linphone/core/chat/message/EventLogProxy.hpp @@ -22,19 +22,26 @@ #define EVENT_LIST_PROXY_H_ #include "EventLogList.hpp" -#include "core/proxy/LimitProxy.hpp" +// #include "core/proxy/LimitProxy.hpp" #include "tool/AbstractObject.hpp" +#include // ============================================================================= class ChatGui; -class EventLogProxy : public LimitProxy, public AbstractObject { +class EventLogProxy : public QSortFilterProxyModel, public AbstractObject { Q_OBJECT + Q_PROPERTY(int count READ getCount NOTIFY countChanged) Q_PROPERTY(ChatGui *chatGui READ getChatGui WRITE setChatGui NOTIFY chatGuiChanged) + Q_PROPERTY(int initialDisplayItems READ getInitialDisplayItems WRITE setInitialDisplayItems NOTIFY + initialDisplayItemsChanged) + Q_PROPERTY(int maxDisplayItems READ getMaxDisplayItems WRITE setMaxDisplayItems NOTIFY maxDisplayItemsChanged) + Q_PROPERTY(int displayItemsStep READ getDisplayItemsStep WRITE setDisplayItemsStep NOTIFY displayItemsStepChanged) + Q_PROPERTY(QString filterText READ getFilterText WRITE setFilterText NOTIFY filterTextChanged) public: - DECLARE_SORTFILTER_CLASS() + // DECLARE_SORTFILTER_CLASS() EventLogProxy(QObject *parent = Q_NULLPTR); ~EventLogProxy(); @@ -43,8 +50,27 @@ public: void setChatGui(ChatGui *chat); void setSourceModel(QAbstractItemModel *sourceModel) override; + virtual int getCount() const; + static int getDisplayCount(int listCount, int maxCount); + int getDisplayCount(int listCount) const; + int getInitialDisplayItems() const; + void setInitialDisplayItems(int initialItems); - Q_INVOKABLE void displayMore() override; + int getMaxDisplayItems() const; + void setMaxDisplayItems(int maxItems); + + int getDisplayItemsStep() const; + void setDisplayItemsStep(int step); + + QString getFilterText() const; + void setFilterText(const QString &filter); + + // bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; + // bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override; + + QSharedPointer getAt(int atIndex) const; + + Q_INVOKABLE void displayMore(); Q_INVOKABLE void loadUntil(int index); Q_INVOKABLE EventLogGui *getEventAtIndex(int i); QSharedPointer getEventCoreAtIndex(int i); @@ -53,15 +79,23 @@ public: Q_INVOKABLE void findIndexCorrespondingToFilter(int startIndex, bool forward = true, bool isFirstResearch = true); signals: - void eventInserted(int index, EventLogGui *message); + void eventInsertedByUser(int index); void indexWithFilterFound(int index); - void listAboutToBeReset(); void chatGuiChanged(); + void countChanged(); + void initialDisplayItemsChanged(); + void maxDisplayItemsChanged(); + void displayItemsStepChanged(); + void filterTextChanged(); protected: QSharedPointer mList; QSharedPointer mLastSearchStart; ChatGui *mChatGui = nullptr; + int mInitialDisplayItems = -1; + int mMaxDisplayItems = -1; + int mDisplayItemsStep = 5; + QString mFilterText; DECLARE_ABSTRACT_OBJECT }; diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index eb9185f1f..58f195e7e 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2453,58 +2453,58 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message - + info_popup_no_result_message No result found - + info_popup_first_result_message First result reached - + info_popup_last_result_message Last result reached - + chat_message_list_encrypted_header_title End to end encrypted chat - + unencrypted_conversation_warning This conversation is not encrypted ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! - + chat_message_is_writing_info %1 is writing… @@ -3784,58 +3784,58 @@ Error EventLogCore - + conference_created_event - + conference_created_terminated - + conference_participant_added_event - + conference_participant_removed_event - - + + conference_security_event - + conference_ephemeral_message_enabled_event - + conference_ephemeral_message_lifetime_changed_event - + conference_ephemeral_message_disabled_event - + conference_subject_changed_event - + conference_participant_unset_admin_event - + conference_participant_set_admin_event @@ -5828,42 +5828,42 @@ Pour les activer dans un projet commercial, merci de nous contacter. SelectedChatView - + chat_view_group_call_toast_message Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! - + reply_to_label Reply to %1 - + shared_medias_title Shared medias - + shared_documents_title Shared documents - + forward_to_title Forward to… - + conversations_title Conversations Konversationen diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 8d1d26009..0b6a92bdb 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2425,44 +2425,44 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message Find message - + info_popup_no_result_message No result found No result found - + info_popup_first_result_message First result reached First result reached - + info_popup_last_result_message Last result reached Last result reached - + chat_message_list_encrypted_header_title End to end encrypted chat End to end encrypted chat - + unencrypted_conversation_warning This conversation is not encrypted ! This conversation is not encrypted ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. @@ -2470,7 +2470,7 @@ Error Only your correspondent can decrypt them. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! @@ -2478,7 +2478,7 @@ Only your correspondent can decrypt them. may sure you don't share any sensitive information ! - + chat_message_is_writing_info %1 is writing… %1 is writing… @@ -3703,59 +3703,59 @@ Only your correspondent can decrypt them. EventLogCore - + conference_created_event You have joined the group - + conference_created_terminated You have left the group - + conference_participant_added_event %1 has joined - + conference_participant_removed_event %1 is no longer in the conversation - + conference_participant_set_admin_event %1 is now an admin - + conference_participant_unset_admin_event %1 is no longer an admin - - + + conference_security_event Security level degraded by %1 - + conference_ephemeral_message_enabled_event Ephemeral messages enabled Expiration : %1 - + conference_ephemeral_message_disabled_event Ephemeral messages disabled - + conference_subject_changed_event New subject: %1 - + conference_ephemeral_message_lifetime_changed_event Ephemeral messages updated Expiration : %1 @@ -5723,42 +5723,42 @@ To enable them in a commercial project, please contact us. SelectedChatView - + chat_view_group_call_toast_message Start a group call ? - + unencrypted_conversation_warning This conversation is not encrypted ! This conversation is not encrypted ! - + reply_to_label Reply to %1 Reply to %1 - + shared_medias_title Shared medias Shared medias - + shared_documents_title Shared documents Shared documents - + forward_to_title Forward to… Froward to… - + conversations_title Conversations Conversations diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 1f806520e..266e2190e 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2425,44 +2425,44 @@ Error ChatMessagesListView - - + + popup_info_find_message_title Find message Trouver un message - + info_popup_no_result_message No result found Aucun résultat trouvé - + info_popup_first_result_message First result reached Premier résultat atteint - + info_popup_last_result_message Last result reached Dernier résultat atteint - + chat_message_list_encrypted_header_title End to end encrypted chat Conversation chiffrée de bout en bout - + unencrypted_conversation_warning This conversation is not encrypted ! Cette conversation n'est pas chiffrée ! - + chat_message_list_encrypted_header_message Messages in this conversation are e2e encrypted. Only your correspondent can decrypt them. @@ -2470,7 +2470,7 @@ Error en bout. Seul votre correspondant peut les déchiffrer. - + chat_message_list_not_encrypted_header_message Messages are not end to end encrypted, may sure you don't share any sensitive information ! @@ -2478,7 +2478,7 @@ en bout. Seul votre correspondant peut les déchiffrer. assurez-vous de ne pas partager d’informations sensibles ! - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… @@ -3703,60 +3703,60 @@ en bout. Seul votre correspondant peut les déchiffrer. EventLogCore - + conference_created_event Vous avez rejoint le groupe - + conference_created_terminated Vous avez quitté le groupe - + conference_participant_added_event %1 a rejoint le groupe - + conference_participant_removed_event %1 ne fait plus partie du groupe - - + + conference_security_event Niveau de sécurité dégradé par %1 - + conference_ephemeral_message_enabled_event Messages éphémères activés Expiration : %1 - + conference_ephemeral_message_lifetime_changed_event Messages éphémères mis à jour Expiration : %1 - + conference_ephemeral_message_disabled_event Messages éphémères désactivés - + conference_subject_changed_event Nouveau sujet : %1 - + conference_participant_unset_admin_event %1 n'est plus admin - + conference_participant_set_admin_event %1 est maintenant admin @@ -5723,42 +5723,42 @@ Pour les activer dans un projet commercial, merci de nous contacter. SelectedChatView - + chat_view_group_call_toast_message Démarrer un appel de groupe ? - + unencrypted_conversation_warning This conversation is not encrypted ! Cette conversation n'est pas chiffrée ! - + reply_to_label Reply to %1 Réponse à %1 - + shared_medias_title Shared medias Médias partagés - + shared_documents_title Shared documents Documents partagés - + forward_to_title Forward to… Transférer à… - + conversations_title Conversations Conversations diff --git a/Linphone/view/Control/Display/Chat/ChatMessagesListView.qml b/Linphone/view/Control/Display/Chat/ChatMessagesListView.qml index 05acbf862..a152f0285 100644 --- a/Linphone/view/Control/Display/Chat/ChatMessagesListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatMessagesListView.qml @@ -18,6 +18,7 @@ ListView { property real busyIndicatorSize: Utils.getSizeWithScreenRatio(60) property bool loading: false property bool isEncrypted: chat && chat.core.isEncrypted + highlightFollowsCurrentItem: false verticalLayoutDirection: ListView.BottomToTop signal showReactionsForMessageRequested(ChatMessageGui chatMessage) @@ -40,24 +41,16 @@ ListView { property bool searchForward: true onFindIndexWithFilter: (forward) => { searchForward = forward - eventLogProxy.findIndexCorrespondingToFilter(currentIndex, forward, false) - } - - Component.onCompleted: { - Qt.callLater(function() { - var index = eventLogProxy.findFirstUnreadIndex() - positionViewAtIndex(index, ListView.Beginning) - eventLogProxy.markIndexAsRead(index) - }) + eventLogProxy.findIndexCorrespondingToFilter(currentIndex, searchForward, false) } Button { visible: !mainItem.lastItemVisible icon.source: AppIcons.downArrow - leftPadding: Utils.getSizeWithScreenRatio(16) - rightPadding: Utils.getSizeWithScreenRatio(16) - topPadding: Utils.getSizeWithScreenRatio(16) - bottomPadding: Utils.getSizeWithScreenRatio(16) + leftPadding: Utils.getSizeWithScreenRatio(20) + rightPadding: Utils.getSizeWithScreenRatio(20) + topPadding: Utils.getSizeWithScreenRatio(20) + bottomPadding: Utils.getSizeWithScreenRatio(20) anchors.bottom: parent.bottom style: ButtonStyle.main anchors.right: parent.right @@ -65,20 +58,24 @@ ListView { anchors.rightMargin: Utils.getSizeWithScreenRatio(18) onClicked: { var index = eventLogProxy.findFirstUnreadIndex() - mainItem.positionViewAtIndex(index, ListView.Beginning) + mainItem.positionViewAtIndex(index, ListView.Contain) eventLogProxy.markIndexAsRead(index) } + UnreadNotification { + anchors.top: parent.top + anchors.right: parent.right + anchors.topMargin: Utils.getSizeWithScreenRatio(-5) + anchors.rightMargin: Utils.getSizeWithScreenRatio(-5) + unread: mainItem.chat?.core.unreadMessagesCount || 0 + } } - onAtYEndChanged: if (atYEnd && chat) { - chat.core.lMarkAsRead() - } - // Workaround : check if there is already items in the list - // so this function is only called when the user actually scroll - // the view till the begining onAtYBeginningChanged: if (atYBeginning && count !== 0) { eventLogProxy.displayMore() } + onAtYEndChanged: if (atYEnd && chat) { + chat.core.lMarkAsRead() + } model: EventLogProxy { id: eventLogProxy @@ -86,23 +83,18 @@ ListView { filterText: mainItem.filterText initialDisplayItems: 20 displayItemsStep: 20 - onEventInserted: (index, gui) => { - if (!mainItem.visible) return - if(mainItem.lastItemVisible) { - mainItem.positionViewAtIndex(index, ListView.Beginning) - markIndexAsRead(index) - } - } onModelAboutToBeReset: { loading = true } onModelReset: { loading = false var index = eventLogProxy.findFirstUnreadIndex() - positionViewAtIndex(index, ListView.Beginning) + mainItem.positionViewAtIndex(index, ListView.Contain) eventLogProxy.markIndexAsRead(index) } - onChatGuiChanged: forceLayout() + onEventInsertedByUser: (index) => { + mainItem.positionViewAtIndex(index, ListView.Beginning) + } onIndexWithFilterFound: (index) => { if (index !== -1) { currentIndex = index @@ -249,9 +241,10 @@ ListView { } } Component.onCompleted: { - if (index === 0) mainItem.lastItemVisible = isFullyVisible + if (index === 0) { + mainItem.lastItemVisible = isFullyVisible + } } - // onYChanged: if (index === 0) mainItem.lastItemVisible = isFullyVisible chat: mainItem.chat searchedTextPart: mainItem.filterText maxWidth: Math.round(mainItem.width * (3/4)) diff --git a/Linphone/view/Page/Form/Chat/SelectedChatView.qml b/Linphone/view/Page/Form/Chat/SelectedChatView.qml index 685cdf693..96cdd5c1c 100644 --- a/Linphone/view/Page/Form/Chat/SelectedChatView.qml +++ b/Linphone/view/Page/Form/Chat/SelectedChatView.qml @@ -27,13 +27,11 @@ FocusScope { signal groupCall() onActiveFocusChanged: if(activeFocus) { - console.log("selected has active focus, mark as read") - chat.core.lMarkAsRead() + if (chatMessagesListView.lastItemVisible) chat.core.lMarkAsRead() } MouseArea{ anchors.fill: parent onPressed: { - console.log("selected chat view pressed") forceActiveFocus() } } From 04d2744bf2a91fbd16b793ac74563ff9bd625ac1 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 24 Nov 2025 19:40:13 +0100 Subject: [PATCH 55/72] fix force adding chat to list when creating it --- Linphone/core/chat/ChatCore.hpp | 1 - Linphone/data/languages/de.ts | 46 +++++++++---------- Linphone/data/languages/en.ts | 46 +++++++++---------- Linphone/data/languages/fr.ts | 46 +++++++++---------- .../Control/Display/Chat/ChatListView.qml | 15 +++--- Linphone/view/Page/Main/Chat/ChatPage.qml | 2 +- 6 files changed, 79 insertions(+), 77 deletions(-) diff --git a/Linphone/core/chat/ChatCore.hpp b/Linphone/core/chat/ChatCore.hpp index c3fe9e9ad..ec7ee734a 100644 --- a/Linphone/core/chat/ChatCore.hpp +++ b/Linphone/core/chat/ChatCore.hpp @@ -64,7 +64,6 @@ public: Q_PROPERTY( int ephemeralLifetime READ getEphemeralLifetime WRITE lSetEphemeralLifetime NOTIFY ephemeralLifetimeChanged) Q_PROPERTY(bool muted READ isMuted WRITE lSetMuted NOTIFY mutedChanged) - Q_PROPERTY(bool conferenceJoined MEMBER mConferenceJoined NOTIFY conferenceJoined) Q_PROPERTY(bool meAdmin READ getMeAdmin WRITE setMeAdmin NOTIFY meAdminChanged) Q_PROPERTY(QVariantList participants READ getParticipantsGui NOTIFY participantsChanged) Q_PROPERTY(QStringList participantsAddresses READ getParticipantsAddresses WRITE lSetParticipantsAddresses NOTIFY diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 58f195e7e..7c925a107 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2112,65 +2112,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… - + chat_message_draft_sending_text - + chat_room_delete "Delete" Löschen - + chat_room_mute - + chat_room_unmute "Mute" - + chat_room_mark_as_read "Mark as read" - + chat_room_leave "leave" - + chat_list_leave_chat_popup_title leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? @@ -3784,58 +3784,58 @@ Error EventLogCore - + conference_created_event - + conference_created_terminated - + conference_participant_added_event - + conference_participant_removed_event - - + + conference_security_event - + conference_ephemeral_message_enabled_event - + conference_ephemeral_message_lifetime_changed_event - + conference_ephemeral_message_disabled_event - + conference_subject_changed_event - + conference_participant_unset_admin_event - + conference_participant_set_admin_event diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 0b6a92bdb..39c40120a 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 is writing… - + chat_message_draft_sending_text Draft : %1 - + chat_room_delete "Delete" Delete - + chat_room_mute Mute - + chat_room_unmute "Mute" Unmute - + chat_room_mark_as_read "Mark as read" Mark as read - + chat_room_leave "leave" Leave - + chat_list_leave_chat_popup_title leave the conversation ? Leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? This conversation and all its messages will be deleted. Do You want to continue ? @@ -3703,59 +3703,59 @@ Only your correspondent can decrypt them. EventLogCore - + conference_created_event You have joined the group - + conference_created_terminated You have left the group - + conference_participant_added_event %1 has joined - + conference_participant_removed_event %1 is no longer in the conversation - + conference_participant_set_admin_event %1 is now an admin - + conference_participant_unset_admin_event %1 is no longer an admin - - + + conference_security_event Security level degraded by %1 - + conference_ephemeral_message_enabled_event Ephemeral messages enabled Expiration : %1 - + conference_ephemeral_message_disabled_event Ephemeral messages disabled - + conference_subject_changed_event New subject: %1 - + conference_ephemeral_message_lifetime_changed_event Ephemeral messages updated Expiration : %1 diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 266e2190e..528b3566b 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… - + chat_message_draft_sending_text Brouillon : %1 - + chat_room_delete "Delete" Supprimer - + chat_room_mute Mettre en sourdine - + chat_room_unmute "Mute" Enlever la sourdine - + chat_room_mark_as_read "Mark as read" Marquer comme lu - + chat_room_leave "leave" Quitter la conversation - + chat_list_leave_chat_popup_title leave the conversation ? Quitter la conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ? - + chat_list_delete_chat_popup_title Delete the conversation ? Supprimer la conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ? @@ -3703,60 +3703,60 @@ en bout. Seul votre correspondant peut les déchiffrer. EventLogCore - + conference_created_event Vous avez rejoint le groupe - + conference_created_terminated Vous avez quitté le groupe - + conference_participant_added_event %1 a rejoint le groupe - + conference_participant_removed_event %1 ne fait plus partie du groupe - - + + conference_security_event Niveau de sécurité dégradé par %1 - + conference_ephemeral_message_enabled_event Messages éphémères activés Expiration : %1 - + conference_ephemeral_message_lifetime_changed_event Messages éphémères mis à jour Expiration : %1 - + conference_ephemeral_message_disabled_event Messages éphémères désactivés - + conference_subject_changed_event Nouveau sujet : %1 - + conference_participant_unset_admin_event %1 n'est plus admin - + conference_participant_set_admin_event %1 est maintenant admin diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index 720361d2a..18be99133 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -22,11 +22,8 @@ ListView { property ChatGui chatToSelect: null property ChatGui chatToSelectLater: null onChatToSelectChanged: { - var index = chatProxy.findChatIndex(chatToSelect) - if (index != -1) { - currentIndex = index - chatToSelect = null - } + selectChat(chatToSelect, true) + chatToSelect = null } onChatClicked: (chat) => {selectChat(chat)} @@ -74,9 +71,15 @@ ListView { // flickDeceleration: 10000 spacing: Utils.getSizeWithScreenRatio(10) - function selectChat(chatGui) { + function selectChat(chatGui, force) { var index = chatProxy.findChatIndex(chatGui) + // force adding chat to list if not in list for now + if (index === -1 && force === true && chatGui) { + chatProxy.addChatInList(chatGui) + var index = chatProxy.findChatIndex(chatGui) + } mainItem.currentIndex = index + } Component.onCompleted: cacheBuffer = Math.max(contentHeight, 0) //contentHeight>0 ? contentHeight : 0// cache all items diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index 7f091b00f..5d714d41d 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -368,7 +368,7 @@ AbstractMainPage { } SelectedChatView { id: selectedChatView - visible: chat != undefined //&& (chat.core.isBasic || chat.core.conferenceJoined) + visible: chat != undefined anchors.fill: parent chat: mainItem.selectedChatGui ? mainItem.selectedChatGui : null From 37db390d5c10d2a1c9403b92b9947af35e90729d Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Tue, 25 Nov 2025 09:52:44 +0100 Subject: [PATCH 56/72] fix chat list view and really fix chat selection after filter reset #LINQT-2199 --- Linphone/core/chat/ChatProxy.cpp | 22 ++---- Linphone/core/chat/ChatProxy.hpp | 8 +-- Linphone/core/proxy/SortFilterProxy.cpp | 3 + Linphone/core/proxy/SortFilterProxy.hpp | 1 + Linphone/data/languages/de.ts | 68 +++++++++---------- Linphone/data/languages/en.ts | 68 +++++++++---------- Linphone/data/languages/fr.ts | 68 +++++++++---------- .../Control/Display/Chat/ChatListView.qml | 5 +- 8 files changed, 120 insertions(+), 123 deletions(-) diff --git a/Linphone/core/chat/ChatProxy.cpp b/Linphone/core/chat/ChatProxy.cpp index 87778d97a..c021e1b93 100644 --- a/Linphone/core/chat/ChatProxy.cpp +++ b/Linphone/core/chat/ChatProxy.cpp @@ -25,7 +25,7 @@ DEFINE_ABSTRACT_OBJECT(ChatProxy) -ChatProxy::ChatProxy(QObject *parent) : LimitProxy(parent) { +ChatProxy::ChatProxy(QObject *parent) { mList = ChatList::create(); setSourceModel(mList.get()); setDynamicSortFilter(true); @@ -35,7 +35,7 @@ ChatProxy::~ChatProxy() { } void ChatProxy::setSourceModel(QAbstractItemModel *model) { - auto oldChatList = getListModel(); + auto oldChatList = dynamic_cast(sourceModel()); if (oldChatList) { disconnect(this, &ChatProxy::filterTextChanged, oldChatList, nullptr); disconnect(oldChatList, &ChatList::chatAdded, this, nullptr); @@ -52,20 +52,16 @@ void ChatProxy::setSourceModel(QAbstractItemModel *model) { }); connect(newChatList, &ChatList::dataChanged, this, [this] { invalidate(); }); } - auto firstList = new SortFilterList(model, Qt::AscendingOrder); - firstList->setDynamicSortFilter(true); - setSourceModels(firstList); + QSortFilterProxyModel::setSourceModel(newChatList); sort(0); } int ChatProxy::findChatIndex(ChatGui *chatGui) { - auto chatList = getListModel(); + auto chatList = dynamic_cast(sourceModel()); if (chatList) { auto listIndex = chatList->findChatIndex(chatGui); if (listIndex != -1) { - listIndex = - dynamic_cast(sourceModel())->mapFromSource(chatList->index(listIndex, 0)).row(); - if (mMaxDisplayItems <= listIndex) setMaxDisplayItems(listIndex + mDisplayItemsStep); + listIndex = mapFromSource(chatList->index(listIndex, 0)).row(); return listIndex; } } @@ -73,17 +69,13 @@ int ChatProxy::findChatIndex(ChatGui *chatGui) { } void ChatProxy::addChatInList(ChatGui *chatGui) { - auto chatList = getListModel(); + auto chatList = dynamic_cast(sourceModel()); if (chatList && chatGui) { chatList->addChatInList(chatGui->mCore); } } -bool ChatProxy::SortFilterList::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { - return true; -} - -bool ChatProxy::SortFilterList::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const { +bool ChatProxy::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const { if (!mFilterText.isEmpty()) return false; auto l = getItemAtSource(sourceLeft.row()); auto r = getItemAtSource(sourceRight.row()); diff --git a/Linphone/core/chat/ChatProxy.hpp b/Linphone/core/chat/ChatProxy.hpp index f15ae999f..3f25ef2b5 100644 --- a/Linphone/core/chat/ChatProxy.hpp +++ b/Linphone/core/chat/ChatProxy.hpp @@ -21,24 +21,24 @@ #ifndef CHAT_PROXY_H_ #define CHAT_PROXY_H_ -#include "../proxy/LimitProxy.hpp" +#include "../proxy/SortFilterProxy.hpp" #include "core/chat/ChatGui.hpp" #include "core/chat/ChatList.hpp" #include "tool/AbstractObject.hpp" // ============================================================================= -class ChatProxy : public LimitProxy, public AbstractObject { +class ChatProxy : public SortFilterProxy, public AbstractObject { Q_OBJECT public: - DECLARE_SORTFILTER_CLASS() - ChatProxy(QObject *parent = Q_NULLPTR); ~ChatProxy(); void setSourceModel(QAbstractItemModel *sourceModel) override; + bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override; + Q_INVOKABLE int findChatIndex(ChatGui *chatGui); Q_INVOKABLE void addChatInList(ChatGui *chatGui); signals: diff --git a/Linphone/core/proxy/SortFilterProxy.cpp b/Linphone/core/proxy/SortFilterProxy.cpp index a7078f99e..887aad0d6 100644 --- a/Linphone/core/proxy/SortFilterProxy.cpp +++ b/Linphone/core/proxy/SortFilterProxy.cpp @@ -26,6 +26,9 @@ SortFilterProxy::SortFilterProxy(QAbstractItemModel *list) : QSortFilterProxyMod setSourceModel(list); } +SortFilterProxy::SortFilterProxy() { +} + SortFilterProxy::SortFilterProxy(QAbstractItemModel *list, Qt::SortOrder order) : SortFilterProxy(list) { sort(0, order); } diff --git a/Linphone/core/proxy/SortFilterProxy.hpp b/Linphone/core/proxy/SortFilterProxy.hpp index f604de42f..57a623d91 100644 --- a/Linphone/core/proxy/SortFilterProxy.hpp +++ b/Linphone/core/proxy/SortFilterProxy.hpp @@ -41,6 +41,7 @@ public: Q_PROPERTY(int filterType READ getFilterType WRITE setFilterType NOTIFY filterTypeChanged) Q_PROPERTY(QString filterText READ getFilterText WRITE setFilterText NOTIFY filterTextChanged) + SortFilterProxy(); SortFilterProxy(QAbstractItemModel *parent); SortFilterProxy(QAbstractItemModel *parent, Qt::SortOrder order); virtual ~SortFilterProxy(); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 7c925a107..bda7aaa3c 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2112,65 +2112,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… - + chat_message_draft_sending_text - + chat_room_delete "Delete" Löschen - + chat_room_mute - + chat_room_unmute "Mute" - + chat_room_mark_as_read "Mark as read" - + chat_room_leave "leave" - + chat_list_leave_chat_popup_title leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? @@ -2567,32 +2567,32 @@ Error - + chat_action_start_new_chat "New chat" - + chat_start_group_chat_title "Nouveau groupe" - + chat_action_start_group_chat "Créer" Erstellen - - - + + + information_popup_error_title Fehler - + information_popup_chat_creation_failed_message "La création a échoué" @@ -2603,25 +2603,25 @@ Error Der Codec konnte nicht installiert werden. - + group_chat_error_must_have_name "Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" Sie sind nicht verbunden - + chat_creation_in_progress Creation de la conversation en cours … @@ -3784,58 +3784,58 @@ Error EventLogCore - + conference_created_event - + conference_created_terminated - + conference_participant_added_event - + conference_participant_removed_event - - + + conference_security_event - + conference_ephemeral_message_enabled_event - + conference_ephemeral_message_lifetime_changed_event - + conference_ephemeral_message_disabled_event - + conference_subject_changed_event - + conference_participant_unset_admin_event - + conference_participant_set_admin_event diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 39c40120a..cb1d33aa7 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 is writing… - + chat_message_draft_sending_text Draft : %1 - + chat_room_delete "Delete" Delete - + chat_room_mute Mute - + chat_room_unmute "Mute" Unmute - + chat_room_mark_as_read "Mark as read" Mark as read - + chat_room_leave "leave" Leave - + chat_list_leave_chat_popup_title leave the conversation ? Leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? This conversation and all its messages will be deleted. Do You want to continue ? @@ -2541,56 +2541,56 @@ Only your correspondent can decrypt them. No conversation in history - + chat_action_start_new_chat "New chat" New conversation - + chat_start_group_chat_title "Nouveau groupe" New group - + chat_action_start_group_chat "Créer" Create - - - + + + information_popup_error_title Error - + information_popup_chat_creation_failed_message "La création a échoué" Creation failed - + group_chat_error_must_have_name "Un nom doit être donné au groupe A name must be set for the group - + group_chat_error_no_participant "Please select at least one participant Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" You are not connected - + chat_creation_in_progress Creation de la conversation en cours … Chat creation pending… @@ -3703,59 +3703,59 @@ Only your correspondent can decrypt them. EventLogCore - + conference_created_event You have joined the group - + conference_created_terminated You have left the group - + conference_participant_added_event %1 has joined - + conference_participant_removed_event %1 is no longer in the conversation - + conference_participant_set_admin_event %1 is now an admin - + conference_participant_unset_admin_event %1 is no longer an admin - - + + conference_security_event Security level degraded by %1 - + conference_ephemeral_message_enabled_event Ephemeral messages enabled Expiration : %1 - + conference_ephemeral_message_disabled_event Ephemeral messages disabled - + conference_subject_changed_event New subject: %1 - + conference_ephemeral_message_lifetime_changed_event Ephemeral messages updated Expiration : %1 diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 528b3566b..ef4b1efa6 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2089,65 +2089,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… - + chat_message_draft_sending_text Brouillon : %1 - + chat_room_delete "Delete" Supprimer - + chat_room_mute Mettre en sourdine - + chat_room_unmute "Mute" Enlever la sourdine - + chat_room_mark_as_read "Mark as read" Marquer comme lu - + chat_room_leave "leave" Quitter la conversation - + chat_list_leave_chat_popup_title leave the conversation ? Quitter la conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ? - + chat_list_delete_chat_popup_title Delete the conversation ? Supprimer la conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ? @@ -2541,56 +2541,56 @@ en bout. Seul votre correspondant peut les déchiffrer. Aucune conversation dans votre historique - + chat_action_start_new_chat "New chat" Nouvelle conversation - + chat_start_group_chat_title "Nouveau groupe" Nouveau groupe - + chat_action_start_group_chat "Créer" Créer - - - + + + information_popup_error_title Erreur - + information_popup_chat_creation_failed_message "La création a échoué" La création a échoué - + group_chat_error_must_have_name "Un nom doit être donné au groupe Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant Veuillez sélectionner au moins un participant - + group_call_error_not_connected "Vous n'etes pas connecté" Vous n'êtes pas connecté - + chat_creation_in_progress Creation de la conversation en cours … Création de la conversation en cours… @@ -3703,60 +3703,60 @@ en bout. Seul votre correspondant peut les déchiffrer. EventLogCore - + conference_created_event Vous avez rejoint le groupe - + conference_created_terminated Vous avez quitté le groupe - + conference_participant_added_event %1 a rejoint le groupe - + conference_participant_removed_event %1 ne fait plus partie du groupe - - + + conference_security_event Niveau de sécurité dégradé par %1 - + conference_ephemeral_message_enabled_event Messages éphémères activés Expiration : %1 - + conference_ephemeral_message_lifetime_changed_event Messages éphémères mis à jour Expiration : %1 - + conference_ephemeral_message_disabled_event Messages éphémères désactivés - + conference_subject_changed_event Nouveau sujet : %1 - + conference_participant_unset_admin_event %1 n'est plus admin - + conference_participant_set_admin_event %1 est maintenant admin diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index 18be99133..49d905162 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -40,11 +40,12 @@ ListView { onFilterTextChanged: { chatToSelectLater = currentChatGui } - initialDisplayItems: Math.max(20, Math.round(2 * mainItem.height / Utils.getSizeWithScreenRatio(56))) - displayItemsStep: 3 * initialDisplayItems / 2 onModelAboutToBeReset: { loading = true } + onModelReset: { + loading = false + } onRowsRemoved: { var index = mainItem.currentIndex mainItem.currentIndex = -1 From 7c2e9f6c12af2d3ad91acb9fbc0ae13b03d51cd4 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Tue, 25 Nov 2025 11:00:43 +0100 Subject: [PATCH 57/72] fix binding loop on popup button closed remove debug do not force declining call when user in do not disturb status #LINQT-2129 #LINQT-2171 do not handle chat notifications when chat disabled change transfer direction (transfer paused call to current) #LINQT-2211 fix chat message image size in call #LINQT-2142 update translations fix crash remove auto switch audio device to avoid binding loop --- Linphone/core/notifier/Notifier.cpp | 3 - .../core/participant/ParticipantInfoList.cpp | 2 +- Linphone/data/languages/de.ts | 86 +++++++++---------- Linphone/data/languages/en.ts | 86 +++++++++---------- Linphone/data/languages/fr.ts | 86 +++++++++---------- Linphone/model/account/AccountManager.cpp | 8 -- Linphone/model/call/CallModel.cpp | 4 +- Linphone/model/core/CoreModel.cpp | 4 + Linphone/model/setting/SettingsModel.cpp | 6 +- Linphone/view/Control/Button/PopupButton.qml | 1 + .../view/Control/Display/Chat/ChatMessage.qml | 1 + .../Display/Chat/ChatMessageContent.qml | 11 +-- .../view/Page/Window/Call/CallsWindow.qml | 44 +++++----- 13 files changed, 170 insertions(+), 172 deletions(-) diff --git a/Linphone/core/notifier/Notifier.cpp b/Linphone/core/notifier/Notifier.cpp index 0175e2a10..890b831f6 100644 --- a/Linphone/core/notifier/Notifier.cpp +++ b/Linphone/core/notifier/Notifier.cpp @@ -288,9 +288,6 @@ void Notifier::notifyReceivedCall(const shared_ptr &call) { auto voicemailAddress = linphone::Factory::get()->createAddress( Utils::appStringToCoreString(accountModel->getVoicemailAddress())); if (voicemailAddress) call->transferTo(voicemailAddress); - } else { - lInfo() << log().arg("Declining call."); - call->decline(linphone::Reason::Busy); } return; } diff --git a/Linphone/core/participant/ParticipantInfoList.cpp b/Linphone/core/participant/ParticipantInfoList.cpp index fbb4703ec..75e77b29a 100644 --- a/Linphone/core/participant/ParticipantInfoList.cpp +++ b/Linphone/core/participant/ParticipantInfoList.cpp @@ -48,7 +48,7 @@ ParticipantInfoList::~ParticipantInfoList() { void ParticipantInfoList::setChatCore(const QSharedPointer &chatCore) { mustBeInMainThread(log().arg(Q_FUNC_INFO)); - if (mChatCore) disconnect(mChatCore.get()); + if (mChatCore) disconnect(mChatCore.get(), &ChatCore::participantsChanged, this, nullptr); mChatCore = chatCore; lDebug() << "[ParticipantInfoList] : set Chat " << mChatCore.get(); clearData(); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index bda7aaa3c..ab42d9d5e 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" Das Konto ist bereits verbunden - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Proxy-Adresse konnte nicht erstellt werden. Bitte überprüfen Sie den Domänenname. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Folgende Adresse konnte nicht konfiguriert werden: `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Kontoeinstellungen konnten nicht konfiguriert werden. - + assistant_account_login_forbidden_error "Username and password do not match" Benutzername und Passwort stimmen nicht überein - + assistant_account_login_error "Error during connection, please verify your parameters" Fehler bei der Verbindung - + assistant_account_add_error "Unable to add account." Konto konnte nicht hinzugefügt werden. @@ -1142,67 +1142,67 @@ CallModel - + call_error_no_response_toast "No response" - + call_error_forbidden_resource_toast "403 : Forbidden resource" - + call_error_not_answered_toast "Request timeout" - + call_error_user_declined_toast "User declined the call" Der Benutzer hat den Anruf abgelehnt - + call_error_user_not_found_toast "User was not found" Benutzer nicht gefunden - + call_error_user_busy_toast "User is busy" Der Benutzer ist beschäftigt - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" Der Benutzer kann Ihren Anruf nicht annehmen - + call_error_io_error_toast "Unavailable service or network error" Dienst nicht verfügbar oder Netzwerkfehler - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Vorübergehend nicht verfügbar - + call_error_server_timeout_toast "Server tiemout" Server-Zeitüberschreitung @@ -2179,25 +2179,25 @@ ChatMessage - + chat_message_copy_selection "Copy selection" - + chat_message_copy "Copy" - + chat_message_copied_to_clipboard_title Copied Kopiert - + chat_message_copied_to_clipboard_toast "to clipboard" @@ -2233,25 +2233,25 @@ - + chat_message_reception_info "Reception info" - + chat_message_reply Reply - + chat_message_forward Forward - + chat_message_delete "Delete" Löschen @@ -2567,32 +2567,32 @@ Error - + chat_action_start_new_chat "New chat" - + chat_start_group_chat_title "Nouveau groupe" - + chat_action_start_group_chat "Créer" Erstellen - - - + + + information_popup_error_title Fehler - + information_popup_chat_creation_failed_message "La création a échoué" @@ -2603,25 +2603,25 @@ Error Der Codec konnte nicht installiert werden. - + group_chat_error_must_have_name "Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" Sie sind nicht verbunden - + chat_creation_in_progress Creation de la conversation en cours … @@ -5011,36 +5011,36 @@ Error Notifier - + new_call_alert_accessible_name New call from %1 - + new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. - + new_file_message - + new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. - + new_message_alert_accessible_name New message on chatroom %1 diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index cb1d33aa7..477140e28 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" The account is already connected - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Unable to create proxy address. Please check the domain name. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Unable to configure address: `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Unable to configure account settings. - + assistant_account_login_forbidden_error "Username and password do not match" Username and password do not match - + assistant_account_login_error "Error during connection, please verify your parameters" Error during connection - + assistant_account_add_error "Unable to add account." Unable to add account. @@ -1137,67 +1137,67 @@ CallModel - + call_error_no_response_toast "No response" No response - + call_error_forbidden_resource_toast "403 : Forbidden resource" 403 : Forbidden resource - + call_error_not_answered_toast "Request timeout" Request timeout - + call_error_user_declined_toast "User declined the call" User declined the call - + call_error_user_not_found_toast "User was not found" User was not found - + call_error_user_busy_toast "User is busy" User is busy - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" User can't accept your call - + call_error_io_error_toast "Unavailable service or network error" Unavailable service or network error - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" User cannot be disturbed - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Temporarily unavailable - + call_error_server_timeout_toast "Server tiemout" Server tiemout @@ -2156,25 +2156,25 @@ ChatMessage - + chat_message_copy_selection "Copy selection" Copy selection - + chat_message_copy "Copy" Copy - + chat_message_copied_to_clipboard_title Copied Copied - + chat_message_copied_to_clipboard_toast "to clipboard" in clipboard @@ -2210,25 +2210,25 @@ You replied - + chat_message_reception_info "Reception info" Reception info - + chat_message_reply Reply Reply - + chat_message_forward Forward Forward - + chat_message_delete "Delete" Delete @@ -2541,56 +2541,56 @@ Only your correspondent can decrypt them. No conversation in history - + chat_action_start_new_chat "New chat" New conversation - + chat_start_group_chat_title "Nouveau groupe" New group - + chat_action_start_group_chat "Créer" Create - - - + + + information_popup_error_title Error - + information_popup_chat_creation_failed_message "La création a échoué" Creation failed - + group_chat_error_must_have_name "Un nom doit être donné au groupe A name must be set for the group - + group_chat_error_no_participant "Please select at least one participant Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" You are not connected - + chat_creation_in_progress Creation de la conversation en cours … Chat creation pending… @@ -4918,36 +4918,36 @@ Expiration : %1 Notifier - + new_call_alert_accessible_name New call from %1 New call from %1 - + new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. Voice message received! - + new_file_message File received! - + new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. Conference invitation received ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. New messages received ! - + new_message_alert_accessible_name New message on chatroom %1 New message on chatroom %1 diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index ef4b1efa6..176204191 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -104,43 +104,43 @@ AccountManager - + assistant_account_login_already_connected_error "The account is already connected" Le compte est déjà connecté - + assistant_account_login_proxy_address_error "Unable to create proxy address. Please check the domain name." Impossible de créer l'adresse proxy. Merci de vérifier le nom de domaine. - + assistant_account_login_address_configuration_error "Unable to configure address: `%1`." Impossible de configurer l'adresse : `%1`. - + assistant_account_login_params_configuration_error "Unable to configure account settings." Impossible de configurer les paramètres du compte. - + assistant_account_login_forbidden_error "Username and password do not match" Le couple identifiant mot de passe ne correspond pas - + assistant_account_login_error "Error during connection, please verify your parameters" Erreur durant la connexion, veuillez vérifier vos paramètres - + assistant_account_add_error "Unable to add account." Impossible d'ajouter le compte. @@ -1137,67 +1137,67 @@ CallModel - + call_error_no_response_toast "No response" Pas de réponse - + call_error_forbidden_resource_toast "403 : Forbidden resource" 403 : Forbidden resource - + call_error_not_answered_toast "Request timeout" La requête a expiré - + call_error_user_declined_toast "User declined the call" Le correspondant a décliné l'appel - + call_error_user_not_found_toast "User was not found" Le correspondant n'a pas été trouvé - + call_error_user_busy_toast "User is busy" Le correspondant est occupé - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" Le correspondant ne peut accepter votre appel - + call_error_io_error_toast "Unavailable service or network error" Service indisponible ou erreur réseau - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" Le correspondant ne peut être dérangé - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Temporairement indisponible - + call_error_server_timeout_toast "Server tiemout" Délai d'attente du serveur dépassé @@ -2156,25 +2156,25 @@ ChatMessage - + chat_message_copy_selection "Copy selection" Copier la sélection - + chat_message_copy "Copy" Copier - + chat_message_copied_to_clipboard_title Copied Copié - + chat_message_copied_to_clipboard_toast "to clipboard" dans le presse-papiers @@ -2210,25 +2210,25 @@ Vous avez répondu - + chat_message_reception_info "Reception info" Info de réception - + chat_message_reply Reply Répondre - + chat_message_forward Forward Transférer - + chat_message_delete "Delete" Supprimer @@ -2541,56 +2541,56 @@ en bout. Seul votre correspondant peut les déchiffrer. Aucune conversation dans votre historique - + chat_action_start_new_chat "New chat" Nouvelle conversation - + chat_start_group_chat_title "Nouveau groupe" Nouveau groupe - + chat_action_start_group_chat "Créer" Créer - - - + + + information_popup_error_title Erreur - + information_popup_chat_creation_failed_message "La création a échoué" La création a échoué - + group_chat_error_must_have_name "Un nom doit être donné au groupe Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant Veuillez sélectionner au moins un participant - + group_call_error_not_connected "Vous n'etes pas connecté" Vous n'êtes pas connecté - + chat_creation_in_progress Creation de la conversation en cours … Création de la conversation en cours… @@ -4918,36 +4918,36 @@ Expiration : %1 Notifier - + new_call_alert_accessible_name New call from %1 Nouvel appel de %1 - + new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. Message vocal reçu ! - + new_file_message Fichier reçu ! - + new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. Nouvelle invitation à une conférence ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. Nouveaux messages reçus ! - + new_message_alert_accessible_name New message on chatroom %1 Nouveau message sur la conversation %1 diff --git a/Linphone/model/account/AccountManager.cpp b/Linphone/model/account/AccountManager.cpp index 8ef4817cb..068d87fa1 100644 --- a/Linphone/model/account/AccountManager.cpp +++ b/Linphone/model/account/AccountManager.cpp @@ -65,14 +65,6 @@ bool AccountManager::login(QString username, QString outboundProxyAddress, QString connectionId) { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); - qDebug() << "login with parameters :"; - qDebug() << "username" << username; - qDebug() << "password" << password; - qDebug() << "displayName" << displayName; - qDebug() << "domain" << domain; - qDebug() << "registrarUri" << registrarUri; - qDebug() << "outboundProxyAddress" << outboundProxyAddress; - qDebug() << "connectionId" << connectionId; auto core = CoreModel::getInstance()->getCore(); auto factory = linphone::Factory::get(); QString assistantFile = (!QString::compare(domain, "sip.linphone.org", Qt::CaseInsensitive) || domain.isEmpty()) diff --git a/Linphone/model/call/CallModel.cpp b/Linphone/model/call/CallModel.cpp index f4045ceac..a5359cc5e 100644 --- a/Linphone/model/call/CallModel.cpp +++ b/Linphone/model/call/CallModel.cpp @@ -104,7 +104,9 @@ void CallModel::transferTo(const std::shared_ptr &address) { void CallModel::transferToAnother(const std::shared_ptr &call) { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); - if (mMonitor->transferToAnother(call) == -1) + if (!call) return; + // Transfer paused call to current call + if (call->transferToAnother(mMonitor) == -1) lWarning() << log() .arg(QStringLiteral("Unable to transfer: `%1`.")) .arg(Utils::coreStringToAppString(call->getRemoteAddress()->asStringUriOnly())); diff --git a/Linphone/model/core/CoreModel.cpp b/Linphone/model/core/CoreModel.cpp index f963839d2..b1338577e 100644 --- a/Linphone/model/core/CoreModel.cpp +++ b/Linphone/model/core/CoreModel.cpp @@ -546,6 +546,7 @@ void CoreModel::onLogCollectionUploadProgressIndication(const std::shared_ptr
  • &core, const std::shared_ptr &room, const std::shared_ptr &message) { + if (SettingsModel::getInstance()->getDisableChatFeature()) return; if (message->isOutgoing()) return; emit unreadNotificationsChanged(); std::list> messages; @@ -558,6 +559,7 @@ void CoreModel::onMessageReceived(const std::shared_ptr &core, void CoreModel::onMessagesReceived(const std::shared_ptr &core, const std::shared_ptr &room, const std::list> &messages) { + if (SettingsModel::getInstance()->getDisableChatFeature()) return; std::list> finalMessages; for (auto &message : messages) { if (message->isOutgoing()) continue; @@ -575,6 +577,7 @@ void CoreModel::onNewMessageReaction(const std::shared_ptr &core const std::shared_ptr &chatRoom, const std::shared_ptr &message, const std::shared_ptr &reaction) { + if (SettingsModel::getInstance()->getDisableChatFeature()) return; emit newMessageReaction(core, chatRoom, message, reaction); } void CoreModel::onNotifyPresenceReceivedForUriOrTel( @@ -595,6 +598,7 @@ void CoreModel::onReactionRemoved(const std::shared_ptr &core, const std::shared_ptr &chatRoom, const std::shared_ptr &message, const std::shared_ptr &address) { + if (SettingsModel::getInstance()->getDisableChatFeature()) return; emit reactionRemoved(core, chatRoom, message, address); } void CoreModel::onTransferStateChanged(const std::shared_ptr &core, diff --git a/Linphone/model/setting/SettingsModel.cpp b/Linphone/model/setting/SettingsModel.cpp index d88bfd0c6..2810f5cd6 100644 --- a/Linphone/model/setting/SettingsModel.cpp +++ b/Linphone/model/setting/SettingsModel.cpp @@ -91,9 +91,9 @@ SettingsModel::SettingsModel() { [this](const std::shared_ptr &core, const std::shared_ptr &device) { lInfo() << log().arg("audio device changed"); if (device) lInfo() << "device :" << device->getDeviceName(); - emit playbackDeviceChanged(getPlaybackDevice()); - emit captureDeviceChanged(getCaptureDevice()); - emit ringerDeviceChanged(getRingerDevice()); + // emit playbackDeviceChanged(getPlaybackDevice()); + // emit captureDeviceChanged(getCaptureDevice()); + // emit ringerDeviceChanged(getRingerDevice()); }); } diff --git a/Linphone/view/Control/Button/PopupButton.qml b/Linphone/view/Control/Button/PopupButton.qml index fb42a3641..38d4724bd 100644 --- a/Linphone/view/Control/Button/PopupButton.qml +++ b/Linphone/view/Control/Button/PopupButton.qml @@ -55,6 +55,7 @@ Button { } function _getPreviousItem(content, index) { + if (!content.visible) return null if (content.visibleChildren.length == 0 || !hasFocusableChild(content)) return null; --index; diff --git a/Linphone/view/Control/Display/Chat/ChatMessage.qml b/Linphone/view/Control/Display/Chat/ChatMessage.qml index 0f3fb1b4e..16c3df312 100644 --- a/Linphone/view/Control/Display/Chat/ChatMessage.qml +++ b/Linphone/view/Control/Display/Chat/ChatMessage.qml @@ -254,6 +254,7 @@ Control.Control { chatGui: mainItem.chat searchedTextPart: mainItem.searchedTextPart chatMessageGui: mainItem.chatMessage + maxWidth: mainItem.maxWidth onMouseEvent: (event) => { mainItem.handleDefaultMouseEvent(event) } diff --git a/Linphone/view/Control/Display/Chat/ChatMessageContent.qml b/Linphone/view/Control/Display/Chat/ChatMessageContent.qml index a227d4ae4..7751fd8e2 100644 --- a/Linphone/view/Control/Display/Chat/ChatMessageContent.qml +++ b/Linphone/view/Control/Display/Chat/ChatMessageContent.qml @@ -30,9 +30,9 @@ ColumnLayout { property string searchedTextPart property int fileBorderWidth : 0 + property int maxWidth spacing: Utils.getSizeWithScreenRatio(5) - property int padding: Utils.getSizeWithScreenRatio(10) property ChatMessageContentProxy filescontentProxy: ChatMessageContentProxy { filterType: ChatMessageContentProxy.FilterContentType.File @@ -86,7 +86,7 @@ ColumnLayout { contentGui: mainItem.filescontentProxy.count === 1 ? mainItem.filescontentProxy.getChatMessageContentAtIndex(0) : null - width: Utils.getSizeWithScreenRatio(285) + Layout.fillWidth: true Layout.alignment: Qt.AlignHCenter fillMode: Image.PreserveAspectFit } @@ -96,7 +96,7 @@ ColumnLayout { contentGui: mainItem.filescontentProxy.count === 1 ? mainItem.filescontentProxy.getChatMessageContentAtIndex(0) : null - Layout.preferredWidth: Utils.getSizeWithScreenRatio(285) + Layout.fillWidth: true Layout.preferredHeight: paintedHeight Layout.alignment: Qt.AlignHCenter fillMode: Image.PreserveAspectFit @@ -107,8 +107,9 @@ ColumnLayout { contentGui: mainItem.filescontentProxy.count === 1 ? mainItem.filescontentProxy.getChatMessageContentAtIndex(0) : null - width: Utils.getSizeWithScreenRatio(285) - height: Utils.getSizeWithScreenRatio(285) + Layout.fillWidth: true + width: Math.min(Utils.getSizeWithScreenRatio(285), mainItem.maxWidth) + height: Math.min(Utils.getSizeWithScreenRatio(285), mainItem.maxWidth) Layout.preferredWidth: videoOutput.contentRect.width Layout.preferredHeight: videoOutput.contentRect.height Layout.alignment: Qt.AlignHCenter diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index fb0de7802..a60a9ea21 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -786,29 +786,29 @@ AbstractWindow { searchBarBorderColor: DefaultStyle.grey_200 searchBarRightMaring: 0 onContactClicked: contact => { - var callsWin = UtilsCpp.getCallsWindow() - if (contact) - //: "Confirmer le transfert" - callsWin.showConfirmationLambdaPopup(qsTr("call_transfer_confirm_dialog_tittle"), - //: "Vous allez transférer %1 à %2." - qsTr("call_transfer_confirm_dialog_message").arg(mainWindow.call.core.remoteName).arg(contact.core.fullName), "", - function (confirmed) { - if (confirmed) { - mainWindow.transferCallToContact(mainWindow.call,contact,newCallForm) - } - }) - } + var callsWin = UtilsCpp.getCallsWindow() + if (contact) + //: "Confirmer le transfert" + callsWin.showConfirmationLambdaPopup(qsTr("call_transfer_confirm_dialog_tittle"), + //: "Vous allez transférer %1 à %2." + qsTr("call_transfer_confirm_dialog_message").arg(mainWindow.call.core.remoteName).arg(contact.core.fullName), "", + function (confirmed) { + if (confirmed) { + mainWindow.transferCallToContact(mainWindow.call,contact,newCallForm) + } + }) + } onTransferCallToAnotherRequested: dest => { - var callsWin = UtilsCpp.getCallsWindow() - console.log("transfer to",dest) - callsWin.showConfirmationLambdaPopup(qsTr("call_transfer_confirm_dialog_tittle"), - qsTr("call_transfer_confirm_dialog_message").arg(mainWindow.call.core.remoteName).arg(dest.core.remoteName),"", - function (confirmed) { - if (confirmed) { - mainWindow.call.core.lTransferCallToAnother(dest.core.remoteAddress) - } - }) - } + var callsWin = UtilsCpp.getCallsWindow() + console.log("transfer to",dest) + callsWin.showConfirmationLambdaPopup(qsTr("call_transfer_confirm_dialog_tittle"), + qsTr("call_transfer_confirm_dialog_message").arg(mainWindow.call.core.remoteName).arg(dest.core.remoteName),"", + function (confirmed) { + if (confirmed) { + mainWindow.call.core.lTransferCallToAnother(dest.core.remoteAddress) + } + }) + } numPadPopup: numPadPopup NumericPadPopup { From e3edeb1bcf51648be5c95ecdafa350f3ad4dfce7 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Wed, 26 Nov 2025 10:16:52 +0100 Subject: [PATCH 58/72] update SDK to 5.4.62 --- external/linphone-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/linphone-sdk b/external/linphone-sdk index 5a1d0fedd..3f087f9df 160000 --- a/external/linphone-sdk +++ b/external/linphone-sdk @@ -1 +1 @@ -Subproject commit 5a1d0fedd44d4702fc717b2819204d9ba96b6815 +Subproject commit 3f087f9dfb1f3279a9358d48a6e23efcd840549c From 5bbffa79d86884157f7073b2716bea6b9e06d5d9 Mon Sep 17 00:00:00 2001 From: gaelle Date: Wed, 26 Nov 2025 16:53:35 +0100 Subject: [PATCH 59/72] fix crash when account null fix notification display if max instances reached --- Linphone/core/notifier/Notifier.cpp | 5 +++-- Linphone/data/languages/de.ts | 10 +++++----- Linphone/data/languages/en.ts | 10 +++++----- Linphone/data/languages/fr.ts | 10 +++++----- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Linphone/core/notifier/Notifier.cpp b/Linphone/core/notifier/Notifier.cpp index 890b831f6..8612d3bf8 100644 --- a/Linphone/core/notifier/Notifier.cpp +++ b/Linphone/core/notifier/Notifier.cpp @@ -130,7 +130,7 @@ Notifier::~Notifier() { bool Notifier::createNotification(Notifier::NotificationType type, QVariantMap data) { mMutex->lock(); // Q_ASSERT(mInstancesNumber <= MaxNotificationsNumber); - if (mInstancesNumber == MaxNotificationsNumber) { // Check existing instances. + if (mInstancesNumber >= MaxNotificationsNumber) { // Check existing instances. qWarning() << QStringLiteral("Unable to create another notification."); mMutex->unlock(); return false; @@ -332,7 +332,8 @@ void Notifier::notifyReceivedMessages(const std::shared_ptr if (receiverAccount) { auto senderAccount = ToolModel::findAccount(message->getFromAddress()); auto currentAccount = CoreModel::getInstance()->getCore()->getDefaultAccount(); - if (senderAccount && senderAccount->getContactAddress()->weakEqual(currentAccount->getContactAddress())) { + if (senderAccount && senderAccount->getContactAddress() && currentAccount->getContactAddress() && + senderAccount->getContactAddress()->weakEqual(currentAccount->getContactAddress())) { qDebug() << "sender is current account, return"; return; } diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index ab42d9d5e..0a571e77d 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -5017,30 +5017,30 @@ Error - + new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. - + new_file_message - + new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. - + new_message_alert_accessible_name New message on chatroom %1 diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 477140e28..4b725a829 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -4924,30 +4924,30 @@ Expiration : %1 New call from %1 - + new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. Voice message received! - + new_file_message File received! - + new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. Conference invitation received ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. New messages received ! - + new_message_alert_accessible_name New message on chatroom %1 New message on chatroom %1 diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 176204191..b800f53f4 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -4924,30 +4924,30 @@ Expiration : %1 Nouvel appel de %1 - + new_voice_message 'Voice message received!' : message to warn the user in a notofication for voice messages. Message vocal reçu ! - + new_file_message Fichier reçu ! - + new_conference_invitation 'Conference invitation received!' : Notification about receiving an invitation to a conference. Nouvelle invitation à une conférence ! - + new_chat_room_messages 'New messages received!' Notification that warn the user of new messages. Nouveaux messages reçus ! - + new_message_alert_accessible_name New message on chatroom %1 Nouveau message sur la conversation %1 From 96b20f42e2044cf3540dcdf3425393d2b8ba9ceb Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Wed, 26 Nov 2025 18:08:44 +0100 Subject: [PATCH 60/72] let the sdk check if registrar uri and outbound proxy uri are valid instead of using regex #LINQT-2227 --- Linphone/data/languages/de.ts | 57 +++++++------------ Linphone/data/languages/en.ts | 51 ++++++++--------- Linphone/data/languages/fr.ts | 51 ++++++++--------- Linphone/model/account/AccountModel.cpp | 9 ++- .../AccountSettingsParametersLayout.qml | 33 ++--------- 5 files changed, 80 insertions(+), 121 deletions(-) diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 0a571e77d..86ad2d4ed 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -161,25 +161,25 @@ - + set_outbound_proxy_uri_failed_error_message Unable to set outbound proxy uri, failed creating address from %1 - + set_conference_factory_address_failed_error_message "Unable to set the conversation server address, failed creating address from %1" - + set_audio_conference_factory_address_failed_error_message "Unable to set the meeting server address, failed creating address from %1" - + set_voicemail_address_failed_error_message Unable to set voicemail address, failed creating address from %1 @@ -382,68 +382,55 @@ Kontoeinstellungen - - info_popup_invalid_registrar_uri_message - Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - - - - - info_popup_invalid_outbound_proxy_message - Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - - - - info_popup_error_title - Fehler + Fehler - + information_popup_success_title Erfolg - + contact_editor_saved_changes_toast "Modifications sauvegardés" Änderungen gespeichert - + information_popup_error_title Fehler - + account_settings_mwi_uri_title "URI du serveur de messagerie vocale" Voicemail-Server-URI - + account_settings_voicemail_uri_title "URI de messagerie vocale" Voicemail-URI - + account_settings_transport_title "Transport" Transport - + account_settings_registrar_uri_title - + account_settings_sip_proxy_url_title Proxy-Server-URL - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." @@ -454,49 +441,49 @@ Ausgehender Proxy-Server - + account_settings_stun_server_url_title "Adresse du serveur STUN" STUN-Server-Adresse - + account_settings_enable_ice_title "Activer ICE" ICE aktivieren - + account_settings_avpf_title "AVPF" AVPF - + account_settings_bundle_mode_title "Mode bundle" Bundle-Modus - + account_settings_expire_title "Expiration (en seconde)" Ablaufzeit (in Sekunden) - + account_settings_conference_factory_uri_title "URI du serveur de conversations" Konferenz-Factory-URI - + account_settings_audio_video_conference_factory_uri_title "URI du serveur de réunions" Video-Konferenz-Factory-URI - + account_settings_lime_server_url_title "URL du serveur d’échange de clés de chiffrement" Lime-Server-URL diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 4b725a829..50c23c89d 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -161,25 +161,25 @@ Unable to set server address, failed creating address from %1 - + set_outbound_proxy_uri_failed_error_message Unable to set outbound proxy uri, failed creating address from %1 Unable to set outbound proxy uri, failed creating address from %1 - + set_conference_factory_address_failed_error_message "Unable to set the conversation server address, failed creating address from %1" Unable to set the conversation server address, failed creating address from %1 - + set_audio_conference_factory_address_failed_error_message "Unable to set the meeting server address, failed creating address from %1" Unable to set the meeting server address, failed creating address from %1 - + set_voicemail_address_failed_error_message Unable to set voicemail address, failed creating address from %1 Unable to set voicemail address, failed creating address from %1 @@ -382,116 +382,113 @@ Account settings - info_popup_invalid_registrar_uri_message Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - info_popup_invalid_outbound_proxy_message Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) + Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - info_popup_error_title - Error + Error - + information_popup_success_title Success - + contact_editor_saved_changes_toast "Modifications sauvegardés" Changes saved - + information_popup_error_title Error - + account_settings_mwi_uri_title "URI du serveur de messagerie vocale" Voicemail server URI - + account_settings_voicemail_uri_title "URI de messagerie vocale" Voicemail URI - + account_settings_transport_title "Transport" Transport - + account_settings_registrar_uri_title Registrar URI - + account_settings_sip_proxy_url_title Outbound SIP Proxy URI - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it. - + account_settings_stun_server_url_title "Adresse du serveur STUN" STUN server address - + account_settings_enable_ice_title "Activer ICE" Enable ICE - + account_settings_avpf_title "AVPF" AVPF - + account_settings_bundle_mode_title "Mode bundle" Bundle mode - + account_settings_expire_title "Expiration (en seconde)" Expiration (in seconds) - + account_settings_conference_factory_uri_title "URI du serveur de conversations" Conference factory URI - + account_settings_audio_video_conference_factory_uri_title "URI du serveur de réunions" Video conference factory uri - + account_settings_lime_server_url_title "URL du serveur d’échange de clés de chiffrement" Lime server URL diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index b800f53f4..315557aae 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -161,25 +161,25 @@ Impossible de définir l'adresse du serveur depuis l'adresse %1 - + set_outbound_proxy_uri_failed_error_message Unable to set outbound proxy uri, failed creating address from %1 Impossible de définir l'adresse du proxy sip sortant depuis l'adresse %1 - + set_conference_factory_address_failed_error_message "Unable to set the conversation server address, failed creating address from %1" Impossible de définir l'uri du serveur de conversations depuis l'adresse %1 - + set_audio_conference_factory_address_failed_error_message "Unable to set the meeting server address, failed creating address from %1" Impossible de définir l'uri du serveur de réunions depuis l'adresse %1 - + set_voicemail_address_failed_error_message Unable to set voicemail address, failed creating address from %1 Impossible de définir l'adresse de messagerie vocale depuis l'adresse %1 @@ -382,116 +382,113 @@ Paramètres de compte - info_popup_invalid_registrar_uri_message Registrar uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - La registrar URI est invalide. Veuillez vous assurer qu'elle respecte le format suivant : sip:<host>:<port>;transport=<transport> (:<port> est facultatif) + La registrar URI est invalide. Veuillez vous assurer qu'elle respecte le format suivant : sip:<host>:<port>;transport=<transport> (:<port> est facultatif) - info_popup_invalid_outbound_proxy_message Outbound proxy uri is invalid. Please make sure it matches the following format : sip:<host>:<port>;transport=<transport> (:<port> is optional) - L'uri du proxy sip sortant est invalide. Veuillez vous assurer qu'elle respecte le format suivant : sip:<host>:<port>;transport=<transport> (:<port> est facultatif) + L'uri du proxy sip sortant est invalide. Veuillez vous assurer qu'elle respecte le format suivant : sip:<host>:<port>;transport=<transport> (:<port> est facultatif) - info_popup_error_title - Erreur + Erreur - + information_popup_success_title Succès - + contact_editor_saved_changes_toast "Modifications sauvegardés" Modifications sauvegardés - + information_popup_error_title Erreur - + account_settings_mwi_uri_title "URI du serveur de messagerie vocale" URI du serveur de messagerie vocale - + account_settings_voicemail_uri_title "URI de messagerie vocale" URI de messagerie vocale - + account_settings_transport_title "Transport" Transport - + account_settings_registrar_uri_title Registrar URI - + account_settings_sip_proxy_url_title URL du proxy SIP sortant - + login_proxy_server_url_tooltip "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." Si ce champ est rempli, l’outbound proxy sera activé automatiquement. Laissez-le vide pour le désactiver. - + account_settings_stun_server_url_title "Adresse du serveur STUN" Adresse du serveur STUN - + account_settings_enable_ice_title "Activer ICE" Activer ICE - + account_settings_avpf_title "AVPF" AVPF - + account_settings_bundle_mode_title "Mode bundle" Mode bundle - + account_settings_expire_title "Expiration (en seconde)" Expiration (en seconde) - + account_settings_conference_factory_uri_title "URI du serveur de conversations" URI du serveur de conversations - + account_settings_audio_video_conference_factory_uri_title "URI du serveur de réunions" URI du serveur de réunions - + account_settings_lime_server_url_title "URL du serveur d’échange de clés de chiffrement" URL du serveur d’échange de clés de chiffrement diff --git a/Linphone/model/account/AccountModel.cpp b/Linphone/model/account/AccountModel.cpp index 44f8d0925..98b8da4bf 100644 --- a/Linphone/model/account/AccountModel.cpp +++ b/Linphone/model/account/AccountModel.cpp @@ -292,7 +292,6 @@ void AccountModel::setRegistrarUri(QString value) { emit setValueFailed(tr("set_server_address_failed_error_message").arg(value)); qWarning() << "Unable to set ServerAddress, failed creating address from" << value; } - emit registrarUriChanged(Utils::coreStringToAppString(address->asString())); } QString AccountModel::getOutboundProxyUri() const { @@ -308,11 +307,11 @@ void AccountModel::setOutboundProxyUri(QString value) { //: Unable to set outbound proxy uri, failed creating address from %1 emit setValueFailed(tr("set_outbound_proxy_uri_failed_error_message").arg(value)); return; + } else { + auto params = mMonitor->getParams()->clone(); + params->setRoutesAddresses({linOutboundProxyAddress}); + emit outboundProxyUriChanged(value); } - auto params = mMonitor->getParams()->clone(); - params->setRoutesAddresses({linOutboundProxyAddress}); - - emit outboundProxyUriChanged(value); } bool AccountModel::getOutboundProxyEnabled() const { diff --git a/Linphone/view/Page/Layout/Settings/AccountSettingsParametersLayout.qml b/Linphone/view/Page/Layout/Settings/AccountSettingsParametersLayout.qml index 17b26e9e8..3b87fadb2 100644 --- a/Linphone/view/Page/Layout/Settings/AccountSettingsParametersLayout.qml +++ b/Linphone/view/Page/Layout/Settings/AccountSettingsParametersLayout.qml @@ -27,34 +27,23 @@ AbstractSettingsLayout { property alias account: mainItem.model onSave: { - if (!registrarUriIsValid || !outboundProxyIsValid) { - var message = !registrarUriIsValid - //: Registrar uri is invalid. Please make sure it matches the following format : sip::;transport= (: is optional) - ? qsTr("info_popup_invalid_registrar_uri_message") - //: Outbound proxy uri is invalid. Please make sure it matches the following format : sip::;transport= (: is optional) - : qsTr("info_popup_invalid_outbound_proxy_message") - mainWindow.showInformationPopup(qsTr("info_popup_error_title"), message, false) - } - else account.core.save() + account.core.save() } onUndo: account.core.undo() Connections { target: account.core function onIsSavedChanged() { + console.log("saved changed", account.core.isSaved) if (account.core.isSaved) { - UtilsCpp.showInformationPopup( - qsTr("information_popup_success_title"), + UtilsCpp.showInformationPopup(qsTr("information_popup_success_title"), //: "Modifications sauvegardés" - qsTr("contact_editor_saved_changes_toast"), true, - mainWindow) + qsTr("contact_editor_saved_changes_toast"), true, mainWindow) } } function onSetValueFailed(error) { if (error) { UtilsCpp.showInformationPopup( - qsTr("information_popup_error_title"), - error, false, - mainWindow) + qsTr("information_popup_error_title"), error, false, mainWindow) } } } @@ -129,11 +118,6 @@ AbstractSettingsLayout { propertyName: "registrarUri" propertyOwnerGui: account toValidate: true - isValid: function(text) { - var valid = text === "" || UtilsCpp.stringMatchFormat(text, ConstantsCpp.uriRegExp) - mainItem.registrarUriIsValid = valid - return valid - } } DecoratedTextField { Layout.fillWidth: true @@ -141,14 +125,9 @@ AbstractSettingsLayout { title: qsTr("account_settings_sip_proxy_url_title") propertyName: "outboundProxyUri" propertyOwnerGui: account - toValidate: true //: "If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it." tooltip: qsTr("login_proxy_server_url_tooltip") - isValid: function(text) { - var isValid = text === "" || UtilsCpp.stringMatchFormat(text, ConstantsCpp.uriRegExp) - mainItem.outboundProxyIsValid = isValid - return isValid - } + toValidate: true } DecoratedTextField { Layout.fillWidth: true From 8ee80580658e6238f446e43558ed9d275a9011ca Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Thu, 27 Nov 2025 10:08:18 +0100 Subject: [PATCH 61/72] wait for chat room to receive Created state callback before selecting it #LINQT-2226 --- Linphone/core/chat/ChatList.cpp | 2 +- Linphone/core/chat/ChatProxy.cpp | 5 +- Linphone/core/chat/ChatProxy.hpp | 2 +- Linphone/data/languages/de.ts | 77 +++++++++++-------- Linphone/data/languages/en.ts | 77 +++++++++++-------- Linphone/data/languages/fr.ts | 77 +++++++++++-------- Linphone/view/Control/Button/IconButton.qml | 2 +- .../Control/Display/Chat/ChatListView.qml | 17 ++-- .../Control/Popup/Loading/LoadingPopup.qml | 6 +- Linphone/view/Page/Main/Chat/ChatPage.qml | 30 ++++++-- 10 files changed, 188 insertions(+), 107 deletions(-) diff --git a/Linphone/core/chat/ChatList.cpp b/Linphone/core/chat/ChatList.cpp index 7d0a662c2..94e1f7fc2 100644 --- a/Linphone/core/chat/ChatList.cpp +++ b/Linphone/core/chat/ChatList.cpp @@ -218,8 +218,8 @@ bool ChatList::addChatInList(QSharedPointer chatCore) { if (it == chatList.end()) { connectItem(chatCore); add(chatCore); - return true; emit chatAdded(); + return true; } return false; } diff --git a/Linphone/core/chat/ChatProxy.cpp b/Linphone/core/chat/ChatProxy.cpp index c021e1b93..84198c24c 100644 --- a/Linphone/core/chat/ChatProxy.cpp +++ b/Linphone/core/chat/ChatProxy.cpp @@ -68,11 +68,12 @@ int ChatProxy::findChatIndex(ChatGui *chatGui) { return -1; } -void ChatProxy::addChatInList(ChatGui *chatGui) { +bool ChatProxy::addChatInList(ChatGui *chatGui) { auto chatList = dynamic_cast(sourceModel()); if (chatList && chatGui) { - chatList->addChatInList(chatGui->mCore); + return chatList->addChatInList(chatGui->mCore); } + return false; } bool ChatProxy::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const { diff --git a/Linphone/core/chat/ChatProxy.hpp b/Linphone/core/chat/ChatProxy.hpp index 3f25ef2b5..1a40e1fb4 100644 --- a/Linphone/core/chat/ChatProxy.hpp +++ b/Linphone/core/chat/ChatProxy.hpp @@ -40,7 +40,7 @@ public: bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override; Q_INVOKABLE int findChatIndex(ChatGui *chatGui); - Q_INVOKABLE void addChatInList(ChatGui *chatGui); + Q_INVOKABLE bool addChatInList(ChatGui *chatGui); signals: void chatCreated(ChatGui *chatGui); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 86ad2d4ed..80560c786 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2099,65 +2099,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… - + chat_message_draft_sending_text - + chat_room_delete "Delete" Löschen - + chat_room_mute - + chat_room_unmute "Mute" - + chat_room_mark_as_read "Mark as read" - + chat_room_leave "leave" - + chat_list_leave_chat_popup_title leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? @@ -2512,74 +2512,91 @@ Error - + + info_popup_error_title + Fehler + + + + info_popup_chatroom_creation_failed + Chat room creation failed ! + + + + + loading_popup_chatroom_creation_pending_message + Chat room is being created... + + + + chat_dialog_delete_chat_title Supprimer la conversation ? - + chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." - + chat_list_title "Conversations" Konversationen - + menu_mark_all_as_read "mark all as read" - + chat_search_in_history "Rechercher une conversation" - + list_filter_no_result_found "Aucun résultat…" Kein Ergebnis… - + chat_list_empty_history "Aucune conversation dans votre historique" - + chat_action_start_new_chat "New chat" - + chat_start_group_chat_title "Nouveau groupe" - + chat_action_start_group_chat "Créer" Erstellen - - - + + + information_popup_error_title Fehler - + information_popup_chat_creation_failed_message "La création a échoué" @@ -2590,25 +2607,25 @@ Error Der Codec konnte nicht installiert werden. - + group_chat_error_must_have_name "Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" Sie sind nicht verbunden - + chat_creation_in_progress Creation de la conversation en cours … @@ -4134,7 +4151,7 @@ Error LoadingPopup - + cancel Abbrechen diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 50c23c89d..3b5f7b2d2 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2086,65 +2086,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 is writing… - + chat_message_draft_sending_text Draft : %1 - + chat_room_delete "Delete" Delete - + chat_room_mute Mute - + chat_room_unmute "Mute" Unmute - + chat_room_mark_as_read "Mark as read" Mark as read - + chat_room_leave "leave" Leave - + chat_list_leave_chat_popup_title leave the conversation ? Leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? This conversation and all its messages will be deleted. Do You want to continue ? @@ -2496,98 +2496,115 @@ Only your correspondent can decrypt them. No conversation - + + info_popup_error_title + Error + + + + info_popup_chatroom_creation_failed + Chat room creation failed ! + Chat room creation failed ! + + + + loading_popup_chatroom_creation_pending_message + Chat room is being created... + Chat room is being created... + + + chat_dialog_delete_chat_title Supprimer la conversation ? Delete conversation ? - + chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." This conversation and all its messages will be deleted. - + chat_list_title "Conversations" Conversations - + menu_mark_all_as_read "mark all as read" Mark all as read - + chat_search_in_history "Rechercher une conversation" Search for a chat - + list_filter_no_result_found "Aucun résultat…" No result… - + chat_list_empty_history "Aucune conversation dans votre historique" No conversation in history - + chat_action_start_new_chat "New chat" New conversation - + chat_start_group_chat_title "Nouveau groupe" New group - + chat_action_start_group_chat "Créer" Create - - - + + + information_popup_error_title Error - + information_popup_chat_creation_failed_message "La création a échoué" Creation failed - + group_chat_error_must_have_name "Un nom doit être donné au groupe A name must be set for the group - + group_chat_error_no_participant "Please select at least one participant Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" You are not connected - + chat_creation_in_progress Creation de la conversation en cours … Chat creation pending… @@ -4060,7 +4077,7 @@ Expiration : %1 LoadingPopup - + cancel Cancel diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 315557aae..fd97c5d6d 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2086,65 +2086,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… - + chat_message_draft_sending_text Brouillon : %1 - + chat_room_delete "Delete" Supprimer - + chat_room_mute Mettre en sourdine - + chat_room_unmute "Mute" Enlever la sourdine - + chat_room_mark_as_read "Mark as read" Marquer comme lu - + chat_room_leave "leave" Quitter la conversation - + chat_list_leave_chat_popup_title leave the conversation ? Quitter la conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ? - + chat_list_delete_chat_popup_title Delete the conversation ? Supprimer la conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ? @@ -2496,98 +2496,115 @@ en bout. Seul votre correspondant peut les déchiffrer. Aucune conversation - + + info_popup_error_title + Erreur + + + + info_popup_chatroom_creation_failed + Chat room creation failed ! + La création de la conversation a échoué ! + + + + loading_popup_chatroom_creation_pending_message + Chat room is being created... + Création de la conversation en cours... + + + chat_dialog_delete_chat_title Supprimer la conversation ? Supprimer la conversation ? - + chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." La conversation et tous ses messages seront supprimés. - + chat_list_title "Conversations" Conversations - + menu_mark_all_as_read "mark all as read" Tout marquer comme lu - + chat_search_in_history "Rechercher une conversation" Rechercher une conversation - + list_filter_no_result_found "Aucun résultat…" Aucun résultat… - + chat_list_empty_history "Aucune conversation dans votre historique" Aucune conversation dans votre historique - + chat_action_start_new_chat "New chat" Nouvelle conversation - + chat_start_group_chat_title "Nouveau groupe" Nouveau groupe - + chat_action_start_group_chat "Créer" Créer - - - + + + information_popup_error_title Erreur - + information_popup_chat_creation_failed_message "La création a échoué" La création a échoué - + group_chat_error_must_have_name "Un nom doit être donné au groupe Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant Veuillez sélectionner au moins un participant - + group_call_error_not_connected "Vous n'etes pas connecté" Vous n'êtes pas connecté - + chat_creation_in_progress Creation de la conversation en cours … Création de la conversation en cours… @@ -4060,7 +4077,7 @@ Expiration : %1 LoadingPopup - + cancel Annuler diff --git a/Linphone/view/Control/Button/IconButton.qml b/Linphone/view/Control/Button/IconButton.qml index 040e20c80..fce059491 100644 --- a/Linphone/view/Control/Button/IconButton.qml +++ b/Linphone/view/Control/Button/IconButton.qml @@ -23,7 +23,7 @@ Button { : mainItem.hovered || mainItem.hasNavigationFocus ? mainItem.hoveredColor : mainItem.color - border.color: mainItem.hovered ? mainItem.focusedBorderColor : mainItem.borderColor + border.color: mainItem.borderColor } contentItem: EffectImage { diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index 49d905162..7037c1987 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -18,12 +18,19 @@ ListView { property real busyIndicatorSize: Utils.getSizeWithScreenRatio(60) property ChatGui currentChatGui: model.getAt(currentIndex) || null + onCurrentIndexChanged: console.log("current index changed", currentIndex) onCurrentChatGuiChanged: positionViewAtIndex(currentIndex, ListView.Center) property ChatGui chatToSelect: null property ChatGui chatToSelectLater: null onChatToSelectChanged: { - selectChat(chatToSelect, true) - chatToSelect = null + if (chatToSelect) { + console.log("chat to select changed, select", (chatToSelect ? chatToSelect.core.title : "NULL")) + // first clear the chatToSelect property in case we need to + // force adding the chat to the list and the layout changes + var toselect = chatToSelect + chatToSelect = null + selectChat(toselect, true) + } } onChatClicked: (chat) => {selectChat(chat)} @@ -76,11 +83,11 @@ ListView { var index = chatProxy.findChatIndex(chatGui) // force adding chat to list if not in list for now if (index === -1 && force === true && chatGui) { - chatProxy.addChatInList(chatGui) - var index = chatProxy.findChatIndex(chatGui) + if (chatProxy.addChatInList(chatGui)) { + var index = chatProxy.findChatIndex(chatGui) + } } mainItem.currentIndex = index - } Component.onCompleted: cacheBuffer = Math.max(contentHeight, 0) //contentHeight>0 ? contentHeight : 0// cache all items diff --git a/Linphone/view/Control/Popup/Loading/LoadingPopup.qml b/Linphone/view/Control/Popup/Loading/LoadingPopup.qml index ded7f22e1..560310aa8 100644 --- a/Linphone/view/Control/Popup/Loading/LoadingPopup.qml +++ b/Linphone/view/Control/Popup/Loading/LoadingPopup.qml @@ -23,8 +23,10 @@ Popup { // height: childrenRect.height BusyIndicator{ Layout.alignment: Qt.AlignHCenter - Layout.preferredWidth: Utils.getSizeWithScreenRatio(33) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(33) + width: Utils.getSizeWithScreenRatio(33) + height: width + Layout.preferredWidth: width + Layout.preferredHeight: width } Text { id: contentText diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index 5d714d41d..638efce5e 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -30,8 +30,32 @@ AbstractMainPage { onRemoteAddressChanged: console.log("ChatPage : remote address changed :", remoteAddress) property var remoteChatObj: UtilsCpp.getChatForAddress(remoteAddress) property var remoteChat: remoteChatObj ? remoteChatObj.value : null + + signal openChatRequested(ChatGui chat) + + Connections { + enabled: remoteChat !== null + target: remoteChat ? remoteChat.core : null + function onChatRoomStateChanged() { + if (remoteChat.core.state === LinphoneEnums.ChatRoomState.CreationPending) { + //: Chat room is being created... + mainWindow.showLoadingPopup(qsTr("loading_popup_chatroom_creation_pending_message")) + } else { + mainWindow.closeLoadingPopup() + if (remoteChat.core.state === LinphoneEnums.ChatRoomState.CreationFailed) { + UtilsCpp.showInformationPopup(qsTr("info_popup_error_title"), + //: Chat room creation failed ! + qsTr("info_popup_chatroom_creation_failed"), false) + } else if (remoteChat.core.state === LinphoneEnums.ChatRoomState.Created) { + openChatRequested(remoteChat) + } + } + } + } onRemoteChatChanged: { - if (remoteChat) selectedChatGui = remoteChat + if (remoteChat && remoteChat.core.state === LinphoneEnums.ChatRoomState.Created) { + openChatRequested(remoteChat) + } } onSelectedChatGuiChanged: { @@ -64,7 +88,6 @@ AbstractMainPage { && listStackView.currentItem.objectName != "newChatItem") listStackView.push(newChatItem) } - signal openChatRequested(ChatGui chat) Dialog { id: deleteChatPopup @@ -198,9 +221,6 @@ AbstractMainPage { Connections { target: mainItem - function onRemoteChatChanged() { - if (mainItem.remoteChat) chatListView.chatToSelect = mainItem.remoteChat - } function onOpenChatRequested(chat) { chatListView.chatToSelect = chat } From cca8db90558041992d75633c0f5083120386b54a Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Thu, 27 Nov 2025 11:32:42 +0100 Subject: [PATCH 62/72] only switch automatically to main page when account added and app is being restarted (fix #LINQT-2224) --- Linphone/core/App.cpp | 37 ++++++++++++++++----------- Linphone/core/App.hpp | 1 + Linphone/data/languages/de.ts | 48 +++++++++++++++++------------------ Linphone/data/languages/en.ts | 48 +++++++++++++++++------------------ Linphone/data/languages/fr.ts | 48 +++++++++++++++++------------------ 5 files changed, 95 insertions(+), 87 deletions(-) diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index bed9b4079..41874cf77 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -405,8 +405,12 @@ void App::setSelf(QSharedPointer(me)) { mustBeInMainThread(log().arg(Q_FUNC_INFO)); // There is an account added by a remote provisioning, force switching to main page // because the account may not be connected already - QMetaObject::invokeMethod(mMainWindow, "openMainPage", Qt::DirectConnection, - Q_ARG(QVariant, accountConnected)); + // if (accountConnected) + if (mPossiblyLookForAddedAccount) { + QMetaObject::invokeMethod(mMainWindow, "openMainPage", Qt::DirectConnection, + Q_ARG(QVariant, accountConnected)); + } + mPossiblyLookForAddedAccount = false; }); } }); @@ -682,19 +686,22 @@ void App::initCore() { } else lInfo() << log().arg("Stay minimized"); firstOpen = false; lInfo() << log().arg("Checking remote provisioning"); - if (CoreModel::getInstance()->mConfigStatus == linphone::ConfiguringState::Failed && - mIsRestarting) { - QMetaObject::invokeMethod(thread(), [this]() { - auto message = CoreModel::getInstance()->mConfigMessage; - //: not reachable - if (message.isEmpty()) message = tr("configuration_error_detail"); - mustBeInMainThread(log().arg(Q_FUNC_INFO)); - //: Error - Utils::showInformationPopup( - tr("info_popup_error_title"), - //: Remote provisioning failed : %1 - tr("info_popup_configuration_failed_message").arg(message), false); - }); + if (mIsRestarting) { + if (CoreModel::getInstance()->mConfigStatus == linphone::ConfiguringState::Failed) { + QMetaObject::invokeMethod(thread(), [this]() { + auto message = CoreModel::getInstance()->mConfigMessage; + //: not reachable + if (message.isEmpty()) message = tr("configuration_error_detail"); + mustBeInMainThread(log().arg(Q_FUNC_INFO)); + //: Error + Utils::showInformationPopup( + tr("info_popup_error_title"), + //: Remote provisioning failed : %1 + tr("info_popup_configuration_failed_message").arg(message), false); + }); + } else { + mPossiblyLookForAddedAccount = true; + } } checkForUpdate(); mIsRestarting = false; diff --git a/Linphone/core/App.hpp b/Linphone/core/App.hpp index fbf5d3725..7d3dc378f 100644 --- a/Linphone/core/App.hpp +++ b/Linphone/core/App.hpp @@ -224,6 +224,7 @@ private: bool mAutoStart = false; bool mCoreStarted = false; bool mIsRestarting = false; + bool mPossiblyLookForAddedAccount = false; QLocale mLocale = QLocale::system(); DefaultTranslatorCore *mTranslatorCore = nullptr; DefaultTranslatorCore *mDefaultTranslatorCore = nullptr; diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 80560c786..a1e94b59b 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -648,134 +648,134 @@ - - + + info_popup_error_title Error Fehler - + info_popup_configuration_failed_message Remote provisioning failed : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. - + info_popup_new_version_download_label - + info_popup_new_version_available_title New version available ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 - + info_popup_version_up_to_date_title - + info_popup_version_up_to_date_message Your version is up to date - + configuration_error_detail not reachable - + application_description "A free and open source SIP video-phone." Ein kostenloses Open-Source SIP Video-Telefon. - + command_line_arg_order "Send an order to the application towards a command line" Kommandozeilen-Befehl an die Anwendung schicken - + command_line_option_show_help Zeige Hilfe - + command_line_option_show_app_version App-Version anzeigen - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, Pfad oder Datei - + command_line_option_minimized - + command_line_option_log_to_stdout Debug-Informationen auf der Standardausgabe ausgeben - + command_line_option_print_app_logs_only "Print only logs from the application" Nur Anwendungs-Logs ausgeben - + hide_action "Cacher" "Afficher" Ausblenden - + show_action Zeigen - + quit_action "Quitter" Beenden - + check_for_update Check for update - + mark_all_read_action diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 3b5f7b2d2..7e54f7863 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -653,134 +653,134 @@ - - + + info_popup_error_title Error Error - + info_popup_configuration_failed_message Remote provisioning failed : %1 Remote provisioning failed : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. An error occured while trying to check update. Please try again later or contact support team. - + info_popup_new_version_download_label Download it ! - + info_popup_new_version_available_title New version available ! New version available ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 A new version of Linphone (%1) is available at %1 - + info_popup_version_up_to_date_title Up to date - + info_popup_version_up_to_date_message Your version is up to date Up to date Your version is up to date - + configuration_error_detail not reachable not reachable - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Show app version - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimize - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Hide - + show_action Show - + quit_action "Quitter" Quit - + check_for_update Check for update Check for update - + mark_all_read_action Marquer tout comme lu diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index fd97c5d6d..d64f169a3 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -653,134 +653,134 @@ - - + + info_popup_error_title Error Erreur - + info_popup_configuration_failed_message Remote provisioning failed : %1 La configuration distante a échoué : %1 - + info_popup_error_checking_update An error occured while trying to check update. Please try again later or contact support team. Une erreur est survenue lors de la recherche de mise à jour. Merci de réessayer plus tard ou de contacter l'équipe de support. - + info_popup_new_version_download_label Téléchargez-là ! - + info_popup_new_version_available_title New version available ! Nouvelle version disponible ! - + info_popup_new_version_available_message A new version of Linphone (%1) is available. %2 Une nouvelle version de Linphone (%1) est disponible. %2 - + info_popup_version_up_to_date_title À jour - + info_popup_version_up_to_date_message Your version is up to date Votre version est à jour - + configuration_error_detail not reachable indisponible - + application_description "A free and open source SIP video-phone." A free and open source SIP video-phone. - + command_line_arg_order "Send an order to the application towards a command line" Send an order to the application towards a command line - + command_line_option_show_help Show this help - + command_line_option_show_app_version Afficher la version de l'application - + command_line_option_config_to_fetch "Specify the linphone configuration file to be fetched. It will be merged with the current configuration." Specify the linphone configuration file to be fetched. It will be merged with the current configuration. - + command_line_option_config_to_fetch_arg "URL, path or file" URL, path or file - + command_line_option_minimized Minimiser - + command_line_option_log_to_stdout Log to stdout some debug information while running - + command_line_option_print_app_logs_only "Print only logs from the application" Print only logs from the application - + hide_action "Cacher" "Afficher" Cacher - + show_action Afficher - + quit_action "Quitter" Quitter - + check_for_update Check for update Rechercher une mise à jour - + mark_all_read_action Marquer tout comme lu From f405754e247d5fdc15676bcb360b364e26410abf Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Fri, 28 Nov 2025 12:12:00 +0100 Subject: [PATCH 63/72] FIXES: auto switch to away/online status when app is inactive/active #LINQT-2172 fix loading ui for chats/meetings lists use uri only for account uris to remove the < and > --- Linphone/core/App.cpp | 40 ++++++++++++- Linphone/core/App.hpp | 4 +- Linphone/core/call/CallCore.cpp | 2 +- Linphone/data/languages/de.ts | 56 +++++++++---------- Linphone/data/languages/en.ts | 56 +++++++++---------- Linphone/data/languages/fr.ts | 56 +++++++++---------- Linphone/model/account/AccountModel.cpp | 10 ++-- Linphone/tool/Utils.cpp | 12 ++-- Linphone/tool/Utils.hpp | 2 +- .../Container/Call/CallHistoryLayout.qml | 2 +- .../Display/Call/CallHistoryListView.qml | 2 +- .../Chat/ChatMessageInvitationBubble.qml | 2 +- .../Display/Meeting/MeetingListView.qml | 7 +-- Linphone/view/Page/Layout/Main/MainLayout.qml | 2 +- Linphone/view/Page/Main/Chat/ChatPage.qml | 3 +- .../view/Page/Main/Meeting/MeetingPage.qml | 2 +- Linphone/view/Page/Window/AbstractWindow.qml | 4 +- .../view/Page/Window/Call/CallsWindow.qml | 8 +-- 18 files changed, 154 insertions(+), 116 deletions(-) diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index 41874cf77..ab289a4ee 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -335,7 +335,7 @@ void App::setSelf(QSharedPointer(me)) { auto callCore = CallCore::create(call); mCoreModelConnection->invokeToCore([this, callCore] { auto callGui = new CallGui(callCore); - auto win = getCallsWindow(QVariant::fromValue(callGui)); + auto win = getOrCreateCallsWindow(QVariant::fromValue(callGui)); Utils::smartShowWindow(win); auto mainwin = getMainWindow(); QMetaObject::invokeMethod(mainwin, "callCreated"); @@ -1068,7 +1068,39 @@ bool App::notify(QObject *receiver, QEvent *event) { return done; } -QQuickWindow *App::getCallsWindow(QVariant callGui) { +void App::handleAppActivity() { + auto handle = [this](AccountGui *currentAcount) { + auto accountCore = currentAcount->mCore; + Q_ASSERT(accountCore); + auto accountPresence = accountCore->getPresence(); + if ((mMainWindow && mMainWindow->isActive() || (mCallsWindow && mCallsWindow->isActive())) && + accountPresence == LinphoneEnums::Presence::Away) + accountCore->lSetPresence(LinphoneEnums::Presence::Online); + if (((!mMainWindow || !mMainWindow->isActive()) && (!mCallsWindow || !mCallsWindow->isActive())) && + accountPresence == LinphoneEnums::Presence::Online) + accountCore->lSetPresence(LinphoneEnums::Presence::Away); + }; + if (mAccountList) { + if (mAccountList->getDefaultAccount()) { + handle(mAccountList->getDefaultAccount()); + } else { + connect( + mAccountList.get(), &AccountList::defaultAccountChanged, this, + [this, handle] { + if (mAccountList->getDefaultAccount()) { + handle(mAccountList->getDefaultAccount()); + } + }, + Qt::SingleShotConnection); + } + } +} + +QQuickWindow *App::getCallsWindow() { + return mCallsWindow; +} + +QQuickWindow *App::getOrCreateCallsWindow(QVariant callGui) { mustBeInMainThread(getClassName()); if (!mCallsWindow) { const QUrl callUrl("qrc:/qt/qml/Linphone/view/Page/Window/Call/CallsWindow.qml"); @@ -1103,6 +1135,7 @@ QQuickWindow *App::getCallsWindow(QVariant callGui) { } // window->setParent(mMainWindow); mCallsWindow = window; + connect(mCallsWindow, &QQuickWindow::activeChanged, this, &App::handleAppActivity); } if (!callGui.isNull() && callGui.isValid()) mCallsWindow->setProperty("call", callGui); return mCallsWindow; @@ -1125,8 +1158,11 @@ QQuickWindow *App::getMainWindow() const { } void App::setMainWindow(QQuickWindow *data) { + if (mMainWindow) disconnect(mMainWindow, &QQuickWindow::activeChanged, this, nullptr); if (mMainWindow != data) { mMainWindow = data; + connect(mMainWindow, &QQuickWindow::activeChanged, this, &App::handleAppActivity); + handleAppActivity(); emit mainWindowChanged(); } } diff --git a/Linphone/core/App.hpp b/Linphone/core/App.hpp index 7d3dc378f..a18387e21 100644 --- a/Linphone/core/App.hpp +++ b/Linphone/core/App.hpp @@ -139,7 +139,9 @@ public: bool getCoreStarted() const; void setCoreStarted(bool started); - QQuickWindow *getCallsWindow(QVariant callGui = QVariant()); + QQuickWindow *getCallsWindow(); + Q_INVOKABLE void handleAppActivity(); + QQuickWindow *getOrCreateCallsWindow(QVariant callGui = QVariant()); void setCallsWindowProperty(const char *id, QVariant property); void closeCallsWindow(); diff --git a/Linphone/core/call/CallCore.cpp b/Linphone/core/call/CallCore.cpp index 8a15f4800..0ba88c459 100644 --- a/Linphone/core/call/CallCore.cpp +++ b/Linphone/core/call/CallCore.cpp @@ -213,7 +213,7 @@ void CallCore::setSelf(QSharedPointer me) { Utils::showInformationPopup(tr("call_record_end_message"), //: "L'appel a été enregistré dans le fichier : %1" tr("call_record_saved_in_file_message").arg(recordFile), true, - App::getInstance()->getCallsWindow()); + App::getInstance()->getOrCreateCallsWindow()); } }); }); diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index a1e94b59b..03f5685f0 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -25,13 +25,13 @@ AbstractWindow - + contact_dialog_pick_phone_number_or_sip_address_title "Choisissez un numéro ou adresse SIP" Telefonnummer oder SIP-Adresse wählen - + fps_counter %1 FPS @@ -752,30 +752,30 @@ Nur Anwendungs-Logs ausgeben - + hide_action "Cacher" "Afficher" Ausblenden - + show_action Zeigen - + quit_action "Quitter" Beenden - + check_for_update Check for update - + mark_all_read_action @@ -2529,74 +2529,74 @@ Error - + chat_dialog_delete_chat_title Supprimer la conversation ? - + chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." - + chat_list_title "Conversations" Konversationen - + menu_mark_all_as_read "mark all as read" - + chat_search_in_history "Rechercher une conversation" - + list_filter_no_result_found "Aucun résultat…" Kein Ergebnis… - + chat_list_empty_history "Aucune conversation dans votre historique" - + chat_action_start_new_chat "New chat" - + chat_start_group_chat_title "Nouveau groupe" - + chat_action_start_group_chat "Créer" Erstellen - - - + + + information_popup_error_title Fehler - + information_popup_chat_creation_failed_message "La création a échoué" @@ -2607,25 +2607,25 @@ Error Der Codec konnte nicht installiert werden. - + group_chat_error_must_have_name "Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" Sie sind nicht verbunden - + chat_creation_in_progress Creation de la conversation en cours … @@ -4606,19 +4606,19 @@ Error MeetingListView - + meeting_info_cancelled "Réunion annulée" Besprechung abgesagt - + meetings_list_no_meeting_for_today "Aucune réunion aujourd'hui" Heute keine Besprechungen - + meeting_info_delete "Supprimer la réunion" Besprechung löschen diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 7e54f7863..53ab70c58 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -25,13 +25,13 @@ AbstractWindow - + contact_dialog_pick_phone_number_or_sip_address_title "Choisissez un numéro ou adresse SIP" Choose a SIP number or address - + fps_counter %1 FPS @@ -757,30 +757,30 @@ Print only logs from the application - + hide_action "Cacher" "Afficher" Hide - + show_action Show - + quit_action "Quitter" Quit - + check_for_update Check for update Check for update - + mark_all_read_action Marquer tout comme lu @@ -2513,98 +2513,98 @@ Only your correspondent can decrypt them. Chat room is being created... - + chat_dialog_delete_chat_title Supprimer la conversation ? Delete conversation ? - + chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." This conversation and all its messages will be deleted. - + chat_list_title "Conversations" Conversations - + menu_mark_all_as_read "mark all as read" Mark all as read - + chat_search_in_history "Rechercher une conversation" Search for a chat - + list_filter_no_result_found "Aucun résultat…" No result… - + chat_list_empty_history "Aucune conversation dans votre historique" No conversation in history - + chat_action_start_new_chat "New chat" New conversation - + chat_start_group_chat_title "Nouveau groupe" New group - + chat_action_start_group_chat "Créer" Create - - - + + + information_popup_error_title Error - + information_popup_chat_creation_failed_message "La création a échoué" Creation failed - + group_chat_error_must_have_name "Un nom doit être donné au groupe A name must be set for the group - + group_chat_error_no_participant "Please select at least one participant Please select at least one participant - + group_call_error_not_connected "Vous n'etes pas connecté" You are not connected - + chat_creation_in_progress Creation de la conversation en cours … Chat creation pending… @@ -4532,19 +4532,19 @@ Expiration : %1 MeetingListView - + meeting_info_cancelled "Réunion annulée" Meeting canceled - + meetings_list_no_meeting_for_today "Aucune réunion aujourd'hui" No meeting for today - + meeting_info_delete "Supprimer la réunion" Delete meeting diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index d64f169a3..c09a8e86b 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -25,13 +25,13 @@ AbstractWindow - + contact_dialog_pick_phone_number_or_sip_address_title "Choisissez un numéro ou adresse SIP" Choisissez un numéro ou adresse SIP - + fps_counter %1 FPS @@ -757,30 +757,30 @@ Print only logs from the application - + hide_action "Cacher" "Afficher" Cacher - + show_action Afficher - + quit_action "Quitter" Quitter - + check_for_update Check for update Rechercher une mise à jour - + mark_all_read_action Marquer tout comme lu @@ -2513,98 +2513,98 @@ en bout. Seul votre correspondant peut les déchiffrer. Création de la conversation en cours... - + chat_dialog_delete_chat_title Supprimer la conversation ? Supprimer la conversation ? - + chat_dialog_delete_chat_message "La conversation et tous ses messages seront supprimés." La conversation et tous ses messages seront supprimés. - + chat_list_title "Conversations" Conversations - + menu_mark_all_as_read "mark all as read" Tout marquer comme lu - + chat_search_in_history "Rechercher une conversation" Rechercher une conversation - + list_filter_no_result_found "Aucun résultat…" Aucun résultat… - + chat_list_empty_history "Aucune conversation dans votre historique" Aucune conversation dans votre historique - + chat_action_start_new_chat "New chat" Nouvelle conversation - + chat_start_group_chat_title "Nouveau groupe" Nouveau groupe - + chat_action_start_group_chat "Créer" Créer - - - + + + information_popup_error_title Erreur - + information_popup_chat_creation_failed_message "La création a échoué" La création a échoué - + group_chat_error_must_have_name "Un nom doit être donné au groupe Un nom doit être donné au groupe - + group_chat_error_no_participant "Please select at least one participant Veuillez sélectionner au moins un participant - + group_call_error_not_connected "Vous n'etes pas connecté" Vous n'êtes pas connecté - + chat_creation_in_progress Creation de la conversation en cours … Création de la conversation en cours… @@ -4532,19 +4532,19 @@ Expiration : %1 MeetingListView - + meeting_info_cancelled "Réunion annulée" Réunion annulée - + meetings_list_no_meeting_for_today "Aucune réunion aujourd'hui" Aucune réunion aujourd'hui - + meeting_info_delete "Supprimer la réunion" Supprimer la réunion diff --git a/Linphone/model/account/AccountModel.cpp b/Linphone/model/account/AccountModel.cpp index 98b8da4bf..97715ed58 100644 --- a/Linphone/model/account/AccountModel.cpp +++ b/Linphone/model/account/AccountModel.cpp @@ -274,7 +274,7 @@ void AccountModel::setTransport(linphone::TransportType value, bool save) { QString AccountModel::getRegistrarUri() const { if (mMonitor->getParams()->getServerAddress()) - return Utils::coreStringToAppString(mMonitor->getParams()->getServerAddress()->asString()); + return Utils::coreStringToAppString(mMonitor->getParams()->getServerAddress()->asStringUriOnly()); else return ""; } @@ -297,7 +297,7 @@ void AccountModel::setRegistrarUri(QString value) { QString AccountModel::getOutboundProxyUri() const { auto routeAddresses = mMonitor->getParams()->getRoutesAddresses(); auto outbound = - routeAddresses.empty() ? QString() : Utils::coreStringToAppString(routeAddresses.front()->asString()); + routeAddresses.empty() ? QString() : Utils::coreStringToAppString(routeAddresses.front()->asStringUriOnly()); return outbound; } @@ -399,7 +399,7 @@ void AccountModel::setExpire(int value) { QString AccountModel::getConferenceFactoryAddress() const { auto confAddress = mMonitor->getParams()->getConferenceFactoryAddress(); - return confAddress ? Utils::coreStringToAppString(confAddress->asString()) : QString(); + return confAddress ? Utils::coreStringToAppString(confAddress->asStringUriOnly()) : QString(); } void AccountModel::setConferenceFactoryAddress(QString value) { @@ -421,7 +421,7 @@ void AccountModel::setConferenceFactoryAddress(QString value) { QString AccountModel::getAudioVideoConferenceFactoryAddress() const { auto confAddress = mMonitor->getParams()->getAudioVideoConferenceFactoryAddress(); - return confAddress ? Utils::coreStringToAppString(confAddress->asString()) : QString(); + return confAddress ? Utils::coreStringToAppString(confAddress->asStringUriOnly()) : QString(); } void AccountModel::setAudioVideoConferenceFactoryAddress(QString value) { @@ -490,7 +490,7 @@ void AccountModel::setVoicemailAddress(QString value) { QString AccountModel::getVoicemailAddress() const { auto addr = mMonitor->getParams()->getVoicemailAddress(); - return addr ? Utils::coreStringToAppString(addr->asString()) : ""; + return addr ? Utils::coreStringToAppString(addr->asStringUriOnly()) : ""; } // UserData (see hpp for explanations) diff --git a/Linphone/tool/Utils.cpp b/Linphone/tool/Utils.cpp index efbdd42c1..451c11c3a 100644 --- a/Linphone/tool/Utils.cpp +++ b/Linphone/tool/Utils.cpp @@ -209,22 +209,22 @@ void Utils::createGroupCall(QString subject, const std::list &participa // Comment on annule ? Si on ferme la fenêtre ça va finir l'appel en cours void Utils::setupConference(ConferenceInfoGui *confGui) { if (!confGui) return; - auto window = App::getInstance()->getCallsWindow(QVariant()); + auto window = App::getInstance()->getOrCreateCallsWindow(QVariant()); window->setProperty("conferenceInfo", QVariant::fromValue(confGui)); window->show(); } void Utils::openCallsWindow(CallGui *call) { if (call) { - auto window = App::getInstance()->getCallsWindow(QVariant::fromValue(call)); + auto window = App::getInstance()->getOrCreateCallsWindow(QVariant::fromValue(call)); window->show(); window->raise(); } } -QQuickWindow *Utils::getCallsWindow(CallGui *callGui) { +QQuickWindow *Utils::getOrCreateCallsWindow(CallGui *callGui) { auto app = App::getInstance(); - auto window = app->getCallsWindow(QVariant::fromValue(callGui)); + auto window = app->getOrCreateCallsWindow(QVariant::fromValue(callGui)); return window; } @@ -1604,7 +1604,7 @@ VariantObject *Utils::getCurrentCallChat(CallGui *call) { showInformationPopup(tr("information_popup_error_title"), //: Failed to create 1-1 conversation with %1 ! tr("information_popup_chatroom_creation_error_message"), false, - getCallsWindow()); + getOrCreateCallsWindow()); }); return QVariant(); } @@ -1638,7 +1638,7 @@ VariantObject *Utils::getChatForAddress(QString address) { data->mConnection->invokeToCore([] { showInformationPopup(tr("information_popup_error_title"), tr("information_popup_chatroom_creation_error_message"), false, - getCallsWindow()); + getOrCreateCallsWindow()); }); return QVariant(); } diff --git a/Linphone/tool/Utils.hpp b/Linphone/tool/Utils.hpp index 23839f879..0e74b556e 100644 --- a/Linphone/tool/Utils.hpp +++ b/Linphone/tool/Utils.hpp @@ -84,7 +84,7 @@ public: const QString &description, bool isSuccess = true, QQuickWindow *window = nullptr); - Q_INVOKABLE static QQuickWindow *getCallsWindow(CallGui *callGui = nullptr); + Q_INVOKABLE static QQuickWindow *getOrCreateCallsWindow(CallGui *callGui = nullptr); Q_INVOKABLE static void closeCallsWindow(); Q_INVOKABLE static VariantObject *haveAccount(); Q_INVOKABLE static void smartShowWindow(QQuickWindow *window); diff --git a/Linphone/view/Control/Container/Call/CallHistoryLayout.qml b/Linphone/view/Control/Container/Call/CallHistoryLayout.qml index e177ef7e4..b2f849033 100644 --- a/Linphone/view/Control/Container/Call/CallHistoryLayout.qml +++ b/Linphone/view/Control/Container/Call/CallHistoryLayout.qml @@ -113,7 +113,7 @@ ColumnLayout { style: ButtonStyle.grey onClicked: { if (mainItem.conferenceInfo) { - var callsWindow = UtilsCpp.getCallsWindow() + var callsWindow = UtilsCpp.getOrCreateCallsWindow() callsWindow.setupConference(mainItem.conferenceInfo) UtilsCpp.smartShowWindow(callsWindow) } diff --git a/Linphone/view/Control/Display/Call/CallHistoryListView.qml b/Linphone/view/Control/Display/Call/CallHistoryListView.qml index f5db09fc4..167676433 100644 --- a/Linphone/view/Control/Display/Call/CallHistoryListView.qml +++ b/Linphone/view/Control/Display/Call/CallHistoryListView.qml @@ -205,7 +205,7 @@ ListView { Accessible.name: qsTr("call_name_accessible_button").arg(historyAvatar.displayNameVal) onClicked: { if (modelData.core.isConference) { - var callsWindow = UtilsCpp.getCallsWindow() + var callsWindow = UtilsCpp.getOrCreateCallsWindow() callsWindow.setupConference( modelData.core.conferenceInfo) UtilsCpp.smartShowWindow(callsWindow) diff --git a/Linphone/view/Control/Display/Chat/ChatMessageInvitationBubble.qml b/Linphone/view/Control/Display/Chat/ChatMessageInvitationBubble.qml index fa8082937..0c12f4813 100644 --- a/Linphone/view/Control/Display/Chat/ChatMessageInvitationBubble.qml +++ b/Linphone/view/Control/Display/Chat/ChatMessageInvitationBubble.qml @@ -286,7 +286,7 @@ ColumnLayout { text: qsTr("ics_bubble_join") visible: !SettingsCpp.disableMeetingsFeature && conferenceInfo.state != LinphoneEnums.ConferenceInfoState.Cancelled onClicked: { - var callsWindow = UtilsCpp.getCallsWindow() + var callsWindow = UtilsCpp.getOrCreateCallsWindow() callsWindow.setupConference(mainItem.conferenceInfoGui) UtilsCpp.smartShowWindow(callsWindow) } diff --git a/Linphone/view/Control/Display/Meeting/MeetingListView.qml b/Linphone/view/Control/Display/Meeting/MeetingListView.qml index f22a51023..4983b0567 100644 --- a/Linphone/view/Control/Display/Meeting/MeetingListView.qml +++ b/Linphone/view/Control/Display/Meeting/MeetingListView.qml @@ -102,18 +102,15 @@ ListView { initialDisplayItems: Math.max(20, Math.round(2 * mainItem.height / Utils.getSizeWithScreenRatio(63))) displayItemsStep: initialDisplayItems/2 Component.onCompleted: { - mainItem.loading = !confInfoProxy.accountConnected + mainItem.loading = false } onModelAboutToBeReset: { mainItem.loading = true } onModelReset: { - mainItem.loading = !confInfoProxy.accountConnected + mainItem.loading = false selectData(getCurrentDateConfInfo()) } - onAccountConnectedChanged: (connected) => { - mainItem.loading = !connected - } function selectData(confInfoGui){ mainItem.currentIndex = loadUntil(confInfoGui) } diff --git a/Linphone/view/Page/Layout/Main/MainLayout.qml b/Linphone/view/Page/Layout/Main/MainLayout.qml index 6f94bb336..1d000de46 100644 --- a/Linphone/view/Page/Layout/Main/MainLayout.qml +++ b/Linphone/view/Page/Layout/Main/MainLayout.qml @@ -113,7 +113,7 @@ Item { style: ButtonStyle.toast text: currentCallNotif.currentCall ? currentCallNotif.currentCall.core.conference ? ("Réunion en cours : ") + currentCallNotif.currentCall.core.conference.core.subject : (("Appel en cours : ") + currentCallNotif.remoteName) : "appel en cours" onClicked: { - var callsWindow = UtilsCpp.getCallsWindow(currentCallNotif.currentCall); + var callsWindow = UtilsCpp.getOrCreateCallsWindow(currentCallNotif.currentCall); UtilsCpp.smartShowWindow(callsWindow); } } diff --git a/Linphone/view/Page/Main/Chat/ChatPage.qml b/Linphone/view/Page/Main/Chat/ChatPage.qml index 638efce5e..19b0bd7ad 100644 --- a/Linphone/view/Page/Main/Chat/ChatPage.qml +++ b/Linphone/view/Page/Main/Chat/ChatPage.qml @@ -81,7 +81,8 @@ AbstractMainPage { showDefaultItem: listStackView.currentItem && listStackView.currentItem.objectName == "chatListItem" - && listStackView.currentItem.listView.count === 0 || false + && listStackView.currentItem.listView.count === 0 + && !listStackView.currentItem.listView.loading || false function goToNewChat() { if (listStackView.currentItem diff --git a/Linphone/view/Page/Main/Meeting/MeetingPage.qml b/Linphone/view/Page/Main/Meeting/MeetingPage.qml index 99a87e598..f0dac9a7f 100644 --- a/Linphone/view/Page/Main/Meeting/MeetingPage.qml +++ b/Linphone/view/Page/Main/Meeting/MeetingPage.qml @@ -910,7 +910,7 @@ AbstractMainPage { KeyNavigation.right: leftPanelStackView.currentItem onClicked: { console.log(mainItem.selectedConference.core.uri) - var callsWindow = UtilsCpp.getCallsWindow() + var callsWindow = UtilsCpp.getOrCreateCallsWindow() callsWindow.setupConference(mainItem.selectedConference) UtilsCpp.smartShowWindow(callsWindow) } diff --git a/Linphone/view/Page/Window/AbstractWindow.qml b/Linphone/view/Page/Window/AbstractWindow.qml index d680754d8..2b21920fe 100644 --- a/Linphone/view/Page/Window/AbstractWindow.qml +++ b/Linphone/view/Page/Window/AbstractWindow.qml @@ -16,7 +16,9 @@ ApplicationWindow { width: Math.min(Utils.getSizeWithScreenRatio(1512), Screen.desktopAvailableWidth) height: Math.min(Utils.getSizeWithScreenRatio(982), Screen.desktopAvailableHeight) - onActiveChanged: if (active) UtilsCpp.setLastActiveWindow(this) + onActiveChanged: { + if (active) UtilsCpp.setLastActiveWindow(this) + } Component.onDestruction: if (UtilsCpp.getLastActiveWindow() === this) UtilsCpp.setLastActiveWindow(null) property bool isFullscreen: visibility == Window.FullScreen diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index a60a9ea21..0458d3a16 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -65,7 +65,7 @@ AbstractWindow { onTransferStateChanged: { console.log("Transfer state:", transferState) if (mainWindow.transferState === LinphoneEnums.CallState.OutgoingInit) { - var callsWin = UtilsCpp.getCallsWindow() + var callsWin = UtilsCpp.getOrCreateCallsWindow() if (!callsWin) return //: "Transfert en cours, veuillez patienter" @@ -74,7 +74,7 @@ AbstractWindow { || mainWindow.transferState === LinphoneEnums.CallState.End || mainWindow.transferState === LinphoneEnums.CallState.Released || mainWindow.transferState === LinphoneEnums.CallState.Connected) { - var callsWin = UtilsCpp.getCallsWindow() + var callsWin = UtilsCpp.getOrCreateCallsWindow() callsWin.closeLoadingPopup() if (transferState === LinphoneEnums.CallState.Error) UtilsCpp.showInformationPopup( @@ -786,7 +786,7 @@ AbstractWindow { searchBarBorderColor: DefaultStyle.grey_200 searchBarRightMaring: 0 onContactClicked: contact => { - var callsWin = UtilsCpp.getCallsWindow() + var callsWin = UtilsCpp.getOrCreateCallsWindow() if (contact) //: "Confirmer le transfert" callsWin.showConfirmationLambdaPopup(qsTr("call_transfer_confirm_dialog_tittle"), @@ -799,7 +799,7 @@ AbstractWindow { }) } onTransferCallToAnotherRequested: dest => { - var callsWin = UtilsCpp.getCallsWindow() + var callsWin = UtilsCpp.getOrCreateCallsWindow() console.log("transfer to",dest) callsWin.showConfirmationLambdaPopup(qsTr("call_transfer_confirm_dialog_tittle"), qsTr("call_transfer_confirm_dialog_message").arg(mainWindow.call.core.remoteName).arg(dest.core.remoteName),"", From dfc88b7657ebee7315df9b618426403b48fcde5d Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 1 Dec 2025 10:35:03 +0100 Subject: [PATCH 64/72] Only create a chatroom for the current call when the chat button is pressed (fix #LINQT-2228) --- Linphone/view/Page/Window/Call/CallsWindow.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index 0458d3a16..adbaf2f50 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -23,7 +23,7 @@ AbstractWindow { property bool isConference: call ? call.core.isConference : false // Chat related to call - property var chatObj: UtilsCpp.getCurrentCallChat(mainWindow.call) + property var chatObj property ChatGui chat: chatObj ? chatObj.value : null property int conferenceLayout: call && call.core.conferenceVideoLayout || 0 @@ -1454,8 +1454,7 @@ AbstractWindow { Layout.preferredHeight: Utils.getSizeWithScreenRatio(55) icon.width: Utils.getSizeWithScreenRatio(32) icon.height: Utils.getSizeWithScreenRatio(32) - onClicked: mainWindow.call.core.lSetLocalVideoEnabled( - !mainWindow.call.core.localVideoEnabled) + onClicked: mainWindow.call.core.lSetLocalVideoEnabled(!mainWindow.call.core.localVideoEnabled) } // Audio microphone button @@ -1522,6 +1521,7 @@ AbstractWindow { onToggled: { if (checked) { rightPanel.visible = true + mainWindow.chatObj = UtilsCpp.getCurrentCallChat(mainWindow.call) rightPanel.replace(chatPanel) } else { rightPanel.visible = false From d39a84ca4eba1e1f90f8ab51d495af2899573054 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 1 Dec 2025 10:35:22 +0100 Subject: [PATCH 65/72] update SDK to 5.4.65 --- external/linphone-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/linphone-sdk b/external/linphone-sdk index 3f087f9df..5aa85ab80 160000 --- a/external/linphone-sdk +++ b/external/linphone-sdk @@ -1 +1 @@ -Subproject commit 3f087f9dfb1f3279a9358d48a6e23efcd840549c +Subproject commit 5aa85ab806b16b3d664d4e6288e138e272697b6f From b2ae9213a286d8f888f6dee41f8a1a3452a4f388 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 1 Dec 2025 17:00:43 +0100 Subject: [PATCH 66/72] force enableAudio/Video to false when creating chatroom params to avoid sdk warning --- Linphone/model/tool/ToolModel.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Linphone/model/tool/ToolModel.cpp b/Linphone/model/tool/ToolModel.cpp index f9363aca8..9e654721a 100644 --- a/Linphone/model/tool/ToolModel.cpp +++ b/Linphone/model/tool/ToolModel.cpp @@ -630,6 +630,8 @@ ToolModel::getChatRoomParams(std::shared_ptr call, std::shared_p //: Dummy subject params->setSubject("Dummy subject"); params->setAccount(account); + params->enableAudio(false); + params->enableVideo(false); auto chatParams = params->getChatParams(); if (!chatParams) { From c8428d6ade2f13b7ceeff5f4b9b97447e16824b4 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Tue, 2 Dec 2025 11:31:18 +0100 Subject: [PATCH 67/72] fix automatic presence when app focus changes #LINQT-2172 --- Linphone/core/App.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index ab289a4ee..2460aede5 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -1069,9 +1069,8 @@ bool App::notify(QObject *receiver, QEvent *event) { } void App::handleAppActivity() { - auto handle = [this](AccountGui *currentAcount) { - auto accountCore = currentAcount->mCore; - Q_ASSERT(accountCore); + auto handle = [this](QSharedPointer accountCore) { + if (!accountCore) return; auto accountPresence = accountCore->getPresence(); if ((mMainWindow && mMainWindow->isActive() || (mCallsWindow && mCallsWindow->isActive())) && accountPresence == LinphoneEnums::Presence::Away) @@ -1081,18 +1080,18 @@ void App::handleAppActivity() { accountCore->lSetPresence(LinphoneEnums::Presence::Away); }; if (mAccountList) { - if (mAccountList->getDefaultAccount()) { - handle(mAccountList->getDefaultAccount()); - } else { - connect( - mAccountList.get(), &AccountList::defaultAccountChanged, this, - [this, handle] { - if (mAccountList->getDefaultAccount()) { - handle(mAccountList->getDefaultAccount()); - } - }, - Qt::SingleShotConnection); - } + for (auto &account : mAccountList->getSharedList()) + handle(account); + } else { + connect( + this, &App::accountsChanged, this, + [this, &handle] { + if (mAccountList) { + for (auto &account : mAccountList->getSharedList()) + handle(account); + } + }, + Qt::SingleShotConnection); } } From 5a909591256576123d28d4c5ffe952f968b82d0f Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 1 Dec 2025 16:59:48 +0100 Subject: [PATCH 68/72] separate enable camera and video and use enableCamera when user activates webcam (fix #LINQT-2216) --- Linphone/core/call/CallCore.cpp | 20 ++++- Linphone/core/call/CallCore.hpp | 11 ++- Linphone/data/languages/de.ts | 80 +++++++++---------- Linphone/data/languages/en.ts | 80 +++++++++---------- Linphone/data/languages/fr.ts | 80 +++++++++---------- Linphone/model/call/CallModel.cpp | 20 ++++- Linphone/model/call/CallModel.hpp | 2 + Linphone/model/conference/ConferenceModel.cpp | 4 +- .../Container/Call/ActiveSpeakerLayout.qml | 3 + .../Control/Container/Call/CallLayout.qml | 3 +- Linphone/view/Control/Display/Sticker.qml | 2 +- .../view/Page/Window/Call/CallsWindow.qml | 10 +-- 12 files changed, 177 insertions(+), 138 deletions(-) diff --git a/Linphone/core/call/CallCore.cpp b/Linphone/core/call/CallCore.cpp index 0ba88c459..c27edab10 100644 --- a/Linphone/core/call/CallCore.cpp +++ b/Linphone/core/call/CallCore.cpp @@ -111,6 +111,7 @@ CallCore::CallCore(const std::shared_ptr &call) : QObject(nullpt auto videoDirection = callParams->getVideoDirection(); mLocalVideoEnabled = videoDirection == linphone::MediaDirection::SendOnly || videoDirection == linphone::MediaDirection::SendRecv; + mCameraEnabled = callParams->cameraEnabled(); auto remoteParams = call->getRemoteParams(); videoDirection = remoteParams ? remoteParams->getVideoDirection() : linphone::MediaDirection::Inactive; mRemoteVideoEnabled = @@ -194,8 +195,8 @@ void CallCore::setSelf(QSharedPointer me) { mCallModelConnection->makeConnectToModel(&CallModel::speakerMutedChanged, [this](bool isMuted) { mCallModelConnection->invokeToCore([this, isMuted]() { setSpeakerMuted(isMuted); }); }); - mCallModelConnection->makeConnectToCore(&CallCore::lSetLocalVideoEnabled, [this](bool enabled) { - mCallModelConnection->invokeToModel([this, enabled]() { mCallModel->setLocalVideoEnabled(enabled); }); + mCallModelConnection->makeConnectToCore(&CallCore::lSetCameraEnabled, [this](bool enabled) { + mCallModelConnection->invokeToModel([this, enabled]() { mCallModel->setCameraEnabled(enabled); }); }); mCallModelConnection->makeConnectToCore(&CallCore::lStartRecording, [this]() { mCallModelConnection->invokeToModel([this]() { mCallModel->startRecording(); }); @@ -245,6 +246,9 @@ void CallCore::setSelf(QSharedPointer me) { mCallModelConnection->makeConnectToModel(&CallModel::localVideoEnabledChanged, [this](bool enabled) { mCallModelConnection->invokeToCore([this, enabled]() { setLocalVideoEnabled(enabled); }); }); + mCallModelConnection->makeConnectToModel(&CallModel::cameraEnabledChanged, [this](bool enabled) { + mCallModelConnection->invokeToCore([this, enabled]() { setCameraEnabled(enabled); }); + }); mCallModelConnection->makeConnectToModel(&CallModel::durationChanged, [this](int duration) { mCallModelConnection->invokeToCore([this, duration]() { setDuration(duration); }); }); @@ -561,6 +565,18 @@ void CallCore::setLocalVideoEnabled(bool enabled) { } } +bool CallCore::getCameraEnabled() const { + return mCameraEnabled; +} + +void CallCore::setCameraEnabled(bool enabled) { + if (mCameraEnabled != enabled) { + mCameraEnabled = enabled; + lDebug() << "CameraEnabled: " << mCameraEnabled; + emit cameraEnabledChanged(); + } +} + bool CallCore::getPaused() const { return mPaused; } diff --git a/Linphone/core/call/CallCore.hpp b/Linphone/core/call/CallCore.hpp index 5624c6d9d..1ed2f6529 100644 --- a/Linphone/core/call/CallCore.hpp +++ b/Linphone/core/call/CallCore.hpp @@ -117,8 +117,8 @@ public: Q_PROPERTY(QStringList remoteTokens WRITE setRemoteTokens MEMBER mRemoteTokens NOTIFY remoteTokensChanged) Q_PROPERTY( bool remoteVideoEnabled READ getRemoteVideoEnabled WRITE setRemoteVideoEnabled NOTIFY remoteVideoEnabledChanged) - Q_PROPERTY( - bool localVideoEnabled READ getLocalVideoEnabled WRITE lSetLocalVideoEnabled NOTIFY localVideoEnabledChanged) + Q_PROPERTY(bool localVideoEnabled READ getLocalVideoEnabled NOTIFY localVideoEnabledChanged) + Q_PROPERTY(bool cameraEnabled READ getCameraEnabled WRITE lSetCameraEnabled NOTIFY cameraEnabledChanged) Q_PROPERTY(bool recording READ getRecording WRITE setRecording NOTIFY recordingChanged) Q_PROPERTY(bool remoteRecording READ getRemoteRecording WRITE setRemoteRecording NOTIFY remoteRecordingChanged) Q_PROPERTY(bool recordable READ getRecordable WRITE setRecordable NOTIFY recordableChanged) @@ -201,6 +201,9 @@ public: bool getLocalVideoEnabled() const; void setLocalVideoEnabled(bool enabled); + bool getCameraEnabled() const; + void setCameraEnabled(bool enabled); + bool getRecording() const; void setRecording(bool recording); @@ -255,6 +258,7 @@ signals: void remoteTokensChanged(); void remoteVideoEnabledChanged(bool remoteVideoEnabled); void localVideoEnabledChanged(); + void cameraEnabledChanged(); void recordingChanged(); void remoteRecordingChanged(); void recordableChanged(); @@ -275,7 +279,7 @@ signals: void lTerminateAllCalls(); // Hangup all calls void lSetSpeakerMuted(bool muted); void lSetMicrophoneMuted(bool isMuted); - void lSetLocalVideoEnabled(bool enabled); + void lSetCameraEnabled(bool enabled); void lSetVideoEnabled(bool enabled); void lSetPaused(bool paused); void lTransferCall(QString address); @@ -331,6 +335,7 @@ private: bool mSpeakerMuted = false; bool mMicrophoneMuted = false; bool mLocalVideoEnabled = false; + bool mCameraEnabled = false; bool mVideoEnabled = false; bool mPaused = false; bool mRemoteVideoEnabled = false; diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 03f5685f0..3f20dbe60 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -752,30 +752,30 @@ Nur Anwendungs-Logs ausgeben - + hide_action "Cacher" "Afficher" Ausblenden - + show_action Zeigen - + quit_action "Quitter" Beenden - + check_for_update Check for update - + mark_all_read_action @@ -821,76 +821,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Aufnahme beendet - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Die Aufnahme wurde in der folgenden Datei gespeichert: %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bandbreite: %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Verlustquote: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Jitter-Puffer: %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Videoauflösung: %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None Nichts - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" Post-quantum ZRTP @@ -1027,24 +1027,24 @@ Der Anrufer hat das Gespräch beendet - + conference_call_empty "En attente d'autres participants…" Warten auf weitere Teilnehmer… - + conference_share_link_title "Partager le lien" Link teilen - + copied Kopiert - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Der Besprechungs-Link wurde in die Zwischenablage kopiert @@ -1129,67 +1129,67 @@ CallModel - + call_error_no_response_toast "No response" - + call_error_forbidden_resource_toast "403 : Forbidden resource" - + call_error_not_answered_toast "Request timeout" - + call_error_user_declined_toast "User declined the call" Der Benutzer hat den Anruf abgelehnt - + call_error_user_not_found_toast "User was not found" Benutzer nicht gefunden - + call_error_user_busy_toast "User is busy" Der Benutzer ist beschäftigt - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" Der Benutzer kann Ihren Anruf nicht annehmen - + call_error_io_error_toast "Unavailable service or network error" Dienst nicht verfügbar oder Netzwerkfehler - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Vorübergehend nicht verfügbar - + call_error_server_timeout_toast "Server tiemout" Server-Zeitüberschreitung @@ -1852,29 +1852,29 @@ Video aktivieren - - + + call_activate_microphone "Activer le micro" Mikrofon aktivieren + - call_deactivate_microphone "Désactiver le micro" Mikrofon stummschalten + - call_share_screen_hint Partager l'écran… Bildschirm teilen… + - call_open_chat_hint Open chat… diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 53ab70c58..9dd57e667 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -757,30 +757,30 @@ Print only logs from the application - + hide_action "Cacher" "Afficher" Hide - + show_action Show - + quit_action "Quitter" Quit - + check_for_update Check for update Check for update - + mark_all_read_action Marquer tout comme lu @@ -826,76 +826,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Recording ended - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" Recording has been saved in file : %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bandwidth : %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Loss rate: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Jitter buffer : %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Video resolution: %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None None - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" Post quantum ZRTP @@ -1032,24 +1032,24 @@ Your caller has ended the call - + conference_call_empty "En attente d'autres participants…" Waiting for other participants… - + conference_share_link_title "Partager le lien" Share link - + copied Copied - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier The meeting link has been copied to the clipboard @@ -1134,67 +1134,67 @@ CallModel - + call_error_no_response_toast "No response" No response - + call_error_forbidden_resource_toast "403 : Forbidden resource" 403 : Forbidden resource - + call_error_not_answered_toast "Request timeout" Request timeout - + call_error_user_declined_toast "User declined the call" User declined the call - + call_error_user_not_found_toast "User was not found" User was not found - + call_error_user_busy_toast "User is busy" User is busy - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" User can't accept your call - + call_error_io_error_toast "Unavailable service or network error" Unavailable service or network error - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" User cannot be disturbed - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Temporarily unavailable - + call_error_server_timeout_toast "Server tiemout" Server tiemout @@ -1839,29 +1839,29 @@ Enable video - - + + call_activate_microphone "Activer le micro" Activate microphone + - call_deactivate_microphone "Désactiver le micro" Mute microphone + - call_share_screen_hint Partager l'écran… Share screen… + - call_open_chat_hint Open chat… Open conversation… diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index c09a8e86b..40482360d 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -757,30 +757,30 @@ Print only logs from the application - + hide_action "Cacher" "Afficher" Cacher - + show_action Afficher - + quit_action "Quitter" Quitter - + check_for_update Check for update Rechercher une mise à jour - + mark_all_read_action Marquer tout comme lu @@ -826,76 +826,76 @@ CallCore - + call_record_end_message "Enregistrement terminé" Enregistrement terminé - + call_record_saved_in_file_message "L'appel a été enregistré dans le fichier : %1" L'appel a été enregistré dans le fichier : %1 - - + + call_stats_codec_label "Codec: %1 / %2 kHz" Codec: %1 / %2 kHz - - + + call_stats_bandwidth_label "Bande passante : %1 %2 kbits/s %3 %4 kbits/s" Bande passante : %1 %2 kbits/s %3 %4 kbits/s - - + + call_stats_loss_rate_label "Taux de perte: %1% %2%" Taux de perte: %1% %2% - + call_stats_jitter_buffer_label "Tampon de gigue: %1 ms" Tampon de gigue: %1 ms - + call_stats_resolution_label "Définition vidéo : %1 %2 %3 %4" Définition vidéo : %1 %2 %3 %4 - + call_stats_fps_label "FPS : %1 %2 %3 %4" FPS : %1 %2 %3 %4 - + media_encryption_dtls DTLS DTLS - + media_encryption_none None None - + media_encryption_srtp SRTP SRTP - + media_encryption_post_quantum "ZRTP - Post quantique" ZRTP - Post quantique @@ -1032,24 +1032,24 @@ Votre correspondant a terminé l'appel - + conference_call_empty "En attente d'autres participants…" En attente d'autres participants… - + conference_share_link_title "Partager le lien" Partager le lien - + copied Copié - + information_popup_meeting_address_copied_to_clipboard Le lien de la réunion a été copié dans le presse-papier Le lien de la réunion a été copié dans le presse-papier @@ -1134,67 +1134,67 @@ CallModel - + call_error_no_response_toast "No response" Pas de réponse - + call_error_forbidden_resource_toast "403 : Forbidden resource" 403 : Forbidden resource - + call_error_not_answered_toast "Request timeout" La requête a expiré - + call_error_user_declined_toast "User declined the call" Le correspondant a décliné l'appel - + call_error_user_not_found_toast "User was not found" Le correspondant n'a pas été trouvé - + call_error_user_busy_toast "User is busy" Le correspondant est occupé - + call_error_incompatible_media_params_toast "User can&apos;t accept your call" Le correspondant ne peut accepter votre appel - + call_error_io_error_toast "Unavailable service or network error" Service indisponible ou erreur réseau - + call_error_do_not_disturb_toast "Le correspondant ne peut être dérangé" Le correspondant ne peut être dérangé - + call_error_temporarily_unavailable_toast "Temporarily unavailable" Temporairement indisponible - + call_error_server_timeout_toast "Server tiemout" Délai d'attente du serveur dépassé @@ -1839,29 +1839,29 @@ Activer la vidéo - - + + call_activate_microphone "Activer le micro" Activer le micro + - call_deactivate_microphone "Désactiver le micro" Désactiver le micro + - call_share_screen_hint Partager l'écran… Partager l'écran… + - call_open_chat_hint Open chat… Ouvrir le chat… diff --git a/Linphone/model/call/CallModel.cpp b/Linphone/model/call/CallModel.cpp index a5359cc5e..b6c05cf6d 100644 --- a/Linphone/model/call/CallModel.cpp +++ b/Linphone/model/call/CallModel.cpp @@ -69,6 +69,7 @@ void CallModel::accept(bool withVideo) { activateLocalVideo(params, withVideo); mMonitor->acceptWithParams(params); emit localVideoEnabledChanged(withVideo); + emit cameraEnabledChanged(params->cameraEnabled()); } void CallModel::decline() { @@ -146,8 +147,9 @@ void CallModel::activateLocalVideo(std::shared_ptr ¶ms .arg("Updating call with video enabled and media direction set to %1") .arg((int)params->getVideoDirection()); params->enableVideo(SettingsModel::getInstance()->getVideoEnabled()); - auto videoDirection = enable ? linphone::MediaDirection::SendRecv : linphone::MediaDirection::RecvOnly; - params->setVideoDirection(videoDirection); + auto videoDirection = params->getVideoDirection(); + params->setVideoDirection(enable || params->screenSharingEnabled() ? linphone::MediaDirection::SendRecv + : linphone::MediaDirection::RecvOnly); } void CallModel::setLocalVideoEnabled(bool enabled) { @@ -157,6 +159,15 @@ void CallModel::setLocalVideoEnabled(bool enabled) { mMonitor->update(params); } +void CallModel::setCameraEnabled(bool enabled) { + mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); + auto params = CoreModel::getInstance()->getCore()->createCallParams(mMonitor); + activateLocalVideo(params, enabled); + lInfo() << log().arg("Enable camera :") << enabled; + params->enableCamera(enabled); + mMonitor->update(params); +} + void CallModel::startRecording() { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); mMonitor->startRecording(); @@ -444,8 +455,11 @@ void CallModel::onStateChanged(const std::shared_ptr &call, setConference(call->getConference()); mDurationTimer.start(); // After UpdatedByRemote, video direction could be changed. - auto videoDirection = call->getParams()->getVideoDirection(); + auto params = call->getParams(); + auto videoDirection = params->getVideoDirection(); auto remoteVideoDirection = call->getRemoteParams()->getVideoDirection(); + lInfo() << log().arg("Camera enabled changed") << params->cameraEnabled(); + emit cameraEnabledChanged(params->cameraEnabled()); emit localVideoEnabledChanged(videoDirection == linphone::MediaDirection::SendOnly || videoDirection == linphone::MediaDirection::SendRecv); emit remoteVideoEnabledChanged(remoteVideoDirection == linphone::MediaDirection::SendOnly || diff --git a/Linphone/model/call/CallModel.hpp b/Linphone/model/call/CallModel.hpp index cdcc0b15d..db5c04abe 100644 --- a/Linphone/model/call/CallModel.hpp +++ b/Linphone/model/call/CallModel.hpp @@ -45,6 +45,7 @@ public: void setMicrophoneMuted(bool isMuted); void setSpeakerMuted(bool isMuted); void setLocalVideoEnabled(bool enabled); + void setCameraEnabled(bool enabled); void startRecording(); void stopRecording(); void setRecordFile(const std::string &path); @@ -98,6 +99,7 @@ signals: void microphoneVolumeChanged(float); void pausedChanged(bool paused); void remoteVideoEnabledChanged(bool remoteVideoEnabled); + void cameraEnabledChanged(bool enalbed); void localVideoEnabledChanged(bool enabled); void recordingChanged(const std::shared_ptr &call, bool recording); void speakerVolumeGainChanged(float volume); diff --git a/Linphone/model/conference/ConferenceModel.cpp b/Linphone/model/conference/ConferenceModel.cpp index 8564e0173..13288700b 100644 --- a/Linphone/model/conference/ConferenceModel.cpp +++ b/Linphone/model/conference/ConferenceModel.cpp @@ -236,8 +236,8 @@ void ConferenceModel::onParticipantDeviceMediaCapabilityChanged( void ConferenceModel::onParticipantDeviceMediaAvailabilityChanged( const std::shared_ptr &conference, const std::shared_ptr &participantDevice) { - lInfo() << "onParticipantDeviceMediaAvailabilityChanged: " - << (int)participantDevice->getStreamAvailability(linphone::StreamType::Video) + lInfo() << "onParticipantDeviceMediaAvailabilityChanged: video stream available =" + << participantDevice->getStreamAvailability(linphone::StreamType::Video) << ". Device: " << participantDevice->getAddress()->asString().c_str(); emit participantDeviceMediaAvailabilityChanged(participantDevice); } diff --git a/Linphone/view/Control/Container/Call/ActiveSpeakerLayout.qml b/Linphone/view/Control/Container/Call/ActiveSpeakerLayout.qml index 95df7b4c2..8599aa97b 100644 --- a/Linphone/view/Control/Container/Call/ActiveSpeakerLayout.qml +++ b/Linphone/view/Control/Container/Call/ActiveSpeakerLayout.qml @@ -79,6 +79,9 @@ Item { anchors.bottomMargin: Utils.getSizeWithScreenRatio(15)// Spacing qmlName: 'S_'+index visible: parent.visible + videoEnabled: (index === 0 && mainItem.call.core.cameraEnabled) + || (!previewEnabled && call && call.core.remoteVideoEnabled) + || (!previewEnabled && participantDevice && participantDevice.core.videoEnabled) participantDevice: $modelData displayAll: false displayPresence: false diff --git a/Linphone/view/Control/Container/Call/CallLayout.qml b/Linphone/view/Control/Container/Call/CallLayout.qml index eb14d0508..607f623b7 100644 --- a/Linphone/view/Control/Container/Call/CallLayout.qml +++ b/Linphone/view/Control/Container/Call/CallLayout.qml @@ -113,8 +113,7 @@ Item { anchors.bottom: mainItem.bottom anchors.rightMargin: Utils.getSizeWithScreenRatio(20) anchors.bottomMargin: Utils.getSizeWithScreenRatio(10) - videoEnabled: preview.visible && mainItem.call && mainItem.call.core.localVideoEnabled - onVideoEnabledChanged: console.log("P : " +videoEnabled + " / " +visible +" / " +mainItem.call) + onVideoEnabledChanged: console.log("Preview : " +videoEnabled + " / " +visible +" / " +mainItem.call) property var accountObj: UtilsCpp.findLocalAccountByAddress(mainItem.localAddress) account: accountObj && accountObj.value || null call: mainItem.call diff --git a/Linphone/view/Control/Display/Sticker.qml b/Linphone/view/Control/Display/Sticker.qml index 8afe80d84..0a1dd10e1 100644 --- a/Linphone/view/Control/Display/Sticker.qml +++ b/Linphone/view/Control/Display/Sticker.qml @@ -58,7 +58,7 @@ Item { property var contact: contactObj && contactObj.value || null property var identityAddress: account ? UtilsCpp.getDisplayName(account.core.identityAddress) : null - property bool videoEnabled: (previewEnabled && call && call.core.localVideoEnabled) + property bool videoEnabled: (previewEnabled && call && call.core.cameraEnabled) || (!previewEnabled && call && call.core.remoteVideoEnabled) || (participantDevice && participantDevice.core.videoEnabled) property string qmlName diff --git a/Linphone/view/Page/Window/Call/CallsWindow.qml b/Linphone/view/Page/Window/Call/CallsWindow.qml index adbaf2f50..e17661707 100644 --- a/Linphone/view/Page/Window/Call/CallsWindow.qml +++ b/Linphone/view/Page/Window/Call/CallsWindow.qml @@ -27,7 +27,7 @@ AbstractWindow { property ChatGui chat: chatObj ? chatObj.value : null property int conferenceLayout: call && call.core.conferenceVideoLayout || 0 - property bool localVideoEnabled: call && call.core.localVideoEnabled + property bool cameraEnabled: call && call.core.cameraEnabled property bool remoteVideoEnabled: call && call.core.remoteVideoEnabled property bool callTerminatedByUser: false @@ -1447,14 +1447,14 @@ AbstractWindow { checkedIconUrl: AppIcons.videoCameraSlash //: "Désactiver la vidéo" //: "Activer la vidéo" - ToolTip.text: mainWindow.localVideoEnabled ? qsTr("call_deactivate_video_hint") : qsTr("call_activate_video_hint") - Accessible.name: mainWindow.localVideoEnabled ? qsTr("call_deactivate_video_hint") : qsTr("call_activate_video_hint") - checked: !mainWindow.localVideoEnabled + ToolTip.text: mainWindow.cameraEnabled ? qsTr("call_deactivate_video_hint") : qsTr("call_activate_video_hint") + Accessible.name: mainWindow.cameraEnabled ? qsTr("call_deactivate_video_hint") : qsTr("call_activate_video_hint") + checked: !mainWindow.cameraEnabled Layout.preferredWidth: Utils.getSizeWithScreenRatio(55) Layout.preferredHeight: Utils.getSizeWithScreenRatio(55) icon.width: Utils.getSizeWithScreenRatio(32) icon.height: Utils.getSizeWithScreenRatio(32) - onClicked: mainWindow.call.core.lSetLocalVideoEnabled(!mainWindow.call.core.localVideoEnabled) + onClicked: mainWindow.call.core.lSetCameraEnabled(!mainWindow.call.core.cameraEnabled) } // Audio microphone button From 60517741a22135b8c8538f0871d5ef4b062d4cf7 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 1 Dec 2025 14:55:09 +0100 Subject: [PATCH 69/72] CMakeLists changes regarding app name & windows debug symbols --- CMakeLists.txt | 4 ++-- Linphone/CMakeLists.txt | 7 +++++++ cmake/install/install.cmake | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 261f358f9..48d937bde 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,8 +71,8 @@ endif() set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}") -set(LINPHONEAPP_APPLICATION_NAME "Linphone6" CACHE STRING "Application name" ) -set(LINPHONEAPP_EXECUTABLE_NAME "linphone6" CACHE STRING "Executable name" ) +set(LINPHONEAPP_APPLICATION_NAME "Linphone" CACHE STRING "Application name" ) +set(LINPHONEAPP_EXECUTABLE_NAME "linphone" CACHE STRING "Executable name" ) # Include application_info.cmake here as the LINPHONEAPP_APPLICATION_NAME variable must be known as it is set to the APPLICATION_NAME variable. include(Linphone/application_info.cmake) diff --git a/Linphone/CMakeLists.txt b/Linphone/CMakeLists.txt index 22c084ae6..c7e44e264 100644 --- a/Linphone/CMakeLists.txt +++ b/Linphone/CMakeLists.txt @@ -170,6 +170,12 @@ qt6_add_qml_module(Linphone RESOURCES data/fonts.qrc ) +if (WIN32) + if(MSVC AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")) + install(FILES "$" DESTINATION ${CMAKE_INSTALL_BINDIR}) + endif() +endif() + qt6_add_resources(Linphone "resources" PREFIX "/" FILES ${_LINPHONEAPP_RC_FILES}) set_property(TARGET Linphone PROPERTY POSITION_INDEPENDENT_CODE ON) #Need by Qt @@ -195,6 +201,7 @@ set_target_properties(${TARGET_NAME} PROPERTIES if(MSVC) set_target_properties(${TARGET_NAME} PROPERTIES PDB_NAME "${EXECUTABLE_NAME}_app") endif() +set_target_properties(${TARGET_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) if(WIN32) if(ENABLE_SCREENSHARING) diff --git a/cmake/install/install.cmake b/cmake/install/install.cmake index 391c357b7..4b02038a6 100644 --- a/cmake/install/install.cmake +++ b/cmake/install/install.cmake @@ -34,7 +34,7 @@ if (GIT_EXECUTABLE AND NOT(LINPHONEAPP_VERSION)) endif() if (NOT(LINPHONEAPP_VERSION)) - set(LINPHONEAPP_VERSION "0.0.0") + set(LINPHONEAPP_VERSION "6.1.0") endif () set(LINPHONE_MAJOR_VERSION) From 21e8e2aaba7a20f5d88b26362b267e580543a411 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Tue, 2 Dec 2025 14:26:07 +0100 Subject: [PATCH 70/72] ChatCore: wait for deleted state before emitting deleted signal fix chats selection and remove useless signal --- Linphone/core/chat/ChatCore.cpp | 3 +- Linphone/core/chat/ChatList.cpp | 43 +++++-------------- Linphone/core/chat/ChatList.hpp | 3 -- Linphone/core/chat/ChatProxy.cpp | 4 -- Linphone/core/chat/ChatProxy.hpp | 2 - Linphone/data/languages/de.ts | 28 ++++++------ Linphone/data/languages/en.ts | 28 ++++++------ Linphone/data/languages/fr.ts | 28 ++++++------ Linphone/model/chat/ChatModel.cpp | 3 +- .../Control/Display/Chat/ChatListView.qml | 11 ----- 10 files changed, 54 insertions(+), 99 deletions(-) diff --git a/Linphone/core/chat/ChatCore.cpp b/Linphone/core/chat/ChatCore.cpp index c60cc6dce..149b8262f 100644 --- a/Linphone/core/chat/ChatCore.cpp +++ b/Linphone/core/chat/ChatCore.cpp @@ -163,14 +163,13 @@ void ChatCore::setSelf(QSharedPointer me) { mChatModelConnection->makeConnectToCore(&ChatCore::lDelete, [this]() { mChatModelConnection->invokeToModel([this]() { mChatModel->deleteChatRoom(); }); }); - mChatModelConnection->makeConnectToModel( - &ChatModel::deleted, [this]() { mChatModelConnection->invokeToCore([this]() { emit deleted(); }); }); mChatModelConnection->makeConnectToModel( &ChatModel::stateChanged, [this](const std::shared_ptr &chatRoom, linphone::ChatRoom::State newState) { auto state = LinphoneEnums::fromLinphone(newState); bool isReadOnly = chatRoom->isReadOnly(); + if (newState == linphone::ChatRoom::State::Deleted) emit deleted(); mChatModelConnection->invokeToCore([this, state, isReadOnly]() { setChatRoomState(state); setIsReadOnly(isReadOnly); diff --git a/Linphone/core/chat/ChatList.cpp b/Linphone/core/chat/ChatList.cpp index 94e1f7fc2..8061f19b6 100644 --- a/Linphone/core/chat/ChatList.cpp +++ b/Linphone/core/chat/ChatList.cpp @@ -54,13 +54,15 @@ ChatList::~ChatList() { } void ChatList::connectItem(QSharedPointer chat) { - connect(chat.get(), &ChatCore::deleted, this, [this, chat] { - disconnect(chat.get(), &ChatCore::unreadMessagesCountChanged, this, nullptr); - disconnect(chat.get(), &ChatCore::lastUpdatedTimeChanged, this, nullptr); - disconnect(chat.get(), &ChatCore::lastMessageChanged, this, nullptr); - disconnect(chat.get(), &ChatCore::deleted, this, nullptr); - remove(chat); - }); + connect( + chat.get(), &ChatCore::deleted, this, + [this, chat] { + disconnect(chat.get(), &ChatCore::unreadMessagesCountChanged, this, nullptr); + disconnect(chat.get(), &ChatCore::lastUpdatedTimeChanged, this, nullptr); + disconnect(chat.get(), &ChatCore::lastMessageChanged, this, nullptr); + remove(chat); + }, + Qt::SingleShotConnection); auto dataChange = [this, chat] { int i = -1; get(chat.get(), &i); @@ -167,30 +169,6 @@ void ChatList::setSelf(QSharedPointer me) { addChatToList(core, room, message); }); - mModelConnection->makeConnectToModel( - &CoreModel::chatRoomStateChanged, - [this](const std::shared_ptr &core, const std::shared_ptr &chatRoom, - linphone::ChatRoom::State state) { - auto chatRoomAccount = chatRoom->getAccount(); - auto currentAccount = CoreModel::getInstance()->getCore()->getDefaultAccount(); - if (!chatRoomAccount || !currentAccount || !chatRoomAccount->getParams() || !currentAccount->getParams() || - !chatRoomAccount->getParams()->getIdentityAddress()->weakEqual( - currentAccount->getParams()->getIdentityAddress())) { - lInfo() << "ChatRoom state of another account changed, return"; - return; - } - if (chatRoom->getState() == linphone::ChatRoom::State::Created) { - lInfo() << "ChatRoom created, add it to the list" << chatRoom.get(); - auto chatCore = ChatCore::create(chatRoom); - if (chatCore) { - mModelConnection->invokeToCore([this, chatCore] { - bool added = addChatInList(chatCore); - if (added) emit chatCreated(new ChatGui(chatCore)); - }); - } - } - }); - connect(this, &ChatList::filterChanged, [this](QString filter) { mFilter = filter; lUpdate(); @@ -212,8 +190,7 @@ bool ChatList::addChatInList(QSharedPointer chatCore) { mustBeInMainThread(log().arg(Q_FUNC_INFO)); auto chatList = getSharedList(); auto it = std::find_if(chatList.begin(), chatList.end(), [chatCore](const QSharedPointer item) { - return item && chatCore && item->getModel() && chatCore->getModel() && - item->getModel()->getMonitor() == chatCore->getModel()->getMonitor(); + return item && chatCore && item->getIdentifier() == chatCore->getIdentifier(); }); if (it == chatList.end()) { connectItem(chatCore); diff --git a/Linphone/core/chat/ChatList.hpp b/Linphone/core/chat/ChatList.hpp index 6757e615f..0ec7ab87a 100644 --- a/Linphone/core/chat/ChatList.hpp +++ b/Linphone/core/chat/ChatList.hpp @@ -50,9 +50,6 @@ signals: void filterChanged(QString filter); void chatAdded(); void chatUpdated(); - // emit this signal to force selection when - // newly created chat added to the list - void chatCreated(ChatGui *chatGui); private: QString mFilter; diff --git a/Linphone/core/chat/ChatProxy.cpp b/Linphone/core/chat/ChatProxy.cpp index 84198c24c..fd30a71a6 100644 --- a/Linphone/core/chat/ChatProxy.cpp +++ b/Linphone/core/chat/ChatProxy.cpp @@ -46,10 +46,6 @@ void ChatProxy::setSourceModel(QAbstractItemModel *model) { connect(this, &ChatProxy::filterTextChanged, newChatList, [this, newChatList] { emit newChatList->filterChanged(getFilterText()); }); connect(newChatList, &ChatList::chatAdded, this, [this] { invalidate(); }); - connect(newChatList, &ChatList::chatCreated, this, [this](ChatGui *chatGui) { - invalidate(); - emit chatCreated(chatGui); - }); connect(newChatList, &ChatList::dataChanged, this, [this] { invalidate(); }); } QSortFilterProxyModel::setSourceModel(newChatList); diff --git a/Linphone/core/chat/ChatProxy.hpp b/Linphone/core/chat/ChatProxy.hpp index 1a40e1fb4..f9e6c48cf 100644 --- a/Linphone/core/chat/ChatProxy.hpp +++ b/Linphone/core/chat/ChatProxy.hpp @@ -41,8 +41,6 @@ public: Q_INVOKABLE int findChatIndex(ChatGui *chatGui); Q_INVOKABLE bool addChatInList(ChatGui *chatGui); -signals: - void chatCreated(ChatGui *chatGui); protected: QSharedPointer mList; diff --git a/Linphone/data/languages/de.ts b/Linphone/data/languages/de.ts index 3f20dbe60..e8980d8fb 100644 --- a/Linphone/data/languages/de.ts +++ b/Linphone/data/languages/de.ts @@ -2099,65 +2099,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… - + chat_message_draft_sending_text - + chat_room_delete "Delete" Löschen - + chat_room_mute - + chat_room_unmute "Mute" - + chat_room_mark_as_read "Mark as read" - + chat_room_leave "leave" - + chat_list_leave_chat_popup_title leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? @@ -2723,19 +2723,19 @@ Error Fehler - + information_popup_error_title Erreur Fehler - + information_popup_voicemail_address_undefined_message L'URI de messagerie vocale n'est pas définie. Die Voicemail-URI ist nicht definiert. - + account_settings_name_accessible_name Account settings of %1 diff --git a/Linphone/data/languages/en.ts b/Linphone/data/languages/en.ts index 9dd57e667..e7566ce3d 100644 --- a/Linphone/data/languages/en.ts +++ b/Linphone/data/languages/en.ts @@ -2086,65 +2086,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 is writing… - + chat_message_draft_sending_text Draft : %1 - + chat_room_delete "Delete" Delete - + chat_room_mute Mute - + chat_room_unmute "Mute" Unmute - + chat_room_mark_as_read "Mark as read" Mark as read - + chat_room_leave "leave" Leave - + chat_list_leave_chat_popup_title leave the conversation ? Leave the conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? - + chat_list_delete_chat_popup_title Delete the conversation ? Delete the conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? This conversation and all its messages will be deleted. Do You want to continue ? @@ -2682,19 +2682,19 @@ Only your correspondent can decrypt them. Contact - + information_popup_error_title Erreur Error - + information_popup_voicemail_address_undefined_message L'URI de messagerie vocale n'est pas définie. The voicemail URI is not defined. - + account_settings_name_accessible_name Account settings of %1 Account settings of %1 diff --git a/Linphone/data/languages/fr.ts b/Linphone/data/languages/fr.ts index 40482360d..4387486c5 100644 --- a/Linphone/data/languages/fr.ts +++ b/Linphone/data/languages/fr.ts @@ -2086,65 +2086,65 @@ ChatListView - + chat_message_is_writing_info %1 is writing… %1 est en train d'écrire… - + chat_message_draft_sending_text Brouillon : %1 - + chat_room_delete "Delete" Supprimer - + chat_room_mute Mettre en sourdine - + chat_room_unmute "Mute" Enlever la sourdine - + chat_room_mark_as_read "Mark as read" Marquer comme lu - + chat_room_leave "leave" Quitter la conversation - + chat_list_leave_chat_popup_title leave the conversation ? Quitter la conversation ? - + chat_list_leave_chat_popup_message You will not be able to send or receive messages in this conversation anymore. Do You want to continue ? Vous ne pourrez plus envoyer ou recevoir de messages dans cette conversation. Souhaitez-vous continuer ? - + chat_list_delete_chat_popup_title Delete the conversation ? Supprimer la conversation ? - + chat_list_delete_chat_popup_message This conversation and all its messages will be deleted. Do You want to continue ? La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ? @@ -2682,19 +2682,19 @@ en bout. Seul votre correspondant peut les déchiffrer. Contact - + information_popup_error_title Erreur Erreur - + information_popup_voicemail_address_undefined_message L'URI de messagerie vocale n'est pas définie. L'URI de messagerie vocale n'est pas définie. - + account_settings_name_accessible_name Account settings of %1 Paramaètres de compte de %1 diff --git a/Linphone/model/chat/ChatModel.cpp b/Linphone/model/chat/ChatModel.cpp index a8d9a52fb..88bd69e07 100644 --- a/Linphone/model/chat/ChatModel.cpp +++ b/Linphone/model/chat/ChatModel.cpp @@ -44,7 +44,7 @@ ChatModel::ChatModel(const std::shared_ptr &chatroom, QObjec ChatModel::~ChatModel() { mustBeInLinphoneThread("~" + getClassName()); - disconnect(CoreModel::getInstance().get(), &CoreModel::messageReadInChatRoom, this, nullptr); + disconnect(CoreModel::getInstance().get(), &CoreModel::chatRoomRead, this, nullptr); } QDateTime ChatModel::getLastUpdateTime() { @@ -173,7 +173,6 @@ void ChatModel::leave() { void ChatModel::deleteChatRoom() { CoreModel::getInstance()->getCore()->deleteChatRoom(mMonitor); - emit deleted(); } std::shared_ptr diff --git a/Linphone/view/Control/Display/Chat/ChatListView.qml b/Linphone/view/Control/Display/Chat/ChatListView.qml index 7037c1987..1291b6d5e 100644 --- a/Linphone/view/Control/Display/Chat/ChatListView.qml +++ b/Linphone/view/Control/Display/Chat/ChatListView.qml @@ -18,13 +18,11 @@ ListView { property real busyIndicatorSize: Utils.getSizeWithScreenRatio(60) property ChatGui currentChatGui: model.getAt(currentIndex) || null - onCurrentIndexChanged: console.log("current index changed", currentIndex) onCurrentChatGuiChanged: positionViewAtIndex(currentIndex, ListView.Center) property ChatGui chatToSelect: null property ChatGui chatToSelectLater: null onChatToSelectChanged: { if (chatToSelect) { - console.log("chat to select changed, select", (chatToSelect ? chatToSelect.core.title : "NULL")) // first clear the chatToSelect property in case we need to // force adding the chat to the list and the layout changes var toselect = chatToSelect @@ -72,9 +70,6 @@ ListView { selectChat(mainItem.currentChatGui) } } - onChatCreated: (chat) => { - selectChat(chat) - } } // flickDeceleration: 10000 spacing: Utils.getSizeWithScreenRatio(10) @@ -100,12 +95,6 @@ ListView { onActiveFocusChanged: if (activeFocus && currentIndex < 0 && count > 0) currentIndex = 0 - onAtYEndChanged: { - if (atYEnd && count > 0) { - chatProxy.displayMore() - } - } - //---------------------------------------------------------------- function moveToCurrentItem() { if (mainItem.currentIndex >= 0) From 605ffdcdd55b05d3468c5a0ac04b321107982c47 Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Tue, 2 Dec 2025 16:06:32 +0100 Subject: [PATCH 71/72] refresh register when click on account deactivated status --- .../view/Control/Display/Contact/Contact.qml | 16 +++++++++++++++- .../Display/Contact/ContactStatusPopup.qml | 6 ++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Linphone/view/Control/Display/Contact/Contact.qml b/Linphone/view/Control/Display/Contact/Contact.qml index 0b6ee84a9..9ee7b2349 100644 --- a/Linphone/view/Control/Display/Contact/Contact.qml +++ b/Linphone/view/Control/Display/Contact/Contact.qml @@ -95,7 +95,21 @@ Control.Control{ } } } - ContactStatusPopup{} + Item { + Layout.minimumWidth: Utils.getSizeWithScreenRatio(86) + Layout.maximumWidth: Utils.getSizeWithScreenRatio(150) + width: contactStatusPopup.width + height: contactStatusPopup.height + ContactStatusPopup{ + id: contactStatusPopup + } + MouseArea { + anchors.fill: contactStatusPopup + enabled: !contactStatusPopup.enabled + cursorShape: Qt.PointingHandCursor + onClicked: mainItem.account.core.lSetRegisterEnabled(true) + } + } Item{ Layout.preferredWidth: Utils.getSizeWithScreenRatio(26) Layout.preferredHeight: Utils.getSizeWithScreenRatio(26) diff --git a/Linphone/view/Control/Display/Contact/ContactStatusPopup.qml b/Linphone/view/Control/Display/Contact/ContactStatusPopup.qml index a095e1089..c209ca22d 100644 --- a/Linphone/view/Control/Display/Contact/ContactStatusPopup.qml +++ b/Linphone/view/Control/Display/Contact/ContactStatusPopup.qml @@ -13,10 +13,8 @@ import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle PopupButton { id: presenceAndRegistrationItem - Layout.minimumWidth: Utils.getSizeWithScreenRatio(86) - Layout.maximumWidth: Utils.getSizeWithScreenRatio(150) - Layout.preferredHeight: Utils.getSizeWithScreenRatio(24) - Layout.preferredWidth: presenceOrRegistrationText.implicitWidth + Utils.getSizeWithScreenRatio(50) + width: presenceOrRegistrationText.implicitWidth + Utils.getSizeWithScreenRatio(50) + height: Utils.getSizeWithScreenRatio(24) enabled: mainItem.account && mainItem.account.core.registrationState === LinphoneEnums.RegistrationState.Ok onEnabledChanged: if(!enabled) close() property bool editCustomStatus : false From 88aea7ba25da21491967785a51cb779e57bcf2c0 Mon Sep 17 00:00:00 2001 From: gaelle Date: Thu, 4 Dec 2025 14:14:42 +0100 Subject: [PATCH 72/72] update SDK to 5.4.67 --- external/linphone-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/linphone-sdk b/external/linphone-sdk index 5aa85ab80..3ac59232c 160000 --- a/external/linphone-sdk +++ b/external/linphone-sdk @@ -1 +1 @@ -Subproject commit 5aa85ab806b16b3d664d4e6288e138e272697b6f +Subproject commit 3ac59232c3f6c0553226708ef7ce81f716fbb10e