Finish v0.7.4

This commit is contained in:
manuroe 2018-09-26 15:48:55 +02:00
commit 8b9eb65820
44 changed files with 769 additions and 537 deletions

View file

@ -1,3 +1,18 @@
Changes in 0.7.4 (2018-09-26)
===============================================
Improvements:
* Upgrade MatrixKit version (v0.8.4).
* Lazy loading: Enable it by default (if the homeserver supports it).
* i18n: Add Spanish (sp).
* Settings: Make advanced info copyable (#2023).
* Settings: Made cryptography info copyable, thanks to @daverPL (PR #1999).
* Room settings: Anyone can now set a room alias (#2033).
Bug fix:
* Fix missing read receipts when lazy-loading room members.
* Weird text color when selecting a message (#2046).
Changes in 0.7.3 (2018-08-27)
===============================================

View file

@ -9,7 +9,7 @@ source 'https://github.com/CocoaPods/Specs.git'
# Different flavours of pods to MatrixKit
# The current MatrixKit pod version
$matrixKitVersion = '0.8.3'
$matrixKitVersion = '0.8.4'
# The develop branch version
#$matrixKitVersion = 'develop'

View file

@ -40,40 +40,40 @@ PODS:
- GBDeviceInfo (5.2.0):
- GBDeviceInfo/Core (= 5.2.0)
- GBDeviceInfo/Core (5.2.0)
- GZIP (1.2.1)
- GZIP (1.2.2)
- HPGrowingTextView (1.1)
- libPhoneNumber-iOS (0.9.13)
- MatrixKit (0.8.3):
- MatrixKit (0.8.4):
- cmark (~> 0.24.1)
- DTCoreText (~> 1.6.21)
- HPGrowingTextView (~> 1.1)
- libPhoneNumber-iOS (~> 0.9.13)
- MatrixKit/Core (= 0.8.3)
- MatrixSDK (= 0.11.3)
- MatrixKit/AppExtension (0.8.3):
- MatrixKit/Core (= 0.8.4)
- MatrixSDK (= 0.11.4)
- MatrixKit/AppExtension (0.8.4):
- cmark (~> 0.24.1)
- DTCoreText (~> 1.6.21)
- DTCoreText/Extension
- HPGrowingTextView (~> 1.1)
- libPhoneNumber-iOS (~> 0.9.13)
- MatrixSDK (= 0.11.3)
- MatrixKit/Core (0.8.3):
- MatrixSDK (= 0.11.4)
- MatrixKit/Core (0.8.4):
- cmark (~> 0.24.1)
- DTCoreText (~> 1.6.21)
- HPGrowingTextView (~> 1.1)
- libPhoneNumber-iOS (~> 0.9.13)
- MatrixSDK (= 0.11.3)
- MatrixSDK (0.11.3):
- MatrixSDK/Core (= 0.11.3)
- MatrixSDK/Core (0.11.3):
- MatrixSDK (= 0.11.4)
- MatrixSDK (0.11.4):
- MatrixSDK/Core (= 0.11.4)
- MatrixSDK/Core (0.11.4):
- AFNetworking (~> 3.2.0)
- GZIP (~> 1.2.1)
- OLMKit (~> 2.3.0)
- Realm (~> 3.7.4)
- MatrixSDK/JingleCallStack (0.11.3):
- Realm (~> 3.9.0)
- MatrixSDK/JingleCallStack (0.11.4):
- MatrixSDK/Core
- WebRTC (= 63.11.20455)
- MatrixSDK/SwiftSupport (0.11.3):
- MatrixSDK/SwiftSupport (0.11.4):
- MatrixSDK/Core
- OLMKit (2.3.0):
- OLMKit/olmc (= 2.3.0)
@ -83,17 +83,17 @@ PODS:
- PiwikTracker (4.4.2):
- PiwikTracker/Core (= 4.4.2)
- PiwikTracker/Core (4.4.2)
- Realm (3.7.6):
- Realm/Headers (= 3.7.6)
- Realm/Headers (3.7.6)
- Realm (3.9.0):
- Realm/Headers (= 3.9.0)
- Realm/Headers (3.9.0)
- WebRTC (63.11.20455)
DEPENDENCIES:
- cmark
- DTCoreText
- GBDeviceInfo (~> 5.2.0)
- MatrixKit (= 0.8.3)
- MatrixKit/AppExtension (= 0.8.3)
- MatrixKit (= 0.8.4)
- MatrixKit/AppExtension (= 0.8.4)
- MatrixSDK/JingleCallStack
- MatrixSDK/SwiftSupport
- OLMKit
@ -131,16 +131,16 @@ SPEC CHECKSUMS:
DTCoreText: e5d688cffc9f6a61eddd1a4f94e2046851230de3
DTFoundation: f03be9fd786f11e505bb8fc44e2a3732bf0917df
GBDeviceInfo: 2c65ceb9404f9079264d4c238f5b81916fdfc5e2
GZIP: 7ee835f989fb3c6ea79005fc90b8fa6af710a70d
GZIP: 12374d285e3b5d46cfcd480700fcfc7e16caf4f1
HPGrowingTextView: 88a716d97fb853bcb08a4a08e4727da17efc9b19
libPhoneNumber-iOS: e444379ac18bbfbdefad571da735b2cd7e096caa
MatrixKit: 16cf30e3779b5c35dbc84175d399ddc154ae4a97
MatrixSDK: 599c356af3e2aa573849adfcd4dbd1dc370ef68e
MatrixKit: 33f4361bd62342b6cdacb79fd60f3d9d704366b1
MatrixSDK: 9d9f5e9b1fa19f8a84ebfce846d87b138af9999b
OLMKit: dd79cdc5fab9ec04c940a901e025195b7801f306
PiwikTracker: 42862c7b13028065c3dfd36b4dc38db8a5765acf
Realm: 9eaecad54712d6246d08ba34c10f354e4715d7d3
Realm: 3d36f208bf3aff8335dc3298742140182bde4edb
WebRTC: f2a6203584745fe53532633397557876b5d71640
PODFILE CHECKSUM: ad4c9542b6861fb086e1ee2f5600a816b1cf6711
PODFILE CHECKSUM: 9085b1000f60244804f8bc6285a05a39a4795d76
COCOAPODS: 1.5.3
COCOAPODS: 1.6.0.beta.1

View file

@ -392,6 +392,9 @@
32BDC9A4211C34C90064AF51 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = sq.lproj/InfoPlist.strings; sourceTree = "<group>"; };
32BDC9A5211C34C90064AF51 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = sq.lproj/Localizable.strings; sourceTree = "<group>"; };
32BDC9A6211C34C90064AF51 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = sq.lproj/Vector.strings; sourceTree = "<group>"; };
32D7159E2146CC6F00DF59C9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Vector.strings; sourceTree = "<group>"; };
32D7159F2146CC7F00DF59C9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
32D715A02146CC8800DF59C9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
3998C51E0196D42B366E0900 /* Pods-RiotPods-RiotShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-RiotShareExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RiotPods-RiotShareExtension/Pods-RiotPods-RiotShareExtension.debug.xcconfig"; sourceTree = "<group>"; };
78CD06F14060998545642330 /* Pods-RiotPods-Riot.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-Riot.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot.debug.xcconfig"; sourceTree = "<group>"; };
926FA53D1F4C132000F826C2 /* MXSession+Riot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MXSession+Riot.h"; sourceTree = "<group>"; };
@ -2659,6 +2662,7 @@
is,
zh_Hant,
sq,
es,
);
mainGroup = F094A9991B78D8F000B1FBBF;
productRefGroup = F094A9A31B78D8F000B1FBBF /* Products */;
@ -2852,7 +2856,7 @@
files = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot-frameworks.sh",
"${PODS_ROOT}/Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework",
"${BUILT_PRODUCTS_DIR}/DTCoreText/DTCoreText.framework",
"${BUILT_PRODUCTS_DIR}/DTFoundation/DTFoundation.framework",
@ -2889,7 +2893,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot-frameworks.sh\"\n";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
85AB1F69C1D9EC33197D7368 /* [CP] Check Pods Manifest.lock */ = {
@ -3182,6 +3186,7 @@
B1664D8B20F4EBF800808783 /* zh_Hans */,
32BDC9A3211C2C870064AF51 /* zh_Hant */,
32BDC9A6211C34C90064AF51 /* sq */,
32D7159E2146CC6F00DF59C9 /* es */,
);
name = Vector.strings;
sourceTree = "<group>";
@ -3201,6 +3206,7 @@
B1664D8920F4EBF700808783 /* ru */,
32BDC9A1211C2C870064AF51 /* zh_Hant */,
32BDC9A4211C34C90064AF51 /* sq */,
32D715A02146CC8800DF59C9 /* es */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
@ -3220,6 +3226,7 @@
B1664D8E20F4EBF900808783 /* ca */,
32BDC9A2211C2C870064AF51 /* zh_Hant */,
32BDC9A5211C34C90064AF51 /* sq */,
32D7159F2146CC7F00DF59C9 /* es */,
);
name = Localizable.strings;
sourceTree = "<group>";

View file

@ -2683,6 +2683,8 @@ NSString *const kAppDelegateNetworkStatusDidChangeNotification = @"kAppDelegateN
[_masterTabBarController showAuthenticationScreen];
// Note: Keep App settings
// But enforce usage of member lazy loading
[MXKAppSettings standardAppSettings].syncWithLazyLoadOfRoomMembers = YES;
// Reset the contact manager
[[MXKContactManager sharedManager] reset];

View file

@ -189,8 +189,8 @@
"room_participants_action_remove" = "Премахни от тази стая";
"room_participants_action_ban" = "Блокирай в тази стая";
"room_participants_action_unban" = "Отблокирай";
"room_participants_action_ignore" = "Скрий всички съобщения от този потребител";
"room_participants_action_unignore" = "Покажи всички съобщения от този потребител";
"room_participants_action_ignore" = "Скрий всички съобщения от потребителя";
"room_participants_action_unignore" = "Покажи всички съобщения от потребителя";
"room_participants_action_set_moderator" = "Направи модератор";
"room_participants_action_set_admin" = "Направи администратор";
"room_participants_action_start_new_chat" = "Започни нов чат";
@ -454,12 +454,6 @@
"do_not_ask_again" = "Не питай отново";
"camera_access_not_granted" = "%@ няма разрешение да използва камерата. Моля, проверете настройките за сигурност";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Покана от %@";
"room_displayname_room_invite" = "Покана за стая";
"room_displayname_two_members" = "%@ и %@";
"room_displayname_more_than_two_members" = "%@ и %u други";
"room_displayname_no_title" = "Празна стая";
// Call
"call_incoming_voice_prompt" = "Входящо гласово повикване от %@";
"call_incoming_video_prompt" = "Входящо видео повикване от %@";
@ -552,3 +546,8 @@
"settings_labs_room_members_lazy_loading" = "Постепенно зареждане на членовете в стаи";
"settings_labs_room_members_lazy_loading_error_message" = "Сървърът Ви все още не поддържа постепенно зареждане на членовете в стаи. Опитайте по-късно.";
"room_event_action_view_decrypted_source" = "Прегледай разшифрования източник";
"room_recents_server_notice_section" = "СИСТЕМНИ УВЕДОМЛЕНИЯ";
"room_resource_limit_exceeded_message_contact_1" = " Моля, ";
"room_resource_limit_exceeded_message_contact_2_link" = "свържете се с администратора на услугата,";
"room_resource_limit_exceeded_message_contact_3" = " за да продължите да я използвате.";
"homeserver_connection_lost" = "Неуспешна връзка със сървъра.";

View file

@ -457,12 +457,6 @@
"do_not_ask_again" = "No preguntar més";
"camera_access_not_granted" = "%@ no té permís per usar la càmera, si us plau canvia els ajustos de privacitat";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Convidat des de %@";
"room_displayname_room_invite" = "Convida a la sala";
"room_displayname_two_members" = "%@ i %@";
"room_displayname_more_than_two_members" = "%@ i %u més";
"room_displayname_no_title" = "Sala buida";
// Call
"call_incoming_voice_prompt" = "Trucada de veu entrant de %@";
"call_incoming_video_prompt" = "Trucada de vídeo entrant de %@";

View file

