Merge branch 'develop' into ismail/4384_room_summary_store

This commit is contained in:
ismailgulek 2021-10-08 16:59:25 +03:00
commit efb495e95f
No known key found for this signature in database
GPG key ID: E96336D42D9470A9
28 changed files with 522 additions and 164 deletions

View file

@ -2,7 +2,7 @@ source "https://rubygems.org"
gem "xcode-install"
gem "fastlane"
gem "cocoapods", '~>1.10.1'
gem "cocoapods", '~>1.11.2'
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

View file

@ -1,12 +1,14 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.3)
activesupport (5.2.4.5)
CFPropertyList (3.0.4)
rexml
activesupport (6.1.4.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
algoliasearch (1.27.5)
@ -14,28 +16,28 @@ GEM
json (>= 1.5.1)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.1.1)
aws-partitions (1.487.0)
aws-sdk-core (3.119.0)
aws-eventstream (1.2.0)
aws-partitions (1.510.0)
aws-sdk-core (3.121.1)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
aws-sdk-kms (1.46.0)
aws-sdk-core (~> 3, >= 3.119.0)
aws-sdk-kms (1.48.0)
aws-sdk-core (~> 3, >= 3.120.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.98.0)
aws-sdk-core (~> 3, >= 3.119.0)
aws-sdk-s3 (1.103.0)
aws-sdk-core (~> 3, >= 3.120.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1)
aws-sigv4 (1.2.4)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.4.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
claide (1.0.3)
cocoapods (1.10.1)
addressable (~> 2.6)
cocoapods (1.11.2)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.10.1)
cocoapods-core (= 1.11.2)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.4.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
@ -46,26 +48,26 @@ GEM
escape (~> 0.0.4)
fourflusher (>= 2.3.0, < 3.0)
gh_inspector (~> 1.0)
molinillo (~> 0.6.6)
molinillo (~> 0.8.0)
nap (~> 1.0)
ruby-macho (~> 1.4)
xcodeproj (>= 1.19.0, < 2.0)
cocoapods-core (1.10.1)
activesupport (> 5.0, < 6)
addressable (~> 2.6)
ruby-macho (>= 1.0, < 3.0)
xcodeproj (>= 1.21.0, < 2.0)
cocoapods-core (1.11.2)
activesupport (>= 5.0, < 7)
addressable (~> 2.8)
algoliasearch (~> 1.0)
concurrent-ruby (~> 1.1)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
netrc (~> 0.11)
public_suffix
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.4)
cocoapods-downloader (1.4.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.5.1)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.0)
cocoapods-trunk (1.5.0)
cocoapods-search (1.0.1)
cocoapods-trunk (1.6.0)
nap (>= 0.8, < 2.0)
netrc (~> 0.11)
cocoapods-try (1.2.0)
@ -73,19 +75,19 @@ GEM
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
concurrent-ruby (1.1.8)
concurrent-ruby (1.1.9)
declarative (0.0.20)
digest-crc (0.6.4)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.6)
emoji_regex (3.2.2)
emoji_regex (3.2.3)
escape (0.0.4)
ethon (0.12.0)
ffi (>= 1.3.0)
excon (0.85.0)
faraday (1.7.0)
ethon (0.14.0)
ffi (>= 1.15.0)
excon (0.86.0)
faraday (1.8.0)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
@ -110,7 +112,7 @@ GEM
faraday_middleware (1.1.0)
faraday (~> 1.0)
fastimage (2.2.5)
fastlane (2.191.0)
fastlane (2.195.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
@ -136,6 +138,7 @@ GEM
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (~> 2.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
@ -152,13 +155,13 @@ GEM
fastlane-plugin-diawi (2.1.0)
rest-client (>= 2.0.0)
fastlane-plugin-versioning (0.5.0)
fastlane-plugin-xcodegen (1.0.0)
fastlane-plugin-xcodegen (1.1.0)
fastlane-plugin-brew (~> 0.1.1)
ffi (1.13.1)
ffi (1.15.4)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.10.0)
google-apis-androidpublisher_v3 (0.11.0)
google-apis-core (>= 0.4, < 2.a)
google-apis-core (0.4.1)
addressable (~> 2.5, >= 2.5.1)
@ -169,18 +172,18 @@ GEM
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.6.0)
google-apis-iamcredentials_v1 (0.7.0)
google-apis-core (>= 0.4, < 2.a)
google-apis-playcustomapp_v1 (0.5.0)
google-apis-core (>= 0.4, < 2.a)
google-apis-storage_v1 (0.6.0)
google-apis-storage_v1 (0.8.0)
google-apis-core (>= 0.4, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0)
google-cloud-env (1.5.0)
faraday (>= 0.17.3, < 2.0)
google-cloud-errors (1.1.0)
google-cloud-errors (1.2.0)
google-cloud-storage (1.34.1)
addressable (~> 2.5)
digest-crc (~> 0.4)
@ -189,37 +192,38 @@ GEM
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (0.17.0)
googleauth (1.0.0)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (~> 0.14)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-accept (1.7.0)
http-cookie (1.0.4)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (1.8.9)
i18n (1.8.10)
concurrent-ruby (~> 1.0)
jmespath (1.4.0)
json (2.5.1)
jwt (2.2.3)
jwt (2.3.0)
memoist (0.16.2)
mime-types (3.3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2021.0704)
mime-types-data (3.2021.0901)
mini_magick (4.11.0)
mini_mime (1.1.0)
mini_mime (1.1.1)
minitest (5.14.4)
molinillo (0.6.6)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.0.0)
nanaimo (0.3.0)
nap (1.1.0)
naturally (2.2.1)
netrc (0.11.0)
optparse (0.1.1)
os (1.1.1)
plist (3.6.0)
public_suffix (4.0.6)
@ -236,12 +240,12 @@ GEM
retriable (3.1.2)
rexml (3.2.5)
rouge (2.0.7)
ruby-macho (1.4.0)
ruby-macho (2.5.1)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.15.0)
addressable (~> 2.3)
signet (0.16.0)
addressable (~> 2.8)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
@ -251,7 +255,6 @@ GEM
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
trailblazer-option (0.1.1)
tty-cursor (0.7.1)
tty-screen (0.8.1)
@ -259,16 +262,16 @@ GEM
tty-cursor (~> 0.7)
typhoeus (1.4.0)
ethon (>= 0.9.0)
tzinfo (1.2.9)
thread_safe (~> 0.1)
tzinfo (2.0.4)
concurrent-ruby (~> 1.0)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
unf_ext (0.0.8)
unicode-display_width (1.8.0)
webrick (1.7.0)
word_wrap (1.0.0)
xcode-install (2.6.7)
xcode-install (2.8.0)
claide (>= 0.9.1, < 1.1.0)
fastlane (>= 2.1.0, < 3.0.0)
xcodeproj (1.21.0)
@ -282,12 +285,13 @@ GEM
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
zeitwerk (2.4.2)
PLATFORMS
ruby
DEPENDENCIES
cocoapods (~> 1.10.1)
cocoapods (~> 1.11.2)
fastlane
fastlane-plugin-diawi
fastlane-plugin-versioning
@ -295,4 +299,4 @@ DEPENDENCIES
xcode-install
BUNDLED WITH
2.2.24
2.2.28

View file

@ -254,9 +254,9 @@
"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" = "Alle";
"room_details_history_section_members_only" = "Nur Mitglieder (seit diese Option ausgewählt ist)";
"room_details_history_section_members_only" = "Nur Mitglieder (ab Auswahl dieser Option)";
"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)";
"room_details_history_section_members_only_since_joined" = "Nur Mitglieder (ab ihrem Beitritt)";
"room_details_history_section_prompt_title" = "Datenschutzwarnung";
"room_details_addresses_section" = "Adressen";
"room_details_no_local_addresses" = "Dieser Raum hat keine lokalen Adressen";
@ -1438,7 +1438,7 @@
"settings_direct_messages" = "Direktnachrichten";
"settings_notify_me_for" = "Benachrichtige mich bei";
"settings_mentions_and_keywords" = "Erwähnungen und Schlüsselwörter";
"settings_confirm_media_size_description" = "Wenn dies aktiviert ist, wirst du beim Senden von Bildern und Videos gefragt, wie groß sie gesendet werden sollen.";
"settings_confirm_media_size_description" = "Wenn dies aktiviert ist, wirst du beim Senden von Bildern und Videos gefragt, in welcher Größe sie gesendet werden sollen.";
"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.";
@ -1480,3 +1480,6 @@
"spaces_left_panel_title" = "Spaces";
"room_recents_suggested_rooms_section" = "VORGESCHLAGENE RÄUME";
"spaces_home_space_title" = "Start";
"space_tag" = "Space";
"open" = "Öffnen";
"settings_links" = "LINKS";

View file

