Prefix the user's own messages with 'You' in the room list. (#4022)

This commit is contained in:
Doug
2025-04-14 14:00:19 +01:00
committed by GitHub
parent 6c07af84cc
commit 1bc16c84ba
39 changed files with 118 additions and 44 deletions

View File

@@ -1143,6 +1143,7 @@
E4D261E237D5D45E6DF2D0F1 /* ManageRoomMemberSheetModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 787E84119E626E2F0E0BFBE8 /* ManageRoomMemberSheetModels.swift */; };
E4F924DECC66389C1C810550 /* AuthenticationStartScreenBackgroundImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D685B4DB38BB5BD87C956A /* AuthenticationStartScreenBackgroundImage.swift */; };
E58F1F3276E98A93F7D39219 /* RoomPollsHistoryScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1D8479BB704B7EF696F8ABE /* RoomPollsHistoryScreenCoordinator.swift */; };
E591742E509A2A009BF25F9D /* RoomEventStringBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE5800184E93CD5E02C6543 /* RoomEventStringBuilderTests.swift */; };
E5AB28123E2488F97E953AC0 /* CallNotificationRoomTimelineItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1ED17433ADC77287F8904F9 /* CallNotificationRoomTimelineItem.swift */; };
E5E43A0CA99AF5BA11B194A2 /* EncryptionSettingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57AD14D3ADADE8F6A10F9E88 /* EncryptionSettingsTests.swift */; };
E5F4C992845388B50BABACAA /* ServerSelectionScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB8BC4C791D0E88CFCF4E5DF /* ServerSelectionScreenCoordinator.swift */; };
@@ -1875,6 +1876,7 @@
6A8E19C4645D3F5F9FB02355 /* UnitTestsAppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnitTestsAppCoordinator.swift; sourceTree = "<group>"; };
6AB54B4F94686CCF0289B72F /* UserIndicatorPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserIndicatorPresenter.swift; sourceTree = "<group>"; };
6AD1A853D605C2146B0DC028 /* MatrixEntityRegex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatrixEntityRegex.swift; sourceTree = "<group>"; };
6AE5800184E93CD5E02C6543 /* RoomEventStringBuilderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomEventStringBuilderTests.swift; sourceTree = "<group>"; };
6B2A421198FD20AAAED20004 /* RoomChangeRolesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChangeRolesScreen.swift; sourceTree = "<group>"; };
6B5E29E9A22F45534FBD5B58 /* EmojiPickerScreenHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerScreenHeaderView.swift; sourceTree = "<group>"; };
6C113E0CB7E15E9765B1817A /* EmojiProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiProvider.swift; sourceTree = "<group>"; };
@@ -4318,6 +4320,7 @@
00E5B2CBEF8F96424F095508 /* RoomDetailsEditScreenViewModelTests.swift */,
2EFE1922F39398ABFB36DF3F /* RoomDetailsViewModelTests.swift */,
EE6BFF453838CF6C3982C5A3 /* RoomDirectorySearchScreenScreenViewModelTests.swift */,
6AE5800184E93CD5E02C6543 /* RoomEventStringBuilderTests.swift */,
4FCB2126C091EEF2454B4D56 /* RoomFlowCoordinatorTests.swift */,
8AE0C9653870803E4F91F474 /* RoomListFiltersStateTests.swift */,
EC589E641AE46EFB2962534D /* RoomMemberDetailsViewModelTests.swift */,
@@ -6802,6 +6805,7 @@
9DD84E014ADFB2DD813022D5 /* RoomDetailsEditScreenViewModelTests.swift in Sources */,
EA974337FA7D040E7C74FE6E /* RoomDetailsViewModelTests.swift in Sources */,
5B7D24A318AFF75AD611A026 /* RoomDirectorySearchScreenScreenViewModelTests.swift in Sources */,
E591742E509A2A009BF25F9D /* RoomEventStringBuilderTests.swift in Sources */,
095D3906CF2F940C2D2D17CC /* RoomFlowCoordinatorTests.swift in Sources */,
4C8C0C9FC10BA73AB7780534 /* RoomListFiltersStateTests.swift in Sources */,
6B31508C6334C617360C2EAB /* RoomMemberDetailsViewModelTests.swift in Sources */,

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Галасавое паведамленне";
"common_waiting" = "Чакаем…";
"common_waiting_for_decryption_key" = "Чакаю гэта паведамленне";
"common_you" = "Вы";
"common.copied_to_clipboard" = "Скапіравана ў буфер абмену";
"common.do_not_show_this_again" = "Не паказваць гэта зноў";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Ліцэнзіі з адкрытым зыходным кодам";
"common.pinned" = "Замацаваны";
"common.send_to" = "Адправіць";
"common.you" = "Вы";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Ваша рэзервовая копія чата зараз не сінхранізавана. Вам трэба пацвердзіць ключ аднаўлення, каб захаваць доступ да рэзервовай копіі чата.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Гласово съобщение";
"common_waiting" = "Waiting…";
"common_waiting_for_decryption_key" = "В очакване на това съобщение";
"common_you" = "You";
"common.copied_to_clipboard" = "Copied to clipboard";
"common.do_not_show_this_again" = "Do not show this again";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Open source licenses";
"common.pinned" = "Pinned";
"common.send_to" = "Send to";
"common.you" = "You";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Резервното копие на чатовете ви в момента не е синхронизирано. Въведете ключа си за възстановяване, за да потвърдите достъпа до резервното копие на чатовете си.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Hlasová zpráva";
"common_waiting" = "Čekání...";
"common_waiting_for_decryption_key" = "Čekání na dešifrovací klíč";
"common_you" = "Vy";
"common.copied_to_clipboard" = "Zkopírováno do schránky";
"common.do_not_show_this_again" = "Znovu nezobrazovat";
"common.empty_file" = "Prázdný soubor";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licence s otevřeným zdrojovým kódem";
"common.pinned" = "Připnuto";
"common.send_to" = "Odeslat do";
"common.you" = "Vy";
"common_unable_to_decrypt_insecure_device" = "Šifrováno nezabezpečeným zařízením";
"common_unable_to_decrypt_verification_violation" = "Ověřená identita odesílatele se změnila";
"confirm_recovery_key_banner_message" = "Potvrďte klíč pro obnovení, abyste zachovali přístup k úložišti klíčů a historii zpráv.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Voice message";
"common_waiting" = "Waiting…";
"common_waiting_for_decryption_key" = "Waiting for this message";
"common_you" = "Chi";
"common.copied_to_clipboard" = "Wedi'i gopïo i'r clipfwrdd";
"common.do_not_show_this_again" = "Do not show this again";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Open source licenses";
"common.pinned" = "Piniwyd";
"common.send_to" = "Anfon at";
"common.you" = "Chi";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Confirm your recovery key to maintain access to your key storage and message history.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Sprachnachricht";
"common_waiting" = "Warten…";
"common_waiting_for_decryption_key" = "Warte auf diese Nachricht";
"common_you" = "Sie";
"common.copied_to_clipboard" = "In die Zwischenablage kopiert";
"common.do_not_show_this_again" = "Nicht mehr anzeigen";
"common.empty_file" = "Leere Datei";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Open-Source-Lizenzen";
"common.pinned" = "Fixiert";
"common.send_to" = "Senden an";
"common.you" = "Sie";
"common_unable_to_decrypt_insecure_device" = "Von einem ungesicherten Gerät gesendet";
"common_unable_to_decrypt_verification_violation" = "Die verifizierte Identität des Senders hat sich geändert";
"confirm_recovery_key_banner_message" = "Bestätigen Sie die Validität Ihres Wiederherstellungsschlüssels, um weiterhin auf Ihren Schlüsselspeicher und den Nachrichtenverlauf zugreifen zu können.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Φωνητικό μήνυμα";
"common_waiting" = "Αναμονή…";
"common_waiting_for_decryption_key" = "Αναμονή για αυτό το μήνυμα";
"common_you" = "Εσύ";
"common.copied_to_clipboard" = "Αντιγράφηκε στο πρόχειρο";
"common.do_not_show_this_again" = "Να μην εμφανιστεί ξανά";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Άδειες ανοιχτού κώδικα";
"common.pinned" = "Καρφιτσωμένο";
"common.send_to" = "Αποστολή σε";
"common.you" = "Εσύ";
"common_unable_to_decrypt_insecure_device" = "Στάλθηκε από μια μη ασφαλής συσκευή";
"common_unable_to_decrypt_verification_violation" = "Η επαληθευμένη ταυτότητα του αποστολέα έχει επαναφερθεί";
"confirm_recovery_key_banner_message" = "Επιβεβαίωσε το κλειδί ανάκτησης για να διατηρήσεις την πρόσβαση στο χώρο αποθήκευσης κλειδιών και στο ιστορικό μηνυμάτων.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Voice message";
"common_waiting" = "Waiting…";
"common_waiting_for_decryption_key" = "Waiting for this message";
"common_you" = "You";
"common.copied_to_clipboard" = "Copied to clipboard";
"common.do_not_show_this_again" = "Do not show this again";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Open source licenses";
"common.pinned" = "Pinned";
"common.send_to" = "Send to";
"common.you" = "You";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Confirm your recovery key to maintain access to your key storage and message history.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Voice message";
"common_waiting" = "Waiting…";
"common_waiting_for_decryption_key" = "Waiting for this message";
"common_you" = "You";
"common.copied_to_clipboard" = "Copied to clipboard";
"common.do_not_show_this_again" = "Do not show this again";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Open source licenses";
"common.pinned" = "Pinned";
"common.send_to" = "Send to";
"common.you" = "You";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Confirm your recovery key to maintain access to your key storage and message history.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Mensaje de voz";
"common_waiting" = "Esperando…";
"common_waiting_for_decryption_key" = "Esperando este mensaje";
"common_you" = "Tú";
"common.copied_to_clipboard" = "Copiado al portapapeles";
"common.do_not_show_this_again" = "No mostrar de nuevo";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licencias de código abierto";
"common.pinned" = "Fijado";
"common.send_to" = "Enviar a";
"common.you" = "Tú";
"common_unable_to_decrypt_insecure_device" = "Enviado desde un dispositivo no seguro";
"common_unable_to_decrypt_verification_violation" = "La identidad verificada del remitente ha cambiado";
"confirm_recovery_key_banner_message" = "Confirma tu clave de recuperación para mantener el acceso a tu almacén de claves y al historial de mensajes.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Häälsõnum";
"common_waiting" = "Ootame…";
"common_waiting_for_decryption_key" = "Ootame selle sõnumi dekrüptimisvõtit";
"common_you" = "Sina";
"common.copied_to_clipboard" = "Kopeeritud lõikelauale";
"common.do_not_show_this_again" = "Ära enam näita seda uuesti";
"common.empty_file" = "Tühi fail";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Avatud lähtekoodiga litsentsid";
"common.pinned" = "Esiletõstetud";
"common.send_to" = "Saada kasutajale";
"common.you" = "Sina";
"common_unable_to_decrypt_insecure_device" = "Saadetud ebaturvalisest seadmest";
"common_unable_to_decrypt_verification_violation" = "Saatja verifitseeritud identiteet on lähtestatud";
"confirm_recovery_key_banner_message" = "Säilitamaks ligipääsu vestluste ja krüptovõtmete varukoopiale, palun sisesta kinnituseks oma taastevõti.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Ahots-mezua";
"common_waiting" = "Zain…";
"common_waiting_for_decryption_key" = "Mezu honen zain";
"common_you" = "Zeu";
"common.copied_to_clipboard" = "Arbelean kopiatu da";
"common.do_not_show_this_again" = "Ez erakutsi berriro";
"common.empty_file" = "Fitxategia hutsik dago";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Kode irekiko lizentziak";
"common.pinned" = "Finkatuta";
"common.send_to" = "Bidali";
"common.you" = "Zeu";
"common_unable_to_decrypt_insecure_device" = "Egiaztatu gabeko gailu batetik bidalia";
"common_unable_to_decrypt_verification_violation" = "Igorlearen egiaztatutako identitatea berrezarri da";
"confirm_recovery_key_banner_message" = "Confirm your recovery key to maintain access to your key storage and message history.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "پیام صوتی";
"common_waiting" = "در انتظار…";
"common_waiting_for_decryption_key" = "در انتظار این پیام";
"common_you" = "شما";
"common.copied_to_clipboard" = "در تخته‌گیره رونوشت شد";
"common.do_not_show_this_again" = "این مورد را دوباره نشان نده";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "پروانه‌های نرم‌افزاری آزاد";
"common.pinned" = "سنجاق شده";
"common.send_to" = "فرستادن به";
"common.you" = "شما";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Confirm your recovery key to maintain access to your key storage and message history.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Ääniviesti";
"common_waiting" = "Odotetaan…";
"common_waiting_for_decryption_key" = "Odotetaan viestiä";
"common_you" = "Sinä";
"common.copied_to_clipboard" = "Kopioitu leikepöydälle";
"common.do_not_show_this_again" = "Älä näytä tätä uudelleen";
"common.empty_file" = "Tyhjä tiedosto";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Avoimen lähdekoodin lisenssit";
"common.pinned" = "Kiinnitetty";
"common.send_to" = "Jaa";
"common.you" = "Sinä";
"common_unable_to_decrypt_insecure_device" = "Lähetetty suojaamattomasta laitteesta";
"common_unable_to_decrypt_verification_violation" = "Lähettäjän vahvistettu identiteetti nollattiin";
"confirm_recovery_key_banner_message" = "Vahvista palautusavaimesi, jotta pääset edelleen käyttämään avainten säilytystä ja viestihistoriaa.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Message vocal";
"common_waiting" = "En attente…";
"common_waiting_for_decryption_key" = "En attente de la clé de déchiffrement";
"common_you" = "Vous";
"common.copied_to_clipboard" = "Copié dans le presse-papiers";
"common.do_not_show_this_again" = "Ne plus afficher";
"common.empty_file" = "Fichier vide";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licences open source";
"common.pinned" = "Épinglé";
"common.send_to" = "Envoyer vers";
"common.you" = "Vous";
"common_unable_to_decrypt_insecure_device" = "Envoyé depuis un appareil non sécurisé";
"common_unable_to_decrypt_verification_violation" = "L'identité vérifiée de l'expéditeur a été réinitialisée";
"confirm_recovery_key_banner_message" = "Confirmez votre clé de récupération pour conserver laccès à votre stockage de clés et à lhistorique des messages.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Hangüzenet";
"common_waiting" = "Várakozás…";
"common_waiting_for_decryption_key" = "Várakozás a visszafejtési kulcsra";
"common_you" = "Ön";
"common.copied_to_clipboard" = "A vágólapra másolva";
"common.do_not_show_this_again" = "Ne jelenjen meg többé";
"common.empty_file" = "Üres fájl";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Nyílt forráskódú licencek";
"common.pinned" = "Kitűzve";
"common.send_to" = "Címzett";
"common.you" = "Ön";
"common_unable_to_decrypt_insecure_device" = "Nem biztonságos eszközről küldve";
"common_unable_to_decrypt_verification_violation" = "A feladó ellenőrzött személyazonossága megváltozott";
"confirm_recovery_key_banner_message" = "Erősítse meg a helyreállítási kulcsát, hogy továbbra is hozzáférjen a kulcstárolójához és az üzenetelőzményekhez.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Pesan suara";
"common_waiting" = "Menunggu…";
"common_waiting_for_decryption_key" = "Menunggu pesan ini";
"common_you" = "Anda";
"common.copied_to_clipboard" = "Disalin ke papan klip";
"common.do_not_show_this_again" = "Jangan tampilkan ini lagi";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Lisensi sumber terbuka";
"common.pinned" = "Disematkan";
"common.send_to" = "Kirim ke";
"common.you" = "Anda";
"common_unable_to_decrypt_insecure_device" = "Dikirim dari perangkat yang tidak aman";
"common_unable_to_decrypt_verification_violation" = "Identitas terverifikasi pengirim diatur ulang";
"confirm_recovery_key_banner_message" = "Konfirmasikan kunci pemulihan Anda untuk mempertahankan akses ke penyimpanan kunci dan riwayat pesan Anda.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Messaggio vocale";
"common_waiting" = "In attesa…";
"common_waiting_for_decryption_key" = "In attesa del messaggio";
"common_you" = "Tu";
"common.copied_to_clipboard" = "Copiato negli appunti";
"common.do_not_show_this_again" = "Non mostrarlo più";
"common.empty_file" = "File vuoto";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licenze open source";
"common.pinned" = "Fissato";
"common.send_to" = "Invia a";
"common.you" = "Tu";
"common_unable_to_decrypt_insecure_device" = "Inviato da un dispositivo non sicuro";
"common_unable_to_decrypt_verification_violation" = "L'identità verificata del mittente è stata reimpostata";
"confirm_recovery_key_banner_message" = "Conferma la chiave di recupero per mantenere l'accesso all'archiviazione delle chiavi e alla cronologia dei messaggi.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "ხმოვანი შეტყობინება";
"common_waiting" = "მოცდა...";
"common_waiting_for_decryption_key" = "ლოდინი ამ შეტყობინებისათვის";
"common_you" = "You";
"common.copied_to_clipboard" = "Copied to clipboard";
"common.do_not_show_this_again" = "Do not show this again";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Open source licenses";
"common.pinned" = "Pinned";
"common.send_to" = "Send to";
"common.you" = "You";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "დაადასტურეთ თქვენი აღდგენის გასაღები რათა გქონდეთ წვდომა გასაღებების დამგროვებელთან და შეტყობინებების ისტორიასთან.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Voice message";
"common_waiting" = "Waiting…";
"common_waiting_for_decryption_key" = "Waiting for this message";
"common_you" = "You";
"common.copied_to_clipboard" = "Copied to clipboard";
"common.do_not_show_this_again" = "Do not show this again";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Open source licenses";
"common.pinned" = "Pinned";
"common.send_to" = "Send to";
"common.you" = "You";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Confirm your recovery key to maintain access to your key storage and message history.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Talemelding";
"common_waiting" = "Venter...";
"common_waiting_for_decryption_key" = "Venter på denne meldingen";
"common_you" = "Du";
"common.copied_to_clipboard" = "Kopiert til utklippstavlen";
"common.do_not_show_this_again" = "Ikke vis dette igjen";
"common.empty_file" = "Tom fil";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Åpen kildekode-lisenser";
"common.pinned" = "Festet";
"common.send_to" = "Sendt til";
"common.you" = "Du";
"common_unable_to_decrypt_insecure_device" = "Sendt fra en usikker enhet";
"common_unable_to_decrypt_verification_violation" = "Avsenderens verifiserte identitet ble tilbakestilt";
"confirm_recovery_key_banner_message" = "Verifiser gjenopprettingsnøkkelen for å opprettholde tilgangen til nøkkellageret og meldingshistorikken.";
@@ -403,7 +403,7 @@
"screen_advanced_settings_show_media_timeline_always_show" = "Vis alltid";
"screen_advanced_settings_show_media_timeline_private_rooms" = "I private rom";
"screen_advanced_settings_show_media_timeline_subtitle" = "Et skjult medium kan alltid vises ved å trykke på det";
"screen_advanced_settings_show_media_timeline_title" = "Vis media i tidslinjen";
"screen_advanced_settings_show_media_timeline_title" = "Vis medier i tidslinjen";
"screen_bottom_sheet,manage_room_member_remove" = "Fjern fra rommet";
"screen_bottom_sheet_create_dm_confirmation_button_title" = "Send invitasjon";
"screen_bottom_sheet_create_dm_message" = "Vil du starte en chat med %1$@?";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Spraakbericht";
"common_waiting" = "Wachten…";
"common_waiting_for_decryption_key" = "Wachten op dit bericht";
"common_you" = "Jij";
"common.copied_to_clipboard" = "Gekopieerd naar klembord";
"common.do_not_show_this_again" = "Dit niet meer weergeven";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Open-sourcelicenties";
"common.pinned" = "Vastgezet";
"common.send_to" = "Sturen naar";
"common.you" = "Jij";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Je chatback-up is momenteel niet gesynchroniseerd. Je moet je herstelsleutel invoeren om toegang te behouden tot je chatback-up.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Wiadomość głosowa";
"common_waiting" = "Oczekiwanie…";
"common_waiting_for_decryption_key" = "Oczekiwanie na tę wiadomość";
"common_you" = "Ty";
"common.copied_to_clipboard" = "Skopiowano do schowka";
"common.do_not_show_this_again" = "Nie pokazuj ponownie";
"common.empty_file" = "Pusty plik";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licencje open-source";
"common.pinned" = "Przypięte";
"common.send_to" = "Wyślij do";
"common.you" = "Ty";
"common_unable_to_decrypt_insecure_device" = "Wysłane z niebezpiecznego urządzenia";
"common_unable_to_decrypt_verification_violation" = "Zweryfikowana tożsamość nadawcy uległa zmianie";
"confirm_recovery_key_banner_message" = "Potwierdź klucz przywracania, aby zachować dostęp do magazynu kluczy i historii wiadomości.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Mensagem de voz";
"common_waiting" = "Esperando...";
"common_waiting_for_decryption_key" = "Aguardando esta mensagem";
"common_you" = "Você";
"common.copied_to_clipboard" = "Copied to clipboard";
"common.do_not_show_this_again" = "Não mostrar isto novamente";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licenças de código aberto";
"common.pinned" = "Pinned";
"common.send_to" = "Enviar para";
"common.you" = "Você";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Confirme sua chave de recuperação para manter o acesso ao seu armazenamento de chaves e histórico de mensagens.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Mensagem de voz";
"common_waiting" = "A aguardar…";
"common_waiting_for_decryption_key" = "À espera desta mensagem";
"common_you" = "Tu";
"common.copied_to_clipboard" = "Copiado para a área de transferência";
"common.do_not_show_this_again" = "Não mostrar novamente";
"common.empty_file" = "Ficheiro vazio";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licenças de código aberto";
"common.pinned" = "Afixado";
"common.send_to" = "Enviar para";
"common.you" = "Tu";
"common_unable_to_decrypt_insecure_device" = "Enviado de um dispositivo inseguro";
"common_unable_to_decrypt_verification_violation" = "A identidade verificada do remetente foi reposta";
"confirm_recovery_key_banner_message" = "Confirma a tua chave de recuperação para manteres o acesso ao teu armazenamento de chaves e ao histórico de mensagens.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Mesaj vocal";
"common_waiting" = "Se aşteaptă…";
"common_waiting_for_decryption_key" = "Mesaj în așteptare";
"common_you" = "Dumneavoastră";
"common.copied_to_clipboard" = "Copiat în clipboard";
"common.do_not_show_this_again" = "Nu mai afișa acest mesaj";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licențe open source";
"common.pinned" = "Fixat";
"common.send_to" = "Trimiteți către";
"common.you" = "Dumneavoastră";
"common_unable_to_decrypt_insecure_device" = "Trimis de pe un dispozitiv nesigur";
"common_unable_to_decrypt_verification_violation" = "Identitatea verificată a expeditorului s-a schimbat";
"confirm_recovery_key_banner_message" = "Backup-ul pentru chat nu este sincronizat în prezent. Trebuie să confirmați cheia de recuperare pentru a menține accesul la backup.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Голосовое сообщение";
"common_waiting" = "Ожидание…";
"common_waiting_for_decryption_key" = "Ожидание ключа расшифровки";
"common_you" = "Вы";
"common.copied_to_clipboard" = "Скопировано в буфер обмена";
"common.do_not_show_this_again" = "Не показывать больше";
"common.empty_file" = "Пустой файл";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Лицензии с открытым исходным кодом";
"common.pinned" = "Закрепленный";
"common.send_to" = "Отправить";
"common.you" = "Вы";
"common_unable_to_decrypt_insecure_device" = "Отправлено с незащищенного устройства";
"common_unable_to_decrypt_verification_violation" = "Подтвержденная личность отправителя была сброшена";
"confirm_recovery_key_banner_message" = "Подтвердите ключ восстановления, чтобы сохранить доступ к хранилищу ключей и истории сообщений.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Hlasová správa";
"common_waiting" = "Čaká sa…";
"common_waiting_for_decryption_key" = "Čaká sa na dešifrovací kľúč";
"common_you" = "Vy";
"common.copied_to_clipboard" = "Skopírované do schránky";
"common.do_not_show_this_again" = "Nezobrazovať toto znova";
"common.empty_file" = "Prázdny súbor";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licencie s otvoreným zdrojom";
"common.pinned" = "Pripnuté";
"common.send_to" = "Odoslať";
"common.you" = "Vy";
"common_unable_to_decrypt_insecure_device" = "Odoslané z nezabezpečeného zariadenia";
"common_unable_to_decrypt_verification_violation" = "Overená totožnosť odosielateľa bola obnovená";
"confirm_recovery_key_banner_message" = "Potvrďte svoj kľúč na obnovenie, aby ste zachovali prístup k úložisku kľúčov a histórii správ.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Röstmeddelande";
"common_waiting" = "Väntar …";
"common_waiting_for_decryption_key" = "Väntar på detta meddelande";
"common_you" = "Du";
"common.copied_to_clipboard" = "Kopierad till klippbordet";
"common.do_not_show_this_again" = "Visa inte detta igen";
"common.empty_file" = "Tom fil";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Licenser för öppen källkod";
"common.pinned" = "Fäst";
"common.send_to" = "Skicka till";
"common.you" = "Du";
"common_unable_to_decrypt_insecure_device" = "Skickad från en osäker enhet";
"common_unable_to_decrypt_verification_violation" = "Avsändarens verifierade identitet återställdes";
"confirm_recovery_key_banner_message" = "Bekräfta din återställningsnyckel för att behålla åtkomsten till din nyckellagring och meddelandehistorik.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Sesli Mesaj";
"common_waiting" = "Bekleniyor…";
"common_waiting_for_decryption_key" = "Bu mesajı bekliyorum";
"common_you" = "Sen";
"common.copied_to_clipboard" = "Panoya kopyalandı";
"common.do_not_show_this_again" = "Bunu bir daha gösterme";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Açık kaynak lisansları";
"common.pinned" = "Sabitlendi";
"common.send_to" = "Şuraya gönder";
"common.you" = "Sen";
"common_unable_to_decrypt_insecure_device" = "Güvenli olmayan bir cihazdan gönderildi";
"common_unable_to_decrypt_verification_violation" = "Gönderenin doğrulanmış kimliği değişti";
"confirm_recovery_key_banner_message" = "Anahtar depolama alanınıza ve mesaj geçmişinize erişimi sürdürmek için kurtarma anahtarınızı onaylayın.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Голосове повідомлення";
"common_waiting" = "Очікування...";
"common_waiting_for_decryption_key" = "Чекаємо на це повідомлення";
"common_you" = "Ви";
"common.copied_to_clipboard" = "Скопійовано до буферу обміну";
"common.do_not_show_this_again" = "Не показувати це знову";
"common.empty_file" = "Порожній файл";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Ліцензії відкритого коду";
"common.pinned" = "Закріплено";
"common.send_to" = "Надіслати до";
"common.you" = "Ви";
"common_unable_to_decrypt_insecure_device" = "Надіслано з незахищеного пристрою";
"common_unable_to_decrypt_verification_violation" = "Ідентичність відправника скинуто";
"confirm_recovery_key_banner_message" = "Підтвердіть свій ключ відновлення, щоб мати доступ до сховища ключів та історії повідомлень.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "Ovozli xabar";
"common_waiting" = "Kutilmoqda…";
"common_waiting_for_decryption_key" = "Waiting for this message";
"common_you" = "You";
"common.copied_to_clipboard" = "Copied to clipboard";
"common.do_not_show_this_again" = "Do not show this again";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "Open source licenses";
"common.pinned" = "Pinned";
"common.send_to" = "Send to";
"common.you" = "You";
"common_unable_to_decrypt_insecure_device" = "Sent from an insecure device";
"common_unable_to_decrypt_verification_violation" = "Sender's verified identity was reset";
"confirm_recovery_key_banner_message" = "Confirm your recovery key to maintain access to your key storage and message history.";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "语音消息";
"common_waiting" = "等待...";
"common_waiting_for_decryption_key" = "正在等待解密密钥";
"common_you" = "您";
"common.copied_to_clipboard" = "已复制到剪贴板";
"common.do_not_show_this_again" = "不再显示此内容";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "开源许可证";
"common.pinned" = "已置顶";
"common.send_to" = "发送至";
"common.you" = "您";
"common_unable_to_decrypt_insecure_device" = "从不安全的设备发送";
"common_unable_to_decrypt_verification_violation" = "发送者的已验证身份已改变";
"confirm_recovery_key_banner_message" = "确认恢复密钥,以保持对密钥存储和消息历史的访问。";