@ -58,7 +58,7 @@
"auth_username_in_use" = "Nutzername bereits verwendet";
"auth_forgot_password" = "Passwort vergessen?";
"auth_msisdn_validation_title" = "Verifizierung ausstehend";
"auth_msisdn_validation_message" = "Wir sandten eine SMS mit einem Aktivierungs-Code. Bitte gebe den unten ein.";
"auth_msisdn_validation_message" = "Bitte gib unten den Aktivierungs-Code ein, den wir per SMS verschickt haben.";
"auth_msisdn_validation_error" = "Telefonnummer kann nicht verifiziert werden.";
"auth_reset_password_missing_password" = "Ein neues Passwort muss eingegeben werden.";
"auth_reset_password_next_step_button" = "Ich habe meine E-Mail-Adresse verifiziert";
@ -221,7 +221,7 @@
"settings_remove_prompt_title" = "Bestätigung";
"settings_remove_email_prompt_msg" = "Bist du sicher, dass du die E-Mail-Adresse %@ entfernen möchtest?";
"settings_email_address" = "E-Mail";
"settings_email_address_placeholder" = "Gebe deine E-Mail-Adresse ein";
"settings_email_address_placeholder" = "Gib deine E-Mail-Adresse ein";
"settings_add_email_address" = "Füge E-Mail-Adresse hinzu";
"settings_remove_phone_prompt_msg" = "Bist du sicher, dass du die Telefon-Nummer %@ entfernen möchtest?";
"settings_night_mode" = "Nacht Modus";
@ -381,12 +381,6 @@
"rage_shake_prompt" = "Du scheinst das Gerät frustriert zu schütteln. Möchtest du einen Bug Report senden?";
"camera_access_not_granted" = "%@ hat keine Berechtigung die Kamera zu nutzen, bitte berechtigen";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Einladung von %@";
"room_displayname_room_invite" = "Raum-Einladung";
"room_displayname_two_members" = "%@ und %@";
"room_displayname_more_than_two_members" = "%@ und %u andere";
"room_displayname_no_title" = "Leerer Raum";
// Call
"call_incoming_voice_prompt" = "Eingehender Sprach-Anruf von %@";
"call_incoming_video_prompt" = "Eingehender Video-Anruf von %@";
@ -553,3 +547,8 @@
"settings_labs_room_members_lazy_loading" = "Raummitglieder verzögert laden";
"settings_labs_room_members_lazy_loading_error_message" = "Dein Heimserver unterstützt das verzögerte Laden von Raummitgliedern noch nicht. Versuche es später erneut.";
"room_event_action_view_decrypted_source" = "Zeige entschlüsselten Quellcode";
"room_recents_server_notice_section" = "SYSTEMBENACHRICHTIGUNGEN";
"room_resource_limit_exceeded_message_contact_1" = " Bitte ";
"room_resource_limit_exceeded_message_contact_2_link" = "kontaktiere deinen Dienst-Administrator";
"room_resource_limit_exceeded_message_contact_3" = " um diesen Service weiter zu nutzen.";
"homeserver_connection_lost" = "Konnte keine Verbindung zum Heimserver herstellen.";

View file

@ -549,13 +549,6 @@
"camera_access_not_granted" = "%@ doesn't have permission to use Camera, please change privacy settings";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Invite from %@";
"room_displayname_room_invite" = "Room Invite";
"room_displayname_two_members" = "%@ and %@";
"room_displayname_more_than_two_members" = "%@ and %u others";
"room_displayname_no_title" = "Empty room";
// Call
"call_incoming_voice_prompt" = "Incoming voice call from %@";
"call_incoming_video_prompt" = "Incoming video call from %@";

View file

@ -0,0 +1,5 @@
// Permissions usage explanations
"NSCameraUsageDescription" = "La cámara se utiliza para tomar fotos y vídeos, realizar llamadas de vídeo.";
"NSPhotoLibraryUsageDescription" = "La biblioteca de fotos se utiliza para enviar fotos y vídeos.";
"NSMicrophoneUsageDescription" = "El micrófono se utiliza para tomar vídeos, realizar llamadas.";
"NSContactsUsageDescription" = "Para mostrarte cuáles de tus contactos ya utilizan Riot o Matrix, podemos enviar las direcciones de correo electrónico y números telefónicos de tu agenda de contactos a tu Servidor de Identidad de Matrix. New Vector no almacena estos datos ni los utiliza para ningún otro propósito. Para obtener más información, por favor consulta la página de política de privacidad en los ajustes de la aplicación.";

View file

@ -0,0 +1,52 @@
/* New message from a specific person, not referencing a room */
"MSG_FROM_USER" = "Mensaje de %@";
/* New message from a specific person in a named room */
"MSG_FROM_USER_IN_ROOM" = "%@ publicó en %@";
/* New message from a specific person, not referencing a room. Content included. */
"MSG_FROM_USER_WITH_CONTENT" = "%@: %@";
/* New message from a specific person in a named room. Content included. */
"MSG_FROM_USER_IN_ROOM_WITH_CONTENT" = "%@ en %@: %@";
/* New action message from a specific person, not referencing a room. */
"ACTION_FROM_USER" = "* %@ %@";
/* New action message from a specific person in a named room. */
"ACTION_FROM_USER_IN_ROOM" = "%@: * %@ %@";
/* New action message from a specific person, not referencing a room. */
"IMAGE_FROM_USER" = "%@ te envió una imagen %@";
/* New action message from a specific person in a named room. */
"IMAGE_FROM_USER_IN_ROOM" = "%@ publicó una imagen %@ en %@";
/* A single unread message in a room */
"SINGLE_UNREAD_IN_ROOM" = "Recibiste un mensaje en %@";
/* A single unread message */
"SINGLE_UNREAD" = "Recibiste un mensaje";
/* Multiple unread messages in a room */
"UNREAD_IN_ROOM" = "%@ mensajes nuevos en %@";
/* Multiple unread messages from a specific person, not referencing a room */
"MSGS_FROM_USER" = "%@ mensajes nuevos en %@";
/* Multiple unread messages from two people */
"MSGS_FROM_TWO_USERS" = "%@ mensajes nuevos de %@ y %@";
/* Multiple unread messages from three people */
"MSGS_FROM_THREE_USERS" = "%@ mensajes nuevos de %@, %@ y %@";
/* Multiple unread messages from two plus people (ie. for 4+ people: 'others' replaces the third person) */
"MSGS_FROM_TWO_PLUS_USERS" = "%@ mensajes nuevos de %@, %@ y otros";
/* Multiple messages in two rooms */
"MSGS_IN_TWO_ROOMS" = "%@ mensajes nuevos en %@ y %@";
/* Look, stuff's happened, alright? Just open the app. */
"MSGS_IN_TWO_PLUS_ROOMS" = "%@ mensajes nuevos en %@, %@ y otros";
/* A user has invited you to a chat */
"USER_INVITE_TO_CHAT" = "%@ te invitó a conversar";
/* A user has invited you to an (unamed) group chat */
"USER_INVITE_TO_CHAT_GROUP_CHAT" = "%@ te invitó a una conversación en grupo";
/* A user has invited you to a named room */
"USER_INVITE_TO_NAMED_ROOM" = "%@ te invitó a %@";
/* Incoming one-to-one voice call */
"VOICE_CALL_FROM_USER" = "Llamada de %@";
/* Incoming one-to-one video call */
"VIDEO_CALL_FROM_USER" = "Llamada de vídeo de %@";
/* Incoming unnamed voice conference invite from a specific person */
"VOICE_CONF_FROM_USER" = "Llamada en grupo de %@";
/* Incoming unnamed video conference invite from a specific person */
"VIDEO_CONF_FROM_USER" = "Llamada de vídeo en grupo de %@";
/* Incoming named voice conference invite from a specific person */
"VOICE_CONF_NAMED_FROM_USER" = "Llamada en grupo de %@: '%@'";
/* Incoming named video conference invite from a specific person */
"VIDEO_CONF_NAMED_FROM_USER" = "Llamada de vídeo en grupo de %@: '%@'";

View file