@ -1056,7 +1056,7 @@
"security_settings_complete_security_alert_message" = "Vous devriez dabord améliorer la sécurité de votre session actuelle.";
"security_settings_coming_soon" = "Désolé, cette action nest pas encore disponible dans %@ iOS. Utilisez un autre client Matrix pour le configurer. %@ iOS lutilisera.";
"device_verification_self_verify_wait_new_sign_in_title" = "Vérifier cette connexion";
"device_verification_self_verify_wait_additional_information" = "ou un autre client Matrix qui prend en charge la signature croisée.";
"device_verification_self_verify_wait_additional_information" = "Ceci fonctionne avec %@ ou un autre client Matrix prenant en charge la signature croisée.";
// MARK: - Device Verification
"key_verification_other_session_title" = "Vérifier la session";
"key_verification_new_session_title" = "Vérifiez votre nouvelle session";
@ -1482,3 +1482,41 @@
"settings_mentions_and_keywords" = "Mentions et mots-clés";
"settings_default" = "Notifications par défaut";
"settings_notifications" = "NOTIFICATIONS";
"version_check_modal_subtitle_deprecated" = "Nous avons travailler à améliorer %@ pour plus de rapidité et de confort. Malheureusement, la version diOS que vous utilisez nest pas compatible avec certaines de ces améliorations et nest plus prise en charge.\nNous vous recommandons de mettre à jour votre système pour utiliser %@ à son plein potentiel.";
"space_avatar_view_accessibility_hint" = "Changer lavatar de lespace";
// Mark: Avatar
"space_avatar_view_accessibility_label" = "avatar";
"space_public_join_rule" = "Espace public";
"space_private_join_rule" = "Espace privé";
"space_participants_action_ban" = "Supprimer de cet espace";
"space_participants_action_remove" = "Enlever de cet espace";
"spaces_coming_soon_detail" = "Cette fonctionnalité na pas été implémentée ici, mais elle arrive. Pour effectuer cette action, vous pouvez utiliser Element sur votre ordinateur.";
"spaces_invites_coming_soon_title" = "Les invitations arrivent prochainement";
"spaces_add_rooms_coming_soon_title" = "Lajout de salons arrive bientôt";
"spaces_coming_soon_title" = "Prochainement";
"spaces_no_member_found_detail" = "Vous cherchez quelquun qui nest pas dans %@ ? Pour linstant, vous pouvez linviter sur lapplication web ou de bureau.";
"spaces_no_room_found_detail" = "Certains résultat peuvent être cachés car ils sont privés et requièrent une invitation.";
"spaces_no_result_found_title" = "Aucun résultat";
"spaces_empty_space_detail" = "Certains salons peuvent être cachés car ils sont privés et requièrent une invitation.";
"spaces_empty_space_title" = "Cet espace na pas (encore) de salon";
"space_tag" = "espace";
"spaces_suggested_room" = "Recommandé";
"spaces_explore_rooms" = "Parcourir les salons";
"leave_space_and_all_rooms_action" = "Quitter tous les salons et espaces";
"leave_space_only_action" = "Ne quitter aucun salon";
"leave_space_message_admin_warning" = "Vous êtes administrateur de cet espace. Assurez-vous davoir transmis les droits dadministration à un autre membre avant de partir.";
"leave_space_message" = "Êtes vous sûr de vouloir quitter %@ ? Voulez-vous également quitter tous les salons et espaces faisant partie de cet espace ?";
"leave_space_title" = "Quitter %@";
"spaces_left_panel_title" = "Espaces";
"spaces_home_space_title" = "Accueil";
"settings_show_url_previews_description" = "Les aperçus ne seront affichés que dans les salons non-chiffrés.";
"settings_show_url_previews" = "Afficher les aperçus des sites web";
"settings_confirm_media_size_description" = "Si activé, il vous sera demandé de préciser en quelle taille les images et vidéos doivent être envoyées.";
"settings_confirm_media_size" = "Préciser la taille lors de lenvoi";
"settings_links" = "LIENS";
"settings_sending_media" = "ENVOI DIMAGES ET DE VIDÉOS";
"room_recents_suggested_rooms_section" = "SALONS RECOMMANDÉS";
"done" = "Terminé";
"open" = "Ouvrir";

View file