View File

@@ -271,6 +271,7 @@
"common_voice_message" = "語音訊息";
"common_waiting" = "等待中...";
"common_waiting_for_decryption_key" = "等待此則訊息";
"common_you" = "您";
"common.copied_to_clipboard" = "已複製到剪貼簿";
"common.do_not_show_this_again" = "不再顯示";
"common.empty_file" = "Empty file";
@@ -278,7 +279,6 @@
"common.open_source_licenses" = "開放原始碼授權條款";
"common.pinned" = "已釘選";
"common.send_to" = "傳送給";
"common.you" = "您";
"common_unable_to_decrypt_insecure_device" = "從不安全的裝置傳送";
"common_unable_to_decrypt_verification_violation" = "傳送者的驗證身份已變更";
"confirm_recovery_key_banner_message" = "確認您的復原金鑰以維持對金鑰儲存空間與訊息歷史紀錄的存取權。";

View File

@@ -610,6 +610,8 @@ internal enum L10n {
internal static var commonWaiting: String { return L10n.tr("Localizable", "common_waiting") }
/// Waiting for this message
internal static var commonWaitingForDecryptionKey: String { return L10n.tr("Localizable", "common_waiting_for_decryption_key") }
/// You
internal static var commonYou: String { return L10n.tr("Localizable", "common_you") }
/// Confirm your recovery key to maintain access to your key storage and message history.
internal static var confirmRecoveryKeyBannerMessage: String { return L10n.tr("Localizable", "confirm_recovery_key_banner_message") }
/// Enter your recovery key
@@ -2969,8 +2971,6 @@ internal enum L10n {
internal static var pinned: String { return L10n.tr("Localizable", "common.pinned") }
/// Send to
internal static var sendTo: String { return L10n.tr("Localizable", "common.send_to") }
/// You
internal static var you: String { return L10n.tr("Localizable", "common.you") }
}
}
// swiftlint:enable explicit_type_interface function_parameter_count identifier_name line_length