@ -1,84 +1,84 @@
// Titles
"title_home" = "Inicio";
"title_favourites" = "Favoritos";
"title_people" = "Contactos";
"title_people" = "Personas";
"title_rooms" = "Salas";
"warning" = "Atención";
"warning" = "Advertencia";
// Actions
"view" = "Ver";
"next" = "SIguiente";
"back" = "Anterior";
"next" = "Siguiente";
"back" = "Atrás";
"continue" = "Continuar";
"create" = "Crear";
"start" = "Iniciar";
"leave" = "Salir";
"remove" = "Remover";
"remove" = "Eliminar";
"invite" = "Invitar";
"retry" = "Re-intentar";
"on" = "Activado";
"off" = "Desactivado";
"cancel" = "Cancelar";
"save" = "Guardar";
"join" = "Entrar";
"join" = "Unirse";
"decline" = "Rechazar";
"accept" = "Aceptar";
"preview" = "Vista previa";
"preview" = "Vista Previa";
"camera" = "Cámara";
"voice" = "Voz";
"video" = "Vídeo";
"active_call" = "Llamada activa";
"active_call_details" = "Llamada activa (%@)";
"later" = "Después";
"active_call" = "Llamada Activa";
"active_call_details" = "Llamada Activa (%@)";
"later" = "Más Tarde";
"rename" = "Renombrar";
"collapse" = "colapsar";
// Authentication
"auth_login" = "Ingresar";
"auth_login" = "Iniciar sesión";
"auth_register" = "Registrar";
"auth_submit" = "Enviar";
"auth_skip" = "Omitir";
"auth_send_reset_email" = "Enviar Email de restauración";
"auth_return_to_login" = "Regresar a pantalla de ingreso";
"auth_user_id_placeholder" = "Email o nombre de usuario";
"auth_send_reset_email" = "Enviar Correo Electrónico de Restauración";
"auth_return_to_login" = "Regresar a la pantalla de inicio de sesión";
"auth_user_id_placeholder" = "Correo electrónico o nombre de usuario";
"auth_password_placeholder" = "Contraseña";
"auth_new_password_placeholder" = "Nueva contraseña";
"auth_new_password_placeholder" = "Contraseña nueva";
"auth_user_name_placeholder" = "Nombre de usuario";
"auth_optional_email_placeholder" = "Dirección de Email (opcional)";
"auth_email_placeholder" = "Dirección Email";
"auth_optional_email_placeholder" = "Dirección de correo electrónico (opcional)";
"auth_email_placeholder" = "Dirección de correo electrónico";
"send_to" = "Enviar a %@";
"sending" = "Enviando";
"auth_optional_phone_placeholder" = "Numero telefónico (opcional)";
"auth_phone_placeholder" = "Numero telefónico";
"auth_repeat_password_placeholder" = "Repita la contraseña";
"auth_repeat_new_password_placeholder" = "Confirme su nueva contraseña";
"auth_home_server_placeholder" = "LUR (ej. https://matrix.org)";
"auth_identity_server_placeholder" = "LUR (ej. https://matrix.org)";
"auth_invalid_login_param" = "Usuario y/o contraseña incorrecta";
"auth_invalid_user_name" = "Nombres de usuario solo pueden contener letras, números, puntos, guiones y barras bajas";
"auth_invalid_password" = "Contraseña muy corta (min 6)";
"auth_invalid_email" = "Esto no parece un correo electrónico valido";
"auth_invalid_phone" = "Esto no parece un número telefónico valido";
"auth_missing_password" = "Contraseña ausente";
"auth_add_email_message" = "Añade un correo electrónico a tu cuenta para poder ser descubierto por otros usuarios, y ser capaz de recomponer tu contraseña.";
"auth_add_phone_message" = "Añade un número telefónico a tu cuenta para ser descubierto por otros usuarios.";
"auth_optional_phone_placeholder" = "Número telefónico (opcional)";
"auth_phone_placeholder" = "Número telefónico";
"auth_repeat_password_placeholder" = "Repite la contraseña";
"auth_repeat_new_password_placeholder" = "Confirma tu contraseña nueva";
"auth_home_server_placeholder" = "URL (ej. https://matrix.org)";
"auth_identity_server_placeholder" = "URL (ej. https://matrix.org)";
"auth_invalid_login_param" = "Nombre de usuario y/o contraseña incorrectos";
"auth_invalid_user_name" = "Los nombres de usuario solo pueden contener letras, números, puntos, guiones y guiones bajos";
"auth_invalid_password" = "Contraseña demasiado corta (mínimo 6)";
"auth_invalid_email" = "Esto no parece ser una dirección de correo electrónico válida";
"auth_invalid_phone" = "Esto no parece ser un número telefónico válido";
"auth_missing_password" = "Falta la contraseña";
"auth_add_email_message" = "Añade una dirección de correo electrónico a tu cuenta para poder ser descubierto por otros usuarios, y ser capaz de restablecer tu contraseña.";
"auth_add_phone_message" = "Añade un número telefónico a tu cuenta para poder ser descubierto por otros usuarios.";
"title_groups" = "Comunidades";
"deactivate_account_password_alert_title" = "Desactivar Cuenta";
"deactivate_account_validate_action" = "Desactivar cuenta";
"deactivate_account_password_alert_message" = "Para continuar, ingrese su contraseña";
"deactivate_account_password_alert_message" = "Para continuar, ingresa tu contraseña por favor";
"deactivate_account_forget_messages_information_part2_emphasize" = "Advertencia";
"deactivate_account_informations_part2_emphasize" = "Esta acción es irreversible.";
"rerequest_keys_alert_message" = "Por favor, inicie Riot en otro dispositivo que pueda descifrar el mensaje para que pueda enviar las claves a este dispositivo.";
"rerequest_keys_alert_message" = "Por favor, inicia Riot en otro dispositivo que pueda descifrar el mensaje para que pueda enviar las claves a este dispositivo.";
// Re-request confirmation dialog
"rerequest_keys_alert_title" = "Solicitud Enviada";
"auth_password_dont_match" = "Las contraseñas no coinciden";
"auth_username_in_use" = "Nombre de usuario en uso";
"auth_email_in_use" = "Esta dirección de correo electrónico ya está en uso";
"auth_phone_in_use" = "Este número de teléfono ya está en uso";
"auth_use_server_options" = "Usar opciones personalizadas del servidor (avanzado)";
"auth_reset_password_missing_password" = "Se debe introducir una nueva contraseña.";
"auth_phone_in_use" = "Este número telefónico ya está en uso";
"auth_use_server_options" = "Utilizar opciones personalizadas del servidor (avanzado)";
"auth_reset_password_missing_password" = "Debes ingresar una contraseña nueva.";
"auth_reset_password_next_step_button" = "He verificado mi dirección de correo electrónico";
"room_creation_appearance" = "Apariencia";
"room_creation_appearance_name" = "Nombre";
"room_creation_make_public" = "Hacer público";
"room_creation_make_public" = "Hacer pública";
"room_recents_create_empty_room" = "Crear sala";
// People tab
"people_invites_section" = "INVITACIONES";
@ -96,7 +96,7 @@
"search_default_placeholder" = "Buscar";
"search_no_result" = "No hay resultados";
"search_in_progress" = "Buscando…";
"directory_searching_title" = "Buscando directorio..";
"directory_searching_title" = "Buscando directorio";
// Contacts
"contacts_address_book_section" = "CONTACTOS LOCALES";
"contacts_address_book_matrix_users_toggle" = "Solo usuarios de Matrix";
@ -106,74 +106,74 @@
"room_participants_one_participant" = "1 participante";
"room_participants_multi_participants" = "%d participantes";
"room_participants_remove_prompt_title" = "Confirmación";
"room_participants_remove_prompt_msg" = "¿Estas seguro de que quieres eliminar a %@ de este chat?";
"room_participants_remove_prompt_msg" = "¿Seguro que quieres eliminar a %@ de esta conversación?";
"room_participants_invite_prompt_title" = "Confirmación";
"room_participants_invite_prompt_msg" = "¿Estás seguro de que quieres invitar a %@ a este chat?";
"auth_add_email_phone_message" = "Agregar una dirección de correo electrónico y/o un número de teléfono a su cuenta para permitir que le encuentren los usuarios. La dirección de correo electrónico también le permitirá reiniciar su contraseña.";
"auth_add_email_and_phone_message" = "Añadir una dirección de correo electrónico a su cuenta para permitir que le encuentren otros usuarios. La dirección de correo electrónico también le permitirá reiniciar su contraseña.";
"auth_missing_email" = "Dirección de correo electrónico ausente";
"auth_missing_phone" = "Número de teléfono ausente";
"auth_missing_email_or_phone" = "Dirección de correo electrónico o número de teléfono ausente";
"room_participants_invite_prompt_msg" = "¿Seguro que quieres invitar a %@ a esta conversación?";
"auth_add_email_phone_message" = "Añade una dirección de correo electrónico y/o un número telefónico a tu cuenta para poder ser descubierto por otros usuarios. Además, la dirección de correo electrónico te permitirá restablecer tu contraseña.";
"auth_add_email_and_phone_message" = "Añade una dirección de correo electrónico y un número telefónico a tu cuenta para poder ser descubierto por otros usuarios. Además, la dirección de correo electrónico te permitirá restablecer tu contraseña.";
"auth_missing_email" = "Falta la dirección de correo electrónico";
"auth_missing_phone" = "Falta el número telefónico";
"auth_missing_email_or_phone" = "Falta la dirección de correo electrónico o el número telefónico";
"auth_untrusted_id_server" = "El servidor de identidad no es de confianza";
"auth_forgot_password" = "¿Se olvidó su contraseña?";
"auth_email_not_found" = "Falló el envío del mensaje: No se encontró esta dirección de correo electrónico";
"auth_email_validation_message" = "Por favor compruebe su correo electrónico para continuar el registro";
"auth_forgot_password" = "¿Olvidaste tu contraseña?";
"auth_email_not_found" = "No se pudo enviar el correo electrónico: No se encontró esta dirección de correo electrónico";
"auth_email_validation_message" = "Por favor consulta tu correo electrónico para continuar con el registro";
"auth_msisdn_validation_title" = "Verificación Pendiente";
"auth_msisdn_validation_message" = "Hemos enviado un SMS con un código de activación. Por favor introduzca este código debajo.";
"auth_msisdn_validation_error" = "No se pudo verificar el número de teléfono.";
"auth_recaptcha_message" = "Este Servidor Doméstico desea asegurarse de que no es un robot";
"auth_reset_password_message" = "Para reiniciar su contraseña, introduzca la dirección de correo electrónico vinculada a su cuenta:";
"auth_reset_password_missing_email" = "Debe introducirse la dirección de correo electrónico vinculada a su cuenta.";
"auth_reset_password_email_validation_message" = "Se envió un correo electrónico a %@. Una vez haya seguido el enlace que contiene, pulse debajo.";
"auth_reset_password_error_unauthorized" = "Falló la verificación de la dirección de correo electrónico: asegúrese de que pulsó el enlace del mensaje";
"auth_reset_password_error_not_found" = "Su dirección de correo electrónico no parece estar asociada con un ID de Matrix en este servidor doméstico.";
"auth_reset_password_success_message" = "Se ha reiniciado su contraseña.\n\nSe le ha desconectado de todos los dispositivos y ya no recibirá más notificaciones. Para volver a habilitarlas, vuelva a ingresar en cada dispositivo.";
"auth_add_email_and_phone_warning" = "El registro con el correo electrónico y el número de teléfono a la vez no está aún soportado hasta que la api exista. Sólo el número de teléfono se tendrá en cuenta. Puede añadir su correo electrónico en configuración.";
"auth_msisdn_validation_message" = "Hemos enviado un SMS con un código de activación. Por favor, ingresa este código a continuación.";
"auth_msisdn_validation_error" = "No se pudo verificar el número telefónico.";
"auth_recaptcha_message" = "Este Servidor Doméstico quiere asegurarse de que no eres un robot";
"auth_reset_password_message" = "Para restablecer tu contraseña, ingresa la dirección de correo electrónico vinculada a tu cuenta:";
"auth_reset_password_missing_email" = "Debes ingresar la dirección de correo electrónico vinculada a tu cuenta.";
"auth_reset_password_email_validation_message" = "Se envió un correo electrónico a %@. Una vez que hayas seguido el enlace que contiene, haz clic a continuación.";
"auth_reset_password_error_unauthorized" = "No se pudo verificar la dirección de correo electrónico: asegúrate de hacer clic en el enlace del correo electrónico";
"auth_reset_password_error_not_found" = "Tu dirección de correo electrónico no parece estar asociada con una ID de Matrix en este Servidor Doméstico.";
"auth_reset_password_success_message" = "Tu contraseña fue restablecida.\n\nSe ha cerrado sesión en todos tus dispositivos y ya no recibirás notificaciones push. Para volver a habilitar las notificaciones, vuelve a iniciar sesión en cada dispositivo.";
"auth_add_email_and_phone_warning" = "Todavía no es posible registrarse con correo electrónico y número telefónico a la vez, hasta que exista la API. Solo se tendrá en cuenta el número telefónico. Puedes añadir tu correo electrónico a tu perfil en ajustes.";
// Chat creation
"room_creation_title" = "Nueva Conversación";
"room_creation_account" = "Cuenta";
"room_creation_appearance_picture" = "Fotografía de conversación (opcional)";
"room_creation_appearance_picture" = "Imagen de conversación (opcional)";
"room_creation_privacy" = "Privacidad";
"room_creation_private_room" = "Esta conversación es privada";
"room_creation_public_room" = "Esta conversación es pública";
"room_creation_make_public_prompt_title" = "¿Hacer pública esta conversación?";
"room_creation_make_public_prompt_msg" = "¿Está seguro de que desea hacer pública esta conversación? Cualquiera podrá leer sus mensajes y unirse a la misma.";
"room_creation_make_public_prompt_msg" = "¿Seguro que quieres hacer pública esta conversación? Cualquier persona podrá leer tus mensajes y unirse a la conversación.";
"room_creation_keep_private" = "Mantener privada";
"room_creation_make_private" = "Hacer privada";
"room_creation_wait_for_creation" = "Ya se está creando una sala. Por favor, espere.";
"room_creation_invite_another_user" = "Buscar / invitar por ID de Usuario, Nombre o correo";
"room_creation_wait_for_creation" = "Ya se está creando una sala. Espera por favor.";
"room_creation_invite_another_user" = "Buscar / invitar por ID de Usuario, Nombre o correo electrónico";
// Room recents
"room_recents_directory_section" = "DIRECTORIO DE SALAS";
"room_recents_directory_section_network" = "Red";
"room_recents_favourites_section" = "FAVORITOS";
"room_recents_people_section" = "GENTE";
"room_recents_people_section" = "PERSONAS";
"room_recents_conversations_section" = "SALAS";
"room_recents_no_conversation" = "No hay salas";
"room_recents_low_priority_section" = "PRIORIDAD BAJA";
"room_recents_invites_section" = "INVITACIONES";
"room_recents_start_chat_with" = "Comenzar conversación";
"room_recents_join_room" = "Unirse a sala";
"room_recents_start_chat_with" = "Iniciar conversación";
"room_recents_join_room" = "Unirse a la sala";
"room_recents_join_room_title" = "Unirse a una sala";
"room_recents_join_room_prompt" = "Escriba un id o alias de sala";
"search_people" = "Gente";
"search_people_placeholder" = "Buscar por ID de Usuario, Nombre o correo";
"room_recents_join_room_prompt" = "Escribe una ID o alias de sala";
"search_people" = "Personas";
"search_people_placeholder" = "Buscar por ID de Usuario, Nombre o correo electrónico";
// Directory
"directory_cell_title" = "Explorar directorio";
"directory_cell_description" = "%tu salas";
"directory_search_results_title" = "Navegar resultados del directorio";
"directory_search_results_title" = "Explorar resultados de directorio";
"directory_search_results" = "%tu resultados encontrados para %@";
"directory_search_results_more_than" = ">%tu resultados encontrados para %@";
"directory_search_fail" = "Falló la recuperación de datos";
"directory_search_fail" = "Error al buscar datos";
"contacts_address_book_no_contact" = "No hay contactos locales";
"contacts_address_book_permission_required" = "Se requiere permiso para acceder a contactos locales";
"contacts_address_book_permission_denied" = "No permitió que Riot accediera a sus contactos locales";
"contacts_address_book_permission_required" = "Se requiere permiso para acceder a tus contactos locales";
"contacts_address_book_permission_denied" = "No permitiste que Riot acceda a tus contactos locales";
"contacts_user_directory_section" = "DIRECTORIO DE USUARIOS";
"contacts_user_directory_offline_section" = "DIRECTORIO DE USUARIOS (desconectado)";
"room_participants_leave_prompt_title" = "Abandonar sala";
"room_participants_leave_prompt_msg" = "¿Está seguro de querer abandonar la sala?";
"room_participants_remove_third_party_invite_msg" = "Eliminar la invitación de terceros no está aún soportado hasta que exista la api";
"contacts_user_directory_offline_section" = "DIRECTORIO DE USUARIOS (desconectados)";
"room_participants_leave_prompt_title" = "Salir de la sala";
"room_participants_leave_prompt_msg" = "¿Seguro que quieres salir de la sala?";
"room_participants_remove_third_party_invite_msg" = "Eliminar la invitación de terceros aún no es posible, hasta que exista la API";
"room_participants_filter_room_members" = "Filtrar miembros de la sala";
"room_participants_invite_another_user" = "Buscar / invitar por ID de Usuario, Nombre o correo";
"room_participants_invite_another_user" = "Buscar / invitar por ID de Usuario, Nombre o correo electrónico";
"room_participants_invite_malformed_id_title" = "Error en invitación";
"room_participants_invite_malformed_id" = "ID mal formada. Debería ser una dirección de correo electrónico o una ID de Matrix como '@partelocal:dominio'";
"room_participants_invited_section" = "INVITADO";
@ -188,18 +188,18 @@
"room_participants_action_section_devices" = "Dispositivos";
"room_participants_action_section_other" = "Otro";
"room_participants_action_invite" = "Invitar";
"room_participants_action_leave" = "Abandonar esta sala";
"room_participants_action_leave" = "Salir de esta sala";
"room_participants_action_remove" = "Eliminar de esta sala";
"room_participants_action_ban" = "Vetar de esta sala";
"room_participants_action_unban" = "Quitar veto";
"room_participants_action_unban" = "Quitar Veto";
"room_participants_action_ignore" = "Ocultar todos los mensajes de este usuario";
"room_participants_action_unignore" = "Mostrar todos los mensajes de este usuario";
"room_participants_action_set_default_power_level" = "Reiniciar a usuario normal";
"room_participants_action_set_moderator" = "Convertir en moderador";
"room_participants_action_set_admin" = "Convertir en administrador";
"room_participants_action_start_new_chat" = "Comenzar conversación nueva";
"room_participants_action_start_voice_call" = "Comenzar llamada de voz";
"room_participants_action_start_video_call" = "Comenzar videollamada";
"room_participants_action_set_default_power_level" = "Restablecer a usuario normal";
"room_participants_action_set_moderator" = "Convertir a moderador";
"room_participants_action_set_admin" = "Convertir a administrador";
"room_participants_action_start_new_chat" = "Iniciar nueva conversación";
"room_participants_action_start_voice_call" = "Iniciar llamada de voz";
"room_participants_action_start_video_call" = "Iniciar llamada de vídeo";
"room_participants_action_mention" = "Mencionar";
// Chat
"room_jump_to_first_unread" = "Ir al primer mensaje no leído";
@ -210,11 +210,344 @@
"room_many_users_are_typing" = "%@, %@ y otros están escribiendo…";
"room_message_placeholder" = "Enviar un mensaje (sin cifrar)…";
"room_message_reply_to_placeholder" = "Enviar una respuesta (sin cifrar)…";
"room_do_not_have_permission_to_post" = "No tiene permisos para publicar en esta sala";
"room_do_not_have_permission_to_post" = "No tienes permiso para publicar en esta sala";
"encrypted_room_message_placeholder" = "Enviar un mensaje cifrado…";
"encrypted_room_message_reply_to_placeholder" = "Enviar una respuesta cifrada…";
"room_message_short_placeholder" = "Enviar un mensaje…";
"room_message_reply_to_short_placeholder" = "Enviar una respuesta…";
"room_offline_notification" = "La conexión con el servidor se perdió.";
"room_unsent_messages_notification" = "No se enviaron los mensajes. ¿%@ o %@ ahora?";
"room_offline_notification" = "Se perdió la conexión con el servidor.";
"room_unsent_messages_notification" = "Los mensajes no se enviaron. ¿%@ o %@ ahora?";
"room_unsent_messages_unknown_devices_notification" = "No se envió el mensaje debido a dispositivos desconocidos presentes. ¿%@ o %@ ahora?";
"room_recents_server_notice_section" = "ALERTAS DE SISTEMA";
"room_ongoing_conference_call" = "Llamada de conferencia en curso. Unirse con %@ o %@.";
"room_ongoing_conference_call_with_close" = "Llamada de conferencia en curso. Unirse con %@ o %@. %@ la.";
"room_ongoing_conference_call_close" = "Cerrar";
"room_conference_call_no_power" = "Necesitas permiso para gestionar llamadas de conferencia en esta sala";
"room_prompt_resend" = "Reenviar todo";
"room_prompt_cancel" = "cancelar todo";
"room_resend_unsent_messages" = "Reenviar mensajes no enviados";
"room_delete_unsent_messages" = "Eliminar mensajes no enviados";
"room_event_action_copy" = "Copiar";
"room_event_action_quote" = "Citar";
"room_event_action_redact" = "Redactar";
"room_event_action_more" = "Más";
"room_event_action_share" = "Compartir";
"room_event_action_permalink" = "Enlace Permanente";
"room_event_action_view_source" = "Ver Fuente";
"room_event_action_view_decrypted_source" = "Ver Fuente Descifrada";
"room_event_action_report" = "Reportar contenido";
"room_event_action_report_prompt_reason" = "Motivo para reportar este contenido";
"room_event_action_kick_prompt_reason" = "Motivo para expulsar a este usuario";
"room_event_action_ban_prompt_reason" = "Motivo para vetar a este usuario";
"room_event_action_report_prompt_ignore_user" = "¿Quieres ocultar todos los mensajes de este usuario?";
"room_event_action_save" = "Guardar";
"room_event_action_resend" = "Reenviar";
"room_event_action_delete" = "Eliminar";
"room_event_action_cancel_send" = "Cancelar Envío";
"room_event_action_cancel_download" = "Cancelar Descarga";
"room_event_action_view_encryption" = "Información de Cifrado";
"room_warning_about_encryption" = "El cifrado de extremo a extremo está en beta y puede no ser confiable.\n\nAún no deberías confiar en él para proteger tus datos.\n\nLos dispositivos todavía no podrán descifrar el historial desde antes de unirse a la sala.\n\nLos mensajes cifrados no serán visibles en clientes que aún no implementen el cifrado.";
"room_event_failed_to_send" = "Falló el envío";
"room_action_send_photo_or_video" = "Enviar fotografía o vídeo";
"room_action_send_sticker" = "Enviar pegatina";
"room_replacement_information" = "Esta sala ha sido reemplazada y ya no está activa.";
"room_replacement_link" = "La conversación continúa aquí.";
"room_predecessor_information" = "Esta sala es una continuación de otra conversación.";
"room_predecessor_link" = "Haz clic aquí para ver mensajes más antiguos.";
"room_resource_limit_exceeded_message_contact_1" = " Por favor ";
"room_resource_limit_exceeded_message_contact_2_link" = "contacta al administrador de tu servicio";
"room_resource_limit_exceeded_message_contact_3" = " para continuar utilizando este servicio.";
// Unknown devices
"unknown_devices_alert_title" = "La sala contiene dispositivos desconocidos";
"unknown_devices_alert" = "Esta sala contiene dispositivos desconocidos que no han sido verificados.\nEsto significa que no hay garantía de que los dispositivos pertenezcan a los usuarios a los que dicen pertenecer.\nRecomendamos que pases por el proceso de verificación para cada dispositivo antes de continuar, pero puedes reenviar el mensaje sin verificarlos si prefieres.";
"unknown_devices_send_anyway" = "Enviar de Todos Modos";
"unknown_devices_call_anyway" = "Llamar de todos modos";
"unknown_devices_answer_anyway" = "Responder de todos modos";
"unknown_devices_verify" = "Verificar…";
"unknown_devices_title" = "Dispositivos desconocidos";
// Room Title
"room_title_new_room" = "Sala nueva";
"room_title_multiple_active_members" = "%@/%@ miembros activos";
"room_title_one_active_member" = "%@/%@ miembro activo";
"room_title_invite_members" = "Invitar miembros";
"room_title_members" = "%@ miembros";
"room_title_one_member" = "1 miembro";
// Room Preview
"room_preview_invitation_format" = "Has sido invitado por %@ a unirte a esta sala";
"room_preview_subtitle" = "Esta es una vista previa de esta sala. Las interacciones dentro de la sala se han deshabilitado.";
"room_preview_unlinked_email_warning" = "Esta invitación fue enviada a %@, que no está asociado a esta cuenta. Quizás quieras iniciar sesión con otra cuenta, o añadir este correo electrónico a esta cuenta.";
"room_preview_try_join_an_unknown_room" = "Estás intentando acceder a %@. ¿Quieres unirte para participar en la discusión?";
"room_preview_try_join_an_unknown_room_default" = "una sala";
// Settings
"settings_title" = "Ajustes";
"account_logout_all" = "Cerrar sesión de todas las cuentas";
"settings_config_no_build_info" = "No hay información de compilación";
"settings_mark_all_as_read" = "Marcar todos los mensajes como leídos";
"settings_report_bug" = "Reportar error";
"settings_config_home_server" = "Servidor doméstico es %@";
"settings_config_identity_server" = "Servidor de identidad es %@";
"settings_config_user_id" = "Sesión iniciada como %@";
"settings_user_settings" = "AJUSTES DE USUARIO";
"settings_notifications_settings" = "AJUSTES DE NOTIFICACIÓN";
"settings_calls_settings" = "LLAMADAS";
"settings_user_interface" = "INTERFAZ DE USUARIO";
"settings_ignored_users" = "USUARIOS IGNORADOS";
"settings_contacts" = "CONTACTOS LOCALES";
"settings_advanced" = "AVANZADO";
"settings_other" = "OTRO";
"settings_labs" = "LABORATORIOS";
"settings_flair" = "Mostrar insignia donde esté permitido";
"settings_devices" = "DISPOSITIVOS";
"settings_cryptography" = "CRIPTOGRAFÍA";
"settings_deactivate_account" = "DESACTIVAR CUENTA";
"settings_sign_out" = "Cerrar Sesión";
"settings_sign_out_confirmation" = "¿Estás seguro?";
"settings_sign_out_e2e_warn" = "Perderás tus claves de cifrado de extremo a extremo. Esto significa que no podrás leer mensajes antiguos en salas cifradas desde este dispositivo.";
"settings_profile_picture" = "Imagen de Perfil";
"settings_display_name" = "Nombre Público";
"settings_first_name" = "Nombre de Pila";
"settings_surname" = "Apellido";
"settings_remove_prompt_title" = "Confirmación";
"settings_remove_email_prompt_msg" = "¿Seguro que quieres eliminar la dirección de correo electrónico %@?";
"settings_remove_phone_prompt_msg" = "¿Seguro que quieres eliminar el número telefónico %@?";
"settings_email_address" = "Correo Electrónico";
"settings_email_address_placeholder" = "Ingresa tu dirección de correo electrónico";
"settings_add_email_address" = "Añadir dirección de correo electrónico";
"settings_phone_number" = "Teléfono";
"settings_add_phone_number" = "Añadir número telefónico";
"settings_night_mode" = "Modo Nocturno";
"settings_fail_to_update_profile" = "Error al actualizar el perfil";
"settings_enable_push_notif" = "Notificaciones en este dispositivo";
"settings_show_decrypted_content" = "Mostrar contenido descifrado";
"settings_global_settings_info" = "Los ajustes de notificación globales están disponibles en tu cliente web %@";
"settings_pin_rooms_with_missed_notif" = "Fijar salas con notificaciones pendientes";
"settings_pin_rooms_with_unread" = "Fijar salas con mensajes no leídos";
"settings_on_denied_notification" = "Las notificaciones están denegadas para %@, por favor habilita notificaciones en los ajustes de tu dispositivo";
"settings_enable_callkit" = "Integración de llamadas";
"settings_callkit_info" = "Recibe llamadas entrantes en tu pantalla de bloqueo. Ve tus llamadas de Riot en el historial de llamadas del sistema. Si iCloud está habilitado, este historial de llamadas se compartirá con Apple.";
"settings_ui_language" = "Idioma";
"settings_ui_theme" = "Tema";
"settings_ui_theme_auto" = "Automático";
"settings_ui_theme_light" = "Claro";
"settings_ui_theme_dark" = "Oscuro";
"settings_ui_theme_black" = "Negro";
"settings_ui_theme_picker_title" = "Selecciona un tema";
"settings_ui_theme_picker_message" = "\"Auto\" utiliza los ajustes de \"Invertir Colores\" de tu dispositivo";
"settings_unignore_user" = "¿Mostrar todos los mensajes de %@?";
"settings_contacts_discover_matrix_users" = "Utiliza correos electrónicos y números telefónicos para descubrir usuarios";
"settings_contacts_phonebook_country" = "País de directorio telefónico";
"settings_labs_e2e_encryption" = "Cifrado de Extremo a Extremo";
"settings_labs_e2e_encryption_prompt_message" = "Debes iniciar sesión de nuevo para finalizar la configuración del cifrado.";
"settings_labs_room_members_lazy_loading" = "Cargar miembros de la sala con carga diferida";
"settings_labs_room_members_lazy_loading_error_message" = "Tu servidor doméstico aún no admite la carga diferida de los miembros de la sala. Intenta más tarde.";
"settings_labs_create_conference_with_jitsi" = "Crear llamadas de conferencia con jitsi";
"settings_version" = "Versión %@";
"settings_olm_version" = "Versión de Olm %@";
"settings_copyright" = "Derechos de autor";
"settings_copyright_url" = "https://riot.im/copyright";
"settings_term_conditions" = "Términos y Condiciones";
"settings_term_conditions_url" = "https://riot.im/tac_apple";
"settings_privacy_policy" = "Política de Privacidad";
"settings_privacy_policy_url" = "https://riot.im/privacy";
"settings_third_party_notices" = "Avisos de Terceros";
"settings_send_crash_report" = "Enviar datos de uso e informes de fallas anónimos";
"settings_enable_rageshake" = "Agitar con rabia para reportar un error";
"settings_clear_cache" = "Borrar caché";
"settings_change_password" = "Cambiar contraseña";
"settings_old_password" = "contraseña anterior";
"settings_new_password" = "contraseña nueva";
"settings_confirm_password" = "confirmar contraseña";
"settings_fail_to_update_password" = "No se pudo actualizar la contraseña";
"settings_password_updated" = "Tu contraseña ha sido actualizada";
"settings_crypto_device_name" = "Nombre de dispositivo: ";
"settings_crypto_device_id" = "\nID de Dispositivo: ";
"settings_crypto_device_key" = "\nClave de dispositivo: ";
"settings_crypto_export" = "Exportar claves";
"settings_crypto_blacklist_unverified_devices" = "Cifrar solo a dispositivos verificados";
"settings_deactivate_my_account" = "Desactivar mi cuenta";
// Room Details
"room_details_title" = "Detalles de Sala";
"room_details_people" = "Miembros";
"room_details_files" = "Archivos";
"room_details_settings" = "Ajustes";
"room_details_photo" = "Imagen de Sala";
"room_details_room_name" = "Nombre de Sala";
"room_details_topic" = "Tema";
"room_details_favourite_tag" = "Agregar a Favoritos";
"room_details_low_priority_tag" = "Prioridad baja";
"room_details_mute_notifs" = "Silenciar notificaciones";
"room_details_direct_chat" = "Conversación Directa";
"room_details_access_section" = "¿Quién puede acceder a esta sala?";
"room_details_access_section_invited_only" = "Solo personas que han sido invitadas";
"room_details_access_section_anyone_apart_from_guest" = "Cualquier persona que conozca el enlace a esta sala, excepto huéspedes";
"room_details_access_section_anyone" = "Cualquier persona que conozca el enlace a esta sala, incluyendo huéspedes";
"room_details_access_section_no_address_warning" = "Para crear un enlace a una sala, debe tener una dirección";
"room_details_access_section_directory_toggle" = "Listar esta sala en el directorio de salas";
"room_details_history_section" = "¿Quién puede leer el historial?";
"room_details_history_section_anyone" = "Todos";
"room_details_history_section_members_only" = "Solo miembros (desde el momento en que se selecciona esta opción)";
"room_details_history_section_members_only_since_invited" = "Solo miembros (desde que fueron invitados)";
"room_details_history_section_members_only_since_joined" = "Solo miembros (desde que se unieron)";
"room_details_history_section_prompt_title" = "Advertencia de privacidad";
"room_details_history_section_prompt_msg" = "Los cambios aplicados a quién puede leer el historial solo se aplicarán a mensajes futuros en esta sala. La visibilidad del historial existente no cambiará.";
"room_details_addresses_section" = "Direcciones";
"room_details_no_local_addresses" = "Esta sala no tiene direcciones locales";
"room_details_new_address" = "Añadir dirección nueva";
"room_details_new_address_placeholder" = "Añadir dirección nueva (ej. #foo%@)";
"room_details_addresses_invalid_address_prompt_title" = "Formato de alias inválido";
"room_details_addresses_invalid_address_prompt_msg" = "%@ no es un formato de alias válido";
"room_details_fail_to_add_room_aliases" = "No se pudieron agregar las nuevas direcciones de sala";
"room_details_fail_to_update_room_canonical_alias" = "No se pudo actualizar la dirección principal";
"room_details_addresses_disable_main_address_prompt_title" = "Advertencia de la dirección principal";
"room_details_addresses_disable_main_address_prompt_msg" = "No tendrás una dirección principal especificada. La dirección principal por defecto para esta sala se elegirá al azar";
"room_details_flair_invalid_id_prompt_title" = "Formato inválido";
"room_details_flair_invalid_id_prompt_msg" = "%@ no es un identificador válido para una comunidad";
"room_details_flair_section" = "Mostrar insignias para las comunidades";
"room_details_new_flair_placeholder" = "Añadir nueva ID de comunidad (ej. +foo%@)";
"room_details_banned_users_section" = "Usuarios vetados";
"room_details_advanced_section" = "Avanzado";
"room_details_advanced_room_id" = "ID de Sala:";
"room_details_advanced_enable_e2e_encryption" = "Habilitar cifrado (advertencia: ¡no se puede volver a deshabilitar!)";
"room_details_advanced_e2e_encryption_enabled" = "El cifrado está habilitado en esta sala";
"room_details_advanced_e2e_encryption_disabled" = "El cifrado no está habilitado en esta sala.";
"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "Cifrar solo a dispositivos verificados";
"room_details_advanced_e2e_encryption_prompt_message" = "El cifrado de extremo a extremo es experimental y puede no ser confiable.\n\nAún no deberías confiar en él para proteger tus datos.\n\nLos dispositivos todavía no podrán descifrar el historial desde antes de unirse a la sala.\n\nUna vez que se habilita el cifrado en una sala no se puede volver a desactivar (por ahora).\n\nLos mensajes cifrados no serán visibles en clientes que aún no implementen el cifrado.";
"room_details_fail_to_update_avatar" = "No se pudo actualizar la imagen de la sala";
"room_details_fail_to_update_room_name" = "No se pudo actualizar el nombre de la sala";
"room_details_fail_to_update_topic" = "No se pudo actualizar el tema";
"room_details_fail_to_update_room_guest_access" = "No se pudo actualizar el acceso de huéspedes en la sala";
"room_details_fail_to_update_room_join_rule" = "No se pudo actualizar la regla de unión";
"room_details_fail_to_update_room_directory_visibility" = "No se pudo actualizar la visibilidad en el directorio de salas";
"room_details_fail_to_update_history_visibility" = "No se pudo actualizar la visibilidad del historial";
"room_details_fail_to_remove_room_aliases" = "No se pudieron eliminar las direcciones de sala";
"room_details_fail_to_update_room_communities" = "No se pudieron actualizar las comunidades relacionadas";
"room_details_fail_to_update_room_direct" = "No se pudo actualizar la marca directa de esta sala";
"room_details_fail_to_enable_encryption" = "No se pudo habilitar el cifrado en esta sala";
"room_details_save_changes_prompt" = "¿Quieres guardar los cambios?";
"room_details_set_main_address" = "Establecer como Dirección Principal";
"room_details_unset_main_address" = "Dejar de Establecer como Dirección Principal";
"room_details_copy_room_id" = "Copiar ID de Sala";
"room_details_copy_room_address" = "Copiar Dirección de Sala";
"room_details_copy_room_url" = "Copiar la URL de la Sala";
// Group Details
"group_details_title" = "Detalles de Comunidad";
"group_details_home" = "Inicio";
"group_details_people" = "Personas";
"group_details_rooms" = "Salas";
// Group Home
"group_home_one_member_format" = "1 miembro";
"group_home_multi_members_format" = "%tu miembros";
"group_home_one_room_format" = "1 sala";
"group_home_multi_rooms_format" = "%tu salas";
"group_invitation_format" = "%@ te invitó a unirte a esta comunidad";
// Group participants
"group_participants_add_participant" = "Añadir participante";
"group_participants_leave_prompt_title" = "Salir del grupo";
"group_participants_leave_prompt_msg" = "¿Seguro que quieres salir del grupo?";
"group_participants_remove_prompt_title" = "Confirmación";
"group_participants_remove_prompt_msg" = "¿Seguro que quieres eliminar %@ de este grupo?";
"group_participants_invite_prompt_title" = "Confirmación";
"group_participants_invite_prompt_msg" = "¿Seguro que quieres invitar a %@ a este grupo?";
"group_participants_filter_members" = "Filtrar miembros de la comunidad";
"group_participants_invite_another_user" = "Buscar / invitar por ID de Usuario o Nombre";
"group_participants_invite_malformed_id_title" = "Falló la Invitación";
"group_participants_invite_malformed_id" = "ID mal formada. Debería ser una ID de Matrix como '@partelocal:dominio'";
"group_participants_invited_section" = "INVITADOS";
// Group rooms
"group_rooms_filter_rooms" = "Filtrar salas de la comunidad";
// Read Receipts
"read_receipts_list" = "Lista de Recibos de Lectura";
"receipt_status_read" = "Leído: ";
// Media picker
"media_picker_library" = "Biblioteca";
"media_picker_select" = "Seleccionar";
// Directory
"directory_title" = "Directorio";
"directory_server_picker_title" = "Seleccionar un directorio";
"directory_server_all_rooms" = "Todas las salas en el servidor %@";
"directory_server_all_native_rooms" = "Todas las salas nativas de Matrix";
"directory_server_type_homeserver" = "Escribe un servidor doméstico desde donde listar las salas públicas";
"directory_server_placeholder" = "matrix.org";
// Events formatter
"event_formatter_member_updates" = "%tu cambios de membresía";
"event_formatter_widget_added" = "componente %@ añadido por %@";
"event_formatter_widget_removed" = "componente %@ eliminado por %@";
"event_formatter_jitsi_widget_added" = "conferencia vozIP añadida por %@";
"event_formatter_jitsi_widget_removed" = "conferencia vozIP eliminada por %@";
"event_formatter_rerequest_keys_part1_link" = "Volver a solicitar las claves de cifrado";
"event_formatter_rerequest_keys_part2" = " de tus otros dispositivos.";
// Others
"or" = "o";
"you" = "Tú";
"today" = "Hoy";
"yesterday" = "Ayer";
"network_offline_prompt" = "La conexión a Internet parece estar desconectada.";
"homeserver_connection_lost" = "No se pudo conectar al servidor doméstico.";
"public_room_section_title" = "Salas Públicas (en %@):";
"bug_report_prompt" = "La aplicación falló en la última sesión. ¿Te gustaría enviar un informe de fallas?";
"rage_shake_prompt" = "Parece que estás agitando el teléfono con frustración. ¿Te gustaría enviar un informe de error?";
"do_not_ask_again" = "No preguntar de nuevo";
"camera_access_not_granted" = "%@ no tiene permiso para utilizar la Cámara, por favor cambia los ajustes de privacidad";
"large_badge_value_k_format" = "%.1fK";
// Call
"call_incoming_voice_prompt" = "Llamada de voz entrante de %@";
"call_incoming_video_prompt" = "Llamada de vídeo entrante de %@";
"call_incoming_voice" = "Llamada entrante...";
"call_incoming_video" = "Llamada de vídeo entrante...";
"call_already_displayed" = "Ya hay una llamada en curso.";
"call_jitsi_error" = "No se ha podido unir a la llamada de conferencia.";
// No VoIP support
"no_voip_title" = "Llamada entrante";
"no_voip" = "%@ te está llamando pero %@ aún no admite llamadas.\nPuedes ignorar esta notificación y contestar la llamada desde otro dispositivo o puedes rechazarla.";
// Crash report
"google_analytics_use_prompt" = "¿Te gustaría ayudar a mejorar %@ enviando automáticamente informes de fallas y datos de uso anónimos?";
// Crypto
"e2e_enabling_on_app_update" = "Riot ahora admite cifrado de extremo a extremo pero debes volver a iniciar sesión para habilitarlo.\n\nPuedes hacerlo ahora o más tarde desde los ajustes de la aplicación.";
"e2e_need_log_in_again" = "Tienes que volver a iniciar sesión para generar claves de cifrado de extremo a extremo para este dispositivo y enviar la clave pública a tu servidor doméstico.\nEsto es por única vez; disculpas por la molestia.";
// Bug report
"bug_report_title" = "Informe de Error";
"bug_report_description" = "Por favor describe el error. ¿Qué hiciste? ¿Qué esperabas que sucediera? ¿Qué sucedió realmente?";
"bug_crash_report_title" = "Informe de Fallas";
"bug_report_logs_description" = "Para diagnosticar problemas, los registros de este cliente se enviarán junto con este informe de error. Si prefieres enviar solo el texto anterior, por favor desmarca:";
"bug_report_send_logs" = "Enviar registros";
"bug_report_progress_zipping" = "Recolectando registros";
// Share extension
"share_extension_auth_prompt" = "Inicia sesión en la aplicación principal para compartir contenido";
// Room key request dialog
"e2e_room_key_request_title" = "Solicitud de clave de cifrado";
"deactivate_account_informations_part1" = "Esto hará que tu cuenta quede permanentemente inutilizable. No podrás iniciar sesión, y nadie podrá volver a registrar la misma ID de usuario. Esto hará que tu cuenta salga de todas las salas en las cuales participa, y eliminará los datos de tu cuenta de tu servidor de identidad. ";
"bug_crash_report_description" = "Por favor describe lo que hacías antes de la falla:";
"bug_report_send_screenshot" = "Enviar captura de pantalla";
"bug_report_progress_uploading" = "Subiendo informe";
"bug_report_send" = "Enviar";
// Widget
"widget_no_power_to_manage" = "Necesitas permiso para gestionar los componentes en esta sala";
"widget_creation_failure" = "La creación del componente falló";
"widget_sticker_picker_no_stickerpacks_alert" = "Actualmente no tienes ningún paquete de pegatinas habilitado.";
"widget_sticker_picker_no_stickerpacks_alert_add_now" = "¿Añadir algunos ahora?";
// Widget Integration Manager
"widget_integration_need_to_be_able_to_invite" = "Debes ser capaz de invitar usuarios para realizar esa acción.";
"widget_integration_unable_to_create" = "No es posible crear el componente.";
"widget_integration_failed_to_send_request" = "El envío de la solicitud falló.";
"widget_integration_room_not_recognised" = "No se reconoce esta sala.";
"widget_integration_positive_power_level" = "El nivel de autoridad debe ser un número entero positivo.";
"widget_integration_must_be_in_room" = "No estás en esta sala.";
"widget_integration_no_permission_in_room" = "No tienes permiso para realizar esa acción en esta sala.";
"widget_integration_missing_room_id" = "Falta el room_id en la solicitud.";
"widget_integration_missing_user_id" = "Falta el user_id en la solicitud.";
"widget_integration_room_not_visible" = "La sala %@ no está visible.";
"share_extension_failed_to_encrypt" = "Falló el envío. Comprueba los ajustes de cifrado para esta sala en la aplicación principal";
"e2e_room_key_request_message_new_device" = "Añadiste un nuevo dispositivo '%@', que está solicitando claves de cifrado.";
"e2e_room_key_request_message" = "Tu dispositivo sin verificar '%@' está solicitando claves de cifrado.";
"e2e_room_key_request_start_verification" = "Iniciar verificación...";
"e2e_room_key_request_share_without_verifying" = "Compartir sin verificar";
"e2e_room_key_request_ignore_request" = "Ignorar solicitud";
// GDPR
"gdpr_consent_not_given_alert_message" = "Para continuar utilizando el servidor doméstico %@, debes revisar y aceptar los términos y condiciones.";
"gdpr_consent_not_given_alert_review_now_action" = "Revisar ahora";
"deactivate_account_title" = "Desactivar Cuenta";
"deactivate_account_informations_part3" = "\n\nDesactivar tu cuenta ";
"deactivate_account_informations_part4_emphasize" = "no hace que por defecto olvidemos los mensajes que has enviado. ";
"deactivate_account_informations_part5" = "Si quieres que olvidemos tus mensajes, por favor marca la casilla a continuación\n\nLa visibilidad de mensajes en Matrix es similar a la del correo electrónico. Que olvidemos tus mensajes implica que los mensajes que hayas enviado no se compartirán con ningún usuario nuevo o no registrado, pero aquellos usuarios registrados que ya tengan acceso a estos mensajes seguirán teniendo acceso a su copia.";
"deactivate_account_forget_messages_information_part1" = "Por favor, olvida todos los mensajes enviados al desactivar mi cuenta (";
"deactivate_account_forget_messages_information_part3" = ": esto provocará que los usuarios futuros vean conversaciones incompletas)";