@ -43,7 +43,7 @@
"auth_register" = "등록";
"auth_submit" = "제출";
"auth_skip" = "넘기기";
"auth_login_single_sign_on" = "통합 인증(SSO)으로 로그인";
"auth_login_single_sign_on" = "로그인";
"auth_send_reset_email" = "초기화 이메일 보내기";
"auth_return_to_login" = "로그인 화면으로 돌아가기";
"auth_user_id_placeholder" = "이메일 혹은 사용자 이름";
@ -170,7 +170,7 @@
"contacts_address_book_matrix_users_toggle" = "Matrix 사용자만";
"contacts_address_book_no_contact" = "로컬 연락처 없음";
"contacts_address_book_permission_required" = "로컬 연락처에 접근하는데 필요한 권한";
"contacts_address_book_permission_denied" = "Riot이 로컬 연락처에 접근하도록 허용하지 않음";
"contacts_address_book_permission_denied" = "%@이(가) 연락처에 접근하도록 허용하지 않음";
"contacts_user_directory_section" = "사용자 목록";
"contacts_user_directory_offline_section" = "사용자 목록 (오프라인)";
// Chat participants
@ -199,8 +199,8 @@
"room_participants_ago" = "전";
"room_participants_action_section_admin_tools" = "관리자 도구";
"room_participants_action_section_direct_chats" = "다이렉트 대화";
"room_participants_action_section_devices" = "기기";
"room_participants_action_section_other" = "기타";
"room_participants_action_section_devices" = "세션";
"room_participants_action_section_other" = "옵션";
"room_participants_action_invite" = "초대";
"room_participants_action_leave" = "이 방 떠나기";
"room_participants_action_remove" = "이 방에서 제거";
@ -216,7 +216,7 @@
"room_participants_action_start_video_call" = "영상 통화 시작";
"room_participants_action_mention" = "언급";
// Chat
"room_jump_to_first_unread" = "처음으로 읽지 않은 메시지로 가기";
"room_jump_to_first_unread" = "읽지 않은 메시지로 가기";
"room_new_message_notification" = "%d개의 새 메시지";
"room_new_messages_notification" = "%d개의 새 메시지";
"room_one_user_is_typing" = "%@님이 입력하는 중…";
@ -231,8 +231,8 @@
"room_message_short_placeholder" = "메시지를 보내세요…";
"room_message_reply_to_short_placeholder" = "답장을 보내세요…";
"room_offline_notification" = "서버와의 연결이 끊겼습니다.";
"room_unsent_messages_notification" = "메시지가 보내지지 않았습니다. %1$s, %2$s, 둘 중 어느 것을 하겠습니까?";
"room_unsent_messages_unknown_devices_notification" = "알 수 없는 기기가 있어 메시지가 보내지지 않았습니다. %1$s, %2$s, 둘 중 어느 것을 하겠습니까?";
"room_unsent_messages_notification" = "메시지가 보내지지 않았습니다.";
"room_unsent_messages_unknown_devices_notification" = "알 수 없는 기기가 있어 메시지 전송이 실패했습니다.";
"room_ongoing_conference_call" = "회의 전화가 진행 중입니다. %1$s 또는 %2$s로 참가하세요.";
"room_ongoing_conference_call_with_close" = "회의 전화가 진행 중입니다. %1$s 또는 %2$s로 참가하세요. %@.";
"room_ongoing_conference_call_close" = "닫기";
@ -286,7 +286,7 @@
"room_message_edits_history_title" = "메시지 편집";
// Unknown devices
"unknown_devices_alert_title" = "방에 알 수 없는 기기가 있음";
"unknown_devices_alert" = "이 방에 확인되지 않은 알 수 없는 기기가 있습니다.이 기기가 확인한 사용자의 것이라는 보장이 없습니다.\n계속하기 전에 각 기기마다 확인 절차를 거치기를 권합니다, 하지만 원한다면 확인하지 않고 메시지를 다시 보낼 수 있습니다.";
"unknown_devices_alert" = "이 방에 검증되지 않은 알 수 없는 기기가 있습니다.\n이 기기가 사용자의 것이라는 보장이 없습니다.\n계속하기 전에 각 기기마다 검증 절차를 거치기를 권합니다, 하지만 원한다면 검증하지 않고 메시지를 다시 보낼 수 있습니다.";
"unknown_devices_send_anyway" = "무시하고 보내기";
"unknown_devices_call_anyway" = "무시하고 전화";
"unknown_devices_answer_anyway" = "무시하고 답하기";
@ -325,7 +325,7 @@
"settings_other" = "기타";
"settings_labs" = "연구실";
"settings_flair" = "허용되는 곳에 재능 보이기";
"settings_devices" = "기기";
"settings_devices" = "세션";
"settings_cryptography" = "암호화";
"settings_key_backup" = "키 백업";
"settings_deactivate_account" = "계정 비활성화";
@ -354,7 +354,7 @@
"settings_pin_rooms_with_unread" = "읽지 않은 메시지가 있는 방을 고정";
"settings_on_denied_notification" = "%@에 의해 알림이 거부됬습니다, 기기 설정에서 %@을(를) 허용해주세요";
"settings_enable_callkit" = "통합 전화";
"settings_callkit_info" = "잠금 화면에서 수신 전화를 받습니다. 시스템의 통화 내역에서 Riot 통화를 확인하세요. iCloud가 켜져있다면, 이 통화 기록은 Apple과 공유됩니다.";
"settings_callkit_info" = "잠금 화면에서 수신 전화를 받습니다. 시스템의 통화 내역에서 %@ 통화를 확인하세요. iCloud가 켜져있다면, 이 통화 기록은 Apple과 공유됩니다.";
"settings_ui_language" = "언어";
"settings_ui_theme" = "테마";
"settings_ui_theme_auto" = "자동";
@ -388,24 +388,24 @@
"settings_confirm_password" = "비밀번호 확인";
"settings_fail_to_update_password" = "비밀번호 업데이트에 실패함";
"settings_password_updated" = "비밀번호가 업데이트되었습니다";
"settings_crypto_device_name" = "기기 공개 이름: ";
"settings_crypto_device_id" = "\n기기 ID: ";
"settings_crypto_device_key" = "\n기기 키:\n";
"settings_crypto_device_name" = "세션 이름: ";
"settings_crypto_device_id" = "\n세션 ID: ";
"settings_crypto_device_key" = "\n세션 키:\n";
"settings_crypto_export" = "키 내보내기";
"settings_crypto_blacklist_unverified_devices" = "확인된 기기만 암호화";
"settings_crypto_blacklist_unverified_devices" = "검증된 세션만 암호화";
"settings_deactivate_my_account" = "내 계정 비활성화";
"settings_key_backup_info" = "암호화된 메시지는 종단간 암호화로 보호됩니다. 오직 당신과 참가자만 키를 갖고 있어서 이 메시지를 읽을 수 있습니다.";
"settings_key_backup_info_checking" = "확인 중...";
"settings_key_backup_info_none" = "키가 이 기기에서 백업되지 않았습니다.";
"settings_key_backup_info_checking" = "확인 중";
"settings_key_backup_info_none" = "키가 이 세션에서 백업되지 않았습니다.";
"settings_key_backup_info_signout_warning" = "이 기기에만 있을 수 있는 키를 잃지 않도록, 로그아웃하기 전에 이 기기를 키 백업에 연결하세요.";
"settings_key_backup_info_version" = "키 백업 버전: %@";
"settings_key_backup_info_algorithm" = "알고리즘: %@";
"settings_key_backup_info_valid" = "이 기기는 키를 백업하고 있습니다.";
"settings_key_backup_info_not_valid" = "이 기기는 키를 백업하고 있지 않습니다, 하지만 존재하는 백업이 있고 이것을 복구한 뒤 키를 추가할 수 있습니다.";
"settings_key_backup_info_progress" = "%@ 키를 백업하는 중...";
"settings_key_backup_info_valid" = "이 세션은 키를 백업하고 있습니다.";
"settings_key_backup_info_not_valid" = "이 세션은 키를 백업하고 있지 않습니다, 하지만 존재하는 백업이 있고 이것을 복구한 뒤 키를 추가할 수 있습니다.";
"settings_key_backup_info_progress" = "%@ 키를 백업하는 중";
"settings_key_backup_info_progress_done" = "모든 키가 백업됨";
"settings_key_backup_info_trust_signature_unknown" = "백업은 기기로부터 ID로 된 서명을 갖습니다: %@";
"settings_key_backup_info_trust_signature_valid" = "백업이 이 기기로부터 올바른 서명을 갖고 있음";
"settings_key_backup_info_trust_signature_unknown" = "백업은 다음의 ID를 가진 세션으로부터 서명을 갖습니다: %@";
"settings_key_backup_info_trust_signature_valid" = "백업이 이 세션부터 올바른 서명을 갖고 있음";
"settings_key_backup_info_trust_signature_valid_device_verified" = "백업이 %@(으)로부터 올바른 서명을 갖고 있음";
"settings_key_backup_info_trust_signature_valid_device_unverified" = "백업이 %@(으)로부터 서명을 갖고 있음";
"settings_key_backup_info_trust_signature_invalid_device_verified" = "백업이 %@(으)로부터 올바르지 않은 서명을 갖고 있음";
@ -413,13 +413,13 @@
"settings_key_backup_button_create" = "키 백업 시작";
"settings_key_backup_button_restore" = "백업에서 복구";
"settings_key_backup_button_delete" = "백업 삭제";
"settings_key_backup_button_connect" = "이 기기를 키 백업에 연결";
"settings_key_backup_button_connect" = "이 세션을 키 백업에 연결";
"settings_key_backup_delete_confirmation_prompt_title" = "백업 삭제";
"settings_key_backup_delete_confirmation_prompt_msg" = "확신합니까? 키가 정상적으로 백업되지 않으면 암호화된 메시지를 잃게 됩니다.";
// Room Details
"room_details_title" = "방 세부 사항";
"room_details_people" = "구성원";
"room_details_files" = "파일";
"room_details_files" = "업로드";
"room_details_settings" = "설정";
"room_details_photo" = "방 사진";
"room_details_room_name" = "방 이름";
@ -459,7 +459,7 @@
"room_details_advanced_enable_e2e_encryption" = "암호화 켜짐 (경고: 다시 끌 수 없습니다!)";
"room_details_advanced_e2e_encryption_enabled" = "이 방의 암호화가 켜졌습니다";
"room_details_advanced_e2e_encryption_disabled" = "이 방의 암호화가 꺼졌습니다.";
"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "확인된 기기만 암호화";
"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "검증된 세션만 암호화";
"room_details_fail_to_update_avatar" = "방 사진 업데이트에 실패함";
"room_details_fail_to_update_room_name" = "방 이름 업데이트에 실패함";
"room_details_fail_to_update_topic" = "주제 업데이트에 실패함";
@ -529,7 +529,7 @@
"event_formatter_jitsi_widget_added" = "%@님이 VoIP 회의를 추가했습니다";
"event_formatter_jitsi_widget_removed" = "%@님이 VoIP 회의를 제거했습니다";
"event_formatter_rerequest_keys_part1_link" = "암호화 키 다시 요청";
"event_formatter_rerequest_keys_part2" = " 다른 기기에서.";
"event_formatter_rerequest_keys_part2" = " 다른 세션에서.";
"event_formatter_message_edited_mention" = "(편집됨)";
// Others
"or" = "또는";
@ -539,7 +539,7 @@
"network_offline_prompt" = "인터넷이 오프라인입니다.";
"homeserver_connection_lost" = "홈 서버에 연결할 수 없습니다.";
"public_room_section_title" = "공개 방 (%@에 있음):";
"bug_report_prompt" = "애플리케이션이 방금 충돌했군요.\n충돌 보고서를 제출하겠습니까?";
"bug_report_prompt" = "애플리케이션이 방금 충돌했군요. 충돌 보고서를 제출하겠습니까?";
"rage_shake_prompt" = "좌절감에 휴대 전화를 흔들고 있군요. 버그 보고서를 제출하겠습니까?";
"do_not_ask_again" = "다시 묻지 않기";
"camera_access_not_granted" = "%@님은 카메라를 사용할 권한이 없습니다, 개인 정보 설정을 바꿔주세요";
@ -550,8 +550,8 @@
// Call
"call_incoming_voice_prompt" = "%@님으로부터 온 음성 통화";
"call_incoming_video_prompt" = "%@님으로부터 온 영상 통화";
"call_incoming_voice" = "전화 수신 중...";
"call_incoming_video" = "영상 통화 수신 중...";
"call_incoming_voice" = "전화 수신 중...";
"call_incoming_video" = "영상 통화 수신 중...";
"call_already_displayed" = "이미 전화가 진행 중입니다.";
"call_jitsi_error" = "회의 전화 참가에 실패했습니다.";
// No VoIP support
@ -560,8 +560,8 @@
// Crash report
"google_analytics_use_prompt" = "%@이(가) 개선하도록 자동으로 익명의 충돌 보고서와 사용 데이터를 제공하겠습니까?";
// Crypto
"e2e_enabling_on_app_update" = "Riot는 이제 종단간 암호화를 지원하지만 암호화를 켜려면 다시 로그인해야 합니다.\n\n지금 다시 로그인하거나 나중에 애플리케이션 설정에서 할 수 있습니다.";
"e2e_need_log_in_again" = "이 기기에 종단간 암호화 키를 생성하고 공개 키를 홈서버에 제출하려면 다시 로그인해야 함니다.\n한 번만 하면 됩니다, 불편을 드려 죄송합니다.";
"e2e_enabling_on_app_update" = "%@는 이제 종단간 암호화를 지원하지만 암호화를 켜려면 다시 로그인해야 합니다.\n\n지금 다시 로그인하거나 나중에 애플리케이션 설정에서 할 수 있습니다.";
"e2e_need_log_in_again" = "이 세션에 종단간 암호화 키를 생성하고 공개 키를 홈서버에 제출하려면 다시 로그인해야 함니다.\n한 번만 하면 됩니다. 불편을 드려 죄송합니다.";
// Key backup wrong version
"e2e_key_backup_wrong_version_title" = "새 키 백업";
"e2e_key_backup_wrong_version" = "새 보안 메시지 키 백업이 감지되었습니다.\n\n당신이 한 것이 아니라면 설정에서 새 암호를 설정하세요.";
@ -601,9 +601,9 @@
"share_extension_failed_to_encrypt" = "보내기에 실패함. 기본 앱에서 이 방의 암호화 설정을 확인하세요";
// Room key request dialog
"e2e_room_key_request_title" = "암호화 키 요청";
"e2e_room_key_request_message_new_device" = "암호화 키를 요청한 새 기기 '%@'을(를) 추가했습니다.";
"e2e_room_key_request_message" = "확인하지 않은 기기 '%@'이(가) 암호화 키를 요청하고 있습니다.";
"e2e_room_key_request_start_verification" = "확인 시작...";
"e2e_room_key_request_message_new_device" = "암호화 키를 요청한 새 세션 '%@'을(를) 추가했습니다.";
"e2e_room_key_request_message" = "확인하지 않은 세션 '%@'이(가) 암호화 키를 요청하고 있습니다.";
"e2e_room_key_request_start_verification" = "확인 시작";
"e2e_room_key_request_share_without_verifying" = "확인없이 공유";
"e2e_room_key_request_ignore_request" = "요청 무시";
// GDPR
@ -629,7 +629,7 @@
"deactivate_account_password_alert_message" = "계속하려면, 비밀번호를 입력해주세요";
// Re-request confirmation dialog
"rerequest_keys_alert_title" = "요청을 보냈습니다";
"rerequest_keys_alert_message" = "메시지를 복호화해서 이 기기로 키를 보낼 수 있도록 Riot을 다른 기기에 설치해주세요.";
"rerequest_keys_alert_message" = "메시지를 복호화해서 이 세션으로 키를 보낼 수 있도록 %@를 다른 기기에 설치해주세요.";
"key_backup_setup_title" = "키 백업";
"key_backup_setup_skip_alert_title" = "확신합니까?";
"key_backup_setup_skip_alert_message" = "로그아웃하거나 기기를 잃어버리면 보안 메시지를 잃게 됩니다.";
@ -703,21 +703,21 @@
"device_verification_security_advice" = "보안을 최대화하려면, 직접 또는 다른 신뢰할만한 통신 수단으로 확인하기를 추천합니다";
"device_verification_cancelled" = "상대방이 확인을 취소했습니다.";
"device_verification_cancelled_by_me" = "확인이 취소됬습니다. 이유: %@";
"device_verification_error_cannot_load_device" = "기기 정보를 불러올 수 없습니다.";
"device_verification_error_cannot_load_device" = "세션 정보를 불러올 수 없습니다.";
// Mark: Incoming
"device_verification_incoming_title" = "수신 확인 요청";
"device_verification_incoming_description_1" = "이 기기를 신뢰하도록 확인합니다. 상대방의 신뢰하는 기기는 종단간 암호화된 메시지를 사용할 때 더 마음에 안심을 줍니다.";
"device_verification_incoming_description_2" = "이 기기를 신뢰하도록 확인합니다, 그리고 상대방도 당신의 기기를 신뢰하도록 합니다.";
"device_verification_incoming_description_1" = "이 세션을 신뢰하도록 확인합니다. 상대방의 신뢰하는 세션은 종단간 암호화된 메시지를 사용할 때 더 마음에 안심을 줍니다.";
"device_verification_incoming_description_2" = "이 세션을 신뢰하도록 확인합니다, 그리고 상대방도 당신의 세션을 신뢰하도록 합니다.";
// MARK: Start
"device_verification_start_title" = "짧은 문장을 비교하여 확인";
"device_verification_start_wait_partner" = "상대방이 수락하기를 기다리는 중...";
"device_verification_start_wait_partner" = "상대방이 수락하기를 기다리는 중";
"device_verification_start_use_legacy" = "아무것도 안 나타나나요? 일부 클라이언트는 아직 상호작용 확인을 지원하지 않습니다. 예전 확인 방식을 사용하세요.";
"device_verification_start_verify_button" = "확인 시작";
"device_verification_start_use_legacy_action" = "예전 확인 방식 사용";
// MARK: Verify
"device_verification_verify_title_emoji" = "상대방의 화면에 나타나는 다음 이모지를 확인하는 것으로 이 기기를 확인합니다";
"device_verification_verify_title_number" = "상대방의 화면에 나타나는 다음 숫자를 확인하는 것으로 이 기기를 확인합니다";
"device_verification_verify_wait_partner" = "상대방이 확인하기를 기다리는 중...";
"device_verification_verify_wait_partner" = "상대방이 확인하기를 기다리는 중";
// MARK: Verified
"device_verification_verified_title" = "확인되었습니다!";
"device_verification_verified_description_1" = "성공적으로 이 기기를 확인했습니다.";
@ -834,7 +834,7 @@
"settings_three_pids_management_information_part3" = ".";
"settings_calls_stun_server_fallback_button" = "대체 전화 지원 서버 허용";
"settings_calls_stun_server_fallback_description" = "홈서버가 전화 서버를 지원하지 않는다면 대체 전화 지원 서버 %@를 허용합니다 (전화하는 동안 IP 주소가 공유됩니다).";
"settings_devices_description" = "기기 공개 이름은 소통하는 사람들에게 보여집니다";
"settings_devices_description" = "세션의 공개 명칭은 대화하는 사람들에게 보여집니다";
"settings_discovery_no_identity_server" = "현재 ID 서버를 사용하고 있지 않습니다. 연락처에 알고 있는 사람들이 당신을 찾을 수 있도록 하려면 서버를 하나 추가하세요.";
"settings_discovery_terms_not_signed" = "이메일이나 전화번호로 당신을 찾을 수 있도록 하려면 ID 서버 (%@)의 서비스 약관에 동의하세요.";
"settings_discovery_three_pids_management_information_part1" = "무슨 이메일 주소나 전화번호로 다른 사용자가 당신을 찾고 방에 초대할 수 있는지 관리하세요. 이 목록에서 이메일 주소나 전화번호를 추가하거나 제거할 수 있습니다. ";
@ -886,8 +886,8 @@
"service_terms_modal_message_identity_server" = "연락처를 탐색하려면 ID 서버 (%@)의 약관에 동의해야 합니다.";
"settings_add_3pid_password_title_email" = "이메일 주소 추가";
"settings_add_3pid_password_title_msidsn" = "전화번호 추가";
"settings_add_3pid_password_message" = "계속하려면 비밀번호를 입력해주세요";
"settings_add_3pid_invalid_password_message" = "잘못된 비밀번호";
"settings_add_3pid_password_message" = "계속하려면, 비밀번호를 입력해주세요";
"settings_add_3pid_invalid_password_message" = "유효하지 않은 인증정보";
"error_not_supported_on_mobile" = "%@ 모바일에서 할 수 없습니다.";
"settings_integrations" = "통합";
"settings_integrations_allow_button" = "통합 관리";
@ -897,3 +897,37 @@
"widget_menu_revoke_permission" = "액세스 취소";
"widget_menu_remove" = "모두를 위해 제거";
"widget_integration_manager_disabled" = "설정에서 통합 관리자를 켜야 합니다";
"people_empty_view_information" = "누구든지 안전하게 대화하세요. 사람을 추가하려면 + 버튼을 누르세요.";
"people_empty_view_title" = "사람들";
"room_recents_unknown_room_error_message" = "이 방을 찾을 수 없습니다. 방이 존재하는지 확인하세요";
"room_recents_suggested_rooms_section" = "추천 방";
"room_creation_dm_error" = "DM을 보내지 못했습니다. 초대하고 싶은 사람을 다시 확인하고 다시 시도해주세요.";
"social_login_button_title_sign_up" = "%@ (으)로 가입";
"social_login_button_title_sign_in" = "%@ 으로 로그인하기";
"social_login_button_title_continue" = "%@ 으로 계속하기";
"social_login_list_title_sign_up" = "또는";
"social_login_list_title_sign_in" = "또는";
// Social login
"social_login_list_title_continue" = "다음으로 계속하기";
// Accessibility
"accessibility_checkbox_label" = "체크박스";
"callbar_only_single_active_group" = "그룹 통화에 참여하기 (%@)";
"callbar_return" = "돌아가기";
"callbar_only_multiple_paused" = "%@ 일시정지된 통화";
"callbar_only_single_paused" = "일시정지된 통화";
"callbar_active_and_multiple_paused" = "1 활성화된 통화 (%@) · %@ 일시정지된 통화";
"callbar_active_and_single_paused" = "1 활성화된 통화 (%@) · 1 일시정지된 통화";
// Call Bar
"callbar_only_single_active" = "전화로 돌아가기 (%@)";
"done" = "완료";
"open" = "열기";
"less" = "줄이기";
"more" = "더 보기";
"switch" = "변경";
"joined" = "참여했습니다";
"skip" = "넘기기";
"store_promotional_text" = "개방된 네트워크에서 프라이버시를 보장받을 수 있는 대화와 협업 앱. 분산화된 네트워크를 통해 정보를 제어할 수 있습니다. 데이터마이닝도 백도어도 다른 곳에서의 접근도 존재하지 않습니다.";