View File

@@ -12,6 +12,7 @@ import MatrixRustSDK
struct EventTimelineItemSDKMockConfiguration {
var eventID: String = UUID().uuidString
var sender = ""
var senderProfile: ProfileDetails?
var isOwn = false
var content: TimelineItemContent = .msgLike(content: .init(kind: .redacted, reactions: [], threadRoot: nil, inReplyTo: nil))
}
@@ -21,7 +22,7 @@ extension EventTimelineItem {
self.init(isRemote: true,
eventOrTransactionId: .eventId(eventId: configuration.eventID),
sender: configuration.sender,
senderProfile: .pending,
senderProfile: configuration.senderProfile ?? .pending,
isOwn: configuration.isOwn,
isEditable: false,
content: configuration.content,

View File

@@ -17,7 +17,9 @@ struct RoomEventStringBuilder {
func buildAttributedString(for eventItemProxy: EventTimelineItemProxy) -> AttributedString? {
let sender = eventItemProxy.sender
let isOutgoing = eventItemProxy.isOwn
let displayName = if shouldDisambiguateDisplayNames {
let displayName = if isOutgoing {
L10n.commonYou
} else if shouldDisambiguateDisplayNames {
sender.disambiguatedDisplayName ?? sender.id
} else {
sender.displayName ?? sender.id

View File

@@ -0,0 +1,67 @@
//
// Copyright 2023, 2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
//
@testable import ElementX
import MatrixRustSDK
import XCTest
class RoomEventStringBuilderTests: XCTestCase {
var ownUserID: String!
var stringBuilder: RoomEventStringBuilder!
override func setUp() {
ownUserID = "@alice:matrix.org"
let stateEventStringBuilder = RoomStateEventStringBuilder(userID: ownUserID)
let attributedStringBuilder = AttributedStringBuilder(mentionBuilder: MentionBuilder())
stringBuilder = RoomEventStringBuilder(stateEventStringBuilder: stateEventStringBuilder,
messageEventStringBuilder: RoomMessageEventStringBuilder(attributedStringBuilder: attributedStringBuilder,
destination: .roomList),
shouldDisambiguateDisplayNames: true,
shouldPrefixSenderName: true)
}
func testSenderPrefix() {
let ownMessageString = stringBuilder.buildAttributedString(for: makeTextMessageItem(senderID: ownUserID, senderDisplayName: "Alice"))
XCTAssertEqual(ownMessageString?.string, "You: Hello, World!",
"Your own messages should be prefixed with 'You'")
let otherMessageString = stringBuilder.buildAttributedString(for: makeTextMessageItem(senderID: "@bob:matrix.org", senderDisplayName: "Bob"))
XCTAssertEqual(otherMessageString?.string, "Bob: Hello, World!",
"Everyone else's messages should be prefixed with their display name.")
let ambiguousMessageString = stringBuilder.buildAttributedString(for: makeTextMessageItem(senderID: "@charlie:matrix.org",
senderDisplayName: "Charlie",
senderDisplayNameAmbiguous: true))
XCTAssertEqual(ambiguousMessageString?.string, "Charlie (@charlie:matrix.org): Hello, World!",
"Messages from senders with ambiguous display names should include their user ID in the prefix.")
}
// MARK: - Helpers
private func makeTextMessageItem(senderID: String,
senderDisplayName: String? = nil,
senderDisplayNameAmbiguous: Bool = false,
message: String = "Hello, World!") -> EventTimelineItemProxy {
.init(item: .init(configuration: .init(eventID: "1234",
sender: senderID,
senderProfile: .ready(displayName: senderDisplayName, displayNameAmbiguous: senderDisplayNameAmbiguous, avatarUrl: nil),
isOwn: senderID == ownUserID,
content: .msgLike(content: .init(kind: .message(content: .init(msgType: makeTextContent(message: message),
body: message,
isEdited: false,
mentions: nil)),
reactions: [],
threadRoot: nil,
inReplyTo: nil)))),
uniqueID: .init("0"))
}
private func makeTextContent(message: String) -> MessageType {
.text(content: .init(body: message, formatted: nil))
}
}

View File

@@ -8,7 +8,7 @@
"output": "ElementX/Resources/Localizations/${iosLprojFolder}/Localizable.strings",
"excludeKeys": ["REGEX:.*_android"],
"conditions": [
"equals: ${languageCode}, en | equals: ${file}, content.json"
"equals: ${langIosStrings}, en | equals: ${file}, content.json"
],
"filterPlurals": true,
"replacements": {
@@ -24,7 +24,7 @@
"output": "ElementX/Resources/Localizations/${iosLprojFolder}/Localizable.stringsdict",
"excludeKeys": ["REGEX:.*_android"],
"conditions": [
"equals: ${languageCode}, en | equals: ${file}, content.json"
"equals: ${langIosStrings}, en | equals: ${file}, content.json"
],
"replacements": {
"%s": "%@",
@@ -40,7 +40,7 @@
"changeExtension": "strings",
"output": "ElementX/Resources/Localizations/${iosLprojFolder}/${file}",
"conditions": [
"equals: ${languageCode}, en | equals: ${file}, InfoPlist.json"
"equals: ${langIosStrings}, en | equals: ${file}, InfoPlist.json"
]
},
@@ -52,7 +52,7 @@
"output": "ElementX/Resources/Localizations/${iosLprojFolder}/Localizable.strings",
"excludeKeys": ["REGEX:.*_android"],
"conditions": [
"!equals: ${languageCode}, en | equals: ${file}, content.json"
"equals: ${file}, content.json"
],
"filterPlurals": true,
"replacements": {
@@ -69,7 +69,7 @@
"output": "ElementX/Resources/Localizations/${iosLprojFolder}/Localizable.stringsdict",
"excludeKeys": ["REGEX:.*_android"],
"conditions": [
"!equals: ${languageCode}, en | equals: ${file}, content.json"
"equals: ${file}, content.json"
],
"replacements": {
"%s": "%@",
@@ -86,7 +86,7 @@
"changeExtension": "strings",
"output": "ElementX/Resources/Localizations/${iosLprojFolder}/${file}",
"conditions": [
"!equals: ${languageCode}, en | equals: ${file}, InfoPlist.json"
"equals: ${file}, InfoPlist.json"
]
}
]