diff --git a/CHANGES.md b/CHANGES.md index 652320daf..7ace58680 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,18 @@ +## Changes in 1.6.1 (2021-09-30) + +🙌 Improvements + +- Upgrade MatrixKit version ([v0.16.4](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.16.4)). +- Upgrade MatrixKit version ([v0.16.3](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.16.3)). +- AvatarViewData: Make `mediaManager` property optional (#4930). ([#4930](https://github.com/vector-im/element-ios/issues/4930)) + +🐛 Bugfixes + +- fixed Spaces still visible after logging in with another account ([#4916](https://github.com/vector-im/element-ios/issues/4916)) +- fixed App may not start in 1.6.0 ([#4919](https://github.com/vector-im/element-ios/issues/4919)) +- AppDelegate: Fix a crash when backgrounding the app. ([#4932](https://github.com/vector-im/element-ios/issues/4932)) + + ## Changes in 1.6.0 (2021-09-24) ✨ Features diff --git a/Config/AppVersion.xcconfig b/Config/AppVersion.xcconfig index c7437d950..51e60cfea 100644 --- a/Config/AppVersion.xcconfig +++ b/Config/AppVersion.xcconfig @@ -15,5 +15,5 @@ // // Version -MARKETING_VERSION = 1.6.0 -CURRENT_PROJECT_VERSION = 1.6.0 +MARKETING_VERSION = 1.6.1 +CURRENT_PROJECT_VERSION = 1.6.1 diff --git a/Podfile b/Podfile index 09d0d0372..f495b4ef3 100644 --- a/Podfile +++ b/Podfile @@ -13,7 +13,7 @@ use_frameworks! # - `{ {kit spec hash} => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for each repo. Used by Fastfile during CI # # Warning: our internal tooling depends on the name of this variable name, so be sure not to change it -$matrixKitVersion = '= 0.16.2' +$matrixKitVersion = '= 0.16.4' # $matrixKitVersion = :local # $matrixKitVersion = {'develop' => 'develop'} diff --git a/Podfile.lock b/Podfile.lock index 658344076..095f1d632 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -58,29 +58,29 @@ PODS: - MatomoTracker (7.4.1): - MatomoTracker/Core (= 7.4.1) - MatomoTracker/Core (7.4.1) - - MatrixKit (0.16.2): + - MatrixKit (0.16.3): - Down (~> 0.11.0) - DTCoreText (~> 1.6.25) - HPGrowingTextView (~> 1.1) - libPhoneNumber-iOS (~> 0.9.13) - - MatrixKit/Core (= 0.16.2) - - MatrixSDK (= 0.20.2) - - MatrixKit/Core (0.16.2): + - MatrixKit/Core (= 0.16.3) + - MatrixSDK (= 0.20.3) + - MatrixKit/Core (0.16.3): - Down (~> 0.11.0) - DTCoreText (~> 1.6.25) - HPGrowingTextView (~> 1.1) - libPhoneNumber-iOS (~> 0.9.13) - - MatrixSDK (= 0.20.2) - - MatrixSDK (0.20.2): - - MatrixSDK/Core (= 0.20.2) - - MatrixSDK/Core (0.20.2): + - MatrixSDK (= 0.20.3) + - MatrixSDK (0.20.3): + - MatrixSDK/Core (= 0.20.3) + - MatrixSDK/Core (0.20.3): - AFNetworking (~> 4.0.0) - GZIP (~> 1.3.0) - libbase58 (~> 0.1.4) - OLMKit (~> 3.2.5) - Realm (= 10.7.6) - SwiftyBeaver (= 1.9.5) - - MatrixSDK/JingleCallStack (0.20.2): + - MatrixSDK/JingleCallStack (0.20.3): - JitsiMeetSDK (= 3.5.0) - MatrixSDK/Core - OLMKit (3.2.5): @@ -124,7 +124,7 @@ DEPENDENCIES: - KeychainAccess (~> 4.2.2) - KTCenterFlowLayout (~> 1.3.1) - MatomoTracker (~> 7.4.1) - - MatrixKit (= 0.16.2) + - MatrixKit (= 0.16.3) - MatrixSDK - MatrixSDK/JingleCallStack - OLMKit @@ -204,8 +204,8 @@ SPEC CHECKSUMS: LoggerAPI: ad9c4a6f1e32f518fdb43a1347ac14d765ab5e3d Logging: beeb016c9c80cf77042d62e83495816847ef108b MatomoTracker: 24a846c9d3aa76933183fe9d47fd62c9efa863fb - MatrixKit: 0cc184292f2dcf5b6ad831cc008184a89111503f - MatrixSDK: bf3ebecbe643273c4439367175ccd4e5307831c8 + MatrixKit: 509ef502d0f9b13d15a90cfd5ec9dc566f5ecc29 + MatrixSDK: de1158691a3b3bfb0cc7a294f358f9def3d3cd9c OLMKit: 9fb4799c4a044dd2c06bda31ec31a12191ad30b5 ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d Realm: ed860452717c8db8f4bf832b6807f7f2ce708839 @@ -219,6 +219,6 @@ SPEC CHECKSUMS: zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb -PODFILE CHECKSUM: c03148cb3f07b073a3340d45f6120290461fb32f +PODFILE CHECKSUM: 6f7703d99b03d02d52dee9fcacb32d08c42cfbde COCOAPODS: 1.10.1 diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index 882b9a49d..916cb445f 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -15,7 +15,7 @@ "warning" = "Warnung"; "remove" = "Entferne"; "start" = "Starte"; -"create" = "Erstelle"; +"create" = "Erstellen"; "on" = "An"; "off" = "Aus"; "join" = "Beitreten"; @@ -250,10 +250,10 @@ "room_details_low_priority_tag" = "Niedrige Priorität"; "room_details_access_section" = "Wer kann auf diesen Raum zugreifen?"; "room_details_access_section_invited_only" = "Nur Personen, die eingeladen wurden"; -"room_details_access_section_anyone_apart_from_guest" = "Jeder, der den Raumlink kennt - außer Gäste"; -"room_details_access_section_anyone" = "Jeder, der den Raumlink kennt - auch Gäste"; +"room_details_access_section_anyone_apart_from_guest" = "Alle, die den Raumlink kennen - außer Gäste"; +"room_details_access_section_anyone" = "Alle, die den Raumlink kennen - auch Gäste"; "room_details_history_section" = "Wer kann die Historie lesen?"; -"room_details_history_section_anyone" = "Jeder"; +"room_details_history_section_anyone" = "Alle"; "room_details_history_section_members_only" = "Nur Mitglieder (seit diese Option ausgewählt ist)"; "room_details_history_section_members_only_since_invited" = "Nur Mitglieder (ab ihrer Einladung)"; "room_details_history_section_members_only_since_joined" = "Nur Mitglieder (Ab ihrem Beitritt)"; @@ -327,7 +327,7 @@ "room_details_files" = "Hochgeladenes"; "room_details_mute_notifs" = "Benachrichtigungen stummschalten"; "room_details_access_section_no_address_warning" = "Um einen Raum zu betreten, muss er eine Adresse haben"; -"room_details_access_section_directory_toggle" = "Zeige alle Räume in diesem Verzeichnis"; +"room_details_access_section_directory_toggle" = "Diesen Raum im Raumverzeichnis anzeigen"; "room_details_history_section_prompt_msg" = "Änderungen an der Leseberechtigung des Verlaufs wird nur auf zukünftige Nachrichten dieses Raums angewandt. Die Sichtbarkeit des existierenden Verlaufs wird nicht verändert."; "room_details_addresses_invalid_address_prompt_title" = "Ungültiges Aliasformat"; "room_details_addresses_invalid_address_prompt_msg" = "%@ ist kein gültiges Format für einen Alias"; @@ -956,7 +956,7 @@ "key_verification_tile_request_status_waiting" = "Warten…"; "key_verification_tile_request_status_expired" = "Abgelaufen"; "key_verification_tile_request_status_cancelled_by_me" = "Du hast abgebrochen"; -"key_verification_tile_request_status_cancelled" = "%@ abgebrochen"; +"key_verification_tile_request_status_cancelled" = "%@ hat abgebrochen"; "key_verification_tile_request_status_accepted" = "Du hast akzeptiert"; "key_verification_tile_request_incoming_approval_accept" = "Annehmen"; "key_verification_tile_request_incoming_approval_decline" = "Ablehnen"; @@ -1417,7 +1417,7 @@ "version_check_modal_action_title_deprecated" = "Zeige mir, wie es geht"; "version_check_modal_action_title_supported" = "Verstanden"; "version_check_banner_title_deprecated" = "iOS %@ wird nicht mehr unterstützt"; -"version_check_banner_subtitle_supported" = "Wir hören bald auf, iOS %@ zu unterstützen. Um Element weiterhin vollumfänglich zu nutzen, empfehlen wir dir die Aktualisierung deiner iOS-Version."; +"version_check_banner_subtitle_supported" = "Wir hören bald auf, %@ für iOS %@ zu unterstützen. Um %@ weiterhin vollumfänglich zu nutzen, empfehlen wir dir die Aktualisierung deiner iOS-Version."; // Mark: - Version check @@ -1442,12 +1442,41 @@ "settings_confirm_media_size" = "Größe beim Senden bestätigen"; "settings_notifications" = "BENACHRICHTIGUNGEN"; "settings_mentions_and_keywords_encryption_notice" = "Auf deinem Mobilgerät wirst du keine Benachrichtigungen für Erwähnungen und Schlüsselwörter in verschlüsselten Räumen erhalten."; -"version_check_modal_subtitle_supported" = "Wir haben daran gearbeitet Element zu verbessern um ein schnelleres und bereinigteres Erlebnis zu schaffen. Leider ist deine aktuelle iOS-Version mit einigen dieser Verbesserungen nicht kompatibel und wird daher nicht mehr unterstützt werden.\nWir empfehlen dir die Aktualisierung deines Betriebssystems um Element weiterhin vollumfänglich zu nutzen."; -"version_check_modal_subtitle_deprecated" = "Wir haben daran gearbeitet Element zu verbessern um ein schnelleres und bereinigteres Erlebnis zu schaffen. Leider ist deine aktuelle iOS-Version mit einigen dieser Verbesserungen nicht kompatibel und wird daher nicht mehr unterstützt.\nWir empfehlen dir die Aktualisierung deines Betriebssystems um Element weiterhin vollumfänglich zu nutzen."; +"version_check_modal_subtitle_supported" = "Wir haben daran gearbeitet %@ zu verbessern um ein schnelleres und bereinigteres Erlebnis zu schaffen. Leider ist deine aktuelle iOS-Version mit einigen dieser Verbesserungen nicht kompatibel und wird daher nicht mehr unterstützt werden.\nWir empfehlen dir die Aktualisierung deines Betriebssystems um %@ weiterhin vollumfänglich zu nutzen."; +"version_check_modal_subtitle_deprecated" = "Wir haben daran gearbeitet %@ zu verbessern um ein schnelleres und bereinigteres Erlebnis zu schaffen. Leider ist deine aktuelle iOS-Version mit einigen dieser Verbesserungen nicht kompatibel und wird daher nicht mehr unterstützt.\nWir empfehlen dir die Aktualisierung deines Betriebssystems um %@ weiterhin vollumfänglich zu nutzen."; "version_check_modal_title_deprecated" = "Wir unterstützen iOS %@ nicht mehr"; "settings_show_url_previews_description" = "Link-Vorschauen werden nur in unverschlüsselten Räumen angezeigt."; -"settings_show_url_previews" = "Link-Vorschau anzeigen"; +"settings_show_url_previews" = "Website-Vorschau anzeigen"; "settings_sending_media" = "FOTOS UND VIDEOS VERSENDEN"; "version_check_modal_title_supported" = "Wir stellen die Unterstützung für iOS %@ ein"; -"version_check_banner_subtitle_deprecated" = "Element wird für iOS %@ nicht weiter unterstützt. Um Element weiterhin vollumfänglich zu nutzen, empfehlen wir dir die Aktualisierung deiner iOS-Version."; +"version_check_banner_subtitle_deprecated" = "%@ wird für iOS %@ nicht weiter unterstützt. Um %@ weiterhin vollumfänglich zu nutzen, empfehlen wir dir die Aktualisierung deiner iOS-Version."; "settings_default" = "Standardbenachrichtigungen"; +"spaces_no_member_found_detail" = "Suchst du eine Person, die nicht Teil von %@ ist? Vorerst kannst du sie mit Web oder Desktop einladen."; +"spaces_no_room_found_detail" = "Einige Ergebnisse könnten versteckt sein, weil sie privat sind und eine Einladung benötigen."; +"spaces_empty_space_detail" = "Einige Räume könnten versteckt sein, weil sie privat sind und eine Einladung benötigen."; +"done" = "Fertig"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "Avatar"; +"spaces_coming_soon_detail" = "Diese Funktion wurde hier noch nicht eingebaut, kommt aber bald. So lange kannst du dafür Element am Computer nutzen."; +"spaces_invites_coming_soon_title" = "Einladungen sind bald verfügbar"; +"spaces_add_rooms_coming_soon_title" = "Räume hinzufügen ist bald verfügbar"; +"spaces_no_result_found_title" = "Keine Ergebnisse gefunden"; +"spaces_suggested_room" = "Vorgeschlagen"; +"leave_space_message_admin_warning" = "Du bist Administrator in diesem Space, stelle vor dem Verlassen sicher, dass du die Administrator-Rechte auf ein anderes Mitglied übertragen hast."; +"leave_space_message" = "Bist du dir sicher, dass du %@ verlassen möchtest? Möchtest du außerdem alle Räume und Spaces in diesem Space verlassen?"; +"leave_space_title" = "%@ verlassen"; +"space_avatar_view_accessibility_hint" = "Space-Avatar ändern"; +"space_public_join_rule" = "Öffentlicher Space"; +"space_private_join_rule" = "Privater Space"; +"space_participants_action_ban" = "Aus diesem Space verbannen"; +"space_participants_action_remove" = "Aus diesem Space entfernen"; +"spaces_coming_soon_title" = "Bald verfügbar"; +"spaces_empty_space_title" = "Dieser Space hat (noch) keine Räume"; +"spaces_explore_rooms" = "Räume erkunden"; +"leave_space_and_all_rooms_action" = "Alle Räume und Spaces verlassen"; +"leave_space_only_action" = "Keine Räume verlassen"; +"spaces_left_panel_title" = "Spaces"; +"room_recents_suggested_rooms_section" = "VORGESCHLAGENE RÄUME"; +"spaces_home_space_title" = "Start"; diff --git a/Riot/Assets/et.lproj/Vector.strings b/Riot/Assets/et.lproj/Vector.strings index 2c726be32..da076b099 100644 --- a/Riot/Assets/et.lproj/Vector.strings +++ b/Riot/Assets/et.lproj/Vector.strings @@ -1408,6 +1408,38 @@ "settings_notifications" = "TEAVITUSED"; "settings_confirm_media_size_description" = "Kui see valik on kasutusel, siis palume sul kinnitada saadetavate piltide ja videote suurused."; "settings_show_url_previews_description" = "Eelvaateid saame kuvada vaid krüptimata jututubades."; -"settings_show_url_previews" = "Näita sisus urlide eelvaateid"; +"settings_show_url_previews" = "Näita sisus veebilehtede eelvaateid"; "settings_confirm_media_size" = "Enne saatmist kinnita meedia mõõdud"; "settings_sending_media" = "SAADAN PILTE JA VIDEOSID"; +"space_avatar_view_accessibility_hint" = "Muuda kogukonnakeskuse tunnuspilti"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "tunnuspilt"; +"space_public_join_rule" = "Avalik kogukond"; +"space_private_join_rule" = "Privaatne kogukond"; +"space_participants_action_ban" = "Sea selles kogukonnakeskus suhtluskeeld"; +"space_participants_action_remove" = "Eemalda sellest kogukonnakeskusest"; +"spaces_coming_soon_detail" = "See funktsionaalsus pole siin rakenduses hetkel veel saadaval, aga üsna varsti saab olema. Seni saad sa seda toimingut teha Element'i töölauarakenduses."; +"spaces_invites_coming_soon_title" = "Varsti lisandub kutsete saatmine"; +"spaces_add_rooms_coming_soon_title" = "Varsti on jututubade lisamine võimalik"; +"spaces_coming_soon_title" = "Mõne aja pärast on meil uuendusi"; +"spaces_no_member_found_detail" = "Kas otsid kedagi, kes ei ole %@ kogukonna liige? Seni kuni me iOS rakendust arendame, saade neile kutse meie veebirakendusest või töölauarakendusest."; +"spaces_no_room_found_detail" = "Kuna mõned otsingutulemused on privaatsed ja nad seega võivad olla varjatud ning sa vajad liitumiseks kutset."; +"spaces_no_result_found_title" = "Mitte midagi ei leidu"; +"spaces_empty_space_detail" = "Kuna mõned jututoad on privaatsed ja nad seega võivad olla varjatud ning sa vajad liitumiseks kutset."; +"spaces_empty_space_title" = "Selles kogukonnakeskuses pole veel jututube"; +"space_tag" = "kogukonnakeskus"; +"spaces_suggested_room" = "Soovitatud"; +"spaces_explore_rooms" = "Uuri jututubasid"; +"leave_space_and_all_rooms_action" = "Lahku kõikidest jututubadest ja kogukondadest"; +"leave_space_only_action" = "Ära lahku ühestki jututoast"; +"leave_space_message_admin_warning" = "Sa oled selle kogukonnakeskuse haldaja. Enne oma lahkumist palun lisa siia veel vähemalt üks uus haldaja."; +"leave_space_message" = "Kas sa oled kindel, et soovid lahkuda %@ kogukonnakeskusest? Kas sa samaga soovid lahkuda ka kõikidest jututubadest ja teistest kogukonnakeskustest, mis sinna kuuluvad?"; +"leave_space_title" = "Lahku %@ kogukonnast"; +"spaces_left_panel_title" = "Kogukonnakeskused"; +"spaces_home_space_title" = "Avaleht"; +"settings_links" = "LINGID"; +"room_recents_suggested_rooms_section" = "SOOVITATUD JUTUTOAD"; +"done" = "Valmis"; +"open" = "Ava"; diff --git a/Riot/Assets/hu.lproj/Vector.strings b/Riot/Assets/hu.lproj/Vector.strings index 1de86d9ea..d18f8a407 100644 --- a/Riot/Assets/hu.lproj/Vector.strings +++ b/Riot/Assets/hu.lproj/Vector.strings @@ -1474,3 +1474,35 @@ "settings_confirm_media_size_description" = "Ha ez be van kapcsolva, akkor küldésnél ki tudod választani a kép és videó méretét."; "settings_confirm_media_size" = "Méret megerősítése küldésnél"; "settings_sending_media" = "KÉP ÉS VIDEÓ KÜLDÉSE"; +"space_avatar_view_accessibility_hint" = "Tér profilkép megváltoztatása"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "profilkép"; +"space_public_join_rule" = "Nyilvános Tér"; +"space_private_join_rule" = "Privát tér"; +"space_participants_action_ban" = "Kitiltás a térről"; +"space_participants_action_remove" = "Eltávolítás a térről"; +"spaces_coming_soon_detail" = "Ez a lehetőség még nincs meg, de fejlesztés alatt van. Egyenlőre a számítógépeden Elementtel tudod ezt megtenni."; +"spaces_invites_coming_soon_title" = "Meghívók küldése hamarosan érkezik"; +"spaces_add_rooms_coming_soon_title" = "Szobák hozzáadása hamarosan érkezik"; +"spaces_coming_soon_title" = "Hamarosan"; +"spaces_no_member_found_detail" = "Keresel valakit aki nincs itt: %@? Egyenlőre webes és asztali klienssel tudod meghívni őket."; +"spaces_no_room_found_detail" = "Néhány találat lehet rejtett, mert privát és meghívóra van szükséged a belépéshez."; +"spaces_no_result_found_title" = "Nincs találat"; +"spaces_empty_space_detail" = "Néhány szoba lehet rejtett, mert privát és meghívóra van szükséged."; +"spaces_empty_space_title" = "Ezen a Téren nincsenek szobák (még)"; +"space_tag" = "tér"; +"spaces_suggested_room" = "Javaslat"; +"spaces_explore_rooms" = "Szobák felderítése"; +"leave_space_and_all_rooms_action" = "Minden szoba és tér elhagyása"; +"leave_space_only_action" = "Ne lépjen ki egy szobából sem"; +"leave_space_message_admin_warning" = "Most te vagy a tér adminisztrátora, bizonyosodj meg arról, hogy kineveztél mást adminisztrátornak mielőtt elhagyod."; +"leave_space_message" = "Biztos, hogy elhagyod ezt: %@? Ezen a téren lévő minden szobából és térből kilépsz?"; +"leave_space_title" = "Elhagy: %@"; +"spaces_left_panel_title" = "Terek"; +"spaces_home_space_title" = "Kezdőképernyő"; +"settings_links" = "HIVATKOZÁSOK"; +"room_recents_suggested_rooms_section" = "JAVASOLT SZOBÁK"; +"done" = "Kész"; +"open" = "Megnyitás"; diff --git a/Riot/Assets/it.lproj/Vector.strings b/Riot/Assets/it.lproj/Vector.strings index 5cb192ab0..70d0cad7a 100644 --- a/Riot/Assets/it.lproj/Vector.strings +++ b/Riot/Assets/it.lproj/Vector.strings @@ -78,7 +78,7 @@ "sending" = "Inviando"; "auth_submit" = "Invia"; "auth_login_single_sign_on" = "Accedi"; -"auth_untrusted_id_server" = "L'affidabilità dell'Identity Server non è stata accertata"; +"auth_untrusted_id_server" = "L'affidabilità del server d'identità non è stata accertata"; "auth_password_dont_match" = "Le password non corrispondono"; "auth_username_in_use" = "Nome utente in uso"; "auth_email_not_found" = "Invio dell'email fallito: Questo indirizzo email non è stato trovato"; @@ -288,7 +288,7 @@ "settings_report_bug" = "Segnala errore"; "settings_clear_cache" = "Elimina cache"; "settings_config_home_server" = "L'Home Server è %@"; -"settings_config_identity_server" = "L'Identity Server è %@"; +"settings_config_identity_server" = "Il server d'identità è %@"; "settings_config_user_id" = "Connesso come %@"; "settings_user_settings" = "IMPOSTAZIONI UTENTE"; "settings_notifications_settings" = "IMPOSTAZIONI NOTIFICHE"; @@ -570,7 +570,7 @@ "gdpr_consent_not_given_alert_message" = "Per continuare ad usare l'Homeserver %@ devi leggere e accettare i termini e le condizioni di utilizzo."; "gdpr_consent_not_given_alert_review_now_action" = "Leggi adesso"; "deactivate_account_title" = "Disattiva account"; -"deactivate_account_informations_part1" = "Questo renderà il tuo account inutilizzabile per sempre. Non ci potrai più accedere e nessuno potrà riutilizzare questo ID utente. Il tuo account abbandonerà tutte le stanze a cui partecipa e i dettagli del tuo account saranno rimossi dall'Identity Server. "; +"deactivate_account_informations_part1" = "Questo renderà il tuo account inutilizzabile per sempre. Non ci potrai più accedere e nessuno potrà riutilizzare questo ID utente. Il tuo account abbandonerà tutte le stanze a cui partecipa e i dettagli del tuo account saranno rimossi dal server d'identità. "; "deactivate_account_informations_part2_emphasize" = "Questa azione è irreversibile."; "deactivate_account_informations_part3" = "\n\nDisattivare il tuo account "; "deactivate_account_informations_part4_emphasize" = "non eliminerà in modo automatico i messaggi che hai inviato. "; @@ -651,7 +651,7 @@ "sign_out_key_backup_in_progress_alert_discard_key_backup_action" = "Non voglio i miei messaggi cifrati"; "sign_out_key_backup_in_progress_alert_cancel_action" = "Attendo"; "close" = "Chiudi"; -"auth_forgot_password_error_no_configured_identity_server" = "Non è stato configurato alcun Identity: aggiungine uno per poter reimpostare la password."; +"auth_forgot_password_error_no_configured_identity_server" = "Non è stato configurato alcun server d'identità: aggiungine uno per ripristinare la password."; "auth_softlogout_signed_out" = "Sei uscito"; "auth_softlogout_sign_in" = "Accedi"; "auth_softlogout_reason" = "L'amministratore dell'Home Server (%1$@) ti ha disconnesso dal tuo account %2$@ (%3$@)."; @@ -663,8 +663,8 @@ "auth_softlogout_clear_data_sign_out_title" = "Sei sicuro?"; "auth_softlogout_clear_data_sign_out_msg" = "Sei sicuro di voler cancellare tutti i dati memorizzati su questo dispositivo? Accedi di nuovo per gestire dati e messaggi del tuo account."; "auth_softlogout_clear_data_sign_out" = "Disconnessione"; -"room_creation_error_invite_user_by_email_without_identity_server" = "Non è stato configuato nessun Identity Server e quindi non è possibile aggiungere partecipanti con un'e-mail."; -"room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Non è stato configurato alcun Identity Server, quindi non è possibile avviare una chat con qualcuno tramite e-mail."; +"room_creation_error_invite_user_by_email_without_identity_server" = "Non è stato configuato alcun server d'identità e quindi non puoi aggiungere partecipanti con un'email."; +"room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Non è stato configurato alcun server d'identità, quindi non è possibile iniziare una chat con qualcuno tramite email."; "room_event_action_reply" = "Rispondi"; "room_event_action_edit" = "Modifica"; "room_event_action_reaction_show_all" = "Mostra tutto"; @@ -820,20 +820,20 @@ "auth_add_email_message_2" = "Imposta un'email per il ripristino dell'account in caso di problemi e, se vuoi, anche per farti trovare da chi conosce quell'indirizzo email."; "auth_add_phone_message_2" = "Aggiungi un numero di telefono se vuoi farti trovare da chi lo conosce."; "auth_add_email_phone_message_2" = "Imposta un'email per il ripristino dell'account in caso di problemi. Email e telefono potranno essere usati anche per farti trovare dagli altri utenti."; -"auth_email_is_required" = "Non è stato configurato alcun Identity Server perciò non puoi aggiungere un indirizzo email utile a ripristinare la password in caso di problemi."; -"auth_phone_is_required" = "Non è stato configurato alcun Identity Server perciò non puoi aggiungere un numero di telefono utile a ripristinare la password in caso di problemi."; -"auth_reset_password_error_is_required" = "Non è stato configurato alcun Identity Server: aggiungine uno nelle opzioni server per poter ripristinare la password."; -"contacts_address_book_no_identity_server" = "Nessun Identity Server configurato"; +"auth_email_is_required" = "Non è stato configurato alcun server d'identità, perciò non puoi aggiungere un indirizzo email per ripristinare la tua password in futuro."; +"auth_phone_is_required" = "Non è stato configurato alcun server d'identità, perciò non puoi aggiungere un numero di telefono per ripristinare la tua password in futuro."; +"auth_reset_password_error_is_required" = "Non è stato configurato alcun server d'identità: aggiungine uno nelle opzioni server per ripristinare la password."; +"contacts_address_book_no_identity_server" = "Nessun server d'identità configurato"; "settings_discovery_settings" = "SCOPRI"; -"settings_identity_server_settings" = "IDENTITY SERVER"; +"settings_identity_server_settings" = "SERVER D'IDENTITÀ"; "settings_three_pids_management_information_part1" = "Configura gli indirizzi email o numeri di telefono che puoi usare per accedere o per ripristinare l'account in caso di problemi. Controlla chi può trovarti in "; "settings_three_pids_management_information_part2" = "Scopri"; "settings_three_pids_management_information_part3" = "."; "settings_calls_stun_server_fallback_button" = "Permetti chiamate dal Server di appoggio"; "settings_calls_stun_server_fallback_description" = "Se il tuo Home Server non ne ha un proprio Server d'appoggio verrà usato %@ (il Server d'appoggio verrà a conoscenza del tuo indirizzo IP durante le chiamate)."; "settings_devices_description" = "Il nome pubblico di una sessione è visibile alle persone con cui comunichi"; -"settings_discovery_no_identity_server" = "In questo momento non stai usando alcun Identity Server. Per trovare e farti trovare dagli altri utenti, configurane uno qua sotto."; -"settings_discovery_terms_not_signed" = "Accetta i termini di servizio dell'Identity Server (%@) per permettere ad altri utenti di trovarti tramite la tua email o numero di telefono."; +"settings_discovery_no_identity_server" = "In questo momento non stai usando alcun server d'identità. Per trovare e farti trovare dagli altri utenti, configurane uno qua sotto."; +"settings_discovery_terms_not_signed" = "Accetta i termini di servizio del server d'identità (%@) per permettere ad altri utenti di trovarti tramite la tua email o numero di telefono."; "settings_discovery_three_pids_management_information_part1" = "Configura gli indirizzi email o numeri di telefono con cui gli altri utenti potranno trovarti e invitarti nelle stanze. Aggiungi o rimuovi indirizzi email o numeri di telefono da questa lista in "; "settings_discovery_three_pids_management_information_part2" = "Impostazioni utente"; "settings_discovery_three_pids_management_information_part3" = "."; @@ -846,29 +846,29 @@ "settings_discovery_three_pid_details_revoke_action" = "Cancella"; "settings_discovery_three_pid_details_cancel_email_validation_action" = "Annulla la validazione dell'email"; "settings_discovery_three_pid_details_enter_sms_code_action" = "Inserisci il codice d'attivazione SMS"; -"settings_identity_server_description" = "Utilizzando l'Identity Server impostato potrai trovare e farti trovare dai contatti esistenti."; -"settings_identity_server_no_is" = "Non è stato configurato alcun Identity Server"; -"settings_identity_server_no_is_description" = "Non stai usando alcun Identity Server. Selezionane uno per trovare e farti trovare dai contatti esistenti."; +"settings_identity_server_description" = "Utilizzando il server d'identità impostato potrai trovare e farti trovare dai contatti esistenti."; +"settings_identity_server_no_is" = "Nessun server d'identità configurato"; +"settings_identity_server_no_is_description" = "Non stai usando alcun server d'identità. Selezionane uno per trovare e farti trovare dai contatti esistenti."; // Identity server settings -"identity_server_settings_title" = "Identity Server"; +"identity_server_settings_title" = "Server d'identità"; "identity_server_settings_description" = "Per trovare e farti trovare dai tuoi contatti stai usando %@."; -"identity_server_settings_no_is_description" = "Non stai usando alcun Identity Server. Selezionane uno per trovare e farti trovare dai contatti esistenti."; -"identity_server_settings_place_holder" = "Inserisci un Identity Server"; +"identity_server_settings_no_is_description" = "Non stai usando alcun server d'identità. Selezionane uno per trovare e farti trovare dai contatti esistenti."; +"identity_server_settings_place_holder" = "Inserisci un server d'identità"; "identity_server_settings_add" = "Aggiungi"; "identity_server_settings_change" = "Cambia"; -"identity_server_settings_disconnect_info" = "Se ti disconnetti dall'Identity Server gli altri utenti non potranno trovarti e tu non potrai invitarne di nuovi per email o telefono."; +"identity_server_settings_disconnect_info" = "Se ti disconnetti dal server d'identità gli altri utenti non potranno trovarti e tu non potrai invitarne di nuovi per email o telefono."; "identity_server_settings_disconnect" = "Disconnetti"; -"identity_server_settings_alert_no_terms_title" = "L'Identity Server non ha fornito dei termini di servizio"; -"identity_server_settings_alert_no_terms" = "L'Identity Server che hai scelto non ha freso noti i propri termini di servizio. Continua solo se ti fidi."; -"identity_server_settings_alert_change_title" = "Cambia Identity Server"; -"identity_server_settings_alert_change" = "Vuoi scollegarti dall'Identity Server %1$@ e connetterti invece a %2$@?"; -"identity_server_settings_alert_disconnect_title" = "Scollega l'Identity Server"; -"identity_server_settings_alert_disconnect" = "Vuoi scollegarti dall'Identity Server %@?"; +"identity_server_settings_alert_no_terms_title" = "Il server d'identità non ha fornito dei termini di servizio"; +"identity_server_settings_alert_no_terms" = "Il server d'identità che hai scelto non ha reso noti i propri termini di servizio. Continua solo se ti fidi del proprietario del server."; +"identity_server_settings_alert_change_title" = "Cambia server d'identità"; +"identity_server_settings_alert_change" = "Vuoi scollegarti dal server d'identità %1$@ e connetterti invece a %2$@?"; +"identity_server_settings_alert_disconnect_title" = "Scollega il server d'identità"; +"identity_server_settings_alert_disconnect" = "Vuoi scollegarti dal server d'identità %@?"; "identity_server_settings_alert_disconnect_button" = "Scollega"; -"identity_server_settings_alert_disconnect_still_sharing_3pid" = "L'Identity Server %@ può ancora condividere le tue informazioni personali.\n\nTi raccomandiamo di rimuovere tutti i tuoi indirizzi email e numeri di telefono dall'Identity Server prima di scollegarlo."; +"identity_server_settings_alert_disconnect_still_sharing_3pid" = "Il server d'identità %@ può ancora condividere le tue informazioni personali.\n\nTi raccomandiamo di rimuovere tutti i tuoi indirizzi email e numeri di telefono dal server d'identità prima di scollegarlo."; "identity_server_settings_alert_disconnect_still_sharing_3pid_button" = "Scollegati comunque"; -"identity_server_settings_alert_error_terms_not_accepted" = "Devi accettare i termini di servizio di %@ per poterlo impostare come tuo Identity Server."; -"identity_server_settings_alert_error_invalid_identity_server" = "%@ non é un Identity Server valido."; +"identity_server_settings_alert_error_terms_not_accepted" = "Devi accettare i termini di servizio di %@ per poterlo impostare come tuo server d'identità."; +"identity_server_settings_alert_error_invalid_identity_server" = "%@ non è un server d'identità valido."; "call_no_stun_server_error_title" = "Chiamata fallita a causa di una configurazione errata del server"; "call_no_stun_server_error_message_1" = "Chiedi all'amministratore del tuo Homeserver %@ di configurare un server TURN in modo che le chiamate funzionino come si deve."; "call_no_stun_server_error_message_2" = "In alternativa puoi provare ad usare il server pubblico a %@, ma non é molto affidabile e il tuo indirizzo IP verrà condiviso con tale server. Puoi gestire questa cosa nelle Impostazioni"; @@ -878,9 +878,9 @@ "service_terms_modal_description_for_identity_server_2" = "Fatti trovare attraverso il tuo numero di telefono e la tua email"; // Service terms - Variant for identity server when displayed out of a context "service_terms_modal_title_identity_server" = "Trova contatti"; -"service_terms_modal_message_identity_server" = "Accetta i Termini di servizio dell'Identity Server (%@) per trovare altri contatti."; +"service_terms_modal_message_identity_server" = "Accetta i termini di servizio del server d'identità (%@) per trovare altri contatti."; // Generic errors -"error_invite_3pid_with_no_identity_server" = "Aggiungi un Identity Server nelle Impostazioni per poter invitare utenti tramite email."; +"error_invite_3pid_with_no_identity_server" = "Aggiungi un server d'identità nelle impostazioni per poter invitare utenti tramite email."; "settings_add_3pid_password_title_email" = "Aggiungi indirizzo email"; "settings_add_3pid_password_title_msidsn" = "Aggiungi numero di telefono"; "settings_add_3pid_password_message" = "Per continuare, inserisci la tua password"; @@ -1441,7 +1441,39 @@ "settings_default" = "Notifiche predefinite"; "settings_notifications" = "NOTIFICHE"; "settings_show_url_previews_description" = "Le anteprime verranno mostrate solo in stanze non cifrate."; -"settings_show_url_previews" = "Mostra anteprime degli URL"; +"settings_show_url_previews" = "Mostra anteprima del sito"; "settings_confirm_media_size_description" = "Quando attivo, ti verrà chiesto di confermare con che dimensione verranno inviati immagini e video."; "settings_confirm_media_size" = "Conferma dimensione durante l'invio"; "settings_sending_media" = "INVIO DI IMMAGINI E VIDEO"; +"space_avatar_view_accessibility_hint" = "Cambia avatar dello spazio"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "avatar"; +"space_public_join_rule" = "Spazio pubblico"; +"space_private_join_rule" = "Spazio privato"; +"space_participants_action_ban" = "Bandisci da questo spazio"; +"space_participants_action_remove" = "Rimuovi da questo spazio"; +"spaces_coming_soon_detail" = "Questa funzionalità non è stata implementata qui, ma è in arrivo. Per adesso, puoi farlo con Element sul tuo computer."; +"spaces_invites_coming_soon_title" = "Inviti in arrivo"; +"spaces_add_rooms_coming_soon_title" = "Aggiunta di stanze in arrivo"; +"spaces_coming_soon_title" = "Prossimamente"; +"spaces_no_member_found_detail" = "Stai cercando qualcuno non in %@? Per adesso, puoi invitarlo su web o desktop."; +"spaces_no_room_found_detail" = "Alcuni risultati potrebbero essere nascosti perché sono privati e ti serve un invito per entrarci."; +"spaces_no_result_found_title" = "Nessun risultato trovato"; +"spaces_empty_space_detail" = "Alcune stanze potrebbero essere nascoste perché sono private e ti serve un invito."; +"spaces_empty_space_title" = "In questo spazio non ci sono (ancora) stanze"; +"space_tag" = "spazio"; +"spaces_suggested_room" = "Consigliata"; +"spaces_explore_rooms" = "Esplora le stanze"; +"leave_space_and_all_rooms_action" = "Esci da tutte le stanze e gli spazi"; +"leave_space_only_action" = "Non uscire da alcuna stanza"; +"leave_space_message_admin_warning" = "Sei l'amministratore di questo spazio, assicurati di aver nominato un altro amministratore prima di uscire."; +"leave_space_message" = "Vuoi davvero abbandonare %@? Vuoi anche uscire da tutte le stanze e gli spazi di questo spazio?"; +"leave_space_title" = "Esci da %@"; +"spaces_left_panel_title" = "Spazi"; +"spaces_home_space_title" = "Schermata iniziale"; +"settings_links" = "COLLEGAMENTI"; +"room_recents_suggested_rooms_section" = "STANZE CONSIGLIATE"; +"done" = "Fatto"; +"open" = "Apri"; diff --git a/Riot/Assets/nl.lproj/Vector.strings b/Riot/Assets/nl.lproj/Vector.strings index 3e295f531..4d8f5d3ba 100644 --- a/Riot/Assets/nl.lproj/Vector.strings +++ b/Riot/Assets/nl.lproj/Vector.strings @@ -180,7 +180,7 @@ "room_participants_action_section_other" = "Overige"; "room_participants_action_invite" = "Uitnodigen"; "room_participants_action_leave" = "Deze kamer verlaten"; -"room_participants_action_remove" = "Verwijderen uit deze kamer"; +"room_participants_action_remove" = "Uit deze kamer verwijderen"; "room_participants_action_ban" = "Verbannen uit deze kamer"; "room_participants_action_unban" = "Ontbannen"; "room_participants_action_ignore" = "Alle berichten van deze gebruiker verbergen"; @@ -1570,7 +1570,39 @@ "version_check_banner_title_supported" = "We stoppen de ondersteuning voor iOS %@"; "settings_mentions_and_keywords_encryption_notice" = "U krijgt geen meldingen voor vermeldingen en trefwoorden in versleutelde kamers op mobiele telefoons."; "settings_show_url_previews_description" = "Voorvertoningen worden alleen getoond in niet versleutelde kamers."; -"settings_show_url_previews" = "URL-voorvertoningen tonen"; +"settings_show_url_previews" = "Website-voorvertoning tonen"; "settings_confirm_media_size_description" = "Wanneer dit aan staat wordt u elke keer gevraagd welk formaat afbeeldingen en video's u wilt versturen."; "settings_confirm_media_size" = "Bevestig afmeting bij versturen"; "settings_sending_media" = "AFBEELDINGEN EN VIDEO'S VERSTUREN"; +"space_avatar_view_accessibility_hint" = "Ruimte-afbeelding wijzigen"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "afbeelding"; +"space_public_join_rule" = "Publieke ruimte"; +"space_private_join_rule" = "Privéruimte"; +"space_participants_action_ban" = "Uit deze ruimte verbannen"; +"space_participants_action_remove" = "Uit deze kamer verwijderen"; +"spaces_coming_soon_detail" = "Deze functies is nog niet klaar, maar er wordt aan gewerkt. Voor nu kan u dit wel doen met Element via uw computer."; +"spaces_invites_coming_soon_title" = "Uitnodigen komt binnenkort"; +"spaces_add_rooms_coming_soon_title" = "Kamers toevoegen komt binnenkort"; +"spaces_coming_soon_title" = "Komt binnenkort"; +"spaces_no_member_found_detail" = "Zoekt u iemand niet in %@? Voorlopig kan u alleen een uitnodiging sturen via web of desktop."; +"spaces_no_room_found_detail" = "Sommige resultaten kunnen verborgen zijn doordat ze privé zijn. U heeft dan een uitnodiging nodig om deel te nemen."; +"spaces_empty_space_detail" = "Sommige kamers kunnen verborgen zijn doordat ze privé zijn. U heeft dan een uitnodiging nodig om deel te nemen."; +"spaces_no_result_found_title" = "Geen resultaten gevonden"; +"spaces_empty_space_title" = "Deze ruimte heeft (nog) geen kamers"; +"space_tag" = "ruimte"; +"spaces_explore_rooms" = "Kamers ontdekken"; +"leave_space_and_all_rooms_action" = "Alle kamers en ruimtes verlaten"; +"leave_space_only_action" = "Geen kamers verlaten"; +"leave_space_message_admin_warning" = "U bent beheerder van deze ruimte, controleer of u de beheerrechten heeft overgedragen aan een andere deelnemer voordat u vertrekt."; +"leave_space_message" = "Weet u zeker dat u %@ wilt verlaten? Wilt u ook alle kamers en ruimtes in deze ruimte verlaten?"; +"leave_space_title" = "%@ verlaten"; +"spaces_left_panel_title" = "Ruimtes"; +"spaces_home_space_title" = "Thuis"; +"settings_links" = "LINKS"; +"room_recents_suggested_rooms_section" = "AANBEVOLEN KAMERS"; +"spaces_suggested_room" = "Aanbevolen"; +"done" = "Klaar"; +"open" = "Openen"; diff --git a/Riot/Assets/pt_BR.lproj/Vector.strings b/Riot/Assets/pt_BR.lproj/Vector.strings index 5903a1390..a2d68de2b 100644 --- a/Riot/Assets/pt_BR.lproj/Vector.strings +++ b/Riot/Assets/pt_BR.lproj/Vector.strings @@ -186,7 +186,7 @@ "room_participants_action_unban" = "Desbanir"; "room_participants_action_ignore" = "Esconder todas as mensagens desta(e) usuária(o)"; "room_participants_action_unignore" = "Mostrar todas as mensagens desta(e) usuária(o)"; -"room_participants_invite_malformed_id" = "ID malformado. Deveria ser um endereço de email ou uma ID Matrix como '@partlocal:dominio'"; +"room_participants_invite_malformed_id" = "ID malformada. Deveria ser um endereço de email ou uma ID Matrix como '@partlocal:dominio'"; "room_participants_action_set_default_power_level" = "Resettar para usuária(o) normal"; "room_participants_action_set_moderator" = "Fazer moderador(a)"; "room_participants_action_set_admin" = "Fazer admin"; @@ -1438,7 +1438,39 @@ "settings_default" = "Notificações Default"; "settings_notifications" = "NOTIFICAÇÕES"; "settings_show_url_previews_description" = "Previsualizações vão somente ser mostradas em salas não-encriptadas."; -"settings_show_url_previews" = "Mostrar previsualizações de URL emlinha"; +"settings_show_url_previews" = "Mostrar previsualização de website"; "settings_confirm_media_size_description" = "Quanto isto está ligado, você vai ser pedido para confirmar que tamanho imagens e vídeos vão ser enviados como."; "settings_confirm_media_size" = "Confirmar tamanho quando enviando"; "settings_sending_media" = "ENVIANDO IMAGENS E VÍDEOS"; +"space_avatar_view_accessibility_hint" = "Mudar avatar de espaço"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "avatar"; +"space_public_join_rule" = "Espaço público"; +"space_private_join_rule" = "Espaço privado"; +"space_participants_action_ban" = "Banir deste espaço"; +"space_participants_action_remove" = "Remover deste espaço"; +"spaces_coming_soon_detail" = "Esta funcionalidade não tem sido implementada ainda, mas está a caminho. Por enquanto, você pode fazer isso com Element em seu computador."; +"spaces_invites_coming_soon_title" = "Convites chegando em breve"; +"spaces_add_rooms_coming_soon_title" = "Adicionar salas chegando em breve"; +"spaces_coming_soon_title" = "Chegando em breve"; +"spaces_no_member_found_detail" = "Procurando por alguém que não está em %@? Por enquanto, você pode convidá-la(o) na web ou desktop."; +"spaces_no_room_found_detail" = "Alguns resultados podem estar escondidos porque eles são privados e você precisa de um convite para se juntar a eles."; +"spaces_no_result_found_title" = "Nenhum resultado encontrado"; +"spaces_empty_space_detail" = "Algumas salas podem estar escondidas porque elas são privadas e você precisa de um convite."; +"spaces_empty_space_title" = "Este espalo não tem nenhuma sala (ainda)"; +"space_tag" = "espaço"; +"spaces_suggested_room" = "Sugeridas"; +"spaces_explore_rooms" = "Explorar salas"; +"leave_space_and_all_rooms_action" = "Sair de todas as salas e espaços"; +"leave_space_only_action" = "Não sair de nenhuma sala"; +"leave_space_message_admin_warning" = "Você é admin deste espaço, assegure que você tem transferido direito de admin a um outro membro antes de sair."; +"leave_space_message" = "Você tem certeza que você quer sair de %@? Você também quer sair de todas as salas e espaços deste espaço?"; +"leave_space_title" = "Sair de %@"; +"spaces_left_panel_title" = "Espaços"; +"spaces_home_space_title" = "Home"; +"settings_links" = "LINKS"; +"room_recents_suggested_rooms_section" = "SALAS SUGERIDAS"; +"done" = "Feito"; +"open" = "Abrir"; diff --git a/Riot/Assets/ru.lproj/Vector.strings b/Riot/Assets/ru.lproj/Vector.strings index 2e231d85a..e46438442 100644 --- a/Riot/Assets/ru.lproj/Vector.strings +++ b/Riot/Assets/ru.lproj/Vector.strings @@ -1455,3 +1455,35 @@ "settings_confirm_media_size" = "Подтверждать размер при отправке"; "settings_confirm_media_size_description" = "Когда эта функция включена, вам будет предложено подтвердить, в каком размере будут отправляться изображения и видео."; "settings_sending_media" = "ОТПРАВКА ИЗОБРАЖЕНИЙ И ВИДЕО"; +"space_participants_action_ban" = "Заблокировать это пространство"; +"space_tag" = "пространство"; +"space_avatar_view_accessibility_hint" = "Изменить аватар пространства"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "аватар"; +"space_public_join_rule" = "Публичное пространство"; +"space_private_join_rule" = "Приватное пространство"; +"space_participants_action_remove" = "Удалить из этого пространства"; +"spaces_coming_soon_detail" = "Эта функция еще не реализована здесь, но она уже на подходе. Пока вы можете сделать это с помощью Element на вашем компьютере."; +"spaces_invites_coming_soon_title" = "Приглашения скоро будут"; +"spaces_add_rooms_coming_soon_title" = "Добавление комнат скоро будет"; +"spaces_coming_soon_title" = "Скоро будет"; +"spaces_no_member_found_detail" = "Ищете человека, которого нет в %@? Пока что вы можете пригласить их в web версии или в настольной версии."; +"spaces_no_room_found_detail" = "Некоторые результаты могут быть скрыты, потому что они приватные, и вам нужно приглашение."; +"spaces_no_result_found_title" = "Результаты не найдены"; +"spaces_empty_space_detail" = "Некоторые комнаты могут быть скрыты, потому что они приватные, и вам нужно приглашение."; +"spaces_empty_space_title" = "В этом пространстве нет комнат (пока)"; +"room_recents_suggested_rooms_section" = "РЕКОМЕНДУЕМЫЕ КОМНАТЫ"; +"spaces_suggested_room" = "Рекомендуется"; +"spaces_explore_rooms" = "Список комнат"; +"leave_space_and_all_rooms_action" = "Покинуть все комнаты и пространства"; +"leave_space_only_action" = "Не покидать ни одну комнату"; +"leave_space_message_admin_warning" = "Вы являетесь администратором этого пространства, перед уходом убедитесь, что передали права администратора другому пользователю."; +"leave_space_message" = "Вы уверены, что хотите покинуть %@? Вы также хотите покинуть все комнаты и пространства этого пространства?"; +"leave_space_title" = "Покинуть %@"; +"spaces_left_panel_title" = "Пространства"; +"spaces_home_space_title" = "Главная"; +"settings_links" = "ССЫЛКИ"; +"done" = "Готово"; +"open" = "Открыть"; diff --git a/Riot/Assets/sq.lproj/Vector.strings b/Riot/Assets/sq.lproj/Vector.strings index db7dee85a..0f1043ea5 100644 --- a/Riot/Assets/sq.lproj/Vector.strings +++ b/Riot/Assets/sq.lproj/Vector.strings @@ -1458,7 +1458,37 @@ "settings_default" = "Njoftime Parazgjedhje"; "settings_notifications" = "NJOFTIME"; "settings_show_url_previews_description" = "Paraparjet do të shfaqen vetëm në dhoma të pafshehtëzuara."; -"settings_show_url_previews" = "Shfaq paraparje URL-sh brendazi"; +"settings_show_url_previews" = "Shfaq paraparje sajti"; "settings_confirm_media_size_description" = "Kur kjo është aktive, do t’ju kërkohet të ripohoni se në ç’madhësi të dërgohen figurat dhe videot."; "settings_confirm_media_size" = "Ripoho madhësi, kur dërgohet"; "settings_sending_media" = "DËRGIM FIGURASH DHE VIDEOSH"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "avatar"; +"space_avatar_view_accessibility_hint" = "Ndryshoni avatar hapësire"; +"space_public_join_rule" = "Hapësirë publike"; +"space_private_join_rule" = "Hapësirë private"; +"space_participants_action_ban" = "Dëboje prej kësaj hapësire"; +"space_participants_action_remove" = "Hiqe prej kësaj hapësire"; +"spaces_coming_soon_detail" = "Kjo veçori s’është sendërtuar këtu, por po bëhet. Tani për tani, mund ta bëni këtë me Element-in në kompjuterin tuaj."; +"spaces_invites_coming_soon_title" = "Ftesat vijnë së shpejti"; +"spaces_add_rooms_coming_soon_title" = "Shtimi i dhomave vjen së shpejti"; +"spaces_coming_soon_title" = "S’afërmi"; +"spaces_no_member_found_detail" = "Po kërkoni dikë jo te %@? Për tani, mund t’i ftoni në versionin për web, ose për desktop."; +"spaces_no_room_found_detail" = "Disa përfundime mund të jenë të fshehura, ngaqë janë private dhe ju duhet një ftesë për to."; +"spaces_no_result_found_title" = "S’u gjetën përfundime"; +"spaces_empty_space_detail" = "Disa dhoma mund të jenë të fshehura, ngaqë janë private dhe juve ju duhet një ftesë."; +"spaces_empty_space_title" = "Kjo hapësirë s’ka (ende) dhoma"; +"space_tag" = "hapësirë"; +"spaces_suggested_room" = "Të sugjeruara"; +"spaces_explore_rooms" = "Eksploroni dhoma"; +"leave_space_and_all_rooms_action" = "Braktisi krejt dhomat dhe hapësirat"; +"leave_space_only_action" = "Mos braktis ndonjë dhomë"; +"leave_space_message_admin_warning" = "Jeni përgjegjësi i kësaj hapësire, sigurohuni se e keni shpërngulur të drejtën e përgjegjësit te një tjetër anëtar, përpara se të largoheni."; +"leave_space_message" = "Jeni i sigurt se doni të braktiset %@? Doni të braktisen gjithashtu krejt dhomat dhe nënhapësirat e kësaj hapësire?"; +"leave_space_title" = "Braktise %@"; +"spaces_left_panel_title" = "Hapësira"; +"settings_links" = "LIDHJE"; +"room_recents_suggested_rooms_section" = "DHOMA TË SUGJERUARA"; +"done" = "U bë"; diff --git a/Riot/Assets/uk.lproj/Vector.strings b/Riot/Assets/uk.lproj/Vector.strings index c39b8853a..11988a6b1 100644 --- a/Riot/Assets/uk.lproj/Vector.strings +++ b/Riot/Assets/uk.lproj/Vector.strings @@ -203,7 +203,7 @@ // Chat participants "room_participants_title" = "Учасники"; -"contacts_address_book_permission_denied" = "Ви не дозволили Element отримати доступ до локальних контактів"; +"contacts_address_book_permission_denied" = "Ви не дозволили %@ отримати доступ до локальних контактів"; "contacts_address_book_permission_required" = "Необхідний дозвіл на доступ до локальних контактів"; "contacts_address_book_no_contact" = "Немає локальних контактів"; "contacts_address_book_matrix_users_toggle" = "Тільки користувачі Matrix"; diff --git a/Riot/Assets/zh_Hans.lproj/Vector.strings b/Riot/Assets/zh_Hans.lproj/Vector.strings index 0ad2fcb59..c36ccb9ec 100644 --- a/Riot/Assets/zh_Hans.lproj/Vector.strings +++ b/Riot/Assets/zh_Hans.lproj/Vector.strings @@ -1485,7 +1485,39 @@ "settings_default" = "默认通知"; "settings_notifications" = "通知"; "settings_show_url_previews_description" = "预览只会在未加密的房间里显示。"; -"settings_show_url_previews" = "显示内联 URL 预览"; +"settings_show_url_previews" = "显示网站预览"; "settings_confirm_media_size_description" = "当打开此选项时,你会被要求确认将被发送的图片和视频的大小。"; "settings_confirm_media_size" = "发送时确认大小"; "settings_sending_media" = "发送图片和视频"; +"spaces_add_rooms_coming_soon_title" = "添加聊天室功能即将到来"; +"space_avatar_view_accessibility_hint" = "更改空间头像"; + +// Mark: Avatar + +"space_avatar_view_accessibility_label" = "头像"; +"space_public_join_rule" = "公共空间"; +"space_private_join_rule" = "私密空间"; +"space_participants_action_ban" = "禁止进入这个空间"; +"space_participants_action_remove" = "从这个空间删除"; +"spaces_coming_soon_detail" = "此特性尚未实现,还在开发。现在,您可以在计算机上使用 Element 来体验。"; +"spaces_invites_coming_soon_title" = "邀请即将到来"; +"spaces_coming_soon_title" = "即将到来"; +"spaces_no_member_found_detail" = "寻找不在 %@ 中的某人?现在,你可以通过网页或桌面端邀请他们。"; +"spaces_no_room_found_detail" = "有些结果可能是隐藏的,因为它们是私密的,你需要邀请才能加入它们。"; +"spaces_no_result_found_title" = "未找到结果"; +"spaces_empty_space_detail" = "有些聊天室可能是隐藏的,因为它们是私人的,你需要邀请。"; +"spaces_empty_space_title" = "此空间尚无聊天室"; +"space_tag" = "空间"; +"spaces_suggested_room" = "建议的"; +"spaces_explore_rooms" = "探索聊天室"; +"leave_space_and_all_rooms_action" = "离开所有聊天室和空间"; +"leave_space_only_action" = "不离开任何聊天室"; +"leave_space_message_admin_warning" = "您是此空间的管理员,请确保您在离开前已将管理员权限转移给其他成员。"; +"leave_space_message" = "你确定要离开 %@ 吗?您还想离开这个空间的所有聊天室和空间吗?"; +"leave_space_title" = "离开 %@"; +"spaces_left_panel_title" = "空间"; +"spaces_home_space_title" = "主页"; +"settings_links" = "链接"; +"room_recents_suggested_rooms_section" = "建议的聊天室"; +"done" = "完成"; +"open" = "打开"; diff --git a/Riot/Managers/PushNotification/PushNotificationService.m b/Riot/Managers/PushNotification/PushNotificationService.m index bef062452..5edec7a00 100644 --- a/Riot/Managers/PushNotification/PushNotificationService.m +++ b/Riot/Managers/PushNotification/PushNotificationService.m @@ -577,9 +577,11 @@ Matrix session observer used to detect new opened sessions. dispatch_group_t dispatchGroup = dispatch_group_create(); dispatch_group_enter(dispatchGroup); + session.spaceService.graphUpdateEnabled = NO; // Not continuing in completion block here, because PushKit mandates reporting a new call in the same run loop. // 'handleBackgroundSyncCacheIfRequiredWithCompletion' is processing to-device events synchronously. [session handleBackgroundSyncCacheIfRequiredWithCompletion:^{ + session.spaceService.graphUpdateEnabled = YES; dispatch_group_leave(dispatchGroup); }]; diff --git a/Riot/Modules/Application/LegacyAppDelegate.m b/Riot/Modules/Application/LegacyAppDelegate.m index 1ad7847f8..bce8e618d 100644 --- a/Riot/Modules/Application/LegacyAppDelegate.m +++ b/Riot/Modules/Application/LegacyAppDelegate.m @@ -2264,6 +2264,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni } else { + MXLogDebug(@"[AppDelegate] handleAppState: mainSession.state: %@", [MXTools readableSessionState:mainSession.state]); switch (mainSession.state) { case MXSessionStateClosed: @@ -2316,32 +2317,8 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni return; } - if (mainSession.crypto.crossSigning) - { - // Get the up-to-date cross-signing state - MXWeakify(self); - [mainSession.crypto.crossSigning refreshStateWithSuccess:^(BOOL stateUpdated) { - MXStrongifyAndReturnIfNil(self); - - MXLogDebug(@"[AppDelegate] handleAppState: crossSigning.state: %@", @(mainSession.crypto.crossSigning.state)); - - switch (mainSession.crypto.crossSigning.state) - { - case MXCrossSigningStateCrossSigningExists: - MXLogDebug(@"[AppDelegate] handleAppState: presentVerifyCurrentSessionAlertIfNeededWithSession"); - [self.masterTabBarController presentVerifyCurrentSessionAlertIfNeededWithSession:mainSession]; - break; - case MXCrossSigningStateCanCrossSign: - MXLogDebug(@"[AppDelegate] handleAppState: presentReviewUnverifiedSessionsAlertIfNeededWithSession"); - [self.masterTabBarController presentReviewUnverifiedSessionsAlertIfNeededWithSession:mainSession]; - break; - default: - break; - } - } failure:^(NSError * _Nonnull error) { - MXLogDebug(@"[AppDelegate] handleAppState: crossSigning.state: %@. Error: %@", @(mainSession.crypto.crossSigning.state), error); - }]; - } + MXLogDebug(@"[AppDelegate] handleAppState: Check cross-signing"); + [self checkCrossSigningForSession:mainSession]; // TODO: We should wait that cross-signing screens are done before going further but it seems fine. Those screens // protect each other. @@ -3311,6 +3288,46 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni [callEventsListeners removeObjectForKey:@(mxSession.hash)]; } + +#pragma mark - Cross-signing + +- (void)checkCrossSigningForSession:(MXSession*)mxSession +{ + if ([UIApplication sharedApplication].applicationState != UIApplicationStateActive) + { + MXLogDebug(@"[AppDelegate] checkCrossSigningForSession called while the app is not active. Ignore it."); + return; + } + + if (mxSession.crypto.crossSigning) + { + // Get the up-to-date cross-signing state + MXWeakify(self); + [mxSession.crypto.crossSigning refreshStateWithSuccess:^(BOOL stateUpdated) { + MXStrongifyAndReturnIfNil(self); + + MXLogDebug(@"[AppDelegate] handleAppState: crossSigning.state: %@", @(mxSession.crypto.crossSigning.state)); + + switch (mxSession.crypto.crossSigning.state) + { + case MXCrossSigningStateCrossSigningExists: + MXLogDebug(@"[AppDelegate] handleAppState: presentVerifyCurrentSessionAlertIfNeededWithSession"); + [self.masterTabBarController presentVerifyCurrentSessionAlertIfNeededWithSession:mxSession]; + break; + case MXCrossSigningStateCanCrossSign: + MXLogDebug(@"[AppDelegate] handleAppState: presentReviewUnverifiedSessionsAlertIfNeededWithSession"); + [self.masterTabBarController presentReviewUnverifiedSessionsAlertIfNeededWithSession:mxSession]; + break; + default: + break; + } + } failure:^(NSError * _Nonnull error) { + MXLogDebug(@"[AppDelegate] handleAppState: crossSigning.state: %@. Error: %@", @(mxSession.crypto.crossSigning.state), error); + }]; + } +} + + #pragma mark - Incoming room key requests handling - (void)enableRoomKeyRequestObserver:(MXSession*)mxSession diff --git a/Riot/Modules/Common/Avatar/AvatarViewData.swift b/Riot/Modules/Common/Avatar/AvatarViewData.swift index 6e9ec999a..ef5cbb89c 100644 --- a/Riot/Modules/Common/Avatar/AvatarViewData.swift +++ b/Riot/Modules/Common/Avatar/AvatarViewData.swift @@ -26,8 +26,8 @@ struct AvatarViewData: AvatarViewDataProtocol { /// Matrix item avatar URL (user or room avatar url) var avatarUrl: String? - /// Matrix media handler - var mediaManager: MXMediaManager + /// Matrix media handler if exists + var mediaManager: MXMediaManager? /// Fallback image used when avatarUrl is nil var fallbackImage: AvatarFallbackImage? diff --git a/Riot/Modules/Common/Avatar/AvatarViewDataProtocol.swift b/Riot/Modules/Common/Avatar/AvatarViewDataProtocol.swift index a1038f1e8..9b677e581 100644 --- a/Riot/Modules/Common/Avatar/AvatarViewDataProtocol.swift +++ b/Riot/Modules/Common/Avatar/AvatarViewDataProtocol.swift @@ -39,7 +39,7 @@ protocol AvatarViewDataProtocol: AvatarProtocol { var avatarUrl: String? { get } /// Matrix media handler - var mediaManager: MXMediaManager { get } + var mediaManager: MXMediaManager? { get } /// Fallback image used when avatarUrl is nil var fallbackImage: AvatarFallbackImage? { get } diff --git a/Riot/Modules/Room/Views/Avatar/RoomAvatarViewData.swift b/Riot/Modules/Room/Views/Avatar/RoomAvatarViewData.swift index ee5d3ad81..1af0a99aa 100644 --- a/Riot/Modules/Room/Views/Avatar/RoomAvatarViewData.swift +++ b/Riot/Modules/Room/Views/Avatar/RoomAvatarViewData.swift @@ -20,7 +20,7 @@ struct RoomAvatarViewData: AvatarViewDataProtocol { let roomId: String let displayName: String? let avatarUrl: String? - let mediaManager: MXMediaManager + let mediaManager: MXMediaManager? var matrixItemId: String { return roomId diff --git a/Riot/Modules/SideMenu/SideMenuCoordinator.swift b/Riot/Modules/SideMenu/SideMenuCoordinator.swift index fa79dbe75..797e20818 100644 --- a/Riot/Modules/SideMenu/SideMenuCoordinator.swift +++ b/Riot/Modules/SideMenu/SideMenuCoordinator.swift @@ -158,7 +158,7 @@ final class SideMenuCoordinator: NSObject, SideMenuCoordinatorType { } private func addSpaceList(with matrixSession: MXSession) { - let parameters = SpaceListCoordinatorParameters(session: matrixSession) + let parameters = SpaceListCoordinatorParameters(userSessionsService: self.parameters.userSessionsService) let spaceListCoordinator = SpaceListCoordinator(parameters: parameters) spaceListCoordinator.delegate = self diff --git a/Riot/Modules/Spaces/SpaceList/SpaceListCoordinator.swift b/Riot/Modules/Spaces/SpaceList/SpaceListCoordinator.swift index 0618d665c..5d6924347 100644 --- a/Riot/Modules/Spaces/SpaceList/SpaceListCoordinator.swift +++ b/Riot/Modules/Spaces/SpaceList/SpaceListCoordinator.swift @@ -42,7 +42,7 @@ final class SpaceListCoordinator: SpaceListCoordinatorType { init(parameters: SpaceListCoordinatorParameters) { self.parameters = parameters - let spaceListViewModel = SpaceListViewModel(session: self.parameters.session) + let spaceListViewModel = SpaceListViewModel(userSessionsService: self.parameters.userSessionsService) let spaceListViewController = SpaceListViewController.instantiate(with: spaceListViewModel) self.spaceListViewModel = spaceListViewModel self.spaceListViewController = spaceListViewController diff --git a/Riot/Modules/Spaces/SpaceList/SpaceListCoordinatorParameters.swift b/Riot/Modules/Spaces/SpaceList/SpaceListCoordinatorParameters.swift index 2c7aa50e7..5c4ddadd3 100644 --- a/Riot/Modules/Spaces/SpaceList/SpaceListCoordinatorParameters.swift +++ b/Riot/Modules/Spaces/SpaceList/SpaceListCoordinatorParameters.swift @@ -17,9 +17,9 @@ import Foundation class SpaceListCoordinatorParameters { - let session: MXSession + let userSessionsService: UserSessionsService - init(session: MXSession) { - self.session = session + init(userSessionsService: UserSessionsService) { + self.userSessionsService = userSessionsService } } diff --git a/Riot/Modules/Spaces/SpaceList/SpaceListViewModel.swift b/Riot/Modules/Spaces/SpaceList/SpaceListViewModel.swift index 85e44c94b..9a7c030c8 100644 --- a/Riot/Modules/Spaces/SpaceList/SpaceListViewModel.swift +++ b/Riot/Modules/Spaces/SpaceList/SpaceListViewModel.swift @@ -30,7 +30,7 @@ final class SpaceListViewModel: SpaceListViewModelType { // MARK: Private - private let session: MXSession + private let userSessionsService: UserSessionsService private var currentOperation: MXHTTPOperation? private var sections: [SpaceListSection] = [] @@ -49,8 +49,8 @@ final class SpaceListViewModel: SpaceListViewModelType { // MARK: - Setup - init(session: MXSession) { - self.session = session + init(userSessionsService: UserSessionsService) { + self.userSessionsService = userSessionsService NotificationCenter.default.addObserver(self, selector: #selector(self.sessionDidSync(notification:)), name: MXSpaceService.didBuildSpaceGraph, object: nil) @@ -123,14 +123,14 @@ final class SpaceListViewModel: SpaceListViewModelType { } private func loadData() { - guard session.mediaManager != nil else { + guard let session = self.userSessionsService.mainUserSession?.matrixSession else { return } self.update(viewState: .loading) - let homeViewData = self.createHomeViewData() - let viewDataList = getSpacesViewData() + let homeViewData = self.createHomeViewData(session: session) + let viewDataList = getSpacesViewData(session: session) let sections: [SpaceListSection] = viewDataList.invites.isEmpty ? [ .home(homeViewData), @@ -189,8 +189,8 @@ final class SpaceListViewModel: SpaceListViewModelType { self.coordinatorDelegate?.spaceListViewModel(self, didSelectInviteWithId: spaceId, from: sourceView) } - private func createHomeViewData() -> SpaceListItemViewData { - let avatarViewData = AvatarViewData(matrixItemId: Constants.homeSpaceId, displayName: nil, avatarUrl: nil, mediaManager: self.session.mediaManager, fallbackImage: .image(Asset.Images.spaceHomeIcon.image, .center)) + private func createHomeViewData(session: MXSession) -> SpaceListItemViewData { + let avatarViewData = AvatarViewData(matrixItemId: Constants.homeSpaceId, displayName: nil, avatarUrl: nil, mediaManager: session.mediaManager, fallbackImage: .image(Asset.Images.spaceHomeIcon.image, .center)) let homeNotificationState = session.spaceService.notificationCounter.homeNotificationState let homeViewData = SpaceListItemViewData(spaceId: Constants.homeSpaceId, @@ -198,12 +198,12 @@ final class SpaceListViewModel: SpaceListViewModelType { return homeViewData } - private func getSpacesViewData() -> (invites: [SpaceListItemViewData], spaces: [SpaceListItemViewData]) { + private func getSpacesViewData(session: MXSession) -> (invites: [SpaceListItemViewData], spaces: [SpaceListItemViewData]) { var invites: [SpaceListItemViewData] = [] var spaces: [SpaceListItemViewData] = [] session.spaceService.rootSpaceSummaries.forEach { summary in - let avatarViewData = AvatarViewData(matrixItemId: summary.roomId, displayName: summary.displayname, avatarUrl: summary.avatar, mediaManager: self.session.mediaManager, fallbackImage: .matrixItem(summary.roomId, summary.displayname)) - let notificationState = self.session.spaceService.notificationCounter.notificationState(forSpaceWithId: summary.roomId) + let avatarViewData = AvatarViewData(matrixItemId: summary.roomId, displayName: summary.displayname, avatarUrl: summary.avatar, mediaManager: session.mediaManager, fallbackImage: .matrixItem(summary.roomId, summary.displayname)) + let notificationState = session.spaceService.notificationCounter.notificationState(forSpaceWithId: summary.roomId) let viewData = SpaceListItemViewData(spaceId: summary.roomId, title: summary.displayname, avatarViewData: avatarViewData, isInvite: summary.membership == .invite, notificationCount: notificationState?.groupMissedDiscussionsCount ?? 0, highlightedNotificationCount: notificationState?.groupMissedDiscussionsHighlightedCount ?? 0) if viewData.isInvite { invites.append(viewData) diff --git a/Riot/Modules/User/Avatar/UserAvatarViewData.swift b/Riot/Modules/User/Avatar/UserAvatarViewData.swift index 25c5f46f5..2f9dea0f0 100644 --- a/Riot/Modules/User/Avatar/UserAvatarViewData.swift +++ b/Riot/Modules/User/Avatar/UserAvatarViewData.swift @@ -20,7 +20,7 @@ struct UserAvatarViewData: AvatarViewDataProtocol { let userId: String let displayName: String? let avatarUrl: String? - let mediaManager: MXMediaManager + let mediaManager: MXMediaManager? var matrixItemId: String { return userId