View file

@ -21,7 +21,7 @@
"title_rooms" = "Kamers";
"warning" = "Waarschuwing";
// Actions
"view" = "Weergeven";
"view" = "Bekijken";
"next" = "Volgende";
"back" = "Terug";
"continue" = "Verdergaan";
@ -1510,7 +1510,7 @@
"room_notifs_settings_encrypted_room_notice" = "Let op dat vermeldingen & trefwoorden-meldingen niet beschikbaar zijn in versleutelde kamers op mobiel.";
"room_notifs_settings_account_settings" = "Accountinstellingen";
"room_notifs_settings_manage_notifications" = "U kunt uw meldingen beheren in %@";
"room_notifs_settings_cancel_action" = "Annuleer";
"room_notifs_settings_cancel_action" = "Annuleren";
"room_notifs_settings_done_action" = "Klaar";
"room_notifs_settings_none" = "Geen";
"room_notifs_settings_mentions_and_keywords" = "Alleen vermeldingen en trefwoorden";

View file

@ -1406,7 +1406,14 @@
"settings_default" = "Förvalda aviseringar";
"settings_notifications" = "AVISERINGAR";
"settings_show_url_previews_description" = "Förhandsgranskningar kommer bara att visas i okrypterade rum.";
"settings_show_url_previews" = "Visa inbäddade URL-förhandsgranskningar";
"settings_show_url_previews" = "Visa förhandsgranskningar av webbsidor";
"settings_confirm_media_size_description" = "När detta är på så kommer du få bekräfta vilken storlek bilder och videor kommer att skickas som.";
"settings_confirm_media_size" = "Bekräfta storlek vid sparning";
"settings_sending_media" = "SÄNDNING AV BILDER OCH VIDEO";
"leave_space_title" = "Lämna %@";
"spaces_left_panel_title" = "Utrymmen";
"spaces_home_space_title" = "Hem";
"settings_links" = "LÄNKAR";
"room_recents_suggested_rooms_section" = "FÖRESLAGNA RUM";
"done" = "Klar";
"open" = "Öppna";