View file

@ -54,8 +54,8 @@
"auth_user_name_placeholder" = "Erabiltzaile-izena";
"auth_add_email_message" = "Gehitu e-mail helbide bat zure kontura erabiltzaileek zu aurkitzea baimentzeko, eta zuk pasahitza berrezarri ahal izateko.";
"auth_add_phone_message" = "Gehitu telefono zenbaki bat zure kontura beste erabiltzaileek zu aurkitzea ahalbidetzeko.";
"auth_optional_email_placeholder" = "E-mail helbidea (aukerazkoa)";
"auth_optional_phone_placeholder" = "Telefono zenbakia (aukerazkoa)";
"auth_optional_email_placeholder" = "E-mail helbidea (aukerakoa)";
"auth_optional_phone_placeholder" = "Telefono zenbakia (aukerakoa)";
"auth_repeat_password_placeholder" = "Errepikatu pasahitza";
"auth_repeat_new_password_placeholder" = "Berretsi zure pasahitza";
"auth_invalid_login_param" = "Erabiltzaile-izen eta/edo pasahitz okerra";
@ -131,8 +131,6 @@
"room_event_action_report_prompt_ignore_user" = "Erabiltzaile honen mezu guztiak ezkutatu nahi dituzu?";
"room_event_action_cancel_upload" = "Utzi igoera";
"room_event_action_cancel_download" = "Utzi deskarga";
"room_displayname_room_invite" = "Gela gonbidapena";
"room_displayname_no_title" = "Gela hutsa";
"room_participants_filter_room_members" = "Iragazi gelako kideak";
"room_recents_conversations_section" = "GELAK";
"room_recents_people_section" = "JENDEA";
@ -227,7 +225,7 @@
"auth_reset_password_error_not_found" = "Zure e-mail helbidea ez dago antza hasiera zerbitzari honetako Matrix ID batekin lotuta.";
"room_creation_account" = "Kontua";
"room_creation_appearance" = "Itxura";
"room_creation_appearance_picture" = "Txateko irudia (aukerazkoa)";
"room_creation_appearance_picture" = "Txateko irudia (aukerakoa)";
"room_creation_privacy" = "Pribatutasuna";
"room_creation_private_room" = "Txat hau pribatua da";
"room_creation_public_room" = "Txat hau publikoa da";
@ -398,16 +396,12 @@
"public_room_section_title" = "Gela publikoak (%@ zerbitzarian):";
"camera_access_not_granted" = "%@(e)k ez du kamera erabiltzeko baimenik, aldatu pribatutasun ezarpenak";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Gonbidatu %@ gelatik";
"auth_add_email_and_phone_warning" = "E-maila eta telefono zenbakia aldi berean erabiliz erregistratzea ez da onartzen APIa ez dagoen bitartean. Telefono zenbakia besterik ez da hartu aintzat. E-maila zure profilera gehitu dezakezu ezarpenetan.";
"room_participants_remove_third_party_invite_msg" = "Hirugarrengoen gonbidapenak kentzea ez da onartzen APIa ez dagoen bitartean";
"settings_sign_out_e2e_warn" = "Zure muturretik muturrerako zifratze gakoak galduko dituzu. Horrek esan nahi du ezin izango dituzula mezu zaharrak irakurri zifratutako geletan gailu honetatik.";
"settings_global_settings_info" = "Jakinarazpen orokorren ezarpenak eskuragarri daude zure %@ web bezeroan";
"settings_on_denied_notification" = "Jakinarazpenak ukatu dira %@(e)n, baimendu zure gailuaren ezarpenetan";
"room_details_history_section_prompt_msg" = "Historiala nork irakurri dezakeen aldatzea gelak honetara aurrerantzean bidalitako mezuei besterik ez zaie aplikatuako. Badagoen historialaren ikusgaitasuna ez da aldatuko.";
"room_displayname_two_members" = "%@ eta %@";
"room_displayname_more_than_two_members" = "%@ eta beste %u";
// Call
"call_incoming_voice_prompt" = "%@ erabiltzailearen deia jasotzen";
"call_incoming_video_prompt" = "%@ erabiltzailearen bideo-deia jasotzen";
@ -555,3 +549,8 @@
"settings_labs_room_members_lazy_loading" = "Gelako kideen karga alferra";
"settings_labs_room_members_lazy_loading_error_message" = "Zure hasiera zerbitzariak ez du onartzen gelako kideen karga alferra. Saiatu geroago.";
"room_event_action_view_decrypted_source" = "Ikusi deszifratutako iturria";
"room_recents_server_notice_section" = "SISTEMAKO ALERTAK";
"room_resource_limit_exceeded_message_contact_1" = " Mesedez ";
"room_resource_limit_exceeded_message_contact_2_link" = "Jarri zure zerbitzuaren administratzailearekin kontaktuan";
"room_resource_limit_exceeded_message_contact_3" = " zerbitzu hau erabiltzen jarraitzeko.";
"homeserver_connection_lost" = "Ezin izan da hasiera zerbitzarira konektatu.";

