From e4622fa40e7e78f6ab98352e5b64ce4a192c45af Mon Sep 17 00:00:00 2001 From: Dawid Raczka Date: Thu, 23 Aug 2018 18:10:42 +0100 Subject: [PATCH 01/36] Made data in cryptography info copyable. --- Riot/Modules/Settings/SettingsViewController.m | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index d7f340f00..94b0b0f16 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -2132,12 +2132,15 @@ 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 = [tableView dequeueReusableCellWithIdentifier:[MXKTableViewCellWithTextView defaultReuseIdentifier]]; + if (!cryptoCell) + { + cryptoCell = [[MXKTableViewCellWithTextView alloc] init]; + } - cryptoCell.selectionStyle = UITableViewCellSelectionStyleNone; + cryptoCell.mxkTextView.attributedText = [self cryptographyInformation]; + cryptoCell.mxkTextViewLeadingConstraint.constant = cell.separatorInset.left; + cryptoCell.mxkTextViewTrailingConstraint.constant = cell.separatorInset.right; cell = cryptoCell; } From 05fd0d53a21ab07703458aeb8d4b7649ae66b0e0 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Thu, 23 Aug 2018 18:34:16 +0000 Subject: [PATCH 02/36] Translated using Weblate (Hungarian) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/hu/ --- Riot/Assets/hu.lproj/Vector.strings | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Riot/Assets/hu.lproj/Vector.strings b/Riot/Assets/hu.lproj/Vector.strings index c96a8a896..ef465ea0b 100644 --- a/Riot/Assets/hu.lproj/Vector.strings +++ b/Riot/Assets/hu.lproj/Vector.strings @@ -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."; From 1b9354e8f8707006750fd1e32bc29aee49b90f1e Mon Sep 17 00:00:00 2001 From: cocker-cc Date: Thu, 23 Aug 2018 17:41:00 +0000 Subject: [PATCH 03/36] Translated using Weblate (German) Currently translated at 99.0% (515 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/de/ --- Riot/Assets/de.lproj/Vector.strings | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index 1c0472bd4..8ef8ae5a7 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -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"; From 4a18c06739c26d5df6711850e6f57b8f6f8c5c92 Mon Sep 17 00:00:00 2001 From: Krombel Date: Thu, 23 Aug 2018 21:11:47 +0000 Subject: [PATCH 04/36] Translated using Weblate (German) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/de/ --- Riot/Assets/de.lproj/Vector.strings | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index 8ef8ae5a7..5b18de386 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -553,3 +553,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."; From c89677af2ed47a3826e44f3f966dfd8845d1fce0 Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Fri, 24 Aug 2018 06:00:46 +0000 Subject: [PATCH 05/36] Translated using Weblate (Bulgarian) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/bg/ --- Riot/Assets/bg.lproj/Vector.strings | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Riot/Assets/bg.lproj/Vector.strings b/Riot/Assets/bg.lproj/Vector.strings index 5f7346a6a..1d219e817 100644 --- a/Riot/Assets/bg.lproj/Vector.strings +++ b/Riot/Assets/bg.lproj/Vector.strings @@ -552,3 +552,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" = "Неуспешна връзка със сървъра."; From 3eea0fd8ddfd76fed93ab6831d75b59291d51972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20C?= Date: Fri, 24 Aug 2018 07:24:35 +0000 Subject: [PATCH 06/36] Translated using Weblate (French) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/fr/ --- Riot/Assets/fr.lproj/Vector.strings | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Riot/Assets/fr.lproj/Vector.strings b/Riot/Assets/fr.lproj/Vector.strings index 920c456cb..00957f221 100644 --- a/Riot/Assets/fr.lproj/Vector.strings +++ b/Riot/Assets/fr.lproj/Vector.strings @@ -553,3 +553,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."; From 488433b90f3851cbff2652aaef62bb2865bffb18 Mon Sep 17 00:00:00 2001 From: Dawid Raczka Date: Fri, 24 Aug 2018 16:09:00 +0100 Subject: [PATCH 07/36] Fix of cell style in different themes. --- Riot/Modules/Settings/SettingsViewController.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index 94b0b0f16..178f5959f 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -2138,6 +2138,8 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)(); cryptoCell = [[MXKTableViewCellWithTextView alloc] init]; } + cryptoCell.mxkTextView.textColor = kRiotPrimaryTextColor; + cryptoCell.mxkTextView.backgroundColor = kRiotPrimaryBgColor; cryptoCell.mxkTextView.attributedText = [self cryptographyInformation]; cryptoCell.mxkTextViewLeadingConstraint.constant = cell.separatorInset.left; cryptoCell.mxkTextViewTrailingConstraint.constant = cell.separatorInset.right; From 0776baf496a0beb5324834982a74aad577f514a3 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Thu, 30 Aug 2018 09:15:48 +0000 Subject: [PATCH 08/36] Translated using Weblate (Basque) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/eu/ --- Riot/Assets/eu.lproj/Vector.strings | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Riot/Assets/eu.lproj/Vector.strings b/Riot/Assets/eu.lproj/Vector.strings index b5d62a62c..629742038 100644 --- a/Riot/Assets/eu.lproj/Vector.strings +++ b/Riot/Assets/eu.lproj/Vector.strings @@ -555,3 +555,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."; From 2cd0c0c83ccae6c2e8cd0db2c7e763c9101fb68f Mon Sep 17 00:00:00 2001 From: Milena Brum Date: Fri, 31 Aug 2018 16:30:40 +0000 Subject: [PATCH 09/36] Translated using Weblate (Spanish) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/es/ --- Riot/Assets/es.lproj/Vector.strings | 457 ++++++++++++++++++++++++---- 1 file changed, 398 insertions(+), 59 deletions(-) diff --git a/Riot/Assets/es.lproj/Vector.strings b/Riot/Assets/es.lproj/Vector.strings index 3ede3897f..1fe21ffd5 100644 --- a/Riot/Assets/es.lproj/Vector.strings +++ b/Riot/Assets/es.lproj/Vector.strings @@ -6,7 +6,7 @@ "warning" = "Atención"; // Actions "view" = "Ver"; -"next" = "SIguiente"; +"next" = "Siguiente"; "back" = "Anterior"; "continue" = "Continuar"; "create" = "Crear"; @@ -22,12 +22,12 @@ "join" = "Entrar"; "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 (%@)"; +"active_call" = "Llamada Activa"; +"active_call_details" = "Llamada Activa (%@)"; "later" = "Después"; "rename" = "Renombrar"; "collapse" = "colapsar"; @@ -36,34 +36,34 @@ "auth_register" = "Registrar"; "auth_submit" = "Enviar"; "auth_skip" = "Omitir"; -"auth_send_reset_email" = "Enviar Email de restauración"; +"auth_send_reset_email" = "Enviar Correo Electrónico de Restauración"; "auth_return_to_login" = "Regresar a pantalla de ingreso"; -"auth_user_id_placeholder" = "Email o nombre de usuario"; +"auth_user_id_placeholder" = "Correo electrónico o nombre de usuario"; "auth_password_placeholder" = "Contraseña"; "auth_new_password_placeholder" = "Nueva contraseña"; "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_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 nueva contraseña"; +"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 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_invalid_email" = "Esto no parece un correo electrónico válido"; +"auth_invalid_phone" = "Esto no parece un número telefónico válido"; "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_email_message" = "Añade un 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 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."; @@ -74,11 +74,11 @@ "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_reset_password_missing_password" = "Debes ingresar una nueva contraseña."; "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."; +"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 ser descubierto por otros usuarios. La dirección de correo electrónico también 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 ser descubierto por otros usuarios. La dirección de correo electrónico también te permitirá restablecer tu 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"; "auth_untrusted_id_server" = "El servidor de identidad no es de confianza"; -"auth_forgot_password" = "¿Se olvidó su contraseña?"; +"auth_forgot_password" = "¿Olvidaste tu 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_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_message" = "Hemos enviado un SMS con un código de activación. Por favor ingresa 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_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 debajo."; +"auth_reset_password_error_unauthorized" = "Falló la verificación de la dirección de correo electrónico: asegúrate que haz hecho clic en el enlace del mensaje"; +"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" = "Se ha restablecido tu contraseña.\n\nSe ha cerrado sesión en todos tus dispositivos y ya no recibirás notificaciones. Para volver a habilitarlas, inicia 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 configuraciones."; // 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 deseas hacer pública esta conversación? Cualquiera podrá leer tus mensajes y unirse a la misma."; "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_start_chat_with" = "Iniciar conversación"; "room_recents_join_room" = "Unirse a 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 del 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_denied" = "No permitiste que Riot accediera a tus contactos locales"; "contacts_user_directory_section" = "DIRECTORIO DE USUARIOS"; -"contacts_user_directory_offline_section" = "DIRECTORIO DE USUARIOS (desconectado)"; +"contacts_user_directory_offline_section" = "DIRECTORIO DE USUARIOS (desconectados)"; "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"; +"room_participants_leave_prompt_msg" = "¿Seguro que quieres abandonar 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"; @@ -191,15 +191,15 @@ "room_participants_action_leave" = "Abandonar 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_default_power_level" = "Restablecer 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_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,7 +210,7 @@ "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 permisos 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…"; @@ -218,3 +218,342 @@ "room_offline_notification" = "La conexión con el servidor se perdió."; "room_unsent_messages_notification" = "No se enviaron los mensajes. ¿%@ 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" = "Razón para reportar este contenido"; +"room_event_action_kick_prompt_reason" = "Razón para expulsar a este usuario"; +"room_event_action_ban_prompt_reason" = "Razón para vetar a este usuario"; +"room_event_action_report_prompt_ignore_user" = "¿Quieres esconder 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 los 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 los 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 a tu administrador de 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 verificar si lo 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" = "%@ te ha invitado a unirte a esta sala"; +"room_preview_subtitle" = "Esta es una vista previa de esta sala. Las interacciones dentro de la sala se han desactivado."; +"room_preview_unlinked_email_warning" = "Esta invitación fue enviada a %@, que no está asociado con esta cuenta. Puedes iniciar sesión con otra cuenta, o añadir este correo electrónico a la cuenta."; +"room_preview_try_join_an_unknown_room" = "Estás intentando acceder %@. ¿Te gustaría unirte para participar en la discusión?"; +"room_preview_try_join_an_unknown_room_default" = "una sala"; +// Settings +"settings_title" = "Configuraciones"; +"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" = "Conectado como %@"; +"settings_user_settings" = "CONFIGURACIONES DE USUARIO"; +"settings_notifications_settings" = "CONFIGURACIONES 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ñade una dirección de correo electrónico"; +"settings_phone_number" = "Teléfono"; +"settings_add_phone_number" = "Añade un 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" = "Las configuraciones globales de notificación 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 las configuraciones 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" = "Elige un tema"; +"settings_ui_theme_picker_message" = "\"Auto\" utiliza las configuraciones 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 memoria cache"; +"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" = "La actualización de tu contraseña falló"; +"settings_password_updated" = "Tu contraseña ha sido actualizada"; +"settings_crypto_device_name" = "Nombre del dispositivo: "; +"settings_crypto_device_id" = "\nID del dispositivo: "; +"settings_crypto_device_key" = "\nClave del 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 la Sala"; +"room_details_people" = "Miembros"; +"room_details_files" = "Archivos"; +"room_details_settings" = "Configuraciones"; +"room_details_photo" = "Imagen de Sala"; +"room_details_room_name" = "Nombre de Sala"; +"room_details_topic" = "Tema"; +"room_details_favourite_tag" = "Destacar"; +"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 hayan sido invitadas"; +"room_details_access_section_anyone_apart_from_guest" = "Cualquiera que conozca el enlace a esta sala, excepto huéspedes"; +"room_details_access_section_anyone" = "Cualquiera 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" = "Publicar 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" = "Solamente miembros (desde el momento en que se selecciona esta opción)"; +"room_details_history_section_members_only_since_invited" = "Solamente miembros (desde que fueron invitados)"; +"room_details_history_section_members_only_since_joined" = "Solamente miembros (desde que se unieron a la sala)"; +"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 nueva dirección"; +"room_details_new_address_placeholder" = "Añadir nueva dirección (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 ser poco fiable.\n\nAún no deberías confiar en él para proteger tus datos.\n\nLos dispositivos todavía no podrán descifrar el historial de la sala desde antes de unirse.\n\nUna vez que el cifrado está habilitado en una sala no puede ser deshabilitado (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 a la sala"; +"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 la ID de Sala"; +"room_details_copy_room_address" = "Copiar la Dirección de la Sala"; +"room_details_copy_room_url" = "Copiar la URL de la Sala"; +// Group Details +"group_details_title" = "Detalles de la 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 ha invitado 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 para listar sus salas públicas"; +"directory_server_placeholder" = "matrix.org"; +// Events formatter +"event_formatter_member_updates" = "%tu cambios de membresía"; +"event_formatter_widget_added" = "componente %@ agregado por %@"; +"event_formatter_widget_removed" = "componente %@ eliminado por %@"; +"event_formatter_jitsi_widget_added" = "conferencia Voz sobre IP agregada por %@"; +"event_formatter_jitsi_widget_removed" = "conferencia Voz sobre IP 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 usar la Cámara, por favor cambia las configuraciones de privacidad"; +"large_badge_value_k_format" = "%.1fK"; +// room display name +"room_displayname_invite_from" = "Invitar desde %@"; +"room_displayname_room_invite" = "Invitación a Sala"; +"room_displayname_two_members" = "%@ y %@"; +"room_displayname_more_than_two_members" = "%@ y otros %u"; +"room_displayname_no_title" = "Sala vacía"; +// 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 pudo unir a la llamada de conferencia."; +// No VoIP support +"no_voip_title" = "Llamada entrante"; +"no_voip" = "%@ te está llamando pero las llamadas aún no están implementadas en %@.\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 implementó el cifrado de extremo a extremo pero debes volver a iniciar sesión para habilitarlo.\n\nPuedes hacerlo ahora o más tarde desde las configuraciones 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 con este informe de error. Si prefieres enviar solo el texto anterior, por favor desmarque:"; +"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 de 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" = "Falló la creación del componente"; +"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 se puede crear el componente."; +"widget_integration_failed_to_send_request" = "Falló el envío de la solicitud."; +"widget_integration_room_not_recognised" = "No se reconoce esta sala."; +"widget_integration_positive_power_level" = "El nivel de poder 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 las configuraciones de cifrado para esta sala en la aplicación principal"; +"e2e_room_key_request_message_new_device" = "Agregaste un nuevo dispositivo '%@', que está solicitando las 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\nDesactivando tu cuenta "; +"deactivate_account_informations_part4_emphasize" = "no nos hace olvidar los mensajes que has enviado por defecto. "; +"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 significa que los mensajes que has enviado no se compartirán con ningún usuario nuevo o no registrado, pero los usuarios registrados que ya tienen acceso a estos mensajes seguirán teniendo acceso a sus copias."; +"deactivate_account_forget_messages_information_part1" = "Por favor, olvida todos los mensajes que he enviado al desactivar mi cuenta ("; +"deactivate_account_forget_messages_information_part3" = ": esto hará que los futuros usuarios vean una vista incompleta de las conversaciones)"; From ca00fa38320b0b6be3e7a8f2d81237bd43b20acd Mon Sep 17 00:00:00 2001 From: Krombel Date: Sat, 1 Sep 2018 10:53:03 +0000 Subject: [PATCH 10/36] Added translation using Weblate (Spanish) --- Riot/Assets/es.lproj/Localizable.strings | 1 + 1 file changed, 1 insertion(+) create mode 100644 Riot/Assets/es.lproj/Localizable.strings diff --git a/Riot/Assets/es.lproj/Localizable.strings b/Riot/Assets/es.lproj/Localizable.strings new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Riot/Assets/es.lproj/Localizable.strings @@ -0,0 +1 @@ + From cf80b163e2c80b2591ea53d28df402f233ea70f4 Mon Sep 17 00:00:00 2001 From: Krombel Date: Sat, 1 Sep 2018 10:53:06 +0000 Subject: [PATCH 11/36] Added translation using Weblate (Spanish) --- Riot/Assets/es.lproj/InfoPlist.strings | 1 + 1 file changed, 1 insertion(+) create mode 100644 Riot/Assets/es.lproj/InfoPlist.strings diff --git a/Riot/Assets/es.lproj/InfoPlist.strings b/Riot/Assets/es.lproj/InfoPlist.strings new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Riot/Assets/es.lproj/InfoPlist.strings @@ -0,0 +1 @@ + From 8f297a5ce1fc158a5a1c34d01a7c684e82b0c442 Mon Sep 17 00:00:00 2001 From: Milena Brum Date: Mon, 3 Sep 2018 14:41:55 +0000 Subject: [PATCH 12/36] Translated using Weblate (Spanish) Currently translated at 100.0% (4 of 4 strings) Translation: Riot iOS/Riot iOS (Dialogs) Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios-dialogs/es/ --- Riot/Assets/es.lproj/InfoPlist.strings | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Riot/Assets/es.lproj/InfoPlist.strings b/Riot/Assets/es.lproj/InfoPlist.strings index 8b1378917..90ac6db9f 100644 --- a/Riot/Assets/es.lproj/InfoPlist.strings +++ b/Riot/Assets/es.lproj/InfoPlist.strings @@ -1 +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íticas de privacidad en los ajustes de la aplicación."; From 4dcdb87f3e4176da37c775480786915c6b9dad73 Mon Sep 17 00:00:00 2001 From: Milena Brum Date: Mon, 3 Sep 2018 16:54:25 +0000 Subject: [PATCH 13/36] Translated using Weblate (Spanish) Currently translated at 100.0% (26 of 26 strings) Translation: Riot iOS/Riot iOS (Push) Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios-push/es/ --- Riot/Assets/es.lproj/Localizable.strings | 53 +++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/Riot/Assets/es.lproj/Localizable.strings b/Riot/Assets/es.lproj/Localizable.strings index 8b1378917..a931b34de 100644 --- a/Riot/Assets/es.lproj/Localizable.strings +++ b/Riot/Assets/es.lproj/Localizable.strings @@ -1 +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 %@: '%@'"; From ff12b09fa09668ec797202d710d0bc0501253b2c Mon Sep 17 00:00:00 2001 From: SBiOSoftWhare Date: Thu, 6 Sep 2018 11:32:55 +0200 Subject: [PATCH 14/36] Make advanced info copyable in settings --- .../Modules/Settings/SettingsViewController.m | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index 178f5959f..9999778b8 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -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; } @@ -2132,17 +2145,9 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)(); { if (row == CRYPTOGRAPHY_INFO_INDEX) { - MXKTableViewCellWithTextView *cryptoCell = [tableView dequeueReusableCellWithIdentifier:[MXKTableViewCellWithTextView defaultReuseIdentifier]]; - if (!cryptoCell) - { - cryptoCell = [[MXKTableViewCellWithTextView alloc] init]; - } + MXKTableViewCellWithTextView *cryptoCell = [self textViewCellForTableView:tableView atIndexPath:indexPath]; - cryptoCell.mxkTextView.textColor = kRiotPrimaryTextColor; - cryptoCell.mxkTextView.backgroundColor = kRiotPrimaryBgColor; cryptoCell.mxkTextView.attributedText = [self cryptographyInformation]; - cryptoCell.mxkTextViewLeadingConstraint.constant = cell.separatorInset.left; - cryptoCell.mxkTextViewTrailingConstraint.constant = cell.separatorInset.right; cell = cryptoCell; } From 21a44b2e2cb98b4a837e8c2dfab2ac2409164243 Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Sun, 9 Sep 2018 06:57:05 +0000 Subject: [PATCH 15/36] Translated using Weblate (Bulgarian) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/bg/ --- Riot/Assets/bg.lproj/Vector.strings | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Riot/Assets/bg.lproj/Vector.strings b/Riot/Assets/bg.lproj/Vector.strings index 1d219e817..39adf07e4 100644 --- a/Riot/Assets/bg.lproj/Vector.strings +++ b/Riot/Assets/bg.lproj/Vector.strings @@ -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" = "Започни нов чат"; From e079b0535c00ce161b55f805871292c94d0e4c12 Mon Sep 17 00:00:00 2001 From: RainSlide Date: Fri, 7 Sep 2018 19:20:03 +0000 Subject: [PATCH 16/36] Translated using Weblate (Chinese (Simplified)) Currently translated at 93.4% (486 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/zh_Hans/ --- Riot/Assets/zh_Hans.lproj/Vector.strings | 26 +++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/Riot/Assets/zh_Hans.lproj/Vector.strings b/Riot/Assets/zh_Hans.lproj/Vector.strings index 5f94b21fa..b8766e2c1 100644 --- a/Riot/Assets/zh_Hans.lproj/Vector.strings +++ b/Riot/Assets/zh_Hans.lproj/Vector.strings @@ -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" = "你想隐藏所有来自此用户的消息吗?"; @@ -502,3 +502,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" = "请求已发送"; From 3ccaacb16494c2727d078520637fa81f5bef43e1 Mon Sep 17 00:00:00 2001 From: Mathijs van Gorcum Date: Mon, 10 Sep 2018 12:00:34 +0000 Subject: [PATCH 17/36] Translated using Weblate (Dutch) Currently translated at 97.8% (509 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/nl/ --- Riot/Assets/nl.lproj/Vector.strings | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Riot/Assets/nl.lproj/Vector.strings b/Riot/Assets/nl.lproj/Vector.strings index 82d82bd62..87dbe21e4 100644 --- a/Riot/Assets/nl.lproj/Vector.strings +++ b/Riot/Assets/nl.lproj/Vector.strings @@ -570,3 +570,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…"; From 7561cbb429469854c38b6a08e8fabcfff29ba8f6 Mon Sep 17 00:00:00 2001 From: Yan Minari Date: Tue, 4 Sep 2018 05:44:20 +0000 Subject: [PATCH 18/36] Translated using Weblate (Portuguese (Brazil)) Currently translated at 28.6% (149 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/pt_BR/ --- Riot/Assets/pt_BR.lproj/Vector.strings | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Riot/Assets/pt_BR.lproj/Vector.strings b/Riot/Assets/pt_BR.lproj/Vector.strings index d45422cc9..32eea684f 100644 --- a/Riot/Assets/pt_BR.lproj/Vector.strings +++ b/Riot/Assets/pt_BR.lproj/Vector.strings @@ -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"; From 2595bae46c93eb7f0e7eef1efd9c0eaff8501387 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 24 Aug 2018 17:54:27 +0000 Subject: [PATCH 19/36] Translated using Weblate (Russian) Currently translated at 99.2% (516 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/ru/ --- Riot/Assets/ru.lproj/Vector.strings | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Riot/Assets/ru.lproj/Vector.strings b/Riot/Assets/ru.lproj/Vector.strings index a4e6114fc..29b7ee139 100644 --- a/Riot/Assets/ru.lproj/Vector.strings +++ b/Riot/Assets/ru.lproj/Vector.strings @@ -551,3 +551,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" = " для продолжения его использования."; From c0a7ca5f9bfe1fe5e54ffb688bc109d28dad5bec Mon Sep 17 00:00:00 2001 From: Milena Brum Date: Fri, 7 Sep 2018 17:19:53 +0000 Subject: [PATCH 20/36] Translated using Weblate (Spanish) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/es/ --- Riot/Assets/es.lproj/Vector.strings | 168 ++++++++++++++-------------- 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/Riot/Assets/es.lproj/Vector.strings b/Riot/Assets/es.lproj/Vector.strings index 1fe21ffd5..13105f6b4 100644 --- a/Riot/Assets/es.lproj/Vector.strings +++ b/Riot/Assets/es.lproj/Vector.strings @@ -1,25 +1,25 @@ // 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"; +"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"; @@ -28,16 +28,16 @@ "video" = "Vídeo"; "active_call" = "Llamada Activa"; "active_call_details" = "Llamada Activa (%@)"; -"later" = "Después"; +"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 Correo Electrónico de Restauración"; -"auth_return_to_login" = "Regresar a pantalla de ingreso"; +"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"; @@ -49,31 +49,31 @@ "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 nueva 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 barras bajas"; -"auth_invalid_password" = "Contraseña muy corta (min 6)"; -"auth_invalid_email" = "Esto no parece un correo electrónico válido"; -"auth_invalid_phone" = "Esto no parece un número telefónico válido"; -"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 restablecer tu contraseña."; -"auth_add_phone_message" = "Añade un número telefónico a tu cuenta para ser descubierto por otros usuarios."; +"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, 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_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 nueva contraseña."; "auth_reset_password_next_step_button" = "He verificado mi dirección de correo electrónico"; "room_creation_appearance" = "Apariencia"; @@ -109,26 +109,26 @@ "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" = "¿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 ser descubierto por otros usuarios. La dirección de correo electrónico también 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 ser descubierto por otros usuarios. La dirección de correo electrónico también te permitirá restablecer tu 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"; +"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" = "¿Olvidaste tu contraseña?"; -"auth_email_not_found" = "Falló el envío del mensaje: No se encontró esta dirección de correo electrónico"; +"auth_email_not_found" = "Falló el envío del 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 ingresa 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_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 debajo."; -"auth_reset_password_error_unauthorized" = "Falló la verificación de la dirección de correo electrónico: asegúrate que haz hecho clic en el enlace del mensaje"; +"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" = "Se ha restablecido tu contraseña.\n\nSe ha cerrado sesión en todos tus dispositivos y ya no recibirás notificaciones. Para volver a habilitarlas, inicia 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 configuraciones."; +"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"; @@ -137,7 +137,7 @@ "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" = "¿Seguro que deseas hacer pública esta conversación? Cualquiera podrá leer tus mensajes y unirse a la misma."; +"room_creation_make_public_prompt_msg" = "¿Seguro que quieres hacer pública esta conversación? Cualquiera 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. Espera por favor."; @@ -152,7 +152,7 @@ "room_recents_low_priority_section" = "PRIORIDAD BAJA"; "room_recents_invites_section" = "INVITACIONES"; "room_recents_start_chat_with" = "Iniciar conversación"; -"room_recents_join_room" = "Unirse a sala"; +"room_recents_join_room" = "Unirse a la sala"; "room_recents_join_room_title" = "Unirse a una sala"; "room_recents_join_room_prompt" = "Escribe una ID o alias de sala"; "search_people" = "Personas"; @@ -160,17 +160,17 @@ // Directory "directory_cell_title" = "Explorar directorio"; "directory_cell_description" = "%tu salas"; -"directory_search_results_title" = "Explorar 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" = "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 permitiste que Riot accediera a tus 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 (desconectados)"; -"room_participants_leave_prompt_title" = "Abandonar sala"; -"room_participants_leave_prompt_msg" = "¿Seguro que quieres abandonar la sala?"; +"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 electrónico"; @@ -188,15 +188,15 @@ "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_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" = "Restablecer a usuario normal"; -"room_participants_action_set_moderator" = "Convertir en moderador"; -"room_participants_action_set_admin" = "Convertir en administrador"; +"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"; @@ -210,17 +210,17 @@ "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 tienes 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_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"; @@ -236,17 +236,17 @@ "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" = "Razón para reportar este contenido"; +"room_event_action_report_prompt_reason" = "Motivo para reportar este contenido"; "room_event_action_kick_prompt_reason" = "Razón para expulsar a este usuario"; "room_event_action_ban_prompt_reason" = "Razón para vetar a este usuario"; -"room_event_action_report_prompt_ignore_user" = "¿Quieres esconder todos los mensajes de 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 los 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 los clientes que aún no implementen el 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 los 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"; @@ -260,7 +260,7 @@ // 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 verificar si lo prefieres."; -"unknown_devices_send_anyway" = "Enviar de todos modos"; +"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…"; @@ -273,22 +273,22 @@ "room_title_members" = "%@ miembros"; "room_title_one_member" = "1 miembro"; // Room Preview -"room_preview_invitation_format" = "%@ te ha invitado a unirte a esta sala"; -"room_preview_subtitle" = "Esta es una vista previa de esta sala. Las interacciones dentro de la sala se han desactivado."; -"room_preview_unlinked_email_warning" = "Esta invitación fue enviada a %@, que no está asociado con esta cuenta. Puedes iniciar sesión con otra cuenta, o añadir este correo electrónico a la cuenta."; -"room_preview_try_join_an_unknown_room" = "Estás intentando acceder %@. ¿Te gustaría unirte para participar en la discusión?"; +"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" = "Configuraciones"; +"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" = "Conectado como %@"; -"settings_user_settings" = "CONFIGURACIONES DE USUARIO"; -"settings_notifications_settings" = "CONFIGURACIONES DE NOTIFICACIÓN"; +"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"; @@ -312,17 +312,17 @@ "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ñade una 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ñade un número telefónico"; +"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" = "Las configuraciones globales de notificación están disponibles en tu cliente web %@"; +"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 las configuraciones de tu dispositivo"; +"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"; @@ -332,7 +332,7 @@ "settings_ui_theme_dark" = "Oscuro"; "settings_ui_theme_black" = "Negro"; "settings_ui_theme_picker_title" = "Elige un tema"; -"settings_ui_theme_picker_message" = "\"Auto\" utiliza las configuraciones de \"Invertir Colores\" de tu dispositivo"; +"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"; @@ -352,10 +352,10 @@ "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 memoria cache"; +"settings_clear_cache" = "Borrar caché"; "settings_change_password" = "Cambiar contraseña"; "settings_old_password" = "contraseña anterior"; -"settings_new_password" = "contraseña nueva"; +"settings_new_password" = "nueva contraseña"; "settings_confirm_password" = "confirmar contraseña"; "settings_fail_to_update_password" = "La actualización de tu contraseña falló"; "settings_password_updated" = "Tu contraseña ha sido actualizada"; @@ -366,14 +366,14 @@ "settings_crypto_blacklist_unverified_devices" = "Cifrar solo a dispositivos verificados"; "settings_deactivate_my_account" = "Desactivar mi cuenta"; // Room Details -"room_details_title" = "Detalles de la Sala"; +"room_details_title" = "Detalles de Sala"; "room_details_people" = "Miembros"; "room_details_files" = "Archivos"; -"room_details_settings" = "Configuraciones"; +"room_details_settings" = "Ajustes"; "room_details_photo" = "Imagen de Sala"; -"room_details_room_name" = "Nombre de Sala"; +"room_details_room_name" = "Nombre de la Sala"; "room_details_topic" = "Tema"; -"room_details_favourite_tag" = "Destacar"; +"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"; @@ -385,9 +385,9 @@ "room_details_access_section_directory_toggle" = "Publicar 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" = "Solamente miembros (desde el momento en que se selecciona esta opción)"; -"room_details_history_section_members_only_since_invited" = "Solamente miembros (desde que fueron invitados)"; -"room_details_history_section_members_only_since_joined" = "Solamente miembros (desde que se unieron a la sala)"; +"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"; @@ -411,12 +411,12 @@ "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 ser poco fiable.\n\nAún no deberías confiar en él para proteger tus datos.\n\nLos dispositivos todavía no podrán descifrar el historial de la sala desde antes de unirse.\n\nUna vez que el cifrado está habilitado en una sala no puede ser deshabilitado (por ahora).\n\nLos mensajes cifrados no serán visibles en clientes que aún no implementen el cifrado."; +"room_details_advanced_e2e_encryption_prompt_message" = "El cifrado de extremo a extremo es experimental y puede ser poco fiable.\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 el cifrado está habilitado en una sala no puede ser deshabilitado (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 a 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"; @@ -427,10 +427,10 @@ "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 la ID de Sala"; -"room_details_copy_room_address" = "Copiar la Dirección de la Sala"; +"room_details_copy_room_address" = "Copiar la Dirección de Sala"; "room_details_copy_room_url" = "Copiar la URL de la Sala"; // Group Details -"group_details_title" = "Detalles de la Comunidad"; +"group_details_title" = "Detalles de Comunidad"; "group_details_home" = "Inicio"; "group_details_people" = "Personas"; "group_details_rooms" = "Salas"; @@ -439,7 +439,7 @@ "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 ha invitado a unirte a esta comunidad"; +"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"; @@ -487,10 +487,10 @@ "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 usar la Cámara, por favor cambia las configuraciones de privacidad"; +"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"; // room display name -"room_displayname_invite_from" = "Invitar desde %@"; +"room_displayname_invite_from" = "Invitación de %@"; "room_displayname_room_invite" = "Invitación a Sala"; "room_displayname_two_members" = "%@ y %@"; "room_displayname_more_than_two_members" = "%@ y otros %u"; @@ -501,20 +501,20 @@ "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 pudo unir a la llamada de conferencia."; +"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 las llamadas aún no están implementadas en %@.\nPuedes ignorar esta notificación y contestar la llamada desde otro dispositivo o puedes rechazarla."; +"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 implementó el cifrado de extremo a extremo pero debes volver a iniciar sesión para habilitarlo.\n\nPuedes hacerlo ahora o más tarde desde las configuraciones de la aplicación."; +"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 con este informe de error. Si prefieres enviar solo el texto anterior, por favor desmarque:"; +"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 @@ -542,7 +542,7 @@ "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 las configuraciones de cifrado para esta sala en la aplicación principal"; +"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" = "Agregaste un nuevo dispositivo '%@', que está solicitando las 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..."; @@ -554,6 +554,6 @@ "deactivate_account_title" = "Desactivar Cuenta"; "deactivate_account_informations_part3" = "\n\nDesactivando tu cuenta "; "deactivate_account_informations_part4_emphasize" = "no nos hace olvidar los mensajes que has enviado por defecto. "; -"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 significa que los mensajes que has enviado no se compartirán con ningún usuario nuevo o no registrado, pero los usuarios registrados que ya tienen acceso a estos mensajes seguirán teniendo acceso a sus copias."; +"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 significa que los mensajes que has enviado no se compartirán con ningún usuario nuevo o no registrado, pero los usuarios registrados que ya tengan acceso a estos mensajes seguirán teniendo acceso a sus copias."; "deactivate_account_forget_messages_information_part1" = "Por favor, olvida todos los mensajes que he enviado al desactivar mi cuenta ("; "deactivate_account_forget_messages_information_part3" = ": esto hará que los futuros usuarios vean una vista incompleta de las conversaciones)"; From dbe13867c90a9fa1bddb9746acdac1bc222fe3b4 Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 10 Sep 2018 18:24:59 +0200 Subject: [PATCH 21/36] i18n: Add Spanish --- CHANGES.rst | 9 +++++++++ Riot.xcodeproj/project.pbxproj | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index d2e46a117..f031244f2 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,12 @@ +Changes in 0.7.4 (2018-09-) +=============================================== + +Improvements: +* Upgrade MatrixKit version (v0.8.4). +* i18n: Add Spanish (sp). +* Settings: Make advanced info copyable (#2023). +* Settings: Made cryptography info copyable, thanks to @daverPL (PR #1999). + Changes in 0.7.3 (2018-08-27) =============================================== diff --git a/Riot.xcodeproj/project.pbxproj b/Riot.xcodeproj/project.pbxproj index 39c97c456..6be32a8f2 100644 --- a/Riot.xcodeproj/project.pbxproj +++ b/Riot.xcodeproj/project.pbxproj @@ -392,6 +392,9 @@ 32BDC9A4211C34C90064AF51 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = sq.lproj/InfoPlist.strings; sourceTree = ""; }; 32BDC9A5211C34C90064AF51 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = sq.lproj/Localizable.strings; sourceTree = ""; }; 32BDC9A6211C34C90064AF51 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = sq.lproj/Vector.strings; sourceTree = ""; }; + 32D7159E2146CC6F00DF59C9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Vector.strings; sourceTree = ""; }; + 32D7159F2146CC7F00DF59C9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; + 32D715A02146CC8800DF59C9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; 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 = ""; }; 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 = ""; }; 926FA53D1F4C132000F826C2 /* MXSession+Riot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MXSession+Riot.h"; sourceTree = ""; }; @@ -2659,6 +2662,7 @@ is, zh_Hant, sq, + es, ); mainGroup = F094A9991B78D8F000B1FBBF; productRefGroup = F094A9A31B78D8F000B1FBBF /* Products */; @@ -3182,6 +3186,7 @@ B1664D8B20F4EBF800808783 /* zh_Hans */, 32BDC9A3211C2C870064AF51 /* zh_Hant */, 32BDC9A6211C34C90064AF51 /* sq */, + 32D7159E2146CC6F00DF59C9 /* es */, ); name = Vector.strings; sourceTree = ""; @@ -3201,6 +3206,7 @@ B1664D8920F4EBF700808783 /* ru */, 32BDC9A1211C2C870064AF51 /* zh_Hant */, 32BDC9A4211C34C90064AF51 /* sq */, + 32D715A02146CC8800DF59C9 /* es */, ); name = InfoPlist.strings; sourceTree = ""; @@ -3220,6 +3226,7 @@ B1664D8E20F4EBF900808783 /* ca */, 32BDC9A2211C2C870064AF51 /* zh_Hant */, 32BDC9A5211C34C90064AF51 /* sq */, + 32D7159F2146CC7F00DF59C9 /* es */, ); name = Localizable.strings; sourceTree = ""; From 29a518f13e3553ce11455206b1b9fcd4eeaf0887 Mon Sep 17 00:00:00 2001 From: manuroe Date: Thu, 13 Sep 2018 17:12:53 +0200 Subject: [PATCH 22/36] Lazy-Loading: Fix missing read receipts --- CHANGES.rst | 3 +++ .../Modules/Room/DataSources/RoomDataSource.m | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index f031244f2..e9644c9ca 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -7,6 +7,9 @@ Improvements: * Settings: Make advanced info copyable (#2023). * Settings: Made cryptography info copyable, thanks to @daverPL (PR #1999). +Bug fix: +* Fix missing read receipts when lazy-loading room members. + Changes in 0.7.3 (2018-08-27) =============================================== diff --git a/Riot/Modules/Room/DataSources/RoomDataSource.m b/Riot/Modules/Room/DataSources/RoomDataSource.m index 7abcc6cb9..ca861c7dc 100644 --- a/Riot/Modules/Room/DataSources/RoomDataSource.m +++ b/Riot/Modules/Room/DataSources/RoomDataSource.m @@ -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 From c2491d7a6ec6bd15539bec63215cc9b10043e062 Mon Sep 17 00:00:00 2001 From: manuroe Date: Thu, 13 Sep 2018 17:22:09 +0200 Subject: [PATCH 23/36] Bug Report: Report the member lazy-loading setting like on Android --- Riot/Modules/BugReport/BugReportViewController.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Riot/Modules/BugReport/BugReportViewController.m b/Riot/Modules/BugReport/BugReportViewController.m index b9f98ce42..689d2cb73 100644 --- a/Riot/Modules/BugReport/BugReportViewController.m +++ b/Riot/Modules/BugReport/BugReportViewController.m @@ -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"]; From 64e36b3cf6baa13ce7c856379cf3d5f311d43aee Mon Sep 17 00:00:00 2001 From: manuroe Date: Fri, 14 Sep 2018 15:12:56 +0200 Subject: [PATCH 24/36] RoomPreviewData: Make a full usage of MXPeekingRoom.summary --- Riot/Model/Room/RoomPreviewData.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Riot/Model/Room/RoomPreviewData.m b/Riot/Model/Room/RoomPreviewData.m index 05da6d20f..a55c0eae2 100644 --- a/Riot/Model/Room/RoomPreviewData.m +++ b/Riot/Model/Room/RoomPreviewData.m @@ -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); }]; From fb22f3e372e2ddf1e54d4c3d00f0e7357640931c Mon Sep 17 00:00:00 2001 From: manuroe Date: Thu, 20 Sep 2018 10:48:01 +0200 Subject: [PATCH 25/36] Room names: Matrix has now room summaries that define how to compute names Let MatrixSDK and MatrixKit do it for us --- Riot/Assets/en.lproj/Vector.strings | 4 - Riot/Utils/EventFormatter.m | 224 ---------------------------- 2 files changed, 228 deletions(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 8d7ec630b..054ad32b7 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -550,10 +550,6 @@ "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 diff --git a/Riot/Utils/EventFormatter.m b/Riot/Utils/EventFormatter.m index a6d0320aa..33cf6d1b3 100644 --- a/Riot/Utils/EventFormatter.m +++ b/Riot/Utils/EventFormatter.m @@ -276,230 +276,6 @@ NSString *const kEventFormatterOnReRequestKeysLinkActionSeparator = @"/"; return senderAvatarUrl; } -#pragma mark - MXRoomSummaryUpdating - -- (BOOL)session:(MXSession *)session updateRoomSummary:(MXRoomSummary *)summary withStateEvents:(NSArray *)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 From 6f6dd084a34efe8e70ed5bd9bed531e650fc89c9 Mon Sep 17 00:00:00 2001 From: manuroe Date: Thu, 20 Sep 2018 11:05:46 +0200 Subject: [PATCH 26/36] Make code use the "Empty room" i18n string from MatrixKit --- Riot/Assets/en.lproj/Vector.strings | 3 --- Riot/Modules/Common/Recents/CellData/RecentCellData.m | 2 +- Riot/Modules/GlobalSearch/Files/CellData/FilesSearchCellData.m | 2 +- .../Messages/Views/MessagesSearchResultAttachmentBubbleCell.m | 2 +- Riot/Modules/Room/Views/Title/Expanded/ExpandedRoomTitleView.m | 2 +- Riot/Modules/Room/Views/Title/Preview/PreviewRoomTitleView.m | 2 +- Riot/Modules/Room/Views/Title/RoomTitleView.m | 2 +- Riot/Modules/Room/Views/Title/Simple/SimpleRoomTitleView.m | 2 +- .../Modules/Share/Listing/RoomsListViewController.m | 2 +- .../Modules/Share/Listing/Views/RecentRoomTableViewCell.m | 2 +- 10 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 054ad32b7..043a1609b 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -549,9 +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_no_title" = "Empty room"; - // Call "call_incoming_voice_prompt" = "Incoming voice call from %@"; "call_incoming_video_prompt" = "Incoming video call from %@"; diff --git a/Riot/Modules/Common/Recents/CellData/RecentCellData.m b/Riot/Modules/Common/Recents/CellData/RecentCellData.m index 6b28e9528..a9def48fd 100644 --- a/Riot/Modules/Common/Recents/CellData/RecentCellData.m +++ b/Riot/Modules/Common/Recents/CellData/RecentCellData.m @@ -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"]; } } diff --git a/Riot/Modules/GlobalSearch/Files/CellData/FilesSearchCellData.m b/Riot/Modules/GlobalSearch/Files/CellData/FilesSearchCellData.m index 2fd863cdb..3b81c28d5 100644 --- a/Riot/Modules/GlobalSearch/Files/CellData/FilesSearchCellData.m +++ b/Riot/Modules/GlobalSearch/Files/CellData/FilesSearchCellData.m @@ -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 diff --git a/Riot/Modules/GlobalSearch/Messages/Views/MessagesSearchResultAttachmentBubbleCell.m b/Riot/Modules/GlobalSearch/Messages/Views/MessagesSearchResultAttachmentBubbleCell.m index 4968f2496..1cf9379ea 100644 --- a/Riot/Modules/GlobalSearch/Messages/Views/MessagesSearchResultAttachmentBubbleCell.m +++ b/Riot/Modules/GlobalSearch/Messages/Views/MessagesSearchResultAttachmentBubbleCell.m @@ -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 diff --git a/Riot/Modules/Room/Views/Title/Expanded/ExpandedRoomTitleView.m b/Riot/Modules/Room/Views/Title/Expanded/ExpandedRoomTitleView.m index 1d37acc41..f8ef4bc72 100644 --- a/Riot/Modules/Room/Views/Title/Expanded/ExpandedRoomTitleView.m +++ b/Riot/Modules/Room/Views/Title/Expanded/ExpandedRoomTitleView.m @@ -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 diff --git a/Riot/Modules/Room/Views/Title/Preview/PreviewRoomTitleView.m b/Riot/Modules/Room/Views/Title/Preview/PreviewRoomTitleView.m index a010207a2..63c436cf0 100644 --- a/Riot/Modules/Room/Views/Title/Preview/PreviewRoomTitleView.m +++ b/Riot/Modules/Room/Views/Title/Preview/PreviewRoomTitleView.m @@ -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 diff --git a/Riot/Modules/Room/Views/Title/RoomTitleView.m b/Riot/Modules/Room/Views/Title/RoomTitleView.m index 2b7a9f56d..ba8bfc421 100644 --- a/Riot/Modules/Room/Views/Title/RoomTitleView.m +++ b/Riot/Modules/Room/Views/Title/RoomTitleView.m @@ -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 diff --git a/Riot/Modules/Room/Views/Title/Simple/SimpleRoomTitleView.m b/Riot/Modules/Room/Views/Title/Simple/SimpleRoomTitleView.m index c143fb194..bffc71c54 100644 --- a/Riot/Modules/Room/Views/Title/Simple/SimpleRoomTitleView.m +++ b/Riot/Modules/Room/Views/Title/Simple/SimpleRoomTitleView.m @@ -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 diff --git a/RiotShareExtension/Modules/Share/Listing/RoomsListViewController.m b/RiotShareExtension/Modules/Share/Listing/RoomsListViewController.m index 3f888bff0..9c3f126d7 100644 --- a/RiotShareExtension/Modules/Share/Listing/RoomsListViewController.m +++ b/RiotShareExtension/Modules/Share/Listing/RoomsListViewController.m @@ -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]; diff --git a/RiotShareExtension/Modules/Share/Listing/Views/RecentRoomTableViewCell.m b/RiotShareExtension/Modules/Share/Listing/Views/RecentRoomTableViewCell.m index 121f32b0b..4796cc841 100644 --- a/RiotShareExtension/Modules/Share/Listing/Views/RecentRoomTableViewCell.m +++ b/RiotShareExtension/Modules/Share/Listing/Views/RecentRoomTableViewCell.m @@ -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; From 47703f95edbdbfe52fe5f8da581d1be3ad1b10dd Mon Sep 17 00:00:00 2001 From: manuroe Date: Fri, 21 Sep 2018 16:23:32 +0200 Subject: [PATCH 27/36] Room settings: Anyone can now set a room alias Fix #2033 --- CHANGES.rst | 1 + .../Settings/RoomSettingsViewController.m | 72 ++++++++++--------- 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index e9644c9ca..7bfb8a399 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,7 @@ Improvements: * 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. diff --git a/Riot/Modules/Room/Settings/RoomSettingsViewController.m b/Riot/Modules/Room/Settings/RoomSettingsViewController.m index 7d1605f6a..d76cd73ef 100644 --- a/Riot/Modules/Room/Settings/RoomSettingsViewController.m +++ b/Riot/Modules/Room/Settings/RoomSettingsViewController.m @@ -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 From ecafb8e306924db744883a461eaa5d6f0f917c8e Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 24 Sep 2018 14:23:48 +0200 Subject: [PATCH 28/36] BF: Weird text color when selecting a message #2046 --- CHANGES.rst | 3 ++- .../Room/CellData/RoomBubbleCellData.m | 15 +++-------- Riot/Utils/Tools.h | 11 ++++++++ Riot/Utils/Tools.m | 25 +++++++++++++++++++ 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 7bfb8a399..822fa5f7f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -9,7 +9,8 @@ Improvements: * Room settings: Anyone can now set a room alias (#2033). Bug fix: -* Fix missing read receipts when lazy-loading room members. +* 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) =============================================== diff --git a/Riot/Modules/Room/CellData/RoomBubbleCellData.m b/Riot/Modules/Room/CellData/RoomBubbleCellData.m index 23e434e31..55aa3051e 100644 --- a/Riot/Modules/Room/CellData/RoomBubbleCellData.m +++ b/Riot/Modules/Room/CellData/RoomBubbleCellData.m @@ -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 diff --git a/Riot/Utils/Tools.h b/Riot/Utils/Tools.h index 434f782e1..3239f3e04 100644 --- a/Riot/Utils/Tools.h +++ b/Riot/Utils/Tools.h @@ -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 diff --git a/Riot/Utils/Tools.m b/Riot/Utils/Tools.m index 6855a4ade..842ae1f3f 100644 --- a/Riot/Utils/Tools.m +++ b/Riot/Utils/Tools.m @@ -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 From e8f5a39b6f400cba883dbbbc8cf2269e6982f3b0 Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 24 Sep 2018 14:24:47 +0200 Subject: [PATCH 29/36] Typo on CHANGES --- CHANGES.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index 822fa5f7f..166bbb0df 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -9,7 +9,7 @@ Improvements: * Room settings: Anyone can now set a room alias (#2033). Bug fix: -* Fix missing read receipts when lazy-loading room members.] +* 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) From bbfde7b980d7937e9ce5a3f69a2ae4a8b53d5b79 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Sun, 16 Sep 2018 05:48:39 +0000 Subject: [PATCH 30/36] Translated using Weblate (Basque) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/eu/ --- Riot/Assets/eu.lproj/Vector.strings | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Riot/Assets/eu.lproj/Vector.strings b/Riot/Assets/eu.lproj/Vector.strings index 629742038..b2ca0e5c4 100644 --- a/Riot/Assets/eu.lproj/Vector.strings +++ b/Riot/Assets/eu.lproj/Vector.strings @@ -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"; @@ -227,7 +227,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"; From 99d96faa7025923f08cd9ce8a68e174f4cc73ec5 Mon Sep 17 00:00:00 2001 From: Milena Brum Date: Thu, 13 Sep 2018 15:33:09 +0000 Subject: [PATCH 31/36] Translated using Weblate (Spanish) Currently translated at 100.0% (520 of 520 strings) Translation: Riot iOS/Riot iOS Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios/es/ --- Riot/Assets/es.lproj/Vector.strings | 84 ++++++++++++++--------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/Riot/Assets/es.lproj/Vector.strings b/Riot/Assets/es.lproj/Vector.strings index 13105f6b4..2f62ed5a7 100644 --- a/Riot/Assets/es.lproj/Vector.strings +++ b/Riot/Assets/es.lproj/Vector.strings @@ -40,7 +40,7 @@ "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 correo electrónico (opcional)"; "auth_email_placeholder" = "Dirección de correo electrónico"; @@ -74,7 +74,7 @@ "auth_email_in_use" = "Esta dirección de correo electrónico ya está en uso"; "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 nueva contraseña."; +"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"; @@ -116,10 +116,10 @@ "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" = "¿Olvidaste tu contraseña?"; -"auth_email_not_found" = "Falló el envío del correo electrónico: No se encontró esta dirección de correo electrónico"; +"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 ingresa este código debajo."; +"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:"; @@ -137,7 +137,7 @@ "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" = "¿Seguro que quieres hacer pública esta conversación? Cualquiera podrá leer tus mensajes y unirse a la conversación."; +"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. Espera por favor."; @@ -237,8 +237,8 @@ "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" = "Razón para expulsar a este usuario"; -"room_event_action_ban_prompt_reason" = "Razón para vetar a este usuario"; +"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"; @@ -246,7 +246,7 @@ "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 los clientes que aún no implementen el 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"; @@ -255,11 +255,11 @@ "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 a tu administrador de servicio"; +"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 verificar si lo prefieres."; +"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"; @@ -331,7 +331,7 @@ "settings_ui_theme_light" = "Claro"; "settings_ui_theme_dark" = "Oscuro"; "settings_ui_theme_black" = "Negro"; -"settings_ui_theme_picker_title" = "Elige un tema"; +"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"; @@ -355,13 +355,13 @@ "settings_clear_cache" = "Borrar caché"; "settings_change_password" = "Cambiar contraseña"; "settings_old_password" = "contraseña anterior"; -"settings_new_password" = "nueva contraseña"; +"settings_new_password" = "contraseña nueva"; "settings_confirm_password" = "confirmar contraseña"; -"settings_fail_to_update_password" = "La actualización de tu contraseña falló"; +"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 del dispositivo: "; -"settings_crypto_device_id" = "\nID del dispositivo: "; -"settings_crypto_device_key" = "\nClave del dispositivo: "; +"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"; @@ -371,18 +371,18 @@ "room_details_files" = "Archivos"; "room_details_settings" = "Ajustes"; "room_details_photo" = "Imagen de Sala"; -"room_details_room_name" = "Nombre de la 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 hayan sido invitadas"; -"room_details_access_section_anyone_apart_from_guest" = "Cualquiera que conozca el enlace a esta sala, excepto huéspedes"; -"room_details_access_section_anyone" = "Cualquiera que conozca el enlace a esta sala, incluyendo huéspedes"; +"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" = "Publicar esta sala en el directorio de salas"; +"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)"; @@ -392,8 +392,8 @@ "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 nueva dirección"; -"room_details_new_address_placeholder" = "Añadir nueva dirección (ej. #foo%@)"; +"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"; @@ -411,7 +411,7 @@ "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 ser poco fiable.\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 el cifrado está habilitado en una sala no puede ser deshabilitado (por ahora).\n\nLos mensajes cifrados no serán visibles en clientes que aún no implementen el cifrado."; +"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"; @@ -426,8 +426,8 @@ "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 la ID de Sala"; -"room_details_copy_room_address" = "Copiar la Dirección de Sala"; +"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"; @@ -466,14 +466,14 @@ "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 para listar sus salas públicas"; +"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 %@ agregado por %@"; +"event_formatter_widget_added" = "componente %@ añadido por %@"; "event_formatter_widget_removed" = "componente %@ eliminado por %@"; -"event_formatter_jitsi_widget_added" = "conferencia Voz sobre IP agregada por %@"; -"event_formatter_jitsi_widget_removed" = "conferencia Voz sobre IP eliminada 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 @@ -521,39 +521,39 @@ "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 de las cuales participa, y eliminará los datos de tu cuenta de tu servidor de identidad. "; +"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" = "Falló la creación del componente"; +"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 se puede crear el componente."; -"widget_integration_failed_to_send_request" = "Falló el envío de la solicitud."; +"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 poder debe ser un número entero positivo."; +"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" = "Agregaste un nuevo dispositivo '%@', que está solicitando las claves de cifrado."; +"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_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\nDesactivando tu cuenta "; -"deactivate_account_informations_part4_emphasize" = "no nos hace olvidar los mensajes que has enviado por defecto. "; -"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 significa que los mensajes que has enviado no se compartirán con ningún usuario nuevo o no registrado, pero los usuarios registrados que ya tengan acceso a estos mensajes seguirán teniendo acceso a sus copias."; -"deactivate_account_forget_messages_information_part1" = "Por favor, olvida todos los mensajes que he enviado al desactivar mi cuenta ("; -"deactivate_account_forget_messages_information_part3" = ": esto hará que los futuros usuarios vean una vista incompleta de las conversaciones)"; +"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)"; From 4435c3a6431597fe52931e59b000189b26150f66 Mon Sep 17 00:00:00 2001 From: Milena Brum Date: Mon, 10 Sep 2018 16:49:35 +0000 Subject: [PATCH 32/36] Translated using Weblate (Spanish) Currently translated at 100.0% (4 of 4 strings) Translation: Riot iOS/Riot iOS (Dialogs) Translate-URL: https://translate.riot.im/projects/riot-ios/riot-ios-dialogs/es/ --- Riot/Assets/es.lproj/InfoPlist.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Riot/Assets/es.lproj/InfoPlist.strings b/Riot/Assets/es.lproj/InfoPlist.strings index 90ac6db9f..29135e935 100644 --- a/Riot/Assets/es.lproj/InfoPlist.strings +++ b/Riot/Assets/es.lproj/InfoPlist.strings @@ -2,4 +2,4 @@ "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íticas de privacidad en los ajustes de la aplicación."; +"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."; From b1a1895d1787e470f699b727d28c76530083eeb8 Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 24 Sep 2018 15:27:40 +0200 Subject: [PATCH 33/36] Matrix room summaries: Move i18n strings from Riot to MatrixKit As promised at https://github.com/vector-im/riot-ios/pull/2043 --- Riot/Assets/bg.lproj/Vector.strings | 6 ------ Riot/Assets/ca.lproj/Vector.strings | 6 ------ Riot/Assets/de.lproj/Vector.strings | 6 ------ Riot/Assets/es.lproj/Vector.strings | 6 ------ Riot/Assets/eu.lproj/Vector.strings | 6 ------ Riot/Assets/fr.lproj/Vector.strings | 6 ------ Riot/Assets/is.lproj/Vector.strings | 6 ------ Riot/Assets/nl.lproj/Vector.strings | 6 ------ Riot/Assets/ru.lproj/Vector.strings | 6 ------ Riot/Assets/sq.lproj/Vector.strings | 5 ----- Riot/Assets/vi.lproj/Vector.strings | 6 ------ Riot/Assets/zh_Hans.lproj/Vector.strings | 6 ------ Riot/Assets/zh_Hant.lproj/Vector.strings | 6 ------ 13 files changed, 77 deletions(-) diff --git a/Riot/Assets/bg.lproj/Vector.strings b/Riot/Assets/bg.lproj/Vector.strings index 39adf07e4..4bc0d74a1 100644 --- a/Riot/Assets/bg.lproj/Vector.strings +++ b/Riot/Assets/bg.lproj/Vector.strings @@ -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" = "Входящо видео повикване от %@"; diff --git a/Riot/Assets/ca.lproj/Vector.strings b/Riot/Assets/ca.lproj/Vector.strings index 2b5485964..b95257160 100644 --- a/Riot/Assets/ca.lproj/Vector.strings +++ b/Riot/Assets/ca.lproj/Vector.strings @@ -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 %@"; diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index 5b18de386..6a8d5b2ff 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -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 %@"; diff --git a/Riot/Assets/es.lproj/Vector.strings b/Riot/Assets/es.lproj/Vector.strings index 2f62ed5a7..300c831d8 100644 --- a/Riot/Assets/es.lproj/Vector.strings +++ b/Riot/Assets/es.lproj/Vector.strings @@ -489,12 +489,6 @@ "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"; -// room display name -"room_displayname_invite_from" = "Invitación de %@"; -"room_displayname_room_invite" = "Invitación a Sala"; -"room_displayname_two_members" = "%@ y %@"; -"room_displayname_more_than_two_members" = "%@ y otros %u"; -"room_displayname_no_title" = "Sala vacía"; // Call "call_incoming_voice_prompt" = "Llamada de voz entrante de %@"; "call_incoming_video_prompt" = "Llamada de vídeo entrante de %@"; diff --git a/Riot/Assets/eu.lproj/Vector.strings b/Riot/Assets/eu.lproj/Vector.strings index b2ca0e5c4..a3068df0c 100644 --- a/Riot/Assets/eu.lproj/Vector.strings +++ b/Riot/Assets/eu.lproj/Vector.strings @@ -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"; @@ -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"; diff --git a/Riot/Assets/fr.lproj/Vector.strings b/Riot/Assets/fr.lproj/Vector.strings index 00957f221..96308c3e3 100644 --- a/Riot/Assets/fr.lproj/Vector.strings +++ b/Riot/Assets/fr.lproj/Vector.strings @@ -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 %@"; diff --git a/Riot/Assets/is.lproj/Vector.strings b/Riot/Assets/is.lproj/Vector.strings index 2a0be5a92..99391ec2d 100644 --- a/Riot/Assets/is.lproj/Vector.strings +++ b/Riot/Assets/is.lproj/Vector.strings @@ -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):"; diff --git a/Riot/Assets/nl.lproj/Vector.strings b/Riot/Assets/nl.lproj/Vector.strings index 87dbe21e4..e3156c8d2 100644 --- a/Riot/Assets/nl.lproj/Vector.strings +++ b/Riot/Assets/nl.lproj/Vector.strings @@ -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 %@"; diff --git a/Riot/Assets/ru.lproj/Vector.strings b/Riot/Assets/ru.lproj/Vector.strings index 29b7ee139..6f5a5e0d2 100644 --- a/Riot/Assets/ru.lproj/Vector.strings +++ b/Riot/Assets/ru.lproj/Vector.strings @@ -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" = "Входящий видеозвонок от %@"; diff --git a/Riot/Assets/sq.lproj/Vector.strings b/Riot/Assets/sq.lproj/Vector.strings index 17de371cb..bca8dc756 100644 --- a/Riot/Assets/sq.lproj/Vector.strings +++ b/Riot/Assets/sq.lproj/Vector.strings @@ -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 %@"; diff --git a/Riot/Assets/vi.lproj/Vector.strings b/Riot/Assets/vi.lproj/Vector.strings index 6c0b35805..3058ca2c0 100644 --- a/Riot/Assets/vi.lproj/Vector.strings +++ b/Riot/Assets/vi.lproj/Vector.strings @@ -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ừ %@"; diff --git a/Riot/Assets/zh_Hans.lproj/Vector.strings b/Riot/Assets/zh_Hans.lproj/Vector.strings index b8766e2c1..9fb0a1e66 100644 --- a/Riot/Assets/zh_Hans.lproj/Vector.strings +++ b/Riot/Assets/zh_Hans.lproj/Vector.strings @@ -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" = "来自 %@ 的视频通话"; diff --git a/Riot/Assets/zh_Hant.lproj/Vector.strings b/Riot/Assets/zh_Hant.lproj/Vector.strings index e57d62a9a..6c120218e 100644 --- a/Riot/Assets/zh_Hant.lproj/Vector.strings +++ b/Riot/Assets/zh_Hant.lproj/Vector.strings @@ -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" = "來自 %@ 的視訊通話"; From 8a64c2bc4159a1b6eeb2e55b144089abbbf759bf Mon Sep 17 00:00:00 2001 From: manuroe Date: Tue, 25 Sep 2018 11:20:50 +0200 Subject: [PATCH 34/36] SettingsVC: Use MXKAccount method to determine if LL is supported by the HS --- .../Modules/Settings/SettingsViewController.m | 71 ++++++++----------- 1 file changed, 31 insertions(+), 40 deletions(-) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index 9999778b8..726abe5de 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -2059,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]; @@ -2924,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]; + }]; } } } From 045a840c96ef0a3f28f6c87dbe4c380f1816ee6d Mon Sep 17 00:00:00 2001 From: manuroe Date: Tue, 25 Sep 2018 15:46:07 +0200 Subject: [PATCH 35/36] Lazy-Loading: On logout, reenable LL --- CHANGES.rst | 1 + Riot/AppDelegate.m | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 166bbb0df..2aaec5971 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -3,6 +3,7 @@ Changes in 0.7.4 (2018-09-) 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). diff --git a/Riot/AppDelegate.m b/Riot/AppDelegate.m index 84500155a..5952ea06d 100644 --- a/Riot/AppDelegate.m +++ b/Riot/AppDelegate.m @@ -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]; From 4310ab5ddec24167c4db947f33efc021f1b19498 Mon Sep 17 00:00:00 2001 From: manuroe Date: Wed, 26 Sep 2018 15:48:38 +0200 Subject: [PATCH 36/36] version++ --- CHANGES.rst | 2 +- Podfile | 2 +- Podfile.lock | 50 +++++++++---------- Riot.xcodeproj/project.pbxproj | 4 +- Riot/SupportingFiles/Info.plist | 4 +- RiotShareExtension/SupportingFiles/Info.plist | 4 +- SiriIntents/Info.plist | 4 +- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 2aaec5971..44506e3e9 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,4 +1,4 @@ -Changes in 0.7.4 (2018-09-) +Changes in 0.7.4 (2018-09-26) =============================================== Improvements: diff --git a/Podfile b/Podfile index 142a5bb9e..d4fc9246a 100644 --- a/Podfile +++ b/Podfile @@ -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' diff --git a/Podfile.lock b/Podfile.lock index d93a37063..651d079ac 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -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 diff --git a/Riot.xcodeproj/project.pbxproj b/Riot.xcodeproj/project.pbxproj index 6be32a8f2..dc1207f6f 100644 --- a/Riot.xcodeproj/project.pbxproj +++ b/Riot.xcodeproj/project.pbxproj @@ -2856,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", @@ -2893,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 */ = { diff --git a/Riot/SupportingFiles/Info.plist b/Riot/SupportingFiles/Info.plist index 795682412..8798dc899 100644 --- a/Riot/SupportingFiles/Info.plist +++ b/Riot/SupportingFiles/Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.7.3 + 0.7.4 CFBundleSignature ???? CFBundleVersion - 0.7.3 + 0.7.4 ITSAppUsesNonExemptEncryption ITSEncryptionExportComplianceCode diff --git a/RiotShareExtension/SupportingFiles/Info.plist b/RiotShareExtension/SupportingFiles/Info.plist index a82ad796a..23ca03a99 100644 --- a/RiotShareExtension/SupportingFiles/Info.plist +++ b/RiotShareExtension/SupportingFiles/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 0.7.3 + 0.7.4 CFBundleVersion - 0.7.3 + 0.7.4 NSExtension NSExtensionAttributes diff --git a/SiriIntents/Info.plist b/SiriIntents/Info.plist index d6f1b1bac..436918538 100644 --- a/SiriIntents/Info.plist +++ b/SiriIntents/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 0.7.3 + 0.7.4 CFBundleVersion - 0.7.3 + 0.7.4 NSExtension NSExtensionAttributes