View file

@ -76,8 +76,8 @@
"auth_use_server_options" = "Власні налаштування сервера";
"auth_email_validation_message" = "Перевірте свою пошту для продовження реєстрації";
"auth_msisdn_validation_title" = "Очікування перевірки";
"auth_msisdn_validation_message" = "Ми надіслали SMS з кодом активації. Введіть цей код внизу.";
"auth_msisdn_validation_error" = "Неможливо перевірити номер телефону.";
"auth_msisdn_validation_message" = "Ми надіслали СМС із кодом активації. Введіть цей код унизу.";
"auth_msisdn_validation_error" = "Не вдалося перевірити номер телефону.";
"auth_recaptcha_message" = "Цей домашній сервер бажає переконатися, що ви не робот";
"auth_reset_password_message" = "Щоб відновити пароль, введіть адресу е-пошти, пов'язану з вашим обліковим записом:";
"auth_reset_password_missing_email" = "Необхідно ввести адресу е-пошти, пов'язану з вашим обліковим записом.";
@ -139,7 +139,7 @@
"client_web_name" = "Element Web";
"client_ios_name" = "Element iOS";
"auth_login_single_sign_on" = "Увійти";
"room_creation_invite_another_user" = "Пошук / запрошення по ідентифікатору користувача, імені або адреси електронної пошти";
"room_creation_invite_another_user" = "Пошук / запрошення за ID користувача, іменем або е-поштою";
"room_creation_error_invite_user_by_email_without_identity_server" = "Сервер ідентифікації не налаштовано, тому ви не можете додати учасника з е-поштою.";
// Room recents
"room_recents_directory_section" = "КАТАЛОГ КІМНАТ";
@ -234,7 +234,7 @@
"settings_change_password" = "Змінити пароль";
"settings_add_phone_number" = "Додати номер телефону";
"settings_phone_number" = "Телефон";
"settings_add_email_address" = "Додати адресу електронної пошти";
"settings_add_email_address" = "Додати адресу е-пошти";
"settings_email_address_placeholder" = "Введіть вашу адресу електронної пошти";
"room_title_one_active_member" = "%@/%@ активний учасник";
@ -664,13 +664,13 @@
// MARK: QR code
"key_verification_verify_qr_code_title" = "Підтвердити скануванням";
"key_verification_verify_qr_code_title" = "Звірити скануванням";
// Incoming key verification request
"key_verification_incoming_request_incoming_alert_message" = "%@ просить підтвердження";
"key_verification_incoming_request_incoming_alert_message" = "%@ бажає звіритись";
"key_verification_tile_conclusion_warning_title" = "Не довірений вхід";
"key_verification_tile_conclusion_done_title" = "Підтверджений";
"key_verification_tile_conclusion_done_title" = "Звірений";
"key_verification_tile_request_incoming_approval_accept" = "Прийняти";
"key_verification_tile_request_status_accepted" = "Ви прийняли";
"key_verification_tile_request_status_cancelled" = "%@ скасовує";
@ -681,8 +681,217 @@
// Tiles
"key_verification_tile_request_incoming_title" = "Запит підтвердження";
"key_verification_tile_request_incoming_title" = "Запит звірення";
"space_beta_announce_badge" = "БЕТА";
"space_beta_announce_title" = "Простори скоро з'являться";
"space_beta_announce_subtitle" = "Нова версія спільнот";
"space_beta_announce_information" = "Простори — це новий спосіб об'єднати кімнати та людей. Їх ще не додано на iOS, але ви вже можете користуватися ними у вебпереглядачі та на комп'ютері.";
// No VoIP support
"no_voip_title" = "Вхідний виклик";
"call_actions_unhold" = "Продовжити";
// MARK: - Call Transfer
"call_transfer_title" = "Переведення";
"space_avatar_view_accessibility_hint" = "Змінити аватар простору";
// Mark: Avatar
"space_avatar_view_accessibility_label" = "аватар";
"invite_friends_share_text" = "Агов, побалакай зі мною в %@: %@";
// MARK: - Invite friends
"invite_friends_action" = "Запросити друзів до %@";
// MARK: - Dial Pad
"dialpad_title" = "Номеронабирач";
"call_transfer_contacts_all" = "Усі";
"call_transfer_contacts_recent" = "Недавні";
"call_transfer_dialpad" = "Номеронабирач";
"room_open_dialpad" = "Номеронабирач";
"room_accessibility_search" = "Пошук";
"room_action_send_file" = "Надіслати файл";
"room_action_send_sticker" = "Надіслати наліпку";
"room_action_send_photo_or_video" = "Надіслати світлину або відео";
"room_event_failed_to_send" = "Не вдалося надіслати";
"room_event_action_edit" = "Редагувати";
"room_event_action_view_encryption" = "Відомості про шифрування";
"room_event_action_cancel_download" = "Скасувати завантаження";
"room_event_action_cancel_send" = "Скасувати надсилання";
"room_message_reply_to_short_placeholder" = "Надіслати відповідь…";
"room_message_short_placeholder" = "Надіслати повідомлення…";
"room_message_replying_to" = "У відповідь %@";
"room_message_editing" = "Редагування";
"room_message_unable_open_link_error_message" = "Неможливо відкрити посилання.";
"room_message_reply_to_placeholder" = "Надіслати відповідь (не зашифровану)…";
"room_message_placeholder" = "Надіслати повідомлення (не зашифроване)…";
"room_many_users_are_typing" = "%@, %@ та інші друкують…";
"room_two_users_are_typing" = "%@ і %@ друкують…";
"room_one_user_is_typing" = "%@ друкує…";
"room_new_messages_notification" = "%d нових повідомлень";
"room_new_message_notification" = "%d нове повідомлення";
"room_member_power_level_short_moderator" = "Модератор";
"room_member_power_level_short_admin" = "Адміністратор";
"room_member_power_level_moderator_in" = "Модератор у %@";
"room_member_power_level_admin_in" = "Адміністратор у %@";
"room_participants_security_loading" = "Завантаження…";
"room_participants_action_security_status_loading" = "Завантаження…";
"room_participants_action_security_status_warning" = "Попередження";
"public_room_section_title" = "Загальнодоступні кімнати (на %@):";
"do_not_ask_again" = "Не запитувати знову";
"event_formatter_group_call_join" = "Приєднатися";
"event_formatter_call_retry" = "Повторити";
"event_formatter_message_edited_mention" = "(змінено)";
"image_picker_action_library" = "Вибрати з бібліотеки";
// Image picker
"image_picker_action_camera" = "Сфотографувати";
"media_picker_select" = "Вибрати";
"room_participants_action_start_video_call" = "Почати відеовиклик";
"room_participants_action_start_voice_call" = "Почати голосовий виклик";
"security_settings_crypto_sessions_loading" = "Завантаження сеансів…";
"room_participants_action_start_new_chat" = "Почати нову бесіду";
"room_participants_action_set_admin" = "Зробити адміністратором";
"room_participants_action_set_moderator" = "Зробити модератором";
"security_settings_crypto_sessions" = "МОЇ СЕАНСИ";
"room_participants_action_section_security" = "Безпека";
// Security settings
"security_settings_title" = "Безпека";
"media_picker_library" = "Бібліотека";
// Media picker
"media_picker_title" = "Медіабібліотека";
"room_participants_action_section_other" = "Опції";
"room_participants_action_section_devices" = "Сеанси";
"room_participants_action_section_admin_tools" = "Засоби адміністратора";
"room_participants_ago" = "тому";
"room_participants_now" = "зараз";
// Group rooms
"group_rooms_filter_rooms" = "Фільтр кімнат спільноти";
"group_participants_invited_section" = "ЗАПРОШЕНІ";
"room_participants_invited_section" = "ЗАПРОШЕНІ";
"room_participants_invite_malformed_id" = "Хибний ID. Повинні бути адреса е-пошти або Matrix ID, наприклад, «@localpart:domain»";
"room_participants_invite_another_user" = "Пошук / запрошення за ID користувача, іменем або е-поштою";
"room_participants_filter_room_members_for_dm" = "Фільтр учасників";
"room_participants_filter_room_members" = "Фільтр учасників кімнати";
"room_participants_invite_prompt_msg" = "Ви впевнені, що хочете запросити %@ до цієї бесіди?";
"room_participants_remove_third_party_invite_prompt_msg" = "Ви впевнені, що хочете відкликати запрошення?";
"directory_search_results_title" = "Переглянути результати пошуку";
// Directory
"directory_cell_title" = "Огляд каталогу";
"rooms_empty_view_information" = "Кімнати чудові для будь-яких групових бесід, приватних чи загальнодоступних. Натисніть +, щоб знайти наявні кімнати або створити нові.";
"room_recents_unknown_room_error_message" = "Не вдалося знайти цю кімнату. Переконайтеся, що вона існує";
"room_recents_suggested_rooms_section" = "ПРОПОНОВАНІ КІМНАТИ";
"room_creation_dm_error" = "Ми не можемо створити ваше особисте повідомлення. Перевірте користувачів, яких ви хочете запросити й повторіть спробу.";
"done" = "Готово";
"open" = "Відкрити";
"settings_devices_description" = "Загальнодоступну назву сеансу бачать люди, з якими ви спілкуєтесь";
"no_voip" = "%@ викликає вас, але %@ поки що не підтримує дзвінки.\nВи можете знехтувати це сповіщення та відповісти на виклик з іншого пристрою, а можете відхилити його.";
"room_details_mute_notifs" = "Заглушити сповіщення";
"settings_mentions_and_keywords_encryption_notice" = "Ви не отримуватимете сповіщення про згадки та ключові слова в зашифрованих кімнатах на мобільних пристроях.";
"settings_default" = "Типові сповіщення";
"settings_notifications_disabled_alert_message" = "Щоб увімкнути сповіщення, перейдіть до налаштувань свого пристрою.";
"settings_notifications_disabled_alert_title" = "Сповіщення вимкнено";
"room_offline_notification" = "Зв'язок з сервером втрачено.";
"room_unsent_messages_unknown_devices_notification" = "Не вдалося надіслати повідомлення через наявність невідомих сеансів.";
"room_unsent_messages_notification" = "Не вдалося надіслати повідомлення.";
"directory_server_all_native_rooms" = "Усі кімнати сервера Matrix";
"group_participants_invite_malformed_id_title" = "Помилка запрошення";
"group_participants_remove_prompt_msg" = "Ви справді хочете вилучити %@ з цієї групи?";
"room_notifs_settings_encrypted_room_notice" = "Зверніть увагу, що сповіщення про згадки та ключові слова недоступні в зашифрованих кімнатах на мобільних пристроях.";
"room_notifs_settings_account_settings" = "Налаштування облікового запису";
"room_notifs_settings_manage_notifications" = "Ви можете керувати сповіщеннями у %@";
"room_notifs_settings_cancel_action" = "Скасувати";
"key_backup_setup_success_from_passphrase_done_action" = "Готово";
"room_notifs_settings_done_action" = "Готово";
"room_notifs_settings_none" = "Нічого";
"room_notifs_settings_mentions_and_keywords" = "Згадки та ключові слова";
"room_notifs_settings_all_messages" = "Усі повідомлення";
"settings_notify_me_for" = "Сповістити мене про";
// Room Notification Settings
"room_notifs_settings_notify_me_for" = "Сповістити мене про";
"room_details_copy_room_url" = "Копіювати URL-адресу кімнати";
"room_details_copy_room_address" = "Копіювати адресу кімнати";
"room_details_copy_room_id" = "Копіювати ID кімнати";
"room_details_unset_main_address" = "Не використовувати основною адресою";
"room_details_set_main_address" = "Установити основною адресою";
"room_details_save_changes_prompt" = "Бажаєте зберегти зміни?";
"room_details_fail_to_enable_encryption" = "Не вдалося увімкнути шифрування цієї кімнати";
"room_details_fail_to_update_room_communities" = "Не вдалося оновити пов'язані спільноти";
"room_details_new_address_placeholder" = "Додати нову адресу (напр., #foo%@)";
"room_details_new_address" = "Додати нову адресу";
// Re-request confirmation dialog
"rerequest_keys_alert_title" = "Запит надіслано";
"settings_key_backup_info_algorithm" = "Алгоритм: %@";
"settings_add_3pid_password_title_msidsn" = "Додати номер телефону";
"settings_device_notifications" = "Сповіщення пристрою";
"settings_add_3pid_password_title_email" = "Додати адресу е-пошти";
"settings_password_updated" = "Пароль оновлено";
"settings_fail_to_update_password" = "Не вдалося оновити пароль";
"settings_confirm_password" = "підтвердити пароль";
"settings_new_password" = "новий пароль";
"settings_old_password" = "старий пароль";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "Шифрування не увімкнено тут.";
"room_details_advanced_e2e_encryption_disabled" = "Шифрування не увімкнено в цій кімнаті.";
"room_details_advanced_e2e_encryption_enabled_for_dm" = "Шифрування увімкнено тут";
"room_details_advanced_e2e_encryption_enabled" = "Шифрування увімкнено в цій кімнаті";
"room_details_advanced_enable_e2e_encryption" = "Увімкнути шифрування (попередження: вимкнути не можливо!)";
"room_details_advanced_room_id_for_dm" = "ID:";
"room_details_advanced_room_id" = "ID кімнати:";
"room_details_advanced_section" = "Розширені";
"room_details_fail_to_update_room_canonical_alias" = "Не вдалося оновити основну адресу";
"room_details_fail_to_remove_room_aliases" = "Не вдалося вилучити адресу кімнати";
"room_details_fail_to_add_room_aliases" = "Не вдалося додати нову адресу кімнати";
"room_details_fail_to_update_history_visibility" = "Не вдалося оновити видимість історії";
"room_details_fail_to_update_room_directory_visibility" = "Не вдалося оновити видимість каталогу кімнати";
"room_details_fail_to_update_room_join_rule" = "Не вдалося оновити правила приєднання";
"room_details_fail_to_update_room_guest_access" = "Не вдалося оновити гостьовий доступ до кімнати";
"room_details_fail_to_update_topic" = "Не вдалося оновити тему";
"room_details_fail_to_update_room_name" = "Не вдалося оновити назву кімнати";
"room_details_fail_to_update_avatar" = "Не вдалося оновити світлину кімнати";
"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "Шифрування лише для звірених сеансів";
"settings_crypto_blacklist_unverified_devices" = "Шифрування лише для звірених сеансів";
"settings_crypto_export" = "Експорт ключів";
"settings_crypto_device_key" = "\nКлюч сеансу:\n";
"settings_crypto_device_id" = "\nID сеансу: ";
"settings_crypto_device_name" = "Назва сеансу: ";
"settings_add_3pid_invalid_password_message" = "Хибні облікові дані";
"settings_add_3pid_password_message" = "Щоб продовжити, введіть пароль";
"deactivate_account_password_alert_message" = "Щоб продовжити, введіть пароль";
// Deactivate account
"deactivate_account_title" = "Деактивувати обліковий запис";
"deactivate_account_password_alert_title" = "Деактивувати обліковий запис";
"deactivate_account_validate_action" = "Деактивувати обліковий запис";
"deactivate_account_forget_messages_information_part2_emphasize" = "Попередження";
"key_verification_self_verify_unverified_sessions_alert_validate_action" = "Перевірити";
"key_verification_self_verify_unverified_sessions_alert_message" = "Звірити всі свої сеанси, щоб переконатися, що ваш обліковий запис і повідомлення у безпеці.";
// Unverified sessions
"key_verification_self_verify_unverified_sessions_alert_title" = "Перевірте, де ви увійшли";
"key_verification_self_verify_current_session_alert_validate_action" = "Звірити";
"device_verification_self_verify_start_verify_action" = "Почати звірення";
"device_verification_self_verify_alert_validate_action" = "Звірити";
"key_verification_verified_new_session_title" = "Новий сеанс звірено!";
"device_verification_verified_got_it_button" = "Зрозуміло";
// MARK: Verified
// Device
"device_verification_verified_title" = "Звірено!";
// Device
"device_verification_verify_wait_partner" = "Очікування підтвердження партнером…";
"key_verification_manually_verify_device_validate_action" = "Звірити";
"room_participants_action_security_status_verify" = "Звірити";
"room_participants_action_security_status_verified" = "Звірений";