View file

@ -418,12 +418,6 @@
"do_not_ask_again" = "Ne plus demander";
"camera_access_not_granted" = "%@ n'a pas la permission pour utiliser l'appareil photo, veuillez modifier les options de vie privée";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Invitation de %@";
"room_displayname_room_invite" = "Invitation sur un salon";
"room_displayname_two_members" = "%@ et %@";
"room_displayname_more_than_two_members" = "%@ et %u autres";
"room_displayname_no_title" = "Salon vide";
// Call
"call_incoming_voice_prompt" = "Appel vocal entrant de %@";
"call_incoming_video_prompt" = "Appel vidéo entrant de %@";
@ -553,3 +547,8 @@
"settings_labs_room_members_lazy_loading" = "Chargement différé des participants des salons";
"settings_labs_room_members_lazy_loading_error_message" = "Votre serveur d'accueil ne prend pas en charge le chargement différé des participants des salons. Réessayez plus tard.";
"room_event_action_view_decrypted_source" = "Voir la source déchiffrée";
"room_recents_server_notice_section" = "ALERTES SYSTÈME";
"room_resource_limit_exceeded_message_contact_1" = " Veuillez ";
"room_resource_limit_exceeded_message_contact_2_link" = "contacter l'administrateur de votre service";
"room_resource_limit_exceeded_message_contact_3" = " pour continuer à l'utiliser.";
"homeserver_connection_lost" = "Connexion impossible au serveur d'accueil.";

View file

@ -552,3 +552,8 @@
// Re-request confirmation dialog
"rerequest_keys_alert_title" = "Kérés elküldve";
"rerequest_keys_alert_message" = "Kérlek indítsd el a Riot-ot egy másik eszközödön amelyik vissza tudja fejteni az üzenetet, hogy el tudja küldeni a kulcsokat ennek az eszköznek.";
"room_recents_server_notice_section" = "RENDSZER FIGYELMEZTETÉSEK";
"room_resource_limit_exceeded_message_contact_1" = " Kérlek ";
"room_resource_limit_exceeded_message_contact_2_link" = "vedd fel a kapcsolatot a szolgáltatás adminisztrátorával";
"room_resource_limit_exceeded_message_contact_3" = " , hogy tovább használhasd a szolgáltatást.";
"homeserver_connection_lost" = "A Matrix szerverhez nem lehet kapcsolódni.";

View file

@ -259,9 +259,6 @@
"network_offline_prompt" = "Internettenging virðist vera ótengd.";
"do_not_ask_again" = "Ekki spyrja aftur";
"large_badge_value_k_format" = "%.1fK";
"room_displayname_two_members" = "%@ og %@";
"room_displayname_more_than_two_members" = "%@ og %u til viðbótar";
"room_displayname_no_title" = "Tóm spjallrás";
// Call
"call_incoming_voice_prompt" = "Innhringing raddsamtals frá %@";
"call_incoming_video_prompt" = "Innhringing myndsamtals frá %@";
@ -425,9 +422,6 @@
"directory_server_type_homeserver" = "Skrifaðu heimanetþjón til að telja upp opinberar spjallrásir á";
"bug_report_prompt" = "Forritið hrundi síðast. Myndirðu vilja senda inn villuskýrslu?";
"rage_shake_prompt" = "Það er eins og þú sért að hrista símann ákveðið. Myndirðu vilja senda villuskýrslu?";
// room display name
"room_displayname_invite_from" = "Boð frá %@";
"room_displayname_room_invite" = "Boð á spjallrás";
"call_jitsi_error" = "Mistókst að taka þátt í símafundi.";
"bug_report_description" = "Lýstu villunni. Hvað varstu að gera? Hverju áttirðu von á? Hvað gerðist í raun?";
"bug_crash_report_description" = "Lýstu því hvað þú varst að gera þegar forritið hrundi (á ensku):";

View file

@ -404,12 +404,6 @@
"rage_shake_prompt" = "Het ziet er naar uit dat je de telefoon in frustratie schudt. Wil je een foutmelding indienen?";
"camera_access_not_granted" = "%@ heeft geen permission om de Camera te gebruiken, verander de privacy instellingen";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Uitnodiging van %@";
"room_displayname_room_invite" = "Ruimte Uitnodiging";
"room_displayname_two_members" = "%@ en %@";
"room_displayname_more_than_two_members" = "%@ en %u anderen";
"room_displayname_no_title" = "Lege ruimte";
// Call
"call_incoming_voice_prompt" = "Inkomende spraakoproep van %@";
"call_incoming_video_prompt" = "Inkomende video oproep van %@";
@ -570,3 +564,6 @@
"deactivate_account_password_alert_title" = "Account deactiveren";
"deactivate_account_password_alert_message" = "Voer je wachtwoord in om verder te gaan";
"room_event_action_view_decrypted_source" = "Bekijk ontsleutelde bron";
"room_message_reply_to_placeholder" = "Verstuur een antwoord (onversleuteld)…";
"encrypted_room_message_reply_to_placeholder" = "Verstuur een versleuteld antwoord…";
"room_message_reply_to_short_placeholder" = "Verstuur een antwoord…";

View file

@ -154,3 +154,8 @@
"room_participants_leave_prompt_msg" = "Você tem certeza que deseja sair da sala?";
"room_participants_remove_prompt_title" = "Confirmação";
"room_participants_remove_prompt_msg" = "Você tem certeza que deseja remover %@ desta conversa?";
// Chat creation
"room_creation_title" = "Nova Sala";
"room_creation_account" = "Conta";
// Room recents
"room_recents_directory_section" = "LISTA PÚBLICA DE SALAS";

View file

@ -368,12 +368,6 @@
"rage_shake_prompt" = "Вы потрясли свой телефон и нам показалось, что вы в отчаянии от использования Riot. Хотите отправить отчет об ошибке?";
"camera_access_not_granted" = "%@ не имеет разрешения на использование камеры, пожалуйста, измените настройки конфиденциальности";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Приглашение от %@";
"room_displayname_room_invite" = "Приглашение в комнату";
"room_displayname_two_members" = "%@ и %@";
"room_displayname_more_than_two_members" = "%@ и %u другие";
"room_displayname_no_title" = "Пустая комната";
// Call
"call_incoming_voice_prompt" = "Входящий голосовой вызов от %@";
"call_incoming_video_prompt" = "Входящий видеозвонок от %@";
@ -551,3 +545,7 @@
"room_replacement_link" = "Этот разговор продолжается здесь.";
"room_predecessor_information" = "Эта комната является продолжением другого разговора.";
"room_predecessor_link" = "Нажмите здесь, чтобы просмотреть старые сообщения.";
"room_recents_server_notice_section" = "СИСТЕМНЫЕ ПРЕДУПРЕЖДЕНИЯ";
"room_resource_limit_exceeded_message_contact_1" = " Пожалуйста ";
"room_resource_limit_exceeded_message_contact_2_link" = "обратитесь к администратору сервиса";
"room_resource_limit_exceeded_message_contact_3" = " для продолжения его использования.";

View file

@ -354,11 +354,6 @@
"network_offline_prompt" = "Lidhja Internet duket se është jashtë linje.";
"public_room_section_title" = "Dhoma Publike (at %@):";
"do_not_ask_again" = "Mos pyet sërish";
// room display name
"room_displayname_invite_from" = "Ftesë nga %@";
"room_displayname_room_invite" = "Ftesë Dhome";
"room_displayname_more_than_two_members" = "%@ dhe %u të tjerë";
"room_displayname_no_title" = "Dhomë e zbrazët";
// Call
"call_incoming_voice_prompt" = "Thirrje audio ardhëse nga %@";
"call_incoming_video_prompt" = "Thirrje video ardhëse nga %@";

View file

@ -420,12 +420,6 @@
"do_not_ask_again" = "Đừng hỏi lại";
"camera_access_not_granted" = "%@ không có quyền để sử dụng máy ảnh, vui lòng thay đổi thiết lập riêng tư";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Mời từ %@";
"room_displayname_room_invite" = "Phòng mời";
"room_displayname_two_members" = "%@ và %@";
"room_displayname_more_than_two_members" = "%@ và %u người khác";
"room_displayname_no_title" = "Phòng trống";
// Call
"call_incoming_voice_prompt" = "Cuộc gọi thoại đến từ %@";
"call_incoming_video_prompt" = "Cuộc gọi video đến từ %@";

View file

@ -202,7 +202,7 @@
"room_event_action_more" = "移动";
"room_event_action_share" = "分享";
"room_event_action_permalink" = "永久链接";
"room_event_action_view_source" = "查看源";
"room_event_action_view_source" = "查看源数据";
"room_event_action_report" = "报告内容";
"room_event_action_report_prompt_reason" = "报告内容的原因";
"room_event_action_report_prompt_ignore_user" = "你想隐藏所有来自此用户的消息吗?";
@ -383,12 +383,6 @@
"rage_shake_prompt" = "你似乎在沮丧地摇晃手机。您要提交 bug 报告吗?";
"camera_access_not_granted" = "%@ 没有使用摄像头的权限,请修改隐私设置";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "从 %@ 邀请";
"room_displayname_room_invite" = "聊天室邀请";
"room_displayname_two_members" = "%@ 和 %@";
"room_displayname_more_than_two_members" = "%@ 和 %u 个其他人";
"room_displayname_no_title" = "空聊天室";
// Call
"call_incoming_voice_prompt" = "来自 %@ 的语音通话";
"call_incoming_video_prompt" = "来自 %@ 的视频通话";
@ -502,3 +496,27 @@
"widget_creation_failure" = "小部件创建失败";
// Room key request dialog
"e2e_room_key_request_title" = "密钥共享请求";
"room_recents_server_notice_section" = "系统警告";
"room_message_reply_to_placeholder" = "发送回复(未加密)…";
"encrypted_room_message_reply_to_placeholder" = "发送加密回复…";
"room_message_reply_to_short_placeholder" = "发送回复…";
"room_event_action_view_decrypted_source" = "查看经过解密的源数据";
"room_action_send_photo_or_video" = "发送照片或视频";
"room_action_send_sticker" = "发送贴纸";
"room_resource_limit_exceeded_message_contact_1" = " 请 ";
"room_resource_limit_exceeded_message_contact_2_link" = "联系您的服务管理员";
"room_resource_limit_exceeded_message_contact_3" = " 以继续使用本服务。";
"settings_deactivate_account" = "注销账户";
"settings_labs_room_members_lazy_loading" = "延迟加载聊天室成员";
"settings_labs_room_members_lazy_loading_error_message" = "您的主服务器尚不支持延迟加载聊天室成员。请稍后再试。";
"settings_deactivate_my_account" = "注销我的账户";
"event_formatter_jitsi_widget_added" = "";
"event_formatter_rerequest_keys_part1_link" = "重新请求加密密钥";
"event_formatter_rerequest_keys_part2" = " (从您的其他设备中)。";
"homeserver_connection_lost" = "无法连接至主服务器。";
"call_jitsi_error" = "电话会议加入失败。";
"deactivate_account_forget_messages_information_part2_emphasize" = "警告";
"deactivate_account_validate_action" = "注销账户";
"deactivate_account_password_alert_title" = "注销账户";
// Re-request confirmation dialog
"rerequest_keys_alert_title" = "请求已发送";