View file

@ -22,6 +22,10 @@
// Metrics related to notifications
FOUNDATION_EXPORT NSString *const AnalyticsNoficationsCategory;
FOUNDATION_EXPORT NSString *const AnalyticsNoficationsTimeToDisplayContent;
/**
The analytics value for accept/decline of the identity server's terms.
*/
FOUNDATION_EXPORT NSString *const AnalyticsContactsIdentityServerAccepted;
/**

View file

@ -21,6 +21,7 @@
NSString *const AnalyticsNoficationsCategory = @"notifications";
NSString *const AnalyticsNoficationsTimeToDisplayContent = @"timelineDisplay";
NSString *const AnalyticsContactsIdentityServerAccepted = @"identityServerAccepted";
// Duration data will be visible under the Piwik category called "Performance".

View file

@ -739,7 +739,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
}
alert = [UIAlertController alertControllerWithTitle:[VectorL10n authSoftlogoutClearDataSignOutTitle]
message:[VectorL10n authSoftlogoutClearDataSignOutMsg]
message:[VectorL10n authSoftlogoutClearDataSignOutMsg]
preferredStyle:UIAlertControllerStyleAlert];

View file

@ -5144,7 +5144,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
}
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n unknownDevicesAlertTitle]
message:[VectorL10n unknownDevicesAlertTitle]
message:[VectorL10n unknownDevicesAlert]
preferredStyle:UIAlertControllerStyleAlert];
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n unknownDevicesVerify]

View file

@ -130,12 +130,7 @@ public class VoiceMessageController: NSObject, VoiceMessageToolbarViewDelegate,
}
func voiceMessageToolbarViewDidRequestRecordingCancel(_ toolbarView: VoiceMessageToolbarView) {
isInLockedMode = false
audioPlayer?.stop()
audioRecorder?.stopRecording()
deleteRecordingAtURL(temporaryFileURL)
UINotificationFeedbackGenerator().notificationOccurred(.error)
updateUI()
cancelRecording()
}
func voiceMessageToolbarViewDidRequestLockedModeRecording(_ toolbarView: VoiceMessageToolbarView) {
@ -259,6 +254,8 @@ public class VoiceMessageController: NSObject, VoiceMessageToolbarViewDelegate,
guard isInLockedMode else {
if recordDuration ?? 0 >= Constants.minimumRecordingDuration {
sendRecordingAtURL(temporaryFileURL)
} else {
cancelRecording()
}
return
}
@ -268,6 +265,19 @@ public class VoiceMessageController: NSObject, VoiceMessageToolbarViewDelegate,
updateUI()
}
private func cancelRecording() {
isInLockedMode = false
audioPlayer?.stop()
audioRecorder?.stopRecording()
deleteRecordingAtURL(temporaryFileURL)
UINotificationFeedbackGenerator().notificationOccurred(.error)
updateUI()
}
private func loadDraftRecording() {
guard let temporaryFileURL = temporaryFileURL,
let roomId = roomId else {

View file

@ -43,7 +43,6 @@ class VoiceMessagePlaybackView: UIView, NibLoadable, Themable {
private var _waveformView: VoiceMessageWaveformView!
private var currentTheme: Theme?
private var scrubProgress: CGFloat?
@IBOutlet private var backgroundView: UIView!
@IBOutlet private var recordingIcon: UIView!
@ -51,6 +50,9 @@ class VoiceMessagePlaybackView: UIView, NibLoadable, Themable {
@IBOutlet private var elapsedTimeLabel: UILabel!
@IBOutlet private var waveformContainerView: UIView!
private var longPressGestureRecognizer: UILongPressGestureRecognizer!
private var panGestureRecognizer: UIPanGestureRecognizer!
weak var delegate: VoiceMessagePlaybackViewDelegate?
var details: VoiceMessagePlaybackViewDetails?
@ -75,6 +77,14 @@ class VoiceMessagePlaybackView: UIView, NibLoadable, Themable {
_waveformView = VoiceMessageWaveformView(frame: waveformContainerView.bounds)
waveformContainerView.vc_addSubViewMatchingParent(_waveformView)
longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPressGesture(_:)))
longPressGestureRecognizer.minimumPressDuration = 0.2
waveformView.addGestureRecognizer(longPressGestureRecognizer)
panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
panGestureRecognizer.isEnabled = false
waveformView.addGestureRecognizer(panGestureRecognizer)
}
func configureWithDetails(_ details: VoiceMessagePlaybackViewDetails?) {
@ -136,28 +146,36 @@ class VoiceMessagePlaybackView: UIView, NibLoadable, Themable {
currentTheme = theme
configureWithDetails(details)
}
// MARK: - Private
@IBAction private func onPlayButtonTap() {
delegate?.voiceMessagePlaybackViewDidRequestPlaybackToggle()
}
@IBAction private func tap(gestureRecognizer: UITapGestureRecognizer) {
@objc private func handleLongPressGesture(_ gestureRecognizer: UITapGestureRecognizer) {
let x = gestureRecognizer.location(in: waveformContainerView).x.clamped(to: 0...waveformContainerView.bounds.width)
let progress = x / waveformContainerView.bounds.width
delegate?.voiceMessagePlaybackViewDidRequestSeek(to: progress)
}
@IBAction private func pan(gestureRecognizer: UIPanGestureRecognizer) {
switch gestureRecognizer.state {
case .began, .changed:
let x = gestureRecognizer.location(in: waveformContainerView).x.clamped(to: 0...waveformContainerView.bounds.width)
let progress = x / waveformContainerView.bounds.width
scrubProgress = progress
delegate?.voiceMessagePlaybackViewDidRequestSeek(to: progress)
default:
scrubProgress = nil
}
switch gestureRecognizer.state {
case .began:
panGestureRecognizer.isEnabled = true
case .ended, .failed, .cancelled:
panGestureRecognizer.isEnabled = false
default:
break
}
}
@objc private func handlePanGesture(_ gestureRecognizer: UIPanGestureRecognizer) {
switch gestureRecognizer.state {
case .began, .changed:
let x = gestureRecognizer.location(in: waveformContainerView).x.clamped(to: 0...waveformContainerView.bounds.width)
let progress = x / waveformContainerView.bounds.width
delegate?.voiceMessagePlaybackViewDidRequestSeek(to: progress)
default:
break
}
}
}

View file

@ -51,10 +51,6 @@
<rect key="frame" x="94" y="7" width="317" height="30"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<gestureRecognizers/>
<connections>
<outletCollection property="gestureRecognizers" destination="TvB-7x-51j" appends="YES" id="2ac-M3-OKn"/>
<outletCollection property="gestureRecognizers" destination="Fwa-Eg-VFh" appends="YES" id="meS-g1-yIc"/>
</connections>
</view>
</subviews>
<constraints>
@ -86,16 +82,6 @@
</connections>
<point key="canvasLocation" x="-1742.753623188406" y="-299.33035714285711"/>
</view>
<panGestureRecognizer minimumNumberOfTouches="1" id="TvB-7x-51j">
<connections>
<action selector="panWithGestureRecognizer:" destination="cGR-49-HWB" id="mcT-Wy-ePL"/>
</connections>
</panGestureRecognizer>
<tapGestureRecognizer id="Fwa-Eg-VFh">
<connections>
<action selector="tapWithGestureRecognizer:" destination="cGR-49-HWB" id="VMd-gQ-DPy"/>
</connections>
</tapGestureRecognizer>
</objects>
<resources>
<image name="voice_message_play_button" width="15.5" height="15"/>

View file

@ -69,7 +69,9 @@ final class ServiceTermsModalCoordinatorBridgePresenter: NSObject {
func present(from viewController: UIViewController, animated: Bool) {
let serviceTermsModalCoordinator = ServiceTermsModalCoordinator(session: self.session, baseUrl: self.baseUrl, serviceType: self.serviceType, outOfContext: self.outOfContext, accessToken: accessToken)
serviceTermsModalCoordinator.delegate = self
viewController.present(serviceTermsModalCoordinator.toPresentable(), animated: animated, completion: nil)
let presentable = serviceTermsModalCoordinator.toPresentable()
presentable.presentationController?.delegate = self
viewController.present(presentable, animated: animated, completion: nil)
serviceTermsModalCoordinator.start()
if let coordinator = self.coordinator {
@ -98,13 +100,36 @@ extension ServiceTermsModalCoordinatorBridgePresenter: ServiceTermsModalCoordina
func serviceTermsModalCoordinatorDidAccept(_ coordinator: ServiceTermsModalCoordinatorType) {
self.delegate?.serviceTermsModalCoordinatorBridgePresenterDelegateDidAccept(self)
if serviceType == MXServiceTypeIdentityService {
Analytics.sharedInstance().trackValue(1, category: kMXKAnalyticsContactsCategory, name: AnalyticsContactsIdentityServerAccepted)
}
}
func serviceTermsModalCoordinatorDidDecline(_ coordinator: ServiceTermsModalCoordinatorType) {
self.delegate?.serviceTermsModalCoordinatorBridgePresenterDelegateDidDecline(self, session: self.session)
if serviceType == MXServiceTypeIdentityService {
Analytics.sharedInstance().trackValue(0, category: kMXKAnalyticsContactsCategory, name: AnalyticsContactsIdentityServerAccepted)
}
}
func serviceTermsModalCoordinatorDidCancel(_ coordinator: ServiceTermsModalCoordinatorType) {
self.delegate?.serviceTermsModalCoordinatorBridgePresenterDelegateDidCancel(self)
if serviceType == MXServiceTypeIdentityService {
Analytics.sharedInstance().trackValue(0, category: kMXKAnalyticsContactsCategory, name: AnalyticsContactsIdentityServerAccepted)
}
}
}
// MARK: - UIAdaptivePresentationControllerDelegate
extension ServiceTermsModalCoordinatorBridgePresenter: UIAdaptivePresentationControllerDelegate {
func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
self.delegate?.serviceTermsModalCoordinatorBridgePresenterDelegateDidCancel(self)
if serviceType == MXServiceTypeIdentityService {
Analytics.sharedInstance().trackValue(0, category: kMXKAnalyticsContactsCategory, name: AnalyticsContactsIdentityServerAccepted)
}
}
}

View file

@ -239,7 +239,7 @@ static CGFloat const kTextFontSize = 15.0;
__weak typeof(self) weakSelf = self;
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n submit]
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
UITextField *textField = alert.textFields.firstObject;

View file

@ -1151,7 +1151,7 @@ TableViewSectionsDelegate>
// Ask password again
self->currentAlert = [UIAlertController alertControllerWithTitle:nil
message:[VectorL10n settingsAdd3pidPasswordMessage]
message:[VectorL10n settingsAdd3pidInvalidPasswordMessage]
preferredStyle:UIAlertControllerStyleAlert];
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n retry] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
@ -1375,7 +1375,7 @@ TableViewSectionsDelegate>
title = [VectorL10n settingsAdd3pidPasswordTitleEmail];
}
NSString *message = [VectorL10n settingsAdd3pidInvalidPasswordMessage];
NSString *message = [VectorL10n settingsAdd3pidPasswordMessage];
[session.matrixRestClient add3PIDOnlyWithSessionId:@"" clientSecret:[MXTools generateSecret] authParams:nil success:^{

View file

@ -80,7 +80,7 @@ class SpaceDetailViewModel: SpaceDetailViewModelType {
self.update(viewState: .loaded(parameters))
self.update(viewState: .loading)
space.room.state { state in
space.room?.state { state in
let joinRule = state?.joinRule
let membersCount = summary.membersCount.members

View file

@ -53,6 +53,8 @@ final class SpaceListViewModel: SpaceListViewModelType {
self.userSessionsService = userSessionsService
NotificationCenter.default.addObserver(self, selector: #selector(self.sessionDidSync(notification:)), name: MXSpaceService.didBuildSpaceGraph, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.counterDidUpdateNotificationCount(notification:)), name: MXSpaceNotificationCounter.didUpdateNotificationCount, object: nil)
}
@ -122,6 +124,10 @@ final class SpaceListViewModel: SpaceListViewModelType {
loadData()
}
@objc private func counterDidUpdateNotificationCount(notification: Notification) {
loadData()
}
private func loadData() {
guard let session = self.userSessionsService.mainUserSession?.matrixSession else {
return

View file

@ -76,12 +76,12 @@ class SpaceMenuViewModel: SpaceMenuViewModelType {
}
private func leaveSpace() {
guard let space = self.session.spaceService.getSpace(withId: self.spaceId), let displayName = space.summary?.displayname else {
guard let room = self.session.room(withRoomId: self.spaceId), let displayName = room.summary?.displayname else {
return
}
var isAdmin = false
if let roomState = space.room.dangerousSyncState, let powerLevels = roomState.powerLevels {
if let roomState = room.dangerousSyncState, let powerLevels = roomState.powerLevels {
let powerLevel = powerLevels.powerLevelOfUser(withUserID: self.session.myUserId)
let roomPowerLevel = RoomPowerLevelHelper.roomPowerLevel(from: powerLevel)
isAdmin = roomPowerLevel == .admin
@ -156,7 +156,7 @@ class SpaceMenuViewModel: SpaceMenuViewModelType {
}
private func leaveSpace(_ space: MXSpace) {
space.room.leave(completion: { [weak self] response in
space.room?.leave(completion: { [weak self] response in
guard let self = self else {
return
}

View file

@ -64,6 +64,8 @@
// Custom title view of the navigation bar
MainTitleView *titleView;
id spaceNotificationCounterDidUpdateNotificationCountObserver;
}
@property(nonatomic,getter=isHidden) BOOL hidden;
@ -122,7 +124,7 @@
childViewControllers = [NSMutableArray array];
MXWeakify(self);
[[NSNotificationCenter defaultCenter] addObserverForName:MXSpaceService.didBuildSpaceGraph object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
spaceNotificationCounterDidUpdateNotificationCountObserver = [[NSNotificationCenter defaultCenter] addObserverForName:MXSpaceNotificationCounter.didUpdateNotificationCount object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
MXStrongifyAndReturnIfNil(self);
[self updateSideMenuNotifcationIcon];
}];
@ -272,6 +274,12 @@
kThemeServiceDidChangeThemeNotificationObserver = nil;
}
if (spaceNotificationCounterDidUpdateNotificationCountObserver)
{
[[NSNotificationCenter defaultCenter] removeObserver:spaceNotificationCounterDidUpdateNotificationCountObserver];
spaceNotificationCounterDidUpdateNotificationCountObserver = nil;
}
childViewControllers = nil;
}

View file

@ -47,7 +47,7 @@
if (user.currentlyActive)
{
presenceText = [presenceText stringByAppendingString:[VectorL10n roomParticipantsNow]];
presenceText = [presenceText stringByAppendingString:[NSString stringWithFormat:@" %@",[VectorL10n roomParticipantsNow]]];
}
else if (-1 != user.lastActiveAgo && 0 < user.lastActiveAgo)
{

1
changelog.d/4898.bugfix Normal file
View file

@ -0,0 +1 @@
MasterTabBarController: Listen to `MXSpaceNotificationCounter` to update the notification badge

1
changelog.d/4935.change Normal file
View file

@ -0,0 +1 @@
Voice Message scrubbing should require a slightly longer press, to avoid accidental scrubbing when scrolling the timeline

1
changelog.d/4951.build Normal file
View file

@ -0,0 +1 @@
Bundler: Update CocoaPods and fastlane and xcode-install.

1
changelog.d/4955.change Normal file
View file

@ -0,0 +1 @@
Service Terms: Track an analytics value on accept/decline of an identity server.

1
changelog.d/4970.bugfix Normal file
View file

@ -0,0 +1 @@
Fixed unintentional voice message drafts on automatically cancelled recordings (under 1 second)