View file

@ -480,12 +480,6 @@
"do_not_ask_again" = "不再詢問";
"camera_access_not_granted" = "%@ 沒有使用相機的權限,請修改隱私權設定";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "從 %@ 邀請";
"room_displayname_room_invite" = "聊天室邀請";
"room_displayname_two_members" = "%@ 和 %@";
"room_displayname_more_than_two_members" = "%@ 和 %u 個其他人";
"room_displayname_no_title" = "空的聊天室";
// Call
"call_incoming_voice_prompt" = "來自 %@ 的語音通話";
"call_incoming_video_prompt" = "來自 %@ 的視訊通話";

View file

@ -97,11 +97,11 @@
self->_roomAvatarUrl = peekingRoom.summary.avatar;
self->_roomTopic = [MXTools stripNewlineCharacters:peekingRoom.summary.topic];;
self->_roomAliases = self.roomDataSource.roomState.aliases;
self->_roomAliases = peekingRoom.summary.aliases;
// Room members count
// Note that room members presence/activity is not available
self->_numJoinedMembers = self.roomDataSource.roomState.membersCount.joined;
self->_numJoinedMembers = peekingRoom.summary.membersCount.joined;
completion(YES);
}];

View file

@ -304,6 +304,9 @@
userInfo[@"default_app_language"] = [[NSBundle mainBundle] preferredLocalizations][0]; // The language chosen by the OS
userInfo[@"app_language"] = [NSBundle mxk_language] ? [NSBundle mxk_language] : userInfo[@"default_app_language"]; // The language chosen by the user
// Application settings
userInfo[@"lazy_loading"] = [MXKAppSettings standardAppSettings].syncWithLazyLoadOfRoomMembers ? @"ON" : @"OFF";
NSDate *currentDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

View file

@ -60,7 +60,7 @@
roomDisplayname = self.roomSummary.displayname;
if (!roomDisplayname.length)
{
roomDisplayname = NSLocalizedStringFromTable(@"room_displayname_no_title", @"Vector", nil);
roomDisplayname = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
}
}

View file

@ -101,7 +101,7 @@
roomDisplayName = room.summary.displayname;
if (!roomDisplayName.length)
{
roomDisplayName = NSLocalizedStringFromTable(@"room_displayname_no_title", @"Vector", nil);
roomDisplayName = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
}
}
else

View file

@ -44,7 +44,7 @@
self.roomNameLabel.text = room.summary.displayname;
if (!self.roomNameLabel.text.length)
{
self.roomNameLabel.text = NSLocalizedStringFromTable(@"room_displayname_no_title", @"Vector", nil);
self.roomNameLabel.text = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
}
}
else

View file

@ -19,6 +19,7 @@
#import "EventFormatter.h"
#import "AvatarGenerator.h"
#import "Tools.h"
static NSAttributedString *timestampVerticalWhitespace = nil;
static NSAttributedString *readReceiptVerticalWhitespace = nil;
@ -194,12 +195,7 @@ static NSAttributedString *readReceiptVerticalWhitespace = nil;
if (selectedComponentIndex != NSNotFound && selectedComponentIndex != index && componentString.length)
{
// Apply alpha to blur this component
NSMutableAttributedString *customComponentString = [[NSMutableAttributedString alloc] initWithAttributedString:componentString];
UIColor *color = [componentString attribute:NSForegroundColorAttributeName atIndex:0 effectiveRange:nil];
color = [color colorWithAlphaComponent:0.2];
[customComponentString addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(0, customComponentString.length)];
componentString = customComponentString;
componentString = [Tools setTextColorAlpha:.2 inAttributedString:componentString];
}
// Check whether the timestamp is displayed for this component, and check whether a vertical whitespace is required
@ -238,12 +234,7 @@ static NSAttributedString *readReceiptVerticalWhitespace = nil;
if (selectedComponentIndex != NSNotFound && selectedComponentIndex != index && componentString.length)
{
// Apply alpha to blur this component
NSMutableAttributedString *customComponentString = [[NSMutableAttributedString alloc] initWithAttributedString:componentString];
UIColor *color = [componentString attribute:NSForegroundColorAttributeName atIndex:0 effectiveRange:nil];
color = [color colorWithAlphaComponent:0.2];
[customComponentString addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(0, customComponentString.length)];
componentString = customComponentString;
componentString = [Tools setTextColorAlpha:.2 inAttributedString:componentString];
}
// Check whether the timestamp is displayed

View file

@ -69,6 +69,26 @@
return self;
}
- (void)finalizeInitialization
{
[super finalizeInitialization];
// Sadly, we need to make sure we have fetched all room members from the HS
// to be able to display read receipts
if (![self.mxSession.store hasLoadedAllRoomMembersForRoom:self.roomId])
{
[self.room members:^(MXRoomMembers *roomMembers) {
NSLog(@"[MXKRoomDataSource] finalizeRoomDataSource: All room members have been retrieved");
// Refresh the full table
[self.delegate dataSource:self didCellChange:nil];
} failure:^(NSError *error) {
NSLog(@"[MXKRoomDataSource] finalizeRoomDataSource: Cannot retrieve all room members");
}];
}
}
- (void)updateEventFormatter
{
// Set a new event formatter

View file

@ -707,7 +707,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
currentAlert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
// Check whether the user is allowed to modify the main address.
if (roomAddressNewAliasIndex != -1)
if ([self canSetCanonicalAlias])
{
// Compare the selected alias with the current main address
NSString *currentCanonicalAlias = mxRoomState.canonicalAlias;
@ -791,23 +791,21 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
}]];
// Check whether the user is allowed to remove a room alias.
if (roomAddressNewAliasIndex != -1)
{
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"delete"]
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
if (weakSelf)
{
typeof(self) self = weakSelf;
self->currentAlert = nil;
[self removeRoomAlias:roomAliasLabel.text];
}
}]];
}
// The user can only delete alias they has created, even if the Admin has set it as canonical.
// So, let the server answer if it's possible to delete an alias.
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"delete"]
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
if (weakSelf)
{
typeof(self) self = weakSelf;
self->currentAlert = nil;
[self removeRoomAlias:roomAliasLabel.text];
}
}]];
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
style:UIAlertActionStyleCancel
@ -1964,18 +1962,9 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
roomAddressNewAliasIndex = -1;
count = (localAddressesCount ? roomAddresses.count : roomAddresses.count + 1);
if (self.mainSession)
{
// Check user's power level to know whether the user is allowed to add room alias
MXRoomPowerLevels *powerLevels = [mxRoomState powerLevels];
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomAliases])
{
roomAddressNewAliasIndex = count++;
}
}
// Everyone can add an alias: display the "add address" entry
roomAddressNewAliasIndex = count++;
}
else if (section == ROOM_SETTINGS_RELATED_GROUPS_SECTION_INDEX)
{
@ -2786,8 +2775,9 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
{
if (localAddressesCount != 0 || indexPath.row != 0)
{
// The user is allowed to remove a room alias only if he is allowed to create alias too.
return (roomAddressNewAliasIndex != -1);
// The user can only delete alias they has created, even if the Admin has set it as canonical.
// So, let the server answer if it's possible to delete an alias.
return YES;
}
}
else if (indexPath.section == ROOM_SETTINGS_RELATED_GROUPS_SECTION_INDEX && indexPath.row != relatedGroupsNewGroupIndex)
@ -3218,6 +3208,24 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
}
}
- (BOOL)canSetCanonicalAlias
{
BOOL canSetCanonicalAlias = NO;
if (self.mainSession)
{
// Check user's power level to know whether the user is allowed to set the main address
MXRoomPowerLevels *powerLevels = [mxRoomState powerLevels];
NSInteger oneSelfPowerLevel = [powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId];
if (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomAliases])
{
canSetCanonicalAlias = YES;
}
}
return canSetCanonicalAlias;
}
- (void)shouldRemoveCanonicalAlias:(void (^)())didRemoveCanonicalAlias
{
// Prompt the user before removing the current main address

View file

@ -54,7 +54,7 @@
self.displayNameTextField.text = self.mxRoom.summary.displayname;
if (!self.displayNameTextField.text.length)
{
self.displayNameTextField.text = NSLocalizedStringFromTable(@"room_displayname_no_title", @"Vector", nil);
self.displayNameTextField.text = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
self.displayNameTextField.textColor = kRiotSecondaryTextColor;
}
else

View file

@ -170,7 +170,7 @@
self.displayNameTextField.text = self.mxRoom.summary.displayname;
if (!self.displayNameTextField.text.length)
{
self.displayNameTextField.text = NSLocalizedStringFromTable(@"room_displayname_no_title", @"Vector", nil);
self.displayNameTextField.text = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
self.displayNameTextField.textColor = kRiotSecondaryTextColor;
}
else

View file

@ -157,7 +157,7 @@
self.displayNameTextField.text = self.mxRoom.summary.displayname;
if (!self.displayNameTextField.text.length)
{
self.displayNameTextField.text = NSLocalizedStringFromTable(@"room_displayname_no_title", @"Vector", nil);
self.displayNameTextField.text = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
self.displayNameTextField.textColor = kRiotSecondaryTextColor;
}
else

View file

@ -103,7 +103,7 @@
self.displayNameTextField.text = self.mxRoom.summary.displayname;
if (!self.displayNameTextField.text.length)
{
self.displayNameTextField.text = NSLocalizedStringFromTable(@"room_displayname_no_title", @"Vector", nil);
self.displayNameTextField.text = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
self.displayNameTextField.textColor = kRiotSecondaryTextColor;
}
else

View file

@ -273,6 +273,7 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
[self.tableView registerClass:MXKTableViewCellWithLabelAndMXKImageView.class forCellReuseIdentifier:[MXKTableViewCellWithLabelAndMXKImageView defaultReuseIdentifier]];
[self.tableView registerClass:TableViewCellWithPhoneNumberTextField.class forCellReuseIdentifier:[TableViewCellWithPhoneNumberTextField defaultReuseIdentifier]];
[self.tableView registerClass:GroupTableViewCellWithSwitch.class forCellReuseIdentifier:[GroupTableViewCellWithSwitch defaultReuseIdentifier]];
[self.tableView registerNib:MXKTableViewCellWithTextView.nib forCellReuseIdentifier:[MXKTableViewCellWithTextView defaultReuseIdentifier]];
// Enable self sizing cells
self.tableView.rowHeight = UITableViewAutomaticDimension;
@ -1352,6 +1353,20 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
return cell;
}
- (MXKTableViewCellWithTextView*)textViewCellForTableView:(UITableView*)tableView atIndexPath:(NSIndexPath *)indexPath
{
MXKTableViewCellWithTextView *textViewCell = [tableView dequeueReusableCellWithIdentifier:[MXKTableViewCellWithTextView defaultReuseIdentifier] forIndexPath:indexPath];
textViewCell.mxkTextView.textColor = kRiotPrimaryTextColor;
textViewCell.mxkTextView.font = [UIFont systemFontOfSize:17];
textViewCell.mxkTextView.backgroundColor = [UIColor clearColor];
textViewCell.mxkTextViewLeadingConstraint.constant = tableView.separatorInset.left;
textViewCell.mxkTextViewTrailingConstraint.constant = tableView.separatorInset.right;
textViewCell.mxkTextView.accessibilityIdentifier = nil;
return textViewCell;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSInteger section = indexPath.section;
@ -1865,14 +1880,12 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
}
else if (section == SETTINGS_SECTION_ADVANCED_INDEX)
{
MXKTableViewCell *configCell = [self getDefaultTableViewCell:tableView];
MXKTableViewCellWithTextView *configCell = [self textViewCellForTableView:tableView atIndexPath:indexPath];
NSString *configFormat = [NSString stringWithFormat:@"%@\n%@\n%@", [NSBundle mxk_localizedStringForKey:@"settings_config_user_id"], [NSBundle mxk_localizedStringForKey:@"settings_config_home_server"], [NSBundle mxk_localizedStringForKey:@"settings_config_identity_server"]];
configCell.textLabel.text =[NSString stringWithFormat:configFormat, account.mxCredentials.userId, account.mxCredentials.homeServer, account.identityServerURL];
configCell.textLabel.numberOfLines = 0;
configCell.textLabel.accessibilityIdentifier=@"SettingsVCConfigStaticText";
configCell.selectionStyle = UITableViewCellSelectionStyleNone;
configCell.mxkTextView.text =[NSString stringWithFormat:configFormat, account.mxCredentials.userId, account.mxCredentials.homeServer, account.identityServerURL];
configCell.mxkTextView.accessibilityIdentifier=@"SettingsVCConfigStaticText";
cell = configCell;
}
@ -2046,7 +2059,9 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
MXKTableViewCellWithLabelAndSwitch* labelAndSwitchCell = [self getLabelAndSwitchCell:tableView forIndexPath:indexPath];
labelAndSwitchCell.mxkLabel.text = NSLocalizedStringFromTable(@"settings_labs_room_members_lazy_loading", @"Vector", nil);
labelAndSwitchCell.mxkSwitch.on = [MXKAppSettings standardAppSettings].syncWithLazyLoadOfRoomMembers;
MXKAccount* account = [MXKAccountManager sharedManager].activeAccounts.firstObject;
labelAndSwitchCell.mxkSwitch.on = account.mxSession.syncWithLazyLoadOfRoomMembers;
[labelAndSwitchCell.mxkSwitch addTarget:self action:@selector(toggleSyncWithLazyLoadOfRoomMembers:) forControlEvents:UIControlEventTouchUpInside];
@ -2132,12 +2147,9 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
{
if (row == CRYPTOGRAPHY_INFO_INDEX)
{
MXKTableViewCell *cryptoCell = [self getDefaultTableViewCell:tableView];
cryptoCell.textLabel.attributedText = [self cryptographyInformation];
cryptoCell.textLabel.numberOfLines = 0;
MXKTableViewCellWithTextView *cryptoCell = [self textViewCellForTableView:tableView atIndexPath:indexPath];
cryptoCell.selectionStyle = UITableViewCellSelectionStyleNone;
cryptoCell.mxkTextView.attributedText = [self cryptographyInformation];
cell = cryptoCell;
}
@ -2914,54 +2926,43 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
[self startActivityIndicator];
// Check the user homeserver supports lazy-loading
MXSession* session = [AppDelegate theDelegate].mxSessions.firstObject;
MXKAccount* account = [MXKAccountManager sharedManager].activeAccounts.firstObject;
MXWeakify(self);
void(^onFailure)(NSError *) = ^(NSError *error) {
[account supportLazyLoadOfRoomMembers:^(BOOL supportLazyLoadOfRoomMembers) {
MXStrongifyAndReturnIfNil(self);
[switchButton setOn:NO animated:YES];
switchButton.enabled = YES;
[self stopActivityIndicator];
// No support of lazy-loading, do not engage it and warn the user
[self->currentAlert dismissViewControllerAnimated:NO completion:nil];
self->currentAlert = [UIAlertController alertControllerWithTitle:nil
message:NSLocalizedStringFromTable(@"settings_labs_room_members_lazy_loading_error_message", @"Vector", nil)
preferredStyle:UIAlertControllerStyleAlert];
MXWeakify(self);
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
MXStrongifyAndReturnIfNil(self);
self->currentAlert = nil;
}]];
[self->currentAlert mxk_setAccessibilityIdentifier: @"SettingsVCNoHSSupportOfLazyLoading"];
[self presentViewController:self->currentAlert animated:YES completion:nil];
};
// Check first the home server supports m.lazy_load_members
[session supportedMatrixVersions:^(MXMatrixVersions *matrixVersions) {
if (matrixVersions.supportLazyLoadMembers)
if (supportLazyLoadOfRoomMembers)
{
// Check then, we can create a LL filter on it
[session setFilter:[MXFilterJSONModel syncFilterForLazyLoading] success:^(NSString *filterId) {
// Lazy-loading is fully supported, enable it
[MXKAppSettings standardAppSettings].syncWithLazyLoadOfRoomMembers = YES;
[self launchClearCache];
} failure:onFailure];
// Lazy-loading is fully supported, enable it
[MXKAppSettings standardAppSettings].syncWithLazyLoadOfRoomMembers = YES;
[self launchClearCache];
}
else
{
onFailure(nil);
[switchButton setOn:NO animated:YES];
switchButton.enabled = YES;
[self stopActivityIndicator];
// No support of lazy-loading, do not engage it and warn the user
[self->currentAlert dismissViewControllerAnimated:NO completion:nil];
self->currentAlert = [UIAlertController alertControllerWithTitle:nil
message:NSLocalizedStringFromTable(@"settings_labs_room_members_lazy_loading_error_message", @"Vector", nil)
preferredStyle:UIAlertControllerStyleAlert];
MXWeakify(self);
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
MXStrongifyAndReturnIfNil(self);
self->currentAlert = nil;
}]];
[self->currentAlert mxk_setAccessibilityIdentifier: @"SettingsVCNoHSSupportOfLazyLoading"];
[self presentViewController:self->currentAlert animated:YES completion:nil];
}
} failure:onFailure];
}];
}
}
}

View file

@ -17,11 +17,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.7.3</string>
<string>0.7.4</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.7.3</string>
<string>0.7.4</string>
<key>ITSAppUsesNonExemptEncryption</key>
<true/>
<key>ITSEncryptionExportComplianceCode</key>

View file

@ -276,230 +276,6 @@ NSString *const kEventFormatterOnReRequestKeysLinkActionSeparator = @"/";
return senderAvatarUrl;
}
#pragma mark - MXRoomSummaryUpdating
- (BOOL)session:(MXSession *)session updateRoomSummary:(MXRoomSummary *)summary withStateEvents:(NSArray<MXEvent *> *)stateEvents roomState:(MXRoomState *)roomState
{
BOOL ret = [super session:session updateRoomSummary:summary withStateEvents:stateEvents roomState:roomState];
// Check whether the room display name and/or the room avatar url should be updated at Riot level.
BOOL refreshRiotRoomDisplayName = NO;
BOOL refreshRiotRoomAvatarURL = NO;
for (MXEvent *event in stateEvents)
{
switch (event.eventType)
{
case MXEventTypeRoomName:
case MXEventTypeRoomAliases:
case MXEventTypeRoomCanonicalAlias:
{
refreshRiotRoomDisplayName = YES;
break;
}
case MXEventTypeRoomMember:
{
refreshRiotRoomDisplayName = YES;
// Do not break here to check avatar url too.
}
case MXEventTypeRoomAvatar:
{
refreshRiotRoomAvatarURL = YES;
break;
}
default:
break;
}
if (refreshRiotRoomDisplayName && refreshRiotRoomAvatarURL)
{
break;
}
}
if (refreshRiotRoomDisplayName)
{
NSString *riotRoomDisplayName = [self riotRoomDisplayNameFromRoomState:roomState];
if (riotRoomDisplayName.length && ![summary.displayname isEqualToString:riotRoomDisplayName])
{
summary.displayname = riotRoomDisplayName;
ret = YES;
}
}
if (refreshRiotRoomAvatarURL)
{
NSString *riotRoomAvatarURL = [self riotRoomAvatarURLFromRoomState:roomState];
if (riotRoomAvatarURL.length && ![summary.avatar isEqualToString:riotRoomAvatarURL])
{
summary.avatar = riotRoomAvatarURL;
ret = YES;
}
}
return ret;
}
#pragma mark - Riot room display name
- (NSString *)riotRoomDisplayNameFromRoomState:(MXRoomState *)roomState
{
// this algo is the one defined in
// https://github.com/matrix-org/matrix-js-sdk/blob/develop/lib/models/room.js#L617
// calculateRoomName(room, userId)
// This display name is @"" for an "empty room" without display name (We name "empty room" a room in which the current user is the only active member).
if (roomState.name.length > 0)
{
return roomState.name;
}
NSString *alias = roomState.canonicalAlias;
if (!alias)
{
// For rooms where canonical alias is not defined, we use the 1st alias as a workaround
NSArray *aliases = roomState.aliases;
if (aliases.count)
{
alias = [aliases[0] copy];
}
}
// check if there is non empty alias.
if ([alias length] > 0)
{
return alias;
}
NSString* myUserId = mxSession.myUser.userId;
NSArray* members = roomState.members.members;
NSMutableArray* othersActiveMembers = [[NSMutableArray alloc] init];
NSMutableArray* activeMembers = [[NSMutableArray alloc] init];
for(MXRoomMember* member in members)
{
if (member.membership != MXMembershipLeave)
{
if (![member.userId isEqualToString:myUserId])
{
[othersActiveMembers addObject:member];
}
[activeMembers addObject:member];
}
}
// sort the members by their creation (oldest first)
othersActiveMembers = [[othersActiveMembers sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
uint64_t originServerTs1 = 0;
uint64_t originServerTs2 = 0;
MXRoomMember* member1 = (MXRoomMember*)obj1;
MXRoomMember* member2 = (MXRoomMember*)obj2;
if (member1.originalEvent)
{
originServerTs1 = member1.originalEvent.originServerTs;
}
if (member2.originalEvent)
{
originServerTs2 = member2.originalEvent.originServerTs;
}
if (originServerTs1 == originServerTs2)
{
return NSOrderedSame;
}
else
{
return originServerTs1 > originServerTs2 ? NSOrderedDescending : NSOrderedAscending;
}
}] mutableCopy];
NSString* displayName = @"";
if (othersActiveMembers.count == 0)
{
if (activeMembers.count == 1)
{
MXRoomMember* member = [activeMembers objectAtIndex:0];
if (member.membership == MXMembershipInvite)
{
if (member.originalEvent.sender)
{
// extract who invited us to the room
displayName = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_displayname_invite_from", @"Vector", nil), [roomState.members memberName:member.originalEvent.sender]];
}
else
{
displayName = NSLocalizedStringFromTable(@"room_displayname_room_invite", @"Vector", nil);
}
}
}
}
else if (othersActiveMembers.count == 1)
{
MXRoomMember* member = [othersActiveMembers objectAtIndex:0];
displayName = [roomState.members memberName:member.userId];
}
else if (othersActiveMembers.count == 2)
{
MXRoomMember* member1 = [othersActiveMembers objectAtIndex:0];
MXRoomMember* member2 = [othersActiveMembers objectAtIndex:1];
displayName = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_displayname_two_members", @"Vector", nil), [roomState.members memberName:member1.userId], [roomState.members memberName:member2.userId]];
}
else
{
MXRoomMember* member = [othersActiveMembers objectAtIndex:0];
displayName = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_displayname_more_than_two_members", @"Vector", nil), [roomState.members memberName:member.userId], othersActiveMembers.count - 1];
}
return displayName;
}
#pragma mark - Riot room avatar url
- (NSString *)riotRoomAvatarURLFromRoomState:(MXRoomState *)roomState
{
NSString* roomAvatarUrl = roomState.avatar;
if (!roomAvatarUrl)
{
// If the room has only two members, use the avatar of the second member.
if (roomState.membersCount.members == 2)
{
NSString* myUserId = mxSession.myUser.userId;
NSArray* members = roomState.members.members;
for (MXRoomMember *roomMember in members)
{
if (![roomMember.userId isEqualToString:myUserId])
{
// Use the avatar of this member only if he joined or he is invited.
if (MXMembershipJoin == roomMember.membership || MXMembershipInvite == roomMember.membership)
{
roomAvatarUrl = roomMember.avatarUrl;
}
break;
}
}
}
}
return roomAvatarUrl;
}
#pragma mark - Timestamp formatting
- (NSString*)dateStringFromDate:(NSDate *)date withTime:(BOOL)time

View file

@ -54,4 +54,15 @@
*/
+ (NSURL*)fixURLWithSeveralHashKeys:(NSURL*)url;
#pragma mark - String utilities
/**
Change the alpha value of all text colors of an attibuted string.
@param alpha the alpha value to apply.
@param attributedString the attributed string to update.
@return a new attributed string.
*/
+ (NSAttributedString *)setTextColorAlpha:(CGFloat)alpha inAttributedString:(NSAttributedString*)attributedString;
@end

View file

@ -117,4 +117,29 @@
return fixedURL;
}
#pragma mark - String utilities
+ (NSAttributedString *)setTextColorAlpha:(CGFloat)alpha inAttributedString:(NSAttributedString*)attributedString
{
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithAttributedString:attributedString];
// Check all attributes one by one
[string enumerateAttributesInRange:NSMakeRange(0, attributedString.length) options:0 usingBlock:^(NSDictionary *attrs, NSRange range, BOOL *stop)
{
// Replace only colored texts
if (attrs[NSForegroundColorAttributeName])
{
UIColor *color = attrs[NSForegroundColorAttributeName];
color = [color colorWithAlphaComponent:0.2];
NSMutableDictionary *newAttrs = [NSMutableDictionary dictionaryWithDictionary:attrs];
newAttrs[NSForegroundColorAttributeName] = color;
[string setAttributes:newAttrs range:range];
}
}];
return string;
}
@end

View file

@ -129,7 +129,7 @@
NSString *roomName = recentCellData.roomSummary.displayname;
if (!roomName.length)
{
roomName = NSLocalizedStringFromTable(@"room_displayname_no_title", @"Vector", nil);
roomName = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
}
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:NSLocalizedStringFromTable(@"send_to", @"Vector", nil), roomName] message:nil preferredStyle:UIAlertControllerStyleAlert];

View file

@ -66,7 +66,7 @@
self.roomTitleLabel.text = roomCellData.roomSummary.displayname;
if (!self.roomTitleLabel.text.length)
{
self.roomTitleLabel.text = NSLocalizedStringFromTable(@"room_displayname_no_title", @"Vector", nil);
self.roomTitleLabel.text = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
}
self.directRoomBorderView.hidden = !roomCellData.roomSummary.isDirect;

View file

@ -17,9 +17,9 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>0.7.3</string>
<string>0.7.4</string>
<key>CFBundleVersion</key>
<string>0.7.3</string>
<string>0.7.4</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>

View file

@ -17,9 +17,9 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>0.7.3</string>
<string>0.7.4</string>
<key>CFBundleVersion</key>
<string>0.7.3</string>
<string>0.7.4</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>