From 8d8e1c3301961089afd4516a2d24076d4d701665 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Tue, 22 Aug 2017 20:17:58 +0000 Subject: [PATCH 01/52] Translated using Weblate (Hungarian) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 7c38e41c9b..7aabdd28f1 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -961,5 +961,14 @@ "Automatically replace plain text Emoji": "Egyszerű szöveg automatikus cseréje Emoji-ra", "Failed to upload image": "Kép feltöltése sikertelen", "Failed to update group": "Csoport frissítése sikertelen", - "Hide avatars in user and room mentions": "Profilképek elrejtése felhasználó és szoba említésekben" + "Hide avatars in user and room mentions": "Profilképek elrejtése felhasználó és szoba említésekben", + "Cannot add any more widgets": "Nem lehet több kisalkalmazást hozzáadni", + "Do you want to load widget from URL:": "Betöltöd a kisalkalmazást erről az URL-ről:", + "Integrations Error": "Integrációs hiba", + "Publish this room to the public in %(domain)s's room directory?": "Publikálod a szobát a(z) %(domain)s szoba listájába?", + "NOTE: Apps are not end-to-end encrypted": "Megjegyzés: Az alkalmazások nem végponttól végpontig titkosítottak", + "The maximum permitted number of widgets have already been added to this room.": "A maximálisan megengedett számú kisalkalmazás már hozzá van adva a szobához.", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s hozzáadta", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s eltávolította", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot ellenőrzés az asztali verzióban nem érhető el - használd a web böngészőt" } From 859bfff03f15ae7e52f41f940bec9b35a6e288b9 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Tue, 22 Aug 2017 20:47:21 +0000 Subject: [PATCH 02/52] Translated using Weblate (German) Currently translated at 99.2% (964 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 2fbee2717d..45fc57e41b 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -552,10 +552,8 @@ "Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s", "Failed to join the room": "Fehler beim Betreten des Raumes", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte gebe den Verifikationscode ein, den er beinhaltet", - "and %(count)s others...": { - "other": "und %(count)s weitere...", - "one": "und ein(e) weitere(r)..." - }, + "and %(count)s others....other": "und %(count)s weitere...", + "and %(count)s others....one": "und ein(e) weitere(r)...", "Are you sure?": "Bist du sicher?", "Attachment": "Anhang", "Ban": "Dauerhaft aus dem Raum ausschließen", @@ -913,7 +911,7 @@ "Admin tools": "Admin-Werkzeuge", "And %(count)s more...": "Und %(count)s weitere...", "Alias (optional)": "Alias (optional)", - "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Verbindung zum Heimserver fehlgeschlagen - bitte prüfe deine Verbindung, stelle sicher, dass dem SSL-Zertifikat deines Heimservers vertraut wird und keine Browser-Erweiterung Anfragen blockiert.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Verbindung zum Heimserver fehlgeschlagen - bitte überprüfe die Internetverbindung und stelle sicher, dass dem SSL-Zertifikat deines Heimservers vertraut wird und dass Anfragen nicht durch eine Browser-Erweiterung blockiert werden.", "Click here to join the discussion!": "Hier klicken, um an der Diskussion teilzunehmen!", "Close": "Schließen", "Custom": "Erweitert", @@ -1034,5 +1032,6 @@ "Failed to update group": "Aktualisieren der Gruppe fehlgeschlagen", "Hide avatars in user and room mentions": "Verberge Profilbilder in Benutzer- und Raum-Erwähnungen", "AM": "am", - "PM": "pm" + "PM": "pm", + "The maximum permitted number of widgets have already been added to this room.": "Die maximal erlaubte Anzahl an hinzufügbaren Widgets für diesen Raum wurde erreicht." } From 1dfab49349f672f506b9208c21e477e81238545d Mon Sep 17 00:00:00 2001 From: Krombel Date: Wed, 23 Aug 2017 11:02:37 +0000 Subject: [PATCH 03/52] Translated using Weblate (German) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 45fc57e41b..8b49bfddcc 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1033,5 +1033,12 @@ "Hide avatars in user and room mentions": "Verberge Profilbilder in Benutzer- und Raum-Erwähnungen", "AM": "am", "PM": "pm", - "The maximum permitted number of widgets have already been added to this room.": "Die maximal erlaubte Anzahl an hinzufügbaren Widgets für diesen Raum wurde erreicht." + "The maximum permitted number of widgets have already been added to this room.": "Die maximal erlaubte Anzahl an hinzufügbaren Widgets für diesen Raum wurde erreicht.", + "Cannot add any more widgets": "Kann keine weiteren Widgets hinzufügen", + "Do you want to load widget from URL:": "Mögest du das Widget von folgender URL laden:", + "Integrations Error": "Integrations-Error", + "NOTE: Apps are not end-to-end encrypted": "BEACHTE: Apps sind nicht Ende-zu-Ende verschlüsselt", + "%(widgetName)s widget added by %(senderName)s": "Widget \"%(widgetName)s\" von %(senderName)s hinzugefügt", + "%(widgetName)s widget removed by %(senderName)s": "Widget \"%(widgetName)s\" von %(senderName)s entfernt", + "Robot check is currently unavailable on desktop - please use a web browser": "Auf dem Desktop kann aktuell nicht geprüft werden, ob du ein Roboter bist. Bitte nutze einen Browser" } From dad23adfb953c42263bb8a726b0c129bb152a2ed Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 23 Aug 2017 19:28:50 +0000 Subject: [PATCH 04/52] Translated using Weblate (Russian) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 56 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 3f3403d716..cd3d6d15ae 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -448,10 +448,8 @@ "sx": "Суту", "zh-hk": "Китайский (Гонконг)", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Текстовое сообщение было отправлено на +%(msisdn)s. Введите проверочный код, который оно содержит", - "and %(count)s others...": { - "other": "и %(count)s других...", - "one": "и ещё один..." - }, + "and %(count)s others....other": "и %(count)s других...", + "and %(count)s others....one": "и ещё один...", "Are you sure?": "Вы уверены?", "Autoplay GIFs and videos": "Автовоспроизведение GIF и видео", "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Невозможно соединиться с домашним сервером - проверьте своё соединение и убедитесь, что SSL-сертификат вашего домашнего сервера включён в доверяемые.", @@ -978,5 +976,53 @@ "Define the power level of a user": "Определить уровень доступа пользователя", "Do you want to load widget from URL:": "Загрузить виджет из URL-адреса:", "Edit": "Изменить", - "Enable automatic language detection for syntax highlighting": "Включить автоматическое определение языка для подсветки синтаксиса" + "Enable automatic language detection for syntax highlighting": "Включить автоматическое определение языка для подсветки синтаксиса", + "Hide Apps": "Скрыть приложения", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Скрыть сообщения о входе/выходе (приглашениях/выкидываниях/банах)", + "Hide avatar and display name changes": "Скрыть сообщения об изменении аватаров и отображаемых имен", + "Integrations Error": "Ошибка интеграции", + "Matrix Apps": "Приложения Matrix", + "AM": "AM", + "PM": "PM", + "NOTE: Apps are not end-to-end encrypted": "ПРИМЕЧАНИЕ: приложения не защищены сквозным шифрованием", + "Revoke widget access": "Отозвать доступ к виджетам", + "Sets the room topic": "Задать тему комнаты", + "Show Apps": "Показать приложения", + "The maximum permitted number of widgets have already been added to this room.": "Максимально допустимое количество виджетов уже добавлено в эту комнату.", + "To get started, please pick a username!": "Чтобы начать, выберите имя пользователя!", + "Unable to create widget.": "Не удалось создать виджет.", + "Unbans user with given id": "Разбанить пользователя с заданным ID", + "You are not in this room.": "Вас нет в этой комнате.", + "You do not have permission to do that in this room.": "У вас нет разрешения на это в этой комнате.", + "Verifies a user, device, and pubkey tuple": "Проверка пользователя, устройства и открытого ключа", + "Autocomplete Delay (ms):": "Задержка автозаполнения (мс):", + "This Home server does not support groups": "Этот домашний сервер не поддерживает группы", + "Loading device info...": "Загрузка информации об устройстве...", + "Groups": "Группы", + "Create a new group": "Создать новую группу", + "Create Group": "Создать группу", + "Group Name": "Название группы", + "Example": "Пример", + "Create": "Создать", + "Group ID": "ID группы", + "+example:%(domain)s": "+пример:%(domain)s", + "Group IDs must be of the form +localpart:%(domain)s": "Идентификаторы групп должны иметь вид +локальная часть:%(domain)s", + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "В настоящее время возможно создавать группы только на собственном домашнем сервере: используйте идентификатор группы, заканчивающийся на %(domain)s", + "Room creation failed": "Не удалось создать комнату", + "You are a member of these groups:": "Вы являетесь членом этих групп:", + "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Создайте группу для представления своего сообщества! Определите набор комнат и собственную домашнюю страницу, чтобы выделить свое пространство во вселенной Matrix.", + "Join an existing group": "Присоединиться к существующей группе", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Чтобы присоединиться к группе, вам нужно знать ее идентификатор; он выглядит примерно так:+пример:matrix.org.", + "Featured Rooms:": "Рекомендуемые комнаты:", + "Error whilst fetching joined groups": "Ошибка при извлечении объединенных групп", + "Featured Users:": "Избранные пользователи:", + "Edit Group": "Изменить группу", + "Automatically replace plain text Emoji": "Автоматически заменять обычный текст на Emoji", + "Failed to upload image": "Не удалось загрузить изображение", + "Failed to update group": "Не удалось обновить группу", + "Hide avatars in user and room mentions": "Скрыть аватары в упоминаниях пользователей и комнат", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s виджет, добавленный %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s виджет, удаленный %(senderName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Проверка робота в настоящее время недоступна на компьютере - пожалуйста, используйте браузер", + "Publish this room to the public in %(domain)s's room directory?": "Опубликовать эту комнату для пользователей в %(domain)s каталоге комнат?" } From f322df6b0caf5ca2682f60ecefa22e3000b70b9d Mon Sep 17 00:00:00 2001 From: Eric Newport Date: Wed, 23 Aug 2017 23:17:27 +0000 Subject: [PATCH 05/52] Translated using Weblate (English (United States)) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/en_US/ --- src/i18n/strings/en_US.json | 57 +++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index a68ce5d982..1bba6d58b4 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -154,10 +154,8 @@ "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", "%(items)s and one other": "%(items)s and one other", "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", - "and %(count)s others...": { - "other": "and %(count)s others...", - "one": "and one other..." - }, + "and %(count)s others....other": "and %(count)s others...", + "and %(count)s others....one": "and one other...", "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", "%(names)s and one other are typing": "%(names)s and one other are typing", "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", @@ -685,7 +683,7 @@ "quote": "quote", "bullet": "bullet", "numbullet": "numbullet", - "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s joined %(repeats)s times", + "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)sjoined %(repeats)s times", "%(oneUser)sjoined %(repeats)s times": "%(oneUser)sjoined %(repeats)s times", "%(severalUsers)sjoined": "%(severalUsers)sjoined", "%(oneUser)sjoined": "%(oneUser)sjoined", @@ -940,5 +938,52 @@ "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", "Encryption key request": "Encryption key request", "Updates": "Updates", - "Check for update": "Check for update" + "Check for update": "Check for update", + "Allow": "Allow", + "Cannot add any more widgets": "Cannot add any more widgets", + "Changes colour scheme of current room": "Changes color scheme of current room", + "Define the power level of a user": "Define the power level of a user", + "Do you want to load widget from URL:": "Do you want to load widget from URL:", + "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)", + "Hide avatar and display name changes": "Hide avatar and display name changes", + "Integrations Error": "Integrations Error", + "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted", + "Sets the room topic": "Sets the room topic", + "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.", + "To get started, please pick a username!": "To get started, please pick a username!", + "Unable to create widget.": "Unable to create widget.", + "Unbans user with given id": "Unbans user with given id", + "You are not in this room.": "You are not in this room.", + "You do not have permission to do that in this room.": "You do not have permission to do that in this room.", + "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", + "This Home server does not support groups": "This Home server does not support groups", + "Loading device info...": "Loading device info...", + "Groups": "Groups", + "Create a new group": "Create a new group", + "Create Group": "Create Group", + "Group Name": "Group Name", + "Example": "Example", + "Create": "Create", + "Group ID": "Group ID", + "+example:%(domain)s": "+example:%(domain)s", + "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s", + "Room creation failed": "Room creation failed", + "You are a member of these groups:": "You are a member of these groups:", + "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", + "Join an existing group": "Join an existing group", + "Featured Rooms:": "Featured Rooms:", + "Error whilst fetching joined groups": "Error while fetching joined groups", + "Featured Users:": "Featured Users:", + "Edit Group": "Edit Group", + "Automatically replace plain text Emoji": "Automatically replace plain text Emoji", + "Failed to upload image": "Failed to upload image", + "Failed to update group": "Failed to update group", + "Hide avatars in user and room mentions": "Hide avatars in user and room mentions", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", + "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple", + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org." } From 5f85bc6d7d2541cfe0eb9253cb3bdbe9f7f7ba18 Mon Sep 17 00:00:00 2001 From: cafade Date: Thu, 24 Aug 2017 01:01:46 +0000 Subject: [PATCH 06/52] Translated using Weblate (Spanish) Currently translated at 80.7% (784 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/ --- src/i18n/strings/es.json | 64 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 96a986decc..fca74df9f9 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -140,10 +140,8 @@ "%(items)s and %(remaining)s others": "%(items)s y %(remaining)s otros", "%(items)s and one other": "%(items)s y otro", "%(items)s and %(lastItem)s": "%(items)s y %(lastItem)s", - "and %(count)s others...": { - "other": "y %(count)s otros...", - "one": "y otro..." - }, + "and %(count)s others....other": "y %(count)s otros...", + "and %(count)s others....one": "y otro...", "%(names)s and %(lastPerson)s are typing": "%(names)s y %(lastPerson)s están escribiendo", "%(names)s and one other are typing": "%(names)s y otro están escribiendo", "%(names)s and %(count)s others are typing": "%(names)s y %(count)s otros están escribiendo", @@ -736,5 +734,61 @@ "You do not have permission to do that in this room.": "No tiene permiso para hacer esto en esta sala.", "You're not in any rooms yet! Press to make a room or to browse the directory": "¡Todavía no participa en ninguna sala! Pulsa para crear una sala o para explorar el directorio", "You are trying to access %(roomName)s.": "Está tratando de acceder a %(roomName)s.", - "You cannot place a call with yourself.": "No puede iniciar una llamada con usted mismo." + "You cannot place a call with yourself.": "No puede iniciar una llamada con usted mismo.", + "Cannot add any more widgets": "no es posible agregar mas widgets", + "Do you want to load widget from URL:": "desea cargar widget desde URL:", + "Integrations Error": "error de integracion", + "Publish this room to the public in %(domain)s's room directory?": "Desea publicar esta sala al publico en el directorio de sala de %(domain)s?", + "AM": "AM", + "PM": "PM", + "NOTE: Apps are not end-to-end encrypted": "NOTA: Las Apps no son cifradas de extremo a extremo", + "Revoke widget access": "Revocar acceso del widget", + "The maximum permitted number of widgets have already been added to this room.": "La cantidad máxima de widgets permitida ha sido alcanzada en esta sala.", + "To use it, just wait for autocomplete results to load and tab through them.": "Para usar, solo espere a que carguen los resultados de auto-completar y navegue entre ellos.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s levanto la suspensión de %(targetName)s.", + "unencrypted": "no cifrado", + "Unmute": "desactivar el silencio", + "Unrecognised command:": "comando no reconocido:", + "Unrecognised room alias:": "alias de sala no reconocido:", + "uploaded a file": "cargo un archivo", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivel de permisos %(powerLevelNumber)s)", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "Atención: VERIFICACIÓN DE CLAVE FALLO\" La clave de firma para %(userId)s y el dispositivo %(deviceId)s es \"%(fprint)s\" la cual no concuerda con la clave provista por \"%(fingerprint)s\". Esto puede significar que sus comunicaciones están siendo interceptadas!", + "You cannot place VoIP calls in this browser.": "no puede realizar llamadas de voz en este navegador.", + "You do not have permission to post to this room": "no tiene permiso para publicar en esta sala", + "You have been banned from %(roomName)s by %(userName)s.": "Ha sido expulsado de %(roomName)s por %(userName)s.", + "You have been invited to join this room by %(inviterName)s": "Ha sido invitado a entrar a esta sala por %(inviterName)s", + "You have been kicked from %(roomName)s by %(userName)s.": "Ha sido removido de %(roomName)s por %(userName)s.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Ha sido desconectado de todos los dispositivos y no continuara recibiendo notificaciones. Para volver a habilitar las notificaciones, vuelva a conectarse en cada dispositivo", + "You have disabled URL previews by default.": "Ha deshabilitado la vista previa de URL por defecto.", + "You have enabled URL previews by default.": "Ha habilitado vista previa de URL por defecto.", + "You have entered an invalid contact. Try using their Matrix ID or email address.": "Ha ingresado un contacto no valido. Intente usando la ID Matrix o e-mail del contacto.", + "You have no visible notifications": "No tiene notificaciones visibles", + "You may wish to login with a different account, or add this email to this account.": "Puede ingresar con una cuenta diferente, o agregar este e-mail a esta cuenta.", + "you must be a": "usted debe ser un", + "You must register to use this functionality": "Usted debe ser un registrar para usar esta funcionalidad", + "You need to be able to invite users to do that.": "Usted debe ser capaz de invitar usuarios para hacer eso.", + "You need to be logged in.": "Necesita estar autenticado.", + "You need to enter a user name.": "Tiene que ingresar un nombre de usuario.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Su e-mail parece no estar asociado con una Id Matrix en este Homeserver.", + "Your password has been reset": "Su contraseña ha sido restablecida", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Su contraseña a sido cambiada exitosamente. No recibirá notificaciones en otros dispositivos hasta que ingrese de nuevo en ellos", + "You seem to be in a call, are you sure you want to quit?": "Parece estar en medio de una llamada, ¿esta seguro que desea salir?", + "You seem to be uploading files, are you sure you want to quit?": "Parece estar cargando archivos, ¿esta seguro que desea salir?", + "You should not yet trust it to secure data": "No debería confiarle aun para asegurar su información", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "No podrá revertir este cambio ya que esta promoviendo al usuario para tener el mismo nivel de autoridad que usted.", + "Your home server does not support device management.": "Su servidor privado no suporta la gestión de dispositivos.", + "Sun": "Dom", + "Mon": "Lun", + "Tue": "Mar", + "Wed": "Mie", + "Thu": "Jue", + "Fri": "Vie", + "Sat": "Sab", + "Jan": "Ene", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Abr", + "May": "May", + "Jun": "Jun", + "Jul": "Jul" } From 2942caf6a2273834d33357c72924444f37ef3f0a Mon Sep 17 00:00:00 2001 From: "Iru Cai (vimacs)" Date: Fri, 25 Aug 2017 03:43:10 +0000 Subject: [PATCH 07/52] Translated using Weblate (Chinese (Simplified)) Currently translated at 51.4% (500 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 144 +++++++++++++++++++++++++++++++--- 1 file changed, 135 insertions(+), 9 deletions(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index cee8f224c4..288b5b4357 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -76,7 +76,7 @@ "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s 从 %(fromPowerLevel)s 变为 %(toPowerLevel)s", "Guests can't set avatars. Please register.": "游客不能设置头像。请注册。.", "Guest users can't create new rooms. Please register to create room and start a chat.": "游客不能创建聊天室。请注册以创建聊天室和聊天.", - "Guest users can't upload files. Please register to upload.": "游客不能上传文件。请注册以上传文件", + "Guest users can't upload files. Please register to upload.": "游客不能上传文件。请注册以上传文件。", "Guests can't use labs features. Please register.": "游客不能使用实验性功能。请注册。.", "Guests cannot join this room even if explicitly invited.": "游客不能加入此聊天室,即使有人主动邀请。.", "had": "已经", @@ -138,7 +138,7 @@ "since the point in time of selecting this option": "从选择此选项起", "since they joined": "从他们加入时起", "since they were invited": "从他们被邀请时起", - "Some of your messages have not been sent.": "部分消息发送失败", + "Some of your messages have not been sent.": "部分消息未发送。", "Someone": "某个用户", "Sorry, this homeserver is using a login which is not recognised ": "很抱歉,无法识别此主服务器使用的登录方式 ", "Start a chat": "创建聊天", @@ -147,7 +147,7 @@ "Success": "成功", "The default role for new room members is": "此聊天室新成员的默认角色是", "The main address for this room is": "此聊天室的主要地址是", - "This action cannot be performed by a guest user. Please register to be able to do this.": "游客不能进行此操作。请注册", + "This action cannot be performed by a guest user. Please register to be able to do this.": "游客不能进行此操作。请注册。", "This email address is already in use": "此邮箱地址已经被使用", "This email address was not found": "未找到此邮箱地址", "%(actionVerb)s this person?": "%(actionVerb)s 这个用户?", @@ -221,7 +221,7 @@ "en-gb": "英语 (英国)", "en-ie": "英语 (爱尔兰)", "en-nz": "英语 (新西兰)", - "Add a topic": "新话题", + "Add a topic": "添加一个主题", "Admin": "管理员", "Admin tools": "管理工具", "VoIP": "IP 电话", @@ -239,10 +239,8 @@ "%(items)s and %(remaining)s others": "%(items)s 和其它 %(remaining)s 个", "%(items)s and one other": "%(items)s 和其它一个", "%(items)s and %(lastItem)s": "%(items)s 和 %(lastItem)s", - "and %(count)s others...": { - "other": "和其它 %(count)s 个...", - "one": "和其它一个..." - }, + "and %(count)s others....other": "和其它 %(count)s 个...", + "and %(count)s others....one": "和其它一个...", "%(names)s and one other are typing": "%(names)s 和另一个人正在打字", "anyone": "任何人", "Anyone": "任何人", @@ -375,5 +373,133 @@ "Welcome page": "欢迎页面", "ar-om": "阿拉伯语(阿曼)", "ar-qa": "阿拉伯语(卡塔尔)", - "ar-sa": "阿拉伯语(沙特阿拉伯)" + "ar-sa": "阿拉伯语(沙特阿拉伯)", + "fi": "芬兰语", + "fr": "法语", + "he": "希伯来语", + "it": "意大利语", + "ja": "日语", + "ko": "韩语", + "Account": "账户", + "Add": "添加", + "Allow": "允许", + "Claimed Ed25519 fingerprint key": "声称的 Ed25519 指纹密钥", + "Could not connect to the integration server": "无法连接集成服务器", + "Curve25519 identity key": "Curve25519 认证密钥", + "Edit": "编辑", + "Hide Apps": "隐藏应用", + "joined and left": "加入并离开", + "Joins room with given alias": "以指定的别名加入聊天室", + "Labs": "实验室", + "left and rejoined": "离开并加入", + "left": "离开", + "%(targetName)s left the room.": "%(targetName)s 离开了聊天室。", + "Logged in as:": "登录为:", + "Logout": "登出", + "Low priority": "低优先级", + "Markdown is disabled": "Markdown 已禁用", + "Markdown is enabled": "Markdown 已启用", + "matrix-react-sdk version:": "matrix-react-sdk 版本:", + "Matrix Apps": "Matrix 应用", + "No more results": "没有更多结果", + "olm version:": "olm 版本:", + "Only people who have been invited": "只有被邀请的人", + "Otherwise, click here to send a bug report.": "否则,点击这里发送一个错误报告。", + "Privacy warning": "隐私警告", + "Private Chat": "私聊", + "Privileged Users": "特权用户", + "Reason": "原因", + "Register": "注册", + "rejected": "拒绝", + "%(targetName)s rejected the invitation.": "%(targetName)s 拒绝了邀请。", + "Reject invitation": "拒绝邀请", + "Rejoin": "重新加入", + "Users": "用户", + "User": "用户", + "Verification": "验证", + "verified": "已验证", + "Verified": "已验证", + "Verified key": "已验证的密钥", + "Video call": "视频通话", + "Voice call": "音频通话", + "VoIP conference finished.": "VoIP 会议结束。", + "VoIP conference started.": "VoIP 会议开始。", + "VoIP is unsupported": "不支持 VoIP", + "Warning!": "警告!", + "you must be a": "你必须是", + "You must register to use this functionality": "你必须注册以使用这个功能", + "You need to be logged in.": "你需要登录。", + "You need to enter a user name.": "你需要输入一个用户名。", + "Your password has been reset": "你的密码已被重置", + "Topic": "主题", + "Make Moderator": "使成为主持人", + "Room": "聊天室", + "Connectivity to the server has been lost.": "到服务器的连接已经丢失。", + "Auto-complete": "自动补全", + "bold": "加粗", + "italic": "斜体", + "strike": "删除线", + "underline": "下划线", + "code": "代码", + "quote": "引用", + "bullet": "项目符号", + "numbullet": "数字项目符号", + "were invited": "被邀请", + "was invited": "被邀请", + "were banned %(repeats)s times": "被封禁 %(repeats)s 次", + "was banned %(repeats)s times": "被封禁 %(repeats)s 次", + "were banned": "被封禁", + "was banned": "被封禁", + "New Password": "新密码", + "Options": "选项", + "Passphrases must match": "密码必须匹配", + "Passphrase must not be empty": "密码不能为空", + "Export room keys": "导出聊天室密钥", + "Confirm passphrase": "确认密码", + "Import room keys": "导入聊天室密钥", + "File to import": "要导入的文件", + "Start new chat": "开始新的聊天", + "Guest users can't invite users. Please register.": "游客不能邀请用户。请注册。", + "Failed to invite": "邀请失败", + "Failed to invite user": "邀请用户失败", + "Unknown error": "未知错误", + "Incorrect password": "密码错误", + "This action is irreversible.": "此操作不可逆。", + "To continue, please enter your password.": "请输入你的密码继续。", + "Device name": "设备名", + "Device Name": "设备名", + "Device key": "设备密钥", + "Verify device": "验证设备", + "I verify that the keys match": "我验证密钥匹配", + "Unable to restore session": "无法恢复会话", + "Continue anyway": "无论如何都继续", + "Blacklist": "列入黑名单", + "Unverify": "取消验证", + "ex. @bob:example.com": "例如 @bob:example.com", + "Add User": "添加用户", + "This Home Server would like to make sure you are not a robot": "这个Home Server想要确认你不是一个机器人", + "Token incorrect": "令牌错误", + "Default server": "默认服务器", + "Custom server": "自定义服务器", + "URL Previews": "URL 预览", + "Drop file here to upload": "把文件拖到这里以上传", + "Online": "在线", + "Idle": "空闲", + "Offline": "离线", + "Start chatting": "开始聊天", + "Start Chatting": "开始聊天", + "Click on the button below to start chatting!": "点击下面的按钮开始聊天!", + "Username available": "用户名可用", + "Username not available": "用户名不可用", + "Skip": "跳过", + "Start verification": "开始验证", + "Ignore request": "忽略请求", + "Loading device info...": "正在加载设备信息...", + "Groups": "群", + "Create a new group": "创建一个新群", + "Group Name": "群名称", + "Example": "例子", + "Create": "创建", + "Edit Group": "编辑群", + "Failed to upload image": "上传图像失败" } From 0927d2c9430827e3d58d1ed73da864de50e03bf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20T=C3=B6tterman?= Date: Thu, 24 Aug 2017 07:26:02 +0000 Subject: [PATCH 08/52] Translated using Weblate (Swedish) Currently translated at 55.2% (536 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index d3b512900c..565a470e4e 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -150,10 +150,8 @@ "%(items)s and %(remaining)s others": "%(items)s och %(remaining)s andra", "%(items)s and one other": "%(items)s och en annan", "%(items)s and %(lastItem)s": "%(items)s och %(lastItem)s", - "and %(count)s others...": { - "other": "och %(count)s andra...", - "one": "och en annan..." - }, + "and %(count)s others....other": "och %(count)s andra...", + "and %(count)s others....one": "och en annan...", "%(names)s and %(lastPerson)s are typing": "%(names)s och %(lastPerson)s skriver", "%(names)s and one other are typing": "%(names)s och en annan skriver", "%(names)s and %(count)s others are typing": "%(names)s och %(count)s andra skriver", @@ -525,5 +523,21 @@ "Sorry, this homeserver is using a login which is not recognised ": "Den här hemsevern använder en login-metod som inte stöds ", "Start a chat": "Starta en chatt", "Start authentication": "Starta autentisering", - "Start Chat": "Starta en chatt" + "Start Chat": "Starta en chatt", + "Cancel": "Avbryt", + "Create new room": "Nytt rum", + "Custom Server Options": "Egna serverinställningar", + "Dismiss": "Avvisa", + "powered by Matrix": "drivs av Matrix", + "Room directory": "Rumskatalog", + "Start chat": "Starta chatt", + "unknown error code": "okänd felkod", + "Sunday": "söndag", + "Monday": "måndag", + "Tuesday": "tisdag", + "Wednesday": "onsdag", + "Thursday": "torsdag", + "Friday": "fredag", + "Saturday": "lördag", + "Welcome page": "Välkomstsida" } From 221935d894ce6ce1311bdcdc15f9d6a6d64a4f0a Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 25 Aug 2017 05:54:07 +0000 Subject: [PATCH 09/52] Translated using Weblate (Russian) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index cd3d6d15ae..0d605bed5b 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -60,7 +60,7 @@ "Device ID": "ID устройства", "Devices will not yet be able to decrypt history from before they joined the room": "Устройства пока не могут дешифровать историю до их входа в комнату", "Direct Chat": "Прямой чат", - "Disable inline URL previews by default": "Отключить предварительный просмотр URL-адресов по умолчанию", + "Disable inline URL previews by default": "Отключить предпросмотр URL-адресов по умолчанию", "Display name": "Отображаемое имя", "Displays action": "Отображение действий", "Ed25519 fingerprint": "Ed25519 отпечаток", @@ -582,7 +582,7 @@ "This room is not recognised.": "Эта комната не опознана.", "These are experimental features that may break in unexpected ways": "Это экспериментальные функции, которые могут себя вести неожиданным образом", "This doesn't appear to be a valid email address": "Похоже, это недействительный адрес электронной почты", - "This is a preview of this room. Room interactions have been disabled": "Это предварительный просмотр комнаты. Взаимодействие с комнатой отключено", + "This is a preview of this room. Room interactions have been disabled": "Это предпросмотр комнаты. Взаимодействие с комнатой отключено", "This phone number is already in use": "Этот номер телефона уже используется", "This room's internal ID is": "Внутренний ID этой комнаты", "times": "раз", @@ -840,10 +840,10 @@ "Add an Integration": "Добавить интеграцию", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Вы будете пернаправлены на внешний сайт, где сможете аутентифицировать свою учетную запись для использования с %(integrationsUrl)s. Продолжить?", "Removed or unknown message type": "Удалено или неизвестный тип сообщения", - "Disable URL previews by default for participants in this room": "Отключить предварительный просмотр URL-адресов по умолчанию для участников этой комнаты", + "Disable URL previews by default for participants in this room": "Отключить предпросмотр URL-адресов по умолчанию для участников этой комнаты", "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "Предварительный просмотр URL-адресов %(globalDisableUrlPreview)s по умолчанию для участников этой комнаты.", "URL Previews": "Предварительный просмотр URL-адресов", - "Enable URL previews for this room (affects only you)": "Включить предварительный просмотр URL-адресов для этой комнаты (влияет только на вас)", + "Enable URL previews for this room (affects only you)": "Включить предпросмотр URL-адресов для этой комнаты (влияет только на вас)", "Drop file here to upload": "Перетащите файл сюда для отправки", " (unsupported)": " (не поддерживается)", "Ongoing conference call%(supportedText)s.": "Установлен групповой вызов %(supportedText)s.", @@ -854,7 +854,7 @@ "Online": "В сети", "Idle": "Неактивен", "Offline": "Не в сети", - "Disable URL previews for this room (affects only you)": "Отключить предварительный просмотр URL-адресов для этой комнаты (влияет только на вас)", + "Disable URL previews for this room (affects only you)": "Отключить предпросмотр URL-адресов для этой комнаты (влияет только на вас)", "$senderDisplayName changed the room avatar to ": "$senderDisplayName сменил аватар комнаты на ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s удалил аватар комнаты.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s сменил аватар для %(roomName)s", From a05d7bb6cbcad296b47a33fad393c15867b92d7f Mon Sep 17 00:00:00 2001 From: Magorak Date: Fri, 25 Aug 2017 14:14:40 +0000 Subject: [PATCH 10/52] Translated using Weblate (Czech) Currently translated at 7.0% (68 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 25aa1eb1a9..a387958b00 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -51,5 +51,20 @@ "Error": "Chyba", "Failed to join the room": "Nepodařilo se vstoupit do místnosti", "Favourite": "V oblíbených", - "Mute": "Ztišit" + "Mute": "Ztišit", + "Continue": "Pokračovat", + "Failed to change password. Is your password correct?": "Nelze změnit heslo. Je Vaše heslo správné?", + "Welcome page": "Uvítací stránka", + "Operation failed": "Chyba operace", + "Please Register": "Prosím zaregistrujte se", + "Remove": "Odebrat", + "unknown error code": "neznámý kód chyby", + "Sunday": "Neděle", + "Monday": "Pondělí", + "Tuesday": "Úterý", + "Wednesday": "Středa", + "Thursday": "Čtvrtek", + "Friday": "Pátek", + "Saturday": "Sobota", + "OK": "OK" } From 8a27fde38d03fb5142146bcba427397a007f9a86 Mon Sep 17 00:00:00 2001 From: Lauris Mierkalns Date: Fri, 25 Aug 2017 20:47:48 +0000 Subject: [PATCH 11/52] Translated using Weblate (Latvian) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/lv/ --- src/i18n/strings/lv.json | 61 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index c2a55b3fc2..3270975938 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -913,5 +913,64 @@ "Skip": "Izlaist", "Share without verifying": "Kopīgot bez verificēšanas", "Ignore request": "Ignorēt pieprasījumu", - "Encryption key request": "Šifrēšanas atslēgas pieprasījums" + "Encryption key request": "Šifrēšanas atslēgas pieprasījums", + "Add a widget": "Pievienot Widžetu", + "Allow": "Atļaut", + "and %(count)s others....other": "un vēl %(count)s citi...", + "and %(count)s others....one": "un vēl viens cits...", + "Cannot add any more widgets": "Nav iespējams pievienot vairāk vidžetu", + "Changes colour scheme of current room": "Nomaina pašreizējās istabas krāsu paleti", + "Delete widget": "Dzēst widžetu", + "Define the power level of a user": "Definēt lietotāja pakāpes līmeni", + "Do you want to load widget from URL:": "Vai vēlies ielādēt widžetu no URL:", + "Edit": "Labot", + "Enable automatic language detection for syntax highlighting": "Iespējot automātisko valodas noteikšanu sintakses iezīmējumiem", + "Hide Apps": "Slēpt aplikācijas", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Slēpt pievienoties/pamest ziņas (tas neietekmē uzaicinājumus, vai kick/bana darbības)", + "Hide avatar and display name changes": "Slēpt profila attēlu un rādīt redzamā vārda izmaiņas", + "Integrations Error": "Integrācijas kļūda", + "Publish this room to the public in %(domain)s's room directory?": "Publicēt šo istabu publiskajā %(domain)s katalogā?", + "Matrix Apps": "Matrix Aplikācijas", + "AM": "AM", + "PM": "PZ", + "NOTE: Apps are not end-to-end encrypted": "PIEZĪME: Aplikācijās nav ierīce-ierīce šifrēšanas", + "Sets the room topic": "Uzstāda istabas tēmas nosaukumu", + "Show Apps": "Rādīt aplikācijas", + "The maximum permitted number of widgets have already been added to this room.": "Atļautais vidžetu skaits jau ir sasniegts šai istabai.", + "To get started, please pick a username!": "Lai sāktu, lūdzu izvēlies lietotājvārdu!", + "Unable to create widget.": "Nav iespējams izveidot widžetu.", + "Unbans user with given id": "Atceļ pieejas liegumu (atbano) lietotāju pēc norādītā id", + "You are not in this room.": "Tu neatrodies šajā istabā.", + "You do not have permission to do that in this room.": "Tev nav atļaujas šai darbībai šajā istabā.", + "Verifies a user, device, and pubkey tuple": "Verificē lietotāju, ierīci, un publiskās atslēgas", + "Autocomplete Delay (ms):": "Automātiskās aizpildīšanas aiztures laiks (ms):", + "This Home server does not support groups": "Šis serveris neatbalsta grupas", + "Loading device info...": "Ielādē ierīces informāciju...", + "Groups": "Grupas", + "Create a new group": "Izveidot jaunu grupu", + "Create Group": "Izveidot grupu", + "Group Name": "Grupas nosaukums", + "Example": "Piemērs", + "Create": "Izveidot", + "Group ID": "Grupas ID", + "+example:%(domain)s": "+example:%(domain)s", + "Group IDs must be of the form +localpart:%(domain)s": "Grupas ID ir jābūt sekojošā formātā: +localpart:%(domain)s", + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Vienīgi ir iespējams izveidot grupas tavā serverī: izmanto grupas ID, kurš beidzas ar %(domain)s", + "Room creation failed": "Neizdevās izveidot istabu", + "You are a member of these groups:": "Tu esi sekojošo grupu biedrs:", + "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Izveido grupu, lai prezentētu savu komūnu! Definē istabu grupu un savu personīgo mājaslapu, lai iezīmētu savu vietu Matrix universumā.", + "Join an existing group": "Pievienoties eksistējošai grupai", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Lai pievienotos eksistējošai grupai, Tev ir jāzina šīs grupas identifikators. Piemēram: +latvija:matrix.org.", + "Featured Rooms:": "Ieteiktās istabas:", + "Error whilst fetching joined groups": "Notika kļūda, nosakot pievienotās grupas", + "Featured Users:": "Ieteiktie lietotāji:", + "Edit Group": "Labot grupu", + "Automatically replace plain text Emoji": "Automātiski aizvieto tekstu ar emocijikonu (emoji)", + "Failed to upload image": "Neizdevās augšupielādēt attēlu", + "Failed to update group": "Neizdevās atjaunināt grupu", + "Hide avatars in user and room mentions": "Slēpt profila attēlus lietotāja un istabas pieminējumatzīmēs (@mention)", + "%(widgetName)s widget added by %(senderName)s": "%(senderName)s pievienoja %(widgetName)s vidžetu", + "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s dzēsa vidžetu %(widgetName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Robotu pārbaude šobrīd nav pieejama darbvirsmas versijā. Lūdzu izmanto web pārlūku", + "Revoke widget access": "Atsaukt piekļuvi vidžetam" } From f670e0f66b86582009428a17c52e0ca83603e01d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20Nenad=C3=A1l?= Date: Fri, 25 Aug 2017 19:43:21 +0000 Subject: [PATCH 12/52] Translated using Weblate (Czech) Currently translated at 7.1% (69 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index a387958b00..d10f006254 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -66,5 +66,6 @@ "Thursday": "Čtvrtek", "Friday": "Pátek", "Saturday": "Sobota", - "OK": "OK" + "OK": "OK", + "Failed to forget room %(errCode)s": "Nepodařilo se zapomenout místnost %(errCode)s" } From 5de4e3d2bbf05507739617f97a43a0e31fc08200 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sat, 26 Aug 2017 13:25:54 +0000 Subject: [PATCH 13/52] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 61 ++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 93ac57330a..35631310ad 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -920,5 +920,64 @@ "Ignore request": "忽略請求", "You added a new device '%(displayName)s', which is requesting encryption keys.": "您加入了新裝置 '%(displayName)s',其將會要求加密金鑰。", "Your unverified device '%(displayName)s' is requesting encryption keys.": "您未驗證的裝置 '%(displayName)s' 正在請求加密金鑰。", - "Encryption key request": "加密金鑰請求" + "Encryption key request": "加密金鑰請求", + "Add a widget": "新增小工具", + "Allow": "允許", + "and %(count)s others....other": "與其他 %(count)s 個……", + "and %(count)s others....one": "與其他 1 個……", + "Cannot add any more widgets": "無法新增更多的小工具", + "Changes colour scheme of current room": "變更目前聊天室的配色方案", + "Delete widget": "刪除小工具", + "Define the power level of a user": "定義使用者的權限等級", + "Do you want to load widget from URL:": "您想要載入小工具的 URL:", + "Edit": "編輯", + "Enable automatic language detection for syntax highlighting": "啟用語法突顯的自動語言偵測", + "Hide Apps": "隱藏應用程式", + "Hide join/leave messages (invites/kicks/bans unaffected)": "隱藏加入/離開訊息(邀請/踢出/封禁不受影響)", + "Hide avatar and display name changes": "隱藏大頭貼與顯示名稱變更", + "Integrations Error": "整合錯誤", + "Publish this room to the public in %(domain)s's room directory?": "將這個聊天室公開到 %(domain)s 的聊天室目錄中?", + "Matrix Apps": "Matrix 應用程式", + "AM": "上午", + "PM": "下午", + "NOTE: Apps are not end-to-end encrypted": "注意:應用程式並未端到端加密", + "Revoke widget access": "撤銷小工具存取", + "Sets the room topic": "設定聊天室主題", + "Show Apps": "顯示應用程式", + "The maximum permitted number of widgets have already been added to this room.": "這個聊天室已經有可加入的最大量的小工具了。", + "To get started, please pick a username!": "要開始,請先取一個使用者名稱!", + "Unable to create widget.": "無法建立小工具。", + "Unbans user with given id": "取消封禁指定 ID 的使用者", + "You are not in this room.": "您不在這個聊天室內。", + "You do not have permission to do that in this room.": "您沒有在這個聊天室做這件事的權限。", + "Verifies a user, device, and pubkey tuple": "驗證使用者、裝置與公開金鑰變數組", + "Autocomplete Delay (ms):": "自動完成延遲(毫秒):", + "This Home server does not support groups": "家伺服器不支援群組", + "Loading device info...": "正在載入裝置資訊……", + "Groups": "群組", + "Create a new group": "建立新群組", + "Create Group": "建立群組", + "Group Name": "群組名稱", + "Example": "範例", + "Create": "建立", + "Group ID": "群組 ID", + "+example:%(domain)s": "+範例:%(domain)s", + "Group IDs must be of the form +localpart:%(domain)s": "群組 ID 必須為這種格式 +localpart:%(domain)s", + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "目前僅能在您自己的家伺服器上建立群組:使用以 %(domain)s 結尾的群組 ID", + "Room creation failed": "聊天室建立失敗", + "You are a member of these groups:": "您是這些群組的成員:", + "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "建立一個群組來代表您的社群!定義一組聊天室與您自己的自訂首頁來標記您在 Matrix 世界中的空間。", + "Join an existing group": "加入既有的群組", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "要加入既有的群組,您將會需要知道其群組識別符;其看起來會像是 +範例:matrix.org。", + "Featured Rooms:": "特色聊天室:", + "Error whilst fetching joined groups": "在擷取已加入的群組時發生錯誤", + "Featured Users:": "特色使用者:", + "Edit Group": "編輯群組", + "Automatically replace plain text Emoji": "自動取代純文字為顏文字", + "Failed to upload image": "上傳圖片失敗", + "Failed to update group": "更新群組失敗", + "Hide avatars in user and room mentions": "在使用者與聊天室提及中隱藏大頭貼", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s 由 %(senderName)s 所新增", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s 由 %(senderName)s 所移除", + "Robot check is currently unavailable on desktop - please use a web browser": "機器人檢查目前在桌面端不可用 ── 請使用網路瀏覽器" } From a9fed3a9e79b0886ec7e2a0f068727cf02d38e45 Mon Sep 17 00:00:00 2001 From: "Iru Cai (vimacs)" Date: Mon, 28 Aug 2017 02:08:13 +0000 Subject: [PATCH 14/52] Translated using Weblate (Chinese (Simplified)) Currently translated at 60.5% (588 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 90 ++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 288b5b4357..a026beb68d 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -501,5 +501,93 @@ "Example": "例子", "Create": "创建", "Edit Group": "编辑群", - "Failed to upload image": "上传图像失败" + "Failed to upload image": "上传图像失败", + "Add a widget": "添加一个小部件", + "en-us": "英语(美国)", + "en-za": "英语(南非)", + "es-ar": "西班牙语(阿根廷)", + "es-cl": "西班牙语(智利)", + "es-co": "西班牙语(哥伦比亚)", + "es-cr": "西班牙语(哥斯达黎加)", + "es-mx": "西班牙语(墨西哥)", + "es": "西班牙语(西班牙)", + "fr-be": "法语(比利时)", + "fr-ca": "法语(加拿大)", + "fr-ch": "法语(瑞士)", + "hi": "印地语", + "hr": "克罗地亚语", + "hu": "匈牙利语", + "id": "印尼语", + "is": "冰岛语", + "it-ch": "意大利语(瑞士)", + "ji": "意第绪语", + "a room": "一个聊天室", + "Accept": "接受", + "Access Token:": "访问令牌:", + "Cannot add any more widgets": "无法添加更多小组件", + "Delete widget": "删除小组件", + "Define the power level of a user": "定义一个用户的特权级", + "Drop here to tag %(section)s": "拖拽到这里标记 %(section)s", + "Enable automatic language detection for syntax highlighting": "启用自动语言检测用于语法高亮", + "Failed to change power level": "修改特权级别失败", + "Hide avatar and display name changes": "隐藏头像和显示名称的修改", + "Kick": "踢出", + "Kicks user with given id": "踢出指定 ID 的用户", + "Last seen": "上次看见", + "Level:": "级别:", + "Local addresses for this room:": "这个聊天室的本地地址:", + "New passwords must match each other.": "新密码必须互相匹配。", + "Power level must be positive integer.": "特权级别必须是正整数。", + "Reason: %(reasonText)s": "原因: %(reasonText)s", + "Revoke Moderator": "撤销主持人", + "Revoke widget access": "撤销小部件的访问", + "Remote addresses for this room:": "这个聊天室的远程地址:", + "Remove Contact Information?": "移除联系人信息?", + "Remove %(threePid)s?": "移除 %(threePid)s?", + "Results from DuckDuckGo": "来自 DuckDuckGo 的结果", + "Room contains unknown devices": "聊天室有未知设备", + "%(roomName)s does not exist.": "%(roomName)s 不存在。", + "Save": "保存", + "Searching known users": "搜索已知的用户", + "Send anyway": "无论任何都发送", + "Sets the room topic": "设置聊天室主题", + "Show Text Formatting Toolbar": "显示文字格式工具栏", + "There was a problem logging in.": "登录出现了问题。", + "This room has no local addresses": "这个聊天室没有本地地址", + "This doesn't appear to be a valid email address": "这看起来不是一个合法的电子邮件地址", + "This is a preview of this room. Room interactions have been disabled": "这是这个聊天室的一个预览。聊天室交互已禁用", + "This phone number is already in use": "此电话号码已经被使用", + "This room": "这个聊天室", + "This room is not accessible by remote Matrix servers": "这个聊天室无法被远程 Matrix 服务器访问", + "This room's internal ID is": "这个聊天室的内部 ID 是", + "Turn Markdown off": "关闭 Markdown", + "Turn Markdown on": "打开 Markdown", + "Unable to create widget.": "无法创建小部件。", + "Unban": "解除封禁", + "Unable to capture screen": "无法录制屏幕", + "Unable to enable Notifications": "无法启用通知", + "Unable to load device list": "无法加载设备列表", + "Undecryptable": "无法解密的", + "Unencrypted room": "未加密的聊天室", + "unencrypted": "未加密的", + "Unencrypted message": "未加密的消息", + "unknown caller": "未知的呼叫者", + "unknown device": "未知设备", + "unknown": "未知的", + "Unnamed Room": "未命名的聊天室", + "Unverified": "未验证", + "uploaded a file": "上传一个文件", + "Upload avatar": "上传头像", + "Upload Failed": "上传失败", + "Upload Files": "上传文件", + "Upload file": "上传文件", + "Usage": "用法", + "Who can read history?": "谁可以阅读历史消息?", + "You are not in this room.": "你不在这个聊天室。", + "You have no visible notifications": "你没有可见的通知", + "Missing password.": "缺少密码。", + "Passwords don't match.": "密码不匹配。", + "I already have an account": "我已经有一个帐号", + "Unblacklist": "移出黑名单", + "Not a valid Riot keyfile": "不是一个合法的 Riot 密钥文件" } From ff498e4c3a5a400627292212b1346c6e1a2373d4 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Mon, 28 Aug 2017 08:35:55 +0000 Subject: [PATCH 15/52] Translated using Weblate (Basque) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/eu/ --- src/i18n/strings/eu.json | 67 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 308fa36900..8ffc2befa0 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -370,7 +370,7 @@ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s erabiltzaileak gelaren izena kendu du.", "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s erabiltzaileak gaia aldatu du beste honetara: \"%(topic)s\".", "Changes to who can read history will only apply to future messages in this room": "Historiala irakurtzeko baimenen aldaketak gela honetara hemendik aurrera heldutako mezuei aplikatuko zaizkie", - "Clear Cache and Reload": "Garbitu cache eta birkargatu", + "Clear Cache and Reload": "Garbitu cachea eta birkargatu", "Devices will not yet be able to decrypt history from before they joined the room": "Gailuek ezin izango dute taldera elkartu aurretiko historiala deszifratu", "Disable inline URL previews by default": "Desgaitu URLen aurrebista lehenetsita", "Disinvite": "Kendu gonbidapena", @@ -530,7 +530,7 @@ "%(senderName)s removed their profile picture.": "%(senderName)s erabiltzaileak bere profileko argazkia kendu du.", "Remove %(threePid)s?": "Kendu %(threePid)s?", "%(senderName)s requested a VoIP conference.": "%(senderName)s erabiltzaileak VoIP konferentzia bat eskatu du.", - "Report it": "Salatu", + "Report it": "Eman berri", "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Oraingoz pasahitza aldatzeak gailu guztietako muturretik muturrerako zifratze-gakoak berrezarriko ditu, eta ezin izango dituzu zifratutako txatetako historialak irakurri ez badituzu aurretik zure gelako gakoak esportatzen eta aldaketa eta gero berriro inportatzen.", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Une honetan egiaztatu gabeko gailuak blokeatzen ari zara, gailu hauetara mezuak bidali ahal izateko egiaztatu behar dituzu.", "restore": "berreskuratu", @@ -885,7 +885,7 @@ "for %(amount)sh": "%(amount)sh", "for %(amount)sd": "%(amount)se", "Updates": "Eguneraketak", - "Check for update": "Egiaztatu eguneraketa", + "Check for update": "Bilatu ekuneraketa", "Start chatting": "Hasi txateatzen", "Start Chatting": "Hasi txateatzen", "Click on the button below to start chatting!": "Egin klik beheko botoian txateatzen hasteko!", @@ -913,5 +913,64 @@ "Encryption key request": "Zifratze-gakoa eskatuta", "Deops user with given id": "Emandako ID-a duen erabiltzailea mailaz jaisten du", "had": "zuen", - "Disable Peer-to-Peer for 1:1 calls": "Desgaitu P2P biren arteko deietan" + "Disable Peer-to-Peer for 1:1 calls": "Desgaitu P2P biren arteko deietan", + "Add a widget": "Gehitu trepeta bat", + "Allow": "Baimendu", + "and %(count)s others....other": "eta beste %(count)s...", + "and %(count)s others....one": "eta beste bat...", + "Cannot add any more widgets": "Ezin dira trepeta gehiago gehitu", + "Changes colour scheme of current room": "Gela honen kolore eskema aldatzen du", + "Delete widget": "Ezabatu trepeta", + "Define the power level of a user": "Zehaztu erabiltzaile baten botere maila", + "Do you want to load widget from URL:": "Trepeta bat kargatu nahi duzu URL honetatik:", + "Edit": "Editatu", + "Enable automatic language detection for syntax highlighting": "Gaitu hizkuntza antzemate automatikoa sintaxia nabarmentzeko", + "Hide Apps": "Ezkutatu aplikazioak", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Ezkutatu elkartze/irtete mezuak (gonbidapenak/ateratzeak/debekuak ez dira aldatzen)", + "Hide avatar and display name changes": "Ezkutatu abatarra eta pantaila-izen aldaketak", + "Integrations Error": "Integrazio errorea", + "Publish this room to the public in %(domain)s's room directory?": "Argitaratu gela hau publikora %(domain)s domeinuko gelen direktorioan?", + "Matrix Apps": "Matrix Aplikazioak", + "AM": "AM", + "PM": "PM", + "NOTE: Apps are not end-to-end encrypted": "OHARRA: Aplikazioek ez dute muturretik muturrerako zifratzea", + "Revoke widget access": "Indargabetu trepetaren sarbidea", + "Sets the room topic": "Gelaren gaia ezartzen du", + "Show Apps": "Erakutsi aplikazioak", + "The maximum permitted number of widgets have already been added to this room.": "Gehienez onartzen diren trepeta kopurua gehitu da gela honetara.", + "To get started, please pick a username!": "Hasteko, hautatu erabiltzaile-izen bat!", + "Unable to create widget.": "Ezin izan da trepeta sortu.", + "Unbans user with given id": "ID zehatz bat duen erabiltzaileari debekua kentzen dio", + "You are not in this room.": "Ez zaude gela honetan.", + "You do not have permission to do that in this room.": "Ez duzu gela honetan hori egiteko baimenik.", + "Autocomplete Delay (ms):": "Osatze automatikoaren atzerapena (ms):", + "This Home server does not support groups": "Hasiera zerbitzari honek ez ditu taldeak onartzen", + "Loading device info...": "Gailuaren informazioa kargatzen...", + "Groups": "Taldeak", + "Create a new group": "Sortu talde berria", + "Create Group": "Sortu taldea", + "Group Name": "Taldearen izena", + "Example": "Adibidea", + "Create": "Sortu", + "Group ID": "Taldearen IDa", + "+example:%(domain)s": "+adibidea:%(domain)s", + "Room creation failed": "Taldea sortzeak huts egin du", + "You are a member of these groups:": "Talde hauetako kidea zara:", + "Join an existing group": "Elkartu badagoen talde batetara", + "Featured Rooms:": "Nabarmendutako gelak:", + "Featured Users:": "Nabarmendutako erabiltzaileak:", + "Edit Group": "Editatu taldea", + "Failed to update group": "Taldea eguneratzeak huts egin du", + "Group IDs must be of the form +localpart:%(domain)s": "Taldeen IDek forma hau dute +partelokala:%(domain)s", + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Une honetan zure hasiera zerbitzarian besterik ezin dituzu sortu taldeak: erabili %(domain)s bukaera duen talde ID bat", + "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Sortu talde bat zure komunitatea adierazteko! Zehaztu talde multzo bat eta zure hasiera horri pertsonalizatua zure espazioa markatzeko Matrix unibertsoan.", + "Error whilst fetching joined groups": "Errorea elkartutako taldeak eskuratzean", + "Automatically replace plain text Emoji": "Automatikoki ordezkatu Emoji testu soila", + "Failed to upload image": "Irudia igotzeak huts egin du", + "Hide avatars in user and room mentions": "Ezkutatu abatarrak erabiltzaile eta gelen aipamenetan", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s trepeta gehitu du %(senderName)s erabiltzaileak", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s trepeta kendu du %(senderName)s erabiltzaileak", + "Verifies a user, device, and pubkey tuple": "Erabiltzaile, gailu eta gako publiko multzoa egiaztatzen du", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Dagoen talde batetara elkartzeko taldearen identifikatzailea ezagutu behar duzu, honen antza du: +adibidea:matrix.org.", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot egiaztaketa orain ez dago eskuragarri mahaigainean - erabili web nabigatzailea" } From e66c7bf623bcd30f783e83131b4bfcbb47187192 Mon Sep 17 00:00:00 2001 From: Silke Date: Sun, 27 Aug 2017 14:27:15 +0000 Subject: [PATCH 16/52] Translated using Weblate (Dutch) Currently translated at 94.2% (915 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/ --- src/i18n/strings/nl.json | 41 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 234fc8c03a..f56cc613da 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -141,10 +141,8 @@ "%(items)s and %(remaining)s others": "%(items)s en %(remaining)s andere", "%(items)s and one other": "%(items)s en één andere", "%(items)s and %(lastItem)s": "%(items)s en %(lastItem)s", - "and %(count)s others...": { - "other": "en %(count)s andere...", - "one": "en één andere..." - }, + "and %(count)s others....other": "en %(count)s andere...", + "and %(count)s others....one": "en één andere...", "%(names)s and %(lastPerson)s are typing": "%(names)s en %(lastPerson)s zijn aan het typen", "%(names)s and one other are typing": "%(names)s en één andere zijn aan het typen", "%(names)s and %(count)s others are typing": "%(names)s en %(count)s andere zijn aan het typen", @@ -174,7 +172,7 @@ "Change Password": "Wachtwoord veranderen", "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s heeft zijn of haar weergave naam veranderd van %(oldDisplayName)s naar %(displayName)s.", "%(senderName)s changed their profile picture.": "%(senderName)s heeft zijn of haar profiel foto veranderd.", - "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s heeft de rank van %(powerLevelDiffText)s gewijzigd.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s heeft het machtsniveau van %(powerLevelDiffText)s gewijzigd.", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s heeft de kamer naam van %(roomName)s gewijzigd.", "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s heeft het onderwerp gewijzigd naar \"%(topic)s\".", "Changes to who can read history will only apply to future messages in this room": "Veranderingen aan wie de historie kan lezen worden alleen maar toegepast op toekomstige berichten in deze kamer", @@ -336,15 +334,15 @@ "Cryptography": "Cryptografie", "Current password": "Huidig wachtwoord", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s heeft de naam van de kamer verwijderd.", - "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of gebruik een reeds bestaande", + "Create a new chat or reuse an existing one": "Maak een nieuwe chat aan of ga verder met een bestaande", "Create Room": "Maak een kamer", - "Curve25519 identity key": "Curve25519 identiteitssleutel", + "Curve25519 identity key": "Curve25519-identiteitssleutel", "/ddg is not a command": "/ddg is geen commando", "Deactivate Account": "Account Deactiveren", "Deactivate my account": "Mijn account deactiveren", "Decline": "Weigeren", "Decrypt %(text)s": "Ontsleutel %(text)s", - "Decryption error": "Fout bij het ontsleutelen", + "Decryption error": "Ontsleutelfout", "Delete": "Verwijderen", "demote": "degraderen", "Device already verified!": "Apparaat reeds geverifieerd!", @@ -356,10 +354,10 @@ "Devices will not yet be able to decrypt history from before they joined the room": "Apparaten kunnen nog niet de geschiedenis van voordat ze de ruimte betraden ontsleutelen", "Direct chats": "Privégesprekken", "Disable Notifications": "Notificaties uitschakelen", - "Disable markdown formatting": "Opmaak formatering uitschakelen", + "Disable markdown formatting": "Markdown-opmaak uitschakelen", "Disinvite": "Uitnodiging terugtrekken", "Display name": "Weergavenaam", - "Don't send typing notifications": "Geen typ notificatie sturen", + "Don't send typing notifications": "Geen typnotificatie sturen", "Download %(text)s": "%(text)s Downloaden", "Drop File Here": "Plaats Bestand Hier", "Ed25519 fingerprint": "Ed25519 vingerafdruk", @@ -369,13 +367,13 @@ "Claimed Ed25519 fingerprint key": "Vereiste Ed25519 vingerafdruk sleutel", "Custom": "Aangepast", "Custom level": "Aangepast niveau", - "Deops user with given id": "Ontmachtigd gebruiker met het gegeven id", + "Deops user with given id": "Ontmachtigd gebruiker met het gegeven ID", "Default": "Standaard", - "Disable inline URL previews by default": "URL voorvertoning standaard uitschakelen", + "Disable inline URL previews by default": "URL-voorvertoningen standaard uitschakelen", "Displays action": "Weergeeft actie", "Drop here to tag %(section)s": "Hiernaartoe verplaatsen om %(section)s te etiketteren", "Email, name or matrix ID": "E-mail, naam of matrix ID", - "Emoji": "Emoticon", + "Emoji": "Emoji", "Enable encryption": "Versleuteling inschakelen", "Enable Notifications": "Notificaties inschakelen", "enabled": "ingeschakeld", @@ -392,7 +390,7 @@ "Enter passphrase": "Voer wachtzin in", "Error decrypting attachment": "Fout tijdens het ontsleutelen van de bijlage", "Error: Problem communicating with the given homeserver.": "Fout: Er doet zich een probleem voor met het communiceren met de gegeven thuisserver.", - "Event information": "Gebeurtenis informatie", + "Event information": "Gebeurtenis-informatie", "Existing Call": "Bestaande oproep", "Export": "Exporteren", "Export E2E room keys": "Exporteer E2E ruimte sleutels", @@ -414,7 +412,7 @@ "Failed to set avatar.": "Niet gelukt om de avatar in te stellen.", "Failed to set display name": "Niet gelukt om de weergavenaam in te stellen", "Failed to set up conference call": "Niet gelukt om een vergadergesprek te maken", - "Failed to toggle moderator status": "Niet gelukt om de moderator status te veranderen", + "Failed to toggle moderator status": "Niet gelukt om de moderatorstatus te veranderen", "Failed to unban": "Niet gelukt om te ontbannen", "Failed to upload file": "Niet gelukt om het bestand te uploaden", "Failed to upload profile picture!": "Niet gelukt om een profiel foto te uploaden!", @@ -439,7 +437,7 @@ "had": "had", "Hangup": "Ophangen", "Hide read receipts": "Leesbewijzen verbergen", - "Hide Text Formatting Toolbar": "Tekst formaterings-gereedschapsbalk verbergen", + "Hide Text Formatting Toolbar": "Tekstopmaakgereedschapsbalk verbergen", "Historical": "Historische", "Home": "Home", "Homeserver is": "Thuisserver is", @@ -500,7 +498,7 @@ "Never send encrypted messages to unverified devices in this room": "Nooit versleutelde berichten naar niet geverifieerde apparaten sturen in deze ruimte", "Never send encrypted messages to unverified devices in this room from this device": "Nooit vanaf dit apparaat versleutelde berichten naar niet geverifieerde apparaten in deze ruimte sturen", "New address (e.g. #foo:%(localDomain)s)": "Nieuw adres (bijv. #foo:%(localDomain)s)", - "New Composer & Autocomplete": "Nieuwe Componist & Automatisch Aanvullen", + "New Composer & Autocomplete": "Nieuw tekstopmaakvenster & automatisch aanvullen", "New passwords don't match": "Nieuwe wachtwoorden komen niet overeen", "New passwords must match each other.": "Nieuwe wachtwoorden moeten overeenkomen.", "Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een kamer is ingeschakeld kan het niet meer worden uitgeschakeld (voor nu)", @@ -508,7 +506,7 @@ "Only people who have been invited": "Alleen personen die zijn uitgenodigd", "Otherwise, click here to send a bug report.": "Klik anders hier om een foutmelding te versturen.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Bekijk je e-mail en klik op de link die het bevat. Zodra dit klaar is, klik op verder gaan.", - "Power level must be positive integer.": "Machtsniveau moet een positief heel getal zijn.", + "Power level must be positive integer.": "Machtsniveau moet een positief geheel getal zijn.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s heeft zijn of haar weergavenaam (%(oldDisplayName)s) verwijderd.", "%(senderName)s removed their profile picture.": "%(senderName)s heeft zijn of haar profielfoto verwijderd.", "Failed to kick": "Niet gelukt om te er uit te zetten", @@ -615,7 +613,7 @@ "to start a chat with someone": "om een gesprek met iemand te starten", "to tag as %(tagName)s": "om als %(tagName)s te etiketteren", "to tag direct chat": "als directe chat etiketteren", - "To use it, just wait for autocomplete results to load and tab through them.": "Om het te gebruiken, wacht voor de automatisch aanvullen resultaten om te laden en kijk er door heen.", + "To use it, just wait for autocomplete results to load and tab through them.": "Om het te gebruiken, wacht tot de automatisch aangevulde resultaten geladen zijn en tab er doorheen.", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Je probeerde een specifiek punt in de tijdlijn van deze ruimte te laden maar je hebt niet de permissie om de desbetreffende berichten te zien.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Het is niet gelukt om een specifiek punt in de tijdlijn van deze ruimte te laden.", "Turn Markdown off": "Doe opmaak uit", @@ -765,7 +763,7 @@ "%(oneUser)sjoined and left": "%(oneUser)s is toegetreden en weer vertrokken", "%(severalUsers)sleft and rejoined %(repeats)s times": "%(severalUsers)s zijn %(repeats)s keer vertrokken en opnieuw toegetreden", "%(oneUser)sleft and rejoined %(repeats)s times": "%(oneUser)s is %(repeats)s keer vertrokken en opnieuw toegetreden", - "%(severalUsers)sleft and rejoined": "%(severalUsers) zijn vertrokken en opnieuw toegetreden", + "%(severalUsers)sleft and rejoined": "%(severalUsers)s zijn vertrokken en opnieuw toegetreden", "%(oneUser)sleft and rejoined": "%(oneUser)s is vertrokken en opnieuw toegetreden", "%(severalUsers)srejected their invitations %(repeats)s times": "%(severalUsers)s hebben hun uitnodiging uitnodiging %(repeats)s keer afgewezen", "%(oneUser)srejected their invitation %(repeats)s times": "%(oneUser)s heeft zijn of haar uitnodiging %(repeats)s keer afgewezen", @@ -920,5 +918,6 @@ "Ignore request": "Verzoek negeren", "You added a new device '%(displayName)s', which is requesting encryption keys.": "Je hebt een nieuwe apparaat '%(displayName)s' toegevoegd die om versleutelingssleutels vraagt.", "Your unverified device '%(displayName)s' is requesting encryption keys.": "Je niet geverifieerde apparaat '%(displayName)s' vraagt naar versleutelingssleutels.", - "Encryption key request": "Verzoek voor versleutelingssleutel" + "Encryption key request": "Verzoek voor versleutelingssleutel", + "Define the power level of a user": "Definieer het machtsniveau van een gebruiker" } From 4a55fcbc269c83fb82a3d21ef1df52d1b4614f3f Mon Sep 17 00:00:00 2001 From: Nathan van Beelen Date: Mon, 28 Aug 2017 15:01:04 +0000 Subject: [PATCH 17/52] Translated using Weblate (Dutch) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/ --- src/i18n/strings/nl.json | 58 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index f56cc613da..d8710bde2d 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -919,5 +919,61 @@ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Je hebt een nieuwe apparaat '%(displayName)s' toegevoegd die om versleutelingssleutels vraagt.", "Your unverified device '%(displayName)s' is requesting encryption keys.": "Je niet geverifieerde apparaat '%(displayName)s' vraagt naar versleutelingssleutels.", "Encryption key request": "Verzoek voor versleutelingssleutel", - "Define the power level of a user": "Definieer het machtsniveau van een gebruiker" + "Define the power level of a user": "Definieer het machtsniveau van een gebruiker", + "Add a widget": "Voeg een widget toe", + "Allow": "Toestaan", + "Cannot add any more widgets": "Er kunnen niet meer widgets toegevoegd worden", + "Changes colour scheme of current room": "Verander het kleurenschema van de huidige ruimte", + "Delete widget": "Widget verwijderen", + "Do you want to load widget from URL:": "Wil je de widget laden van de URL:", + "Edit": "Wijzigen", + "Enable automatic language detection for syntax highlighting": "Automatische taaldetectie voor zinsbouw markeringen aanzetten", + "Hide Apps": "Apps verbergen", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Toetreed/verlaat berichten verbergen (uitnodigingen/verwijderingen/verbanningen zullen ongeschonden blijven)", + "Hide avatar and display name changes": "Avatar en weergavenaam wijzigingen verbergen", + "Integrations Error": "Integraties Fout", + "Publish this room to the public in %(domain)s's room directory?": "Deze ruimte publiekelijk maken in %(domain)s's ruimte catalogus?", + "Matrix Apps": "Matrix Apps", + "AM": "AM", + "PM": "PM", + "NOTE: Apps are not end-to-end encrypted": "OPMERKING: Apps zijn niet eind-tot-eind versleuteld", + "Revoke widget access": "Toegang tot widget intrekken", + "Sets the room topic": "Wijzigt het ruimte onderwerp", + "Show Apps": "Apps Weergeven", + "The maximum permitted number of widgets have already been added to this room.": "Het maximum aantal toegestane widgets is al aan deze ruimte toegevoegd.", + "To get started, please pick a username!": "Om te beginnen, kies een gebruikersnaam!", + "Unable to create widget.": "Niet in staat om een widget te maken.", + "Unbans user with given id": "Ontbant de gebruiker met het gegeven id", + "You are not in this room.": "Je zit niet in deze ruimte.", + "You do not have permission to do that in this room.": "Je hebt geen permissie om dat te doen in deze ruimte.", + "Verifies a user, device, and pubkey tuple": "Verifieert een gebruiker, apparaat en pubkey tupel", + "Autocomplete Delay (ms):": "Automatisch aanvullen vertraging (ms):", + "This Home server does not support groups": "Deze thuisserver ondersteunt geen groepen", + "Loading device info...": "Apparaat info aan het laden...", + "Groups": "Groepen", + "Create a new group": "Maak een nieuwe groep", + "Create Group": "Groep Aanmaken", + "Group Name": "Groepnaam", + "Example": "Voorbeeld", + "Create": "Creëer", + "Group ID": "Groep ID", + "+example:%(domain)s": "+voorbeeld:%(domain)s", + "Group IDs must be of the form +localpart:%(domain)s": "Groep IDs moeten er als +lokaalgedeelte:%(domain)s uit zien", + "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "Het is momenteel mogelijk om groepen op je eigen thuisserver aan te maken: gebruik een groep ID dat eindigt met %(domain)s", + "Room creation failed": "Het aanmaken van de ruimte is niet gelukt", + "You are a member of these groups:": "Je bent een deelnemer van deze groepen:", + "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Maak een groep aan om je gemeenschap te representateren! Defineer een set van ruimtes en maak je eigen aangepaste homepagina om je eigen plek in het Matrix universum te creëren.", + "Join an existing group": "Treed tot een bestaande groep toe", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Om tot een bestaande groep toe te treden moet je groep identificatie weten; dit zal er ongeveer uit zien als +voorbeeld:matrix.org.", + "Featured Rooms:": "Prominente Ruimtes:", + "Error whilst fetching joined groups": "Er is een fout opgetreden tijdens het ophalen van de tot toegretreden groepen", + "Featured Users:": "Prominente Gebruikers:", + "Edit Group": "Groep Wijzigen", + "Automatically replace plain text Emoji": "Automatisch normale tekst vervangen met Emoji", + "Failed to upload image": "Het is niet gelukt om de afbeelding te uploaden", + "Failed to update group": "Het is niet gelukt om de groep bij te werken", + "Hide avatars in user and room mentions": "Avatars in gebruiker en ruimte vermeldingen verbergen", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget toegevoegd door %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget verwijderd door %(senderName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is momenteel niet beschikbaar op de desktop - gebruik in plaats daarvan een webbrowser" } From fdfa33b6032375d0e5183bf04b57b9564dbc4993 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Mon, 28 Aug 2017 15:05:39 +0000 Subject: [PATCH 18/52] Translated using Weblate (German) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 58 ++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 8b49bfddcc..6e51145b28 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -9,7 +9,7 @@ "Historical": "Archiv", "New passwords must match each other.": "Die neuen Passwörter müssen identisch sein.", "A new password must be entered.": "Es muss ein neues Passwort eingegeben werden.", - "The email address linked to your account must be entered.": "Es muss die mit dem Benutzerkonto verbundene Email-Adresse eingegeben werden.", + "The email address linked to your account must be entered.": "Es muss die mit dem Benutzerkonto verbundene E-Mail-Adresse eingegeben werden.", "Failed to send email: ": "Email konnte nicht versendet werden: ", "unknown device": "Unbekanntes Gerät", "NOT verified": "NICHT verifiziert", @@ -21,15 +21,15 @@ "Ed25519 fingerprint": "Ed25519-Fingerprint", "User ID": "Benutzer-ID", "Curve25519 identity key": "Curve25519-Identitäts-Schlüssel", - "Claimed Ed25519 fingerprint key": "Geforderter Ed25519 Fingerprint Schlüssel", + "Claimed Ed25519 fingerprint key": "Geforderter Ed25519-Fingerprint-Schlüssel", "none": "keiner", "Algorithm": "Algorithmus", "unencrypted": "unverschlüsselt", "Decryption error": "Entschlüsselungs Fehler", "Session ID": "Sitzungs-ID", - "End-to-end encryption information": "Ende-zu-Ende-Verschlüsselungs-Informationen", + "End-to-end encryption information": "Informationen zur Ende-zu-Ende-Verschlüsselung", "Event information": "Ereignis-Information", - "Sender device information": "Absender Geräte Informationen", + "Sender device information": "Geräte-Informationen des Absenders", "Displays action": "Zeigt Aktionen an", "Bans user with given id": "Schließt den Benutzer mit der angegebenen ID dauerhaft aus dem Raum aus", "Deops user with given id": "Entfernt OP beim Benutzer mit der angegebenen ID", @@ -84,7 +84,7 @@ "Deactivate Account": "Benutzerkonto deaktivieren", "Deactivate my account": "Mein Benutzerkonto deaktivieren", "decline": "Ablehnen", - "Devices will not yet be able to decrypt history from before they joined the room": "Geräte werden nicht in der Lage sein, den Chatverlauf vor dem Betreten des Raumes zu entschlüsseln", + "Devices will not yet be able to decrypt history from before they joined the room": "Geräte werden nicht in der Lage sein, den bisherigen Chatverlauf vor dem Betreten des Raumes zu entschlüsseln", "Display name": "Anzeigename", "Email Address": "E-Mail-Adresse", "Email, name or matrix ID": "E-Mail, Name oder Matrix-ID", @@ -95,7 +95,7 @@ "ended the call.": "beendete den Anruf.", "End-to-end encryption is in beta and may not be reliable": "Die Ende-zu-Ende-Verschlüsselung befindet sich aktuell im Beta-Stadium und ist eventuell noch nicht hundertprozentig zuverlässig", "Failed to send email": "Fehler beim Senden der E-Mail", - "Account": "Konto", + "Account": "Benutzerkonto", "Add phone number": "Telefonnummer hinzufügen", "an address": "an Adresse", "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Dein Passwort wurde erfolgreich geändert. Du wirst erst Benachrichtigungen auf anderen Geräten empfangen können, wenn du dich dort erneut anmeldest", @@ -551,7 +551,7 @@ "Sunday": "Sonntag", "Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s", "Failed to join the room": "Fehler beim Betreten des Raumes", - "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte gebe den Verifikationscode ein, den er beinhaltet", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte den darin enthaltenen Verifizierungscode eingeben", "and %(count)s others....other": "und %(count)s weitere...", "and %(count)s others....one": "und ein(e) weitere(r)...", "Are you sure?": "Bist du sicher?", @@ -566,7 +566,7 @@ "Decrypt %(text)s": "%(text)s entschlüsseln", "Delete": "Löschen", "Devices": "Geräte", - "Direct chats": "Direkte Chats", + "Direct chats": "Direkt-Chats", "Disinvite": "Einladung zurückziehen", "Download %(text)s": "%(text)s herunterladen", "Enter Code": "Code eingeben", @@ -617,7 +617,7 @@ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Es wurde versucht, einen bestimmten Punkt im Chatverlauf dieses Raumes zu laden. Dir fehlt jedoch die Berechtigung, die betreffende Nachricht zu sehen.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Es wurde versucht, einen bestimmten Punkt im Chatverlauf dieses Raumes zu laden, der Punkt konnte jedoch nicht gefunden werden.", "Turn Markdown off": "Markdown deaktiveren", - "Turn Markdown on": "Markdown einschalten", + "Turn Markdown on": "Markdown aktivieren", "Unable to load device list": "Geräteliste konnte nicht geladen werden", "Unknown room %(roomId)s": "Unbekannter Raum %(roomId)s", "Usage: /markdown on|off": "Verwendung: /markdown on|off", @@ -628,10 +628,10 @@ "Room": "Raum", "(~%(searchCount)s results)": "(~%(searchCount)s Ergebnisse)", "Cancel": "Abbrechen", - "bold": "fett", - "italic": "kursiv", - "strike": "durchstreichen", - "underline": "unterstreichen", + "bold": "Fett", + "italic": "Kursiv", + "strike": "Durchgestrichen", + "underline": "Unterstrichen", "code": "Code", "quote": "Zitat", "bullet": "Aufzählung", @@ -743,9 +743,9 @@ "To continue, please enter your password.": "Zum fortfahren bitte Passwort eingeben.", "Device name": "Geräte-Name", "Device key": "Geräte-Schlüssel", - "In future this verification process will be more sophisticated.": "Zukünftig wird dieser Verifizierungsprozess technisch ausgereifter und eleganter gestaltet werden.", + "In future this verification process will be more sophisticated.": "Zukünftig wird der Verifizierungsprozess technisch ausgereifter und eleganter gestaltet werden.", "Verify device": "Gerät verifizieren", - "I verify that the keys match": "Ich bestätige, dass die Schlüssel passen", + "I verify that the keys match": "Ich bestätige, dass die Schlüssel identisch sind", "Unable to restore session": "Sitzungswiederherstellung fehlgeschlagen", "Continue anyway": "Trotzdem fortfahren", "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Dein Anzeigename ist der Name, der anderen Nutzern angezeigt wird, wenn du in Räumen kommunizierst. Welchen Anzeigenamen möchtest du wählen?", @@ -759,7 +759,7 @@ "Sign in with CAS": "Mit CAS anmelden", "Custom Server Options": "Erweiterte Server-Optionen", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Du kannst die erweiterten Server-Optionen nutzen, um dich an anderen Matrix-Servern anzumelden, indem du eine andere Heimserver-URL angibst.", - "This allows you to use this app with an existing Matrix account on a different home server.": "Dies erlaubt dir diese App mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu verwenden.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Dies erlaubt es dir, diese App mit einem existierenden Matrix-Benutzerkonto auf einem anderen Heimserver zu verwenden.", "Dismiss": "Ablehnen", "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kannst auch einen angepassten Idantitätsserver angeben aber dies wird typischerweise Interaktionen mit anderen Nutzern auf Basis der E-Mail-Adresse verhindern.", "Please check your email to continue registration.": "Bitte prüfe deine E-Mails, um mit der Registrierung fortzufahren.", @@ -798,9 +798,9 @@ "Online": "Online", " (unsupported)": " (nicht unterstützt)", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dieser Prozess erlaubt es dir, die zuvor von einem anderen Matrix-Client exportierten Verschlüsselungs-Schlüssel zu importieren. Danach kannst du alle Nachrichten entschlüsseln, die auch bereits auf dem anderen Client entschlüsselt werden konnten.", - "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Dies wird dein Konto permanent unbenutzbar machen. Du wirst dich nicht mit derselben Nutzer-ID erneut registrieren können.", + "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Dies wird dein Benutzerkonto dauerhaft unbenutzbar machen. Du wirst nicht in der Lage sein, dich mit derselben Benutzer-ID erneut zu registrieren.", "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Um sicherzustellen, dass diesem Gerät vertraut werden kann, kontaktiere bitte den Eigentümer des Geräts über ein anderes Kommunikationsmittel (z.B. im persönlichen Gespräch oder durch einen Telefon-Anruf) und vergewissere dich, dass der Schlüssel, den der Eigentümer in den Nutzer-Einstellungen für dieses Gerät sieht, mit dem folgenden Schlüssel identisch ist:", - "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Wenn er passt, betätige den Bestätigen-Button unten. Wenn nicht, fängt jemand anderes dieses Gerät ab und du möchtest wahrscheinlich lieber den Blacklist-Button betätigen.", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Wenn er identisch ist, bitte den Bestätigen-Button unten verwenden. Falls er nicht identisch sein sollte, hat eine Fremdperson Kontrolle über dieses Gerät und es sollte gesperrt werden.", "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Bei der Wiederherstellung deiner letzten Sitzung ist ein Fehler aufgetreten. Um fortzufahren, musst du dich erneut anmelden. Ein zuvor verschlüsselter Chatverlauf wird in der Folge nicht mehr lesbar sein.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Wenn du zuvor eine aktuellere Version von Riot verwendet hast, ist deine Sitzung eventuell inkompatibel mit dieser Version. Bitte schließe dieses Fenster und kehre zur aktuelleren Version zurück.", "Blacklist": "Blockieren", @@ -811,7 +811,7 @@ "Idle": "Untätig", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Wir empfehlen dir, für jedes Gerät den Verifizierungsprozess durchzuführen, um sicherzustellen, dass sie tatsächlich ihrem rechtmäßigem Eigentümer gehören. Alternativ kannst du die Nachrichten auch ohne Verifizierung erneut senden.", "Ongoing conference call%(supportedText)s.": "Laufendes Konferenzgespräch%(supportedText)s.", - "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du wirst jetzt auf die Website eines Drittanbieters weitergeleitet, damit du dein Konto für die Verwendung von %(integrationsUrl)s authentifizieren kannst. Möchtest du fortfahren?", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du wirst jetzt auf die Website eines Drittanbieters weitergeleitet, damit du dein Benutzerkonto für die Verwendung von %(integrationsUrl)s authentifizieren kannst. Möchtest du fortfahren?", "Disable URL previews for this room (affects only you)": "URL-Vorschau für diesen Raum deaktivieren (betrifft nur dich)", "Start automatically after system login": "Nach System-Login automatisch starten", "Desktop specific": "Desktopspezifisch", @@ -839,7 +839,7 @@ "Export": "Export", "Failed to register as guest:": "Die Registrierung als Gast ist fehlgeschlagen:", "Guest access is disabled on this Home Server.": "Gastzugang ist auf diesem Heimserver deaktivert.", - "Import": "Import", + "Import": "Importieren", "Incorrect username and/or password.": "Inkorrekter Nutzername und/oder Passwort.", "Results from DuckDuckGo": "Ergebnisse von DuckDuckGo", "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Den Signaturschlüssel den du bereitstellst stimmt mit dem Schlüssel den du von %(userId)s's Gerät %(deviceId)s empfangen hast überein. Gerät als verifiziert markiert.", @@ -851,7 +851,7 @@ "device id: ": "Geräte-ID: ", "Device key:": "Geräte-Schlüssel:", "Email address (optional)": "E-Mail-Adresse (optional)", - "Publish this room to the public in %(domain)s's room directory?": "Diesen Raum mittels Raum-Verzeichnis von %(domain)s veröffentlichen?", + "Publish this room to the public in %(domain)s's room directory?": "Diesen Raum im Raum-Verzeichnis von %(domain)s veröffentlichen?", "Mobile phone number (optional)": "Mobilfunknummer (optional)", "Password:": "Passwort:", "Register": "Registrieren", @@ -943,7 +943,7 @@ "Set": "Setze", "Start authentication": "Authentifizierung beginnen", "Show Text Formatting Toolbar": "Text-Formatierungs-Werkzeugleiste anzeigen", - "This invitation was sent to an email address which is not associated with this account:": "Diese Einledung wurde an eine E-Mail-Adresse gesendet, die nicht mit diesem Konto verknüpft ist:", + "This invitation was sent to an email address which is not associated with this account:": "Diese Einladung wurde an eine E-Mail-Adresse gesendet, die nicht mit diesem Benutzerkonto verknüpft ist:", "This room": "In diesem Raum", "To link to a room it must have an address.": "Um einen Raum zu verlinken, muss er eine Adresse haben.", "Undecryptable": "Nicht entschlüsselbar", @@ -977,11 +977,11 @@ "You're not in any rooms yet! Press to make a room or to browse the directory": "Du bist bislang keinem Raum beigetreten! Auf klicken, um einen Raum zu erstellen, oder auf klicken, um das Raum-Verzeichnis zu durchsuchen", "To return to your account in future you need to set a password": "Um in Zukunft auf dein Benutzerkonto zugreifen zu können, musst du ein Passwort einrichten", "Skip": "Überspringen", - "Start verification": "Verifikation starten", - "Share without verifying": "Ohne Verifizierung teilen", - "Ignore request": "Anfrage ignorieren", - "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du hast das neue Gerät '%(displayName)s' hinzugefügt, welches nun Verschlüsselungs-Schlüssel anfragt.", - "Encryption key request": "Verschlüsselungs-Schlüssel-Anfrage", + "Start verification": "Verifizierung starten", + "Share without verifying": "Ohne Verifizierung verwenden", + "Ignore request": "Anforderung ignorieren", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du hast das neue Gerät '%(displayName)s' hinzugefügt, welches nun Verschlüsselungs-Schlüssel anfordert.", + "Encryption key request": "Anforderung von Verschlüsselungs-Schlüsseln", "Your unverified device '%(displayName)s' is requesting encryption keys.": "Dein nicht verifiziertes Gerät '%(displayName)s' fordert Verschlüsselungs-Schlüssel an.", "Updates": "Updates", "Check for update": "Suche nach Updates", @@ -998,7 +998,7 @@ "Matrix Apps": "Matrix Apps", "Revoke widget access": "Ziehe Widget-Zugriff zurück", "Sets the room topic": "Setzt das Raum-Thema", - "Show Apps": "Zeige Apps", + "Show Apps": "Apps anzeigen", "To get started, please pick a username!": "Um zu starten, wähle bitte einen Nutzernamen!", "Unable to create widget.": "Widget kann nicht erstellt werden.", "Unbans user with given id": "Entbanne Nutzer mit angegebener ID", @@ -1022,7 +1022,7 @@ "You are a member of these groups:": "Du bist Mitglied in folgenden Gruppen:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Erstelle eine Gruppe um deine Community darzustellen! Definiere eine Menge von Räumen und deine eigene angepasste Startseite um deinen Bereich im Matrix-Universum zu markieren.", "Join an existing group": "Trete eine existierenden Gruppe bei", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Um einer existierenden Gruppe beizutreten, musst du ihre Gruppen-Kennung wissen. Diese sieht z.B. aus wie '+example:matrix.org'.", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Um einer bereits vorhandenen Gruppe beitreten zu können, muss dir die Gruppen-Kennung bekannt sein. Diese sieht ungefähr so aus: '+example:matrix.org'.", "Featured Rooms:": "Hervorgehobene Räume:", "Error whilst fetching joined groups": "Fehler beim Laden beigetretener Gruppen", "Featured Users:": "Hervorgehobene Nutzer:", From 511e5d2d23571d9f4e242a46b94411aeec1d727f Mon Sep 17 00:00:00 2001 From: "Iru Cai (vimacs)" Date: Wed, 30 Aug 2017 10:18:43 +0000 Subject: [PATCH 19/52] Translated using Weblate (Chinese (Simplified)) Currently translated at 63.6% (618 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 36 ++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index a026beb68d..483112005c 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -236,8 +236,8 @@ "Hide removed messages": "隐藏被删除的消息", "Authentication": "认证", "Alias (optional)": "别名 (可选)", - "%(items)s and %(remaining)s others": "%(items)s 和其它 %(remaining)s 个", - "%(items)s and one other": "%(items)s 和其它一个", + "%(items)s and %(remaining)s others": "%(items)s 和其它 %(remaining)s 个人", + "%(items)s and one other": "%(items)s 和另一个人", "%(items)s and %(lastItem)s": "%(items)s 和 %(lastItem)s", "and %(count)s others....other": "和其它 %(count)s 个...", "and %(count)s others....one": "和其它一个...", @@ -589,5 +589,35 @@ "Passwords don't match.": "密码不匹配。", "I already have an account": "我已经有一个帐号", "Unblacklist": "移出黑名单", - "Not a valid Riot keyfile": "不是一个合法的 Riot 密钥文件" + "Not a valid Riot keyfile": "不是一个合法的 Riot 密钥文件", + "en-jm": "英语(牙买加)", + "es-pe": "西班牙语(秘鲁)", + "lv": "拉脱维亚语", + "ms": "马来西亚语", + "pl": "波兰语", + "pt": "葡萄牙语", + "ro": "罗马尼亚语", + "ru": "俄语", + "sk": "斯洛伐克语", + "sl": "斯洛文尼亚语", + "sr": "塞尔维亚语", + "th": "泰语", + "tr": "土耳其语", + "vi": "越南语", + "%(targetName)s accepted an invitation.": "%(targetName)s 接受了一个邀请。", + "Do you want to load widget from URL:": "你想从此 URL 加载小组件吗:", + "Hide join/leave messages (invites/kicks/bans unaffected)": "隐藏加入/离开消息(邀请/踢出/封禁不受影响)", + "Integrations Error": "集成错误", + "Publish this room to the public in %(domain)s's room directory?": "把这个聊天室发布到 %(domain)s 的聊天室目录吗?", + "Manage Integrations": "管理集成", + "Members only": "只有成员", + "No users have specific privileges in this room": "没有用户在这个聊天室有特殊权限", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s 发起了一个 %(callType)s 通话。", + "Please check your email and click on the link it contains. Once this is done, click continue.": "请检查你的电子邮箱并点击里面包含的链接。完成时请点击继续。", + "Press to start a chat with someone": "按下 来开始和某个人聊天。", + "%(senderName)s removed their profile picture.": "%(senderName)s 移除了他们的头像。", + "%(senderName)s requested a VoIP conference.": "%(senderName)s 请求一个 VoIP 会议。", + "Seen by %(userName)s at %(dateTime)s": "在 %(dateTime)s 被 %(userName)s 看到", + "Show Apps": "显示应用", + "Tagged as: ": "标记为:" } From d516906b368fdc23154567526417825dd910bae2 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 30 Aug 2017 13:52:46 +0100 Subject: [PATCH 20/52] Implement sticky date separators Use `react-sticky` to implement sticky date separators. This will pin a date separator to the top of the timeline panel when the separator scrolls out of the top of the view. A known issue of this is that the spinner, which is in line with event tiles in the timeline, will appear to push the stuck date separator down. In reality the first date separator after the spinner is in line with event tiles and is not stuck because the spinner forces the timeline to be scrolled slightly further down than it would be otherwise. But also, date separators in the timeline (not "stuck") have a greater height. Ideally the date separator would be suppressed whilst back paginating, but this will cause the stuck separator to flicker on and off. This is why the suppression has been removed. --- package.json | 1 + src/DateUtils.js | 44 ++++ src/components/structures/MessagePanel.js | 9 +- src/components/structures/ScrollPanel.js | 274 +++++++++++---------- src/components/structures/TimelinePanel.js | 1 - 5 files changed, 189 insertions(+), 140 deletions(-) diff --git a/package.json b/package.json index 661db4b6bc..c323e67ecf 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "react-addons-css-transition-group": "15.3.2", "react-dom": "^15.4.0", "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef", + "react-sticky": "^6.0.1", "sanitize-html": "^1.14.1", "text-encoding-utf-8": "^1.0.1", "url": "^0.11.0", diff --git a/src/DateUtils.js b/src/DateUtils.js index 78eef57eae..e7be394c17 100644 --- a/src/DateUtils.js +++ b/src/DateUtils.js @@ -30,6 +30,18 @@ function getDaysArray() { ]; } +function getLongDaysArray() { + return [ + _t('Sunday'), + _t('Monday'), + _t('Tuesday'), + _t('Wednesday'), + _t('Thursday'), + _t('Friday'), + _t('Saturday'), + ]; +} + function getMonthsArray() { return [ _t('Jan'), @@ -96,6 +108,38 @@ module.exports = { }); }, + formatDateSeparator: function(date) { + const days = getDaysArray(); + const longDays = getLongDaysArray(); + const months = getMonthsArray(); + + const today = new Date(); + const yesterday = new Date(); + yesterday.setDate(today.getDate() - 1); + + if (date.toDateString() === today.toDateString()) { + return _t('Today'); + } else if (date.toDateString() === yesterday.toDateString()) { + return _t('Yesterday'); + } else if (today.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) { + return longDays[date.getDay()]; + } else if (today.getTime() - date.getTime() < 365 * 24 * 60 * 60 * 1000) { + return _t('%(weekDayName)s, %(monthName)s %(day)s', { + weekDayName: days[date.getDay()], + monthName: months[date.getMonth()], + day: date.getDate(), + fullYear: date.getFullYear(), + }); + } else { + return _t('%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s', { + weekDayName: days[date.getDay()], + monthName: months[date.getMonth()], + day: date.getDate(), + fullYear: date.getFullYear(), + }); + } + }, + formatTime: function(date, showTwelveHour=false) { if (showTwelveHour) { return twelveHourTime(date); diff --git a/src/components/structures/MessagePanel.js b/src/components/structures/MessagePanel.js index 460ed43e82..6d999c9619 100644 --- a/src/components/structures/MessagePanel.js +++ b/src/components/structures/MessagePanel.js @@ -61,9 +61,6 @@ module.exports = React.createClass({ // for pending messages. ourUserId: React.PropTypes.string, - // true to suppress the date at the start of the timeline - suppressFirstDateSeparator: React.PropTypes.bool, - // whether to show read receipts manageReadReceipts: React.PropTypes.bool, @@ -517,10 +514,10 @@ module.exports = React.createClass({ _wantsDateSeparator: function(prevEvent, nextEventDate) { if (prevEvent == null) { - // first event in the panel: depends if we could back-paginate from - // here. - return !this.props.suppressFirstDateSeparator; + // First event in the panel always wants a DateSeparator + return true; } + const prevEventDate = prevEvent.getDate(); if (!nextEventDate || !prevEventDate) { return false; diff --git a/src/components/structures/ScrollPanel.js b/src/components/structures/ScrollPanel.js index a8a2ec181b..cbd2954918 100644 --- a/src/components/structures/ScrollPanel.js +++ b/src/components/structures/ScrollPanel.js @@ -17,6 +17,7 @@ limitations under the License. var React = require("react"); var ReactDOM = require("react-dom"); var GeminiScrollbar = require('react-gemini-scrollbar'); +import { StickyContainer } from 'react-sticky'; import Promise from 'bluebird'; var KeyCode = require('../../KeyCode'); @@ -77,111 +78,48 @@ if (DEBUG_SCROLL) { * scroll down further. If stickyBottom is disabled, we just save the scroll * offset as normal. */ -module.exports = React.createClass({ - displayName: 'ScrollPanel', +export default class ScrollPanel extends StickyContainer { - propTypes: { - /* stickyBottom: if set to true, then once the user hits the bottom of - * the list, any new children added to the list will cause the list to - * scroll down to show the new element, rather than preserving the - * existing view. - */ - stickyBottom: React.PropTypes.bool, + constructor() { + super(); + this.onResize = this.onResize.bind(this); + this.onScroll = this.onScroll.bind(this); + } - /* startAtBottom: if set to true, the view is assumed to start - * scrolled to the bottom. - * XXX: It's likley this is unecessary and can be derived from - * stickyBottom, but I'm adding an extra parameter to ensure - * behaviour stays the same for other uses of ScrollPanel. - * If so, let's remove this parameter down the line. - */ - startAtBottom: React.PropTypes.bool, - - /* onFillRequest(backwards): a callback which is called on scroll when - * the user nears the start (backwards = true) or end (backwards = - * false) of the list. - * - * This should return a promise; no more calls will be made until the - * promise completes. - * - * The promise should resolve to true if there is more data to be - * retrieved in this direction (in which case onFillRequest may be - * called again immediately), or false if there is no more data in this - * directon (at this time) - which will stop the pagination cycle until - * the user scrolls again. - */ - onFillRequest: React.PropTypes.func, - - /* onUnfillRequest(backwards): a callback which is called on scroll when - * there are children elements that are far out of view and could be removed - * without causing pagination to occur. - * - * This function should accept a boolean, which is true to indicate the back/top - * of the panel and false otherwise, and a scroll token, which refers to the - * first element to remove if removing from the front/bottom, and last element - * to remove if removing from the back/top. - */ - onUnfillRequest: React.PropTypes.func, - - /* onScroll: a callback which is called whenever any scroll happens. - */ - onScroll: React.PropTypes.func, - - /* onResize: a callback which is called whenever the Gemini scroll - * panel is resized - */ - onResize: React.PropTypes.func, - - /* className: classnames to add to the top-level div - */ - className: React.PropTypes.string, - - /* style: styles to add to the top-level div - */ - style: React.PropTypes.object, - }, - - getDefaultProps: function() { - return { - stickyBottom: true, - startAtBottom: true, - onFillRequest: function(backwards) { return Promise.resolve(false); }, - onUnfillRequest: function(backwards, scrollToken) {}, - onScroll: function() {}, - }; - }, - - componentWillMount: function() { + componentWillMount() { this._pendingFillRequests = {b: null, f: null}; this.resetScrollState(); - }, + } - componentDidMount: function() { + componentDidMount() { this.checkFillState(); - }, + } - componentDidUpdate: function() { + componentDidUpdate() { // after adding event tiles, we may need to tweak the scroll (either to // keep at the bottom of the timeline, or to maintain the view after // adding events to the top). // // This will also re-check the fill state, in case the paginate was inadequate this.checkScroll(); - }, + } - componentWillUnmount: function() { + componentWillUnmount() { // set a boolean to say we've been unmounted, which any pending // promises can use to throw away their results. // // (We could use isMounted(), but facebook have deprecated that.) this.unmounted = true; - }, + } - onScroll: function(ev) { + onScroll(ev) { var sn = this._getScrollNode(); debuglog("Scroll event: offset now:", sn.scrollTop, "_lastSetScroll:", this._lastSetScroll); + this.node = sn; + this.notifySubscribers(ev); + // Sometimes we see attempts to write to scrollTop essentially being // ignored. (Or rather, it is successfully written, but on the next // scroll event, it's been reset again). @@ -217,27 +155,27 @@ module.exports = React.createClass({ this.props.onScroll(ev); this.checkFillState(); - }, + } - onResize: function() { + onResize() { this.props.onResize(); this.checkScroll(); this.refs.geminiPanel.forceUpdate(); - }, + } // after an update to the contents of the panel, check that the scroll is // where it ought to be, and set off pagination requests if necessary. - checkScroll: function() { + checkScroll() { this._restoreSavedScrollState(); this.checkFillState(); - }, + } // return true if the content is fully scrolled down right now; else false. // // note that this is independent of the 'stuckAtBottom' state - it is simply // about whether the the content is scrolled down right now, irrespective of // whether it will stay that way when the children update. - isAtBottom: function() { + isAtBottom() { var sn = this._getScrollNode(); // there seems to be some bug with flexbox/gemini/chrome/richvdh's @@ -247,7 +185,7 @@ module.exports = React.createClass({ // that we're at the bottom when we're still a few pixels off. return sn.scrollHeight - Math.ceil(sn.scrollTop) <= sn.clientHeight + 3; - }, + } // returns the vertical height in the given direction that can be removed from // the content box (which has a height of scrollHeight, see checkFillState) without @@ -280,17 +218,17 @@ module.exports = React.createClass({ // |#########| - | // |#########| | // `---------' - - _getExcessHeight: function(backwards) { + _getExcessHeight(backwards) { var sn = this._getScrollNode(); if (backwards) { return sn.scrollTop - sn.clientHeight - UNPAGINATION_PADDING; } else { return sn.scrollHeight - (sn.scrollTop + 2*sn.clientHeight) - UNPAGINATION_PADDING; } - }, + } // check the scroll state and send out backfill requests if necessary. - checkFillState: function() { + checkFillState() { if (this.unmounted) { return; } @@ -329,10 +267,10 @@ module.exports = React.createClass({ // need to forward-fill this._maybeFill(false); } - }, + } // check if unfilling is possible and send an unfill request if necessary - _checkUnfillState: function(backwards) { + _checkUnfillState(backwards) { let excessHeight = this._getExcessHeight(backwards); if (excessHeight <= 0) { return; @@ -373,10 +311,10 @@ module.exports = React.createClass({ this.props.onUnfillRequest(backwards, markerScrollToken); }, UNFILL_REQUEST_DEBOUNCE_MS); } - }, + } // check if there is already a pending fill request. If not, set one off. - _maybeFill: function(backwards) { + _maybeFill(backwards) { var dir = backwards ? 'b' : 'f'; if (this._pendingFillRequests[dir]) { debuglog("ScrollPanel: Already a "+dir+" fill in progress - not starting another"); @@ -408,7 +346,7 @@ module.exports = React.createClass({ this.checkFillState(); } }).done(); - }, + } /* get the current scroll state. This returns an object with the following * properties: @@ -424,9 +362,9 @@ module.exports = React.createClass({ * the number of pixels the bottom of the tracked child is above the * bottom of the scroll panel. */ - getScrollState: function() { + getScrollState() { return this.scrollState; - }, + } /* reset the saved scroll state. * @@ -440,46 +378,46 @@ module.exports = React.createClass({ * no use if no children exist yet, or if you are about to replace the * child list.) */ - resetScrollState: function() { + resetScrollState() { this.scrollState = {stuckAtBottom: this.props.startAtBottom}; - }, + } /** * jump to the top of the content. */ - scrollToTop: function() { + scrollToTop() { this._setScrollTop(0); this._saveScrollState(); - }, + } /** * jump to the bottom of the content. */ - scrollToBottom: function() { + scrollToBottom() { // the easiest way to make sure that the scroll state is correctly // saved is to do the scroll, then save the updated state. (Calculating // it ourselves is hard, and we can't rely on an onScroll callback // happening, since there may be no user-visible change here). this._setScrollTop(Number.MAX_VALUE); this._saveScrollState(); - }, + } /** * Page up/down. * * mult: -1 to page up, +1 to page down */ - scrollRelative: function(mult) { + scrollRelative(mult) { var scrollNode = this._getScrollNode(); var delta = mult * scrollNode.clientHeight * 0.5; this._setScrollTop(scrollNode.scrollTop + delta); this._saveScrollState(); - }, + } /** * Scroll up/down in response to a scroll key */ - handleScrollKey: function(ev) { + handleScrollKey(ev) { switch (ev.keyCode) { case KeyCode.PAGE_UP: if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) { @@ -505,7 +443,7 @@ module.exports = React.createClass({ } break; } - }, + } /* Scroll the panel to bring the DOM node with the scroll token * `scrollToken` into view. @@ -518,7 +456,7 @@ module.exports = React.createClass({ * node (specifically, the bottom of it) will be positioned. If omitted, it * defaults to 0. */ - scrollToToken: function(scrollToken, pixelOffset, offsetBase) { + scrollToToken(scrollToken, pixelOffset, offsetBase) { pixelOffset = pixelOffset || 0; offsetBase = offsetBase || 0; @@ -540,11 +478,11 @@ module.exports = React.createClass({ // ... then make it so. this._restoreSavedScrollState(); - }, + } // set the scrollTop attribute appropriately to position the given child at the // given offset in the window. A helper for _restoreSavedScrollState. - _scrollToToken: function(scrollToken, pixelOffset) { + _scrollToToken(scrollToken, pixelOffset) { /* find the dom node with the right scrolltoken */ var node; var messages = this.refs.itemlist.children; @@ -576,9 +514,9 @@ module.exports = React.createClass({ this._setScrollTop(scrollNode.scrollTop + scrollDelta); } - }, + } - _saveScrollState: function() { + _saveScrollState() { if (this.props.stickyBottom && this.isAtBottom()) { this.scrollState = { stuckAtBottom: true }; debuglog("ScrollPanel: Saved scroll state", this.scrollState); @@ -616,9 +554,9 @@ module.exports = React.createClass({ } else { debuglog("ScrollPanel: unable to save scroll state: found no children in the viewport"); } - }, + } - _restoreSavedScrollState: function() { + _restoreSavedScrollState() { var scrollState = this.scrollState; var scrollNode = this._getScrollNode(); @@ -628,9 +566,9 @@ module.exports = React.createClass({ this._scrollToToken(scrollState.trackedScrollToken, scrollState.pixelOffset); } - }, + } - _setScrollTop: function(scrollTop) { + _setScrollTop(scrollTop) { var scrollNode = this._getScrollNode(); var prevScroll = scrollNode.scrollTop; @@ -652,12 +590,12 @@ module.exports = React.createClass({ debuglog("ScrollPanel: set scrollTop:", scrollNode.scrollTop, "requested:", scrollTop, "_lastSetScroll:", this._lastSetScroll); - }, + } /* get the DOM node which has the scrollTop property we care about for our * message panel. */ - _getScrollNode: function() { + _getScrollNode() { if (this.unmounted) { // this shouldn't happen, but when it does, turn the NPE into // something more meaningful. @@ -665,21 +603,91 @@ module.exports = React.createClass({ } return this.refs.geminiPanel.scrollbar.getViewElement(); - }, + } - render: function() { + render() { // TODO: the classnames on the div and ol could do with being updated to // reflect the fact that we don't necessarily contain a list of messages. // it's not obvious why we have a separate div and ol anyway. - return ( -
-
    - {this.props.children} -
-
-
- ); - }, -}); + return ( + +
+
    + {this.props.children} +
+
+
+ ); + } +} + +ScrollPanel.propTypes = { + /* stickyBottom: if set to true, then once the user hits the bottom of + * the list, any new children added to the list will cause the list to + * scroll down to show the new element, rather than preserving the + * existing view. + */ + stickyBottom: React.PropTypes.bool, + + /* startAtBottom: if set to true, the view is assumed to start + * scrolled to the bottom. + * XXX: It's likley this is unecessary and can be derived from + * stickyBottom, but I'm adding an extra parameter to ensure + * behaviour stays the same for other uses of ScrollPanel. + * If so, let's remove this parameter down the line. + */ + startAtBottom: React.PropTypes.bool, + + /* onFillRequest(backwards): a callback which is called on scroll when + * the user nears the start (backwards = true) or end (backwards = + * false) of the list. + * + * This should return a promise; no more calls will be made until the + * promise completes. + * + * The promise should resolve to true if there is more data to be + * retrieved in this direction (in which case onFillRequest may be + * called again immediately), or false if there is no more data in this + * directon (at this time) - which will stop the pagination cycle until + * the user scrolls again. + */ + onFillRequest: React.PropTypes.func, + + /* onUnfillRequest(backwards): a callback which is called on scroll when + * there are children elements that are far out of view and could be removed + * without causing pagination to occur. + * + * This function should accept a boolean, which is true to indicate the back/top + * of the panel and false otherwise, and a scroll token, which refers to the + * first element to remove if removing from the front/bottom, and last element + * to remove if removing from the back/top. + */ + onUnfillRequest: React.PropTypes.func, + + /* onScroll: a callback which is called whenever any scroll happens. + */ + onScroll: React.PropTypes.func, + + /* onResize: a callback which is called whenever the Gemini scroll + * panel is resized + */ + onResize: React.PropTypes.func, + + /* className: classnames to add to the top-level div + */ + className: React.PropTypes.string, + + /* style: styles to add to the top-level div + */ + style: React.PropTypes.object, +}; + +ScrollPanel.defaultProps = { + stickyBottom: true, + startAtBottom: true, + onFillRequest: function(backwards) { return Promise.resolve(false); }, + onUnfillRequest: function(backwards, scrollToken) {}, + onScroll: function() {}, +}; diff --git a/src/components/structures/TimelinePanel.js b/src/components/structures/TimelinePanel.js index 6be31361dd..6c7073fd63 100644 --- a/src/components/structures/TimelinePanel.js +++ b/src/components/structures/TimelinePanel.js @@ -1125,7 +1125,6 @@ var TimelinePanel = React.createClass({ highlightedEventId={ this.props.highlightedEventId } readMarkerEventId={ this.state.readMarkerEventId } readMarkerVisible={ this.state.readMarkerVisible } - suppressFirstDateSeparator={ this.state.canBackPaginate } showUrlPreview = { this.props.showUrlPreview } manageReadReceipts = { this.props.manageReadReceipts } ourUserId={ MatrixClientPeg.get().credentials.userId } From c3fc366039524de14ec88383c8d1f45cc16f9586 Mon Sep 17 00:00:00 2001 From: Eric Newport Date: Wed, 23 Aug 2017 23:36:28 +0000 Subject: [PATCH 21/52] Translated using Weblate (French) Currently translated at 98.8% (960 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 50d9113245..eb4b46e63b 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -191,10 +191,8 @@ "%(names)s and %(lastPerson)s are typing": "%(names)s et %(lastPerson)s sont en train d'écrire", "%(names)s and one other are typing": "%(names)s et un autre sont en train d'écrire", "%(names)s and %(count)s others are typing": "%(names)s et %(count)s d'autres sont en train d'écrire", - "and %(count)s others...": { - "other": "et %(count)s autres...", - "one": "et un autre..." - }, + "and %(count)s others....other": "et %(count)s autres...", + "and %(count)s others....one": "et un autre...", "An email has been sent to": "Un e-mail a été envoyé à", "A new password must be entered.": "Un nouveau mot de passe doit être entré.", "Anyone who knows the room's link, apart from guests": "Tout ceux qui connaissent le lien du salon, à part les visiteurs", @@ -979,5 +977,8 @@ "Automatically replace plain text Emoji": "Remplacer automatiquement le texte par des Emoji", "Failed to upload image": "Impossible de télécharger l'image", "Failed to update group": "Impossible de modifier le groupe", - "Hide avatars in user and room mentions": "Masquer les avatars dans les mentions d'utilisateur et de salon" + "Hide avatars in user and room mentions": "Masquer les avatars dans les mentions d'utilisateur et de salon", + "Do you want to load widget from URL:": "Charger un widget d’URL:", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget ajouté par %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget supprimé par %(senderName)s" } From 69bce6aee51e6300fc1d1ed6e916c66a0e1f1d24 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 30 Aug 2017 17:35:26 +0100 Subject: [PATCH 22/52] Update tests to reflect not supressing first date separator --- test/components/structures/TimelinePanel-test.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/components/structures/TimelinePanel-test.js b/test/components/structures/TimelinePanel-test.js index 98ec65b8e8..c13d149ed0 100644 --- a/test/components/structures/TimelinePanel-test.js +++ b/test/components/structures/TimelinePanel-test.js @@ -234,7 +234,6 @@ describe('TimelinePanel', function() { // 5 times, and we should have given up paginating expect(client.paginateEventTimeline.callCount).toEqual(5); expect(messagePanel.props.backPaginating).toBe(false); - expect(messagePanel.props.suppressFirstDateSeparator).toBe(false); // now, if we update the events, there shouldn't be any // more requests. @@ -339,7 +338,6 @@ describe('TimelinePanel', function() { awaitScroll().then(() => { // we should now have loaded the first few events expect(messagePanel.props.backPaginating).toBe(false); - expect(messagePanel.props.suppressFirstDateSeparator).toBe(true); // back-paginate until we hit the start return backPaginate(); @@ -347,7 +345,6 @@ describe('TimelinePanel', function() { // hopefully, we got to the start of the timeline expect(messagePanel.props.backPaginating).toBe(false); - expect(messagePanel.props.suppressFirstDateSeparator).toBe(false); var events = scryEventTiles(panel); expect(events[0].props.mxEvent).toBe(timeline.getEvents()[0]); From 225fe675865130e61988cd2d27e12bd0ca7e9826 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 30 Aug 2017 19:14:26 +0100 Subject: [PATCH 23/52] Fix room change sometimes being very slow If the js-sdk had a lot of history in memory for a particular room, riot would paginate all that history into the DOM and render it when switching to that room (before then removing it all again). This obviously made switching to that room very slow. This was caused by the fact that we relied on the setState that happens in TimelinePanel after the pagination taking effect such that ScrollPanel sees that it no longer needs to paginate, but in some situations (as far as I can see, in electron...?) this setState would not take effect until the pagination stopped fulfiling requests from memory and hit the network. Fix: don't resolve the promise returned by the pagination request until the setState has actually happened. --- src/components/structures/TimelinePanel.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/components/structures/TimelinePanel.js b/src/components/structures/TimelinePanel.js index 3e59a5aae4..1ef09e0719 100644 --- a/src/components/structures/TimelinePanel.js +++ b/src/components/structures/TimelinePanel.js @@ -344,9 +344,20 @@ var TimelinePanel = React.createClass({ newState[canPaginateOtherWayKey] = true; } - this.setState(newState); + // Don't resolve until the setState has completed: we need to let + // the component update before we consider the pagination commpleted, + // otherwise we'll end up paginating in all the history the js-sdk + // has in memory because we never gave the component a chance to scroll + // itself into the right place + let resolveSetStatePromise; + const setStatePromise = new Promise(function(resolve) { + resolveSetStatePromise = resolve; + }); + this.setState(newState, () => { + resolveSetStatePromise(r); + }); - return r; + return setStatePromise; }); }, From a2f2070966e53df836dc1244bf958b263822b7da Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 30 Aug 2017 21:44:10 +0100 Subject: [PATCH 24/52] Put setSate in the promise constructor Avoids local variables. Also typo in comment. --- src/components/structures/TimelinePanel.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/components/structures/TimelinePanel.js b/src/components/structures/TimelinePanel.js index 1ef09e0719..862c3f46d0 100644 --- a/src/components/structures/TimelinePanel.js +++ b/src/components/structures/TimelinePanel.js @@ -345,19 +345,15 @@ var TimelinePanel = React.createClass({ } // Don't resolve until the setState has completed: we need to let - // the component update before we consider the pagination commpleted, + // the component update before we consider the pagination completed, // otherwise we'll end up paginating in all the history the js-sdk // has in memory because we never gave the component a chance to scroll // itself into the right place - let resolveSetStatePromise; - const setStatePromise = new Promise(function(resolve) { - resolveSetStatePromise = resolve; + return new Promise((resolve) => { + this.setState(newState, () => { + resolve(r); + }); }); - this.setState(newState, () => { - resolveSetStatePromise(r); - }); - - return setStatePromise; }); }, From 8f0b7db0d78562c972da2cc38d616c399dda01f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ange=20des=20t=C3=A9n=C3=A8bres?= Date: Wed, 30 Aug 2017 15:36:14 +0000 Subject: [PATCH 25/52] Translated using Weblate (French) Currently translated at 99.2% (964 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index eb4b46e63b..8d20b8e4c3 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -978,7 +978,11 @@ "Failed to upload image": "Impossible de télécharger l'image", "Failed to update group": "Impossible de modifier le groupe", "Hide avatars in user and room mentions": "Masquer les avatars dans les mentions d'utilisateur et de salon", - "Do you want to load widget from URL:": "Charger un widget d’URL:", + "Do you want to load widget from URL:": "Charger un widget venant de l’URL :", "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget ajouté par %(senderName)s", - "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget supprimé par %(senderName)s" + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget supprimé par %(senderName)s", + "Publish this room to the public in %(domain)s's room directory?": "Publier ce salon dans le l'annuaire public de %(domain)s ?", + "Integrations Error": "Erreur d'intégration", + "Cannot add any more widgets": "Impossible d'ajouter plus de widgets", + "The maximum permitted number of widgets have already been added to this room.": "Le nombre maximum de widgets autorisés a déjà été atteint pour ce salon." } From cdb28f956e5cab941cf66e94238ca7e5be23c1a0 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 31 Aug 2017 16:29:31 +0100 Subject: [PATCH 26/52] Add comment for StickyContainer extension --- src/components/structures/ScrollPanel.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/structures/ScrollPanel.js b/src/components/structures/ScrollPanel.js index cbd2954918..abb9ddff49 100644 --- a/src/components/structures/ScrollPanel.js +++ b/src/components/structures/ScrollPanel.js @@ -117,7 +117,11 @@ export default class ScrollPanel extends StickyContainer { debuglog("Scroll event: offset now:", sn.scrollTop, "_lastSetScroll:", this._lastSetScroll); + // Set the node and notify subscribers of the StickContainer + // By extending StickyContainer, we can set the scroll node to be that of the + // ScrolPanel to allow any `` children to be sticky, namely DateSeparators. this.node = sn; + // Update subscribers - arbitrarily nested `` children this.notifySubscribers(ev); // Sometimes we see attempts to write to scrollTop essentially being From c9c07713557b92eb341552bce87c440bfd63277d Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 31 Aug 2017 16:29:45 +0100 Subject: [PATCH 27/52] Spelling --- src/components/structures/ScrollPanel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/ScrollPanel.js b/src/components/structures/ScrollPanel.js index abb9ddff49..3ea699798e 100644 --- a/src/components/structures/ScrollPanel.js +++ b/src/components/structures/ScrollPanel.js @@ -117,7 +117,7 @@ export default class ScrollPanel extends StickyContainer { debuglog("Scroll event: offset now:", sn.scrollTop, "_lastSetScroll:", this._lastSetScroll); - // Set the node and notify subscribers of the StickContainer + // Set the node and notify subscribers of the StickyContainer // By extending StickyContainer, we can set the scroll node to be that of the // ScrolPanel to allow any `` children to be sticky, namely DateSeparators. this.node = sn; From 26ebb530ee60288d2f85a28449a011ad21aa2b94 Mon Sep 17 00:00:00 2001 From: Stefan Parviainen Date: Fri, 1 Sep 2017 15:20:27 +0000 Subject: [PATCH 28/52] Added translation using Weblate (Finnish) --- src/i18n/strings/fi.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/fi.json diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/fi.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 839b1cf1948b76a13668d0c866102f768e19b732 Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Thu, 31 Aug 2017 15:11:06 +0000 Subject: [PATCH 29/52] Translated using Weblate (French) Currently translated at 99.3% (965 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 8d20b8e4c3..595bccfe12 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -984,5 +984,6 @@ "Publish this room to the public in %(domain)s's room directory?": "Publier ce salon dans le l'annuaire public de %(domain)s ?", "Integrations Error": "Erreur d'intégration", "Cannot add any more widgets": "Impossible d'ajouter plus de widgets", - "The maximum permitted number of widgets have already been added to this room.": "Le nombre maximum de widgets autorisés a déjà été atteint pour ce salon." + "The maximum permitted number of widgets have already been added to this room.": "Le nombre maximum de widgets autorisés a déjà été atteint pour ce salon.", + "NOTE: Apps are not end-to-end encrypted": "NOTE : Les applications ne sont pas chiffrées de bout en bout" } From 53a09144fb208fd1107d8e4d00c49d8fc70ac295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ange=20des=20t=C3=A9n=C3=A8bres?= Date: Fri, 1 Sep 2017 17:38:15 +0000 Subject: [PATCH 30/52] Translated using Weblate (French) Currently translated at 99.4% (966 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 595bccfe12..57b4c302ea 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -969,7 +969,7 @@ "You are a member of these groups:": "Vous êtes membre des groupes suivants :", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Créez un groupe pour représenter votre communauté ! Définissez un jeu de salons et votre propre page d'accueil pour marquer votre espace dans l'univers Matrix.", "Join an existing group": "Rejoindre un groupe existant", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Pour rejoindre un groupe existant, vous devez connaître son identifiant de groupe ; il ressemble à +exemple:matrix.org.", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Pour rejoindre un groupe existant, vous devez connaître l'identifiant de ce groupe ; il ressemblera à +exemple:matrix.org.", "Featured Rooms:": "Salons mis en avant :", "Error whilst fetching joined groups": "Erreur en récupérant la liste des groupes", "Featured Users:": "Utilisateurs mis en avant :", From 95fa0f0cb7e936328aeda384c88fa15cf934509e Mon Sep 17 00:00:00 2001 From: Bamstam Date: Mon, 28 Aug 2017 20:52:45 +0000 Subject: [PATCH 31/52] Translated using Weblate (German) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 6e51145b28..0e3a2fa2d3 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -995,7 +995,7 @@ "Hide Apps": "Apps verbergen", "Hide join/leave messages (invites/kicks/bans unaffected)": "Verberge Beitritt-/Verlassen-Meldungen (nicht Einladungen/Kicks/Bannungen)", "Hide avatar and display name changes": "Verberge Avatar- und Anzeigenamen-Änderungen", - "Matrix Apps": "Matrix Apps", + "Matrix Apps": "Matrix-Apps", "Revoke widget access": "Ziehe Widget-Zugriff zurück", "Sets the room topic": "Setzt das Raum-Thema", "Show Apps": "Apps anzeigen", From 1e79fd84632ca8a663ed59ecc722e6c43aac6252 Mon Sep 17 00:00:00 2001 From: lazz0 Date: Sun, 3 Sep 2017 14:26:35 +0000 Subject: [PATCH 32/52] Translated using Weblate (German) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 0e3a2fa2d3..ab181efe7d 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -241,7 +241,7 @@ "turned on end-to-end encryption (algorithm": "aktivierte Ende-zu-Ende-Verschlüsselung (Algorithmus", "Unable to add email address": "E-Mail-Adresse konnte nicht hinzugefügt werden", "Unable to remove contact information": "Die Kontakt-Informationen konnten nicht gelöscht werden", - "Unable to verify email address.": "Unfähig die E-Mail-Adresse zu verifizieren.", + "Unable to verify email address.": "Die E-Mail-Adresse konnte nicht verifiziert werden.", "Unban": "Dauerhaftes Ausschließen aus dem Raum aufheben", "Unencrypted room": "Unverschlüsselter Raum", "unknown error code": "Unbekannter Fehlercode", @@ -993,7 +993,7 @@ "Edit": "Bearbeiten", "Enable automatic language detection for syntax highlighting": "Aktiviere automatische Spracherkennung zum Syntax-Hervorheben", "Hide Apps": "Apps verbergen", - "Hide join/leave messages (invites/kicks/bans unaffected)": "Verberge Beitritt-/Verlassen-Meldungen (nicht Einladungen/Kicks/Bannungen)", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Verberge Beitritt-/Verlassen-Meldungen (außer Einladungen/Kicks/Bans)", "Hide avatar and display name changes": "Verberge Avatar- und Anzeigenamen-Änderungen", "Matrix Apps": "Matrix-Apps", "Revoke widget access": "Ziehe Widget-Zugriff zurück", @@ -1035,7 +1035,7 @@ "PM": "pm", "The maximum permitted number of widgets have already been added to this room.": "Die maximal erlaubte Anzahl an hinzufügbaren Widgets für diesen Raum wurde erreicht.", "Cannot add any more widgets": "Kann keine weiteren Widgets hinzufügen", - "Do you want to load widget from URL:": "Mögest du das Widget von folgender URL laden:", + "Do you want to load widget from URL:": "Möchtest du das Widget von folgender URL laden:", "Integrations Error": "Integrations-Error", "NOTE: Apps are not end-to-end encrypted": "BEACHTE: Apps sind nicht Ende-zu-Ende verschlüsselt", "%(widgetName)s widget added by %(senderName)s": "Widget \"%(widgetName)s\" von %(senderName)s hinzugefügt", From 6abb8f4464980dc32b86bd76aba4ceeebfc8fa26 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Mon, 4 Sep 2017 07:26:09 +0000 Subject: [PATCH 33/52] Translated using Weblate (German) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 68 ++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index ab181efe7d..d0f98973c6 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -31,11 +31,11 @@ "Event information": "Ereignis-Information", "Sender device information": "Geräte-Informationen des Absenders", "Displays action": "Zeigt Aktionen an", - "Bans user with given id": "Schließt den Benutzer mit der angegebenen ID dauerhaft aus dem Raum aus", + "Bans user with given id": "Verbannt den Benutzer mit der angegebenen ID", "Deops user with given id": "Entfernt OP beim Benutzer mit der angegebenen ID", "Invites user with given id to current room": "Lädt den Benutzer mit der angegebenen ID in den aktuellen Raum ein", "Joins room with given alias": "Betrete Raum mit angegebenen Alias", - "Kicks user with given id": "Entfernt den Benutzer mit der angegebenen ID aus dem Raum", + "Kicks user with given id": "Benutzer mit der angegebenen ID kicken", "Changes your display nickname": "Ändert deinen angezeigten Nicknamen", "Change Password": "Passwort ändern", "Searches DuckDuckGo for results": "Verwendet DuckDuckGo für Suchergebnisse", @@ -66,7 +66,7 @@ "Are you sure you want to reject the invitation?": "Bist du sicher, dass du die Einladung ablehnen willst?", "Are you sure you want to upload the following files?": "Bist du sicher, dass du die folgenden Dateien hochladen möchtest?", "banned": "gebannt", - "Banned users": "Dauerhaft aus dem Raum ausgeschlossene Benutzer", + "Banned users": "Verbannte Benutzer", "Bug Report": "Fehlerbericht", "changed avatar": "änderte Avatar", "changed their display name from": "änderte seinen Anzeigenamen von", @@ -116,7 +116,7 @@ "Failed to leave room": "Verlassen des Raums fehlgeschlagen", "Failed to reject invitation": "Einladung konnte nicht abgelehnt werden", "Failed to set avatar.": "Fehler beim Setzen des Profilbilds.", - "Failed to unban": "Dauerhaftes Ausschließen aus dem Raum konnte nicht aufgehoben werden", + "Failed to unban": "Aufheben der Verbannung fehlgeschlagen", "Failed to upload file": "Datei-Upload fehlgeschlagen", "Favourite": "Favorit", "favourite": "Favorit", @@ -221,11 +221,11 @@ "This is a preview of this room. Room interactions have been disabled": "Dies ist eine Vorschau dieses Raumes. Raum-Interaktionen wurden deaktiviert", "This room is not accessible by remote Matrix servers": "Remote-Matrix-Server können auf diesen Raum nicht zugreifen", "This room's internal ID is": "Die interne ID dieses Raumes ist", - "To ban users": "Um Benutzer dauerhaft aus dem Raum auszuschließen", + "To ban users": "Um Benutzer zu verbannen", "To configure the room": "Um den Raum zu konfigurieren", "To invite users into the room": "Um Nutzer in den Raum einzuladen", "to join the discussion": "um an der Diskussion teilzunehmen", - "To kick users": "Um Benutzer aus dem Raum zu entfernen", + "To kick users": "Um Benutzer zu kicken", "Admin": "Administrator", "Server may be unavailable, overloaded, or you hit a bug.": "Server ist nicht verfügbar, überlastet oder du bist auf einen Fehler gestoßen.", "Could not connect to the integration server": "Konnte keine Verbindung zum Integrations-Server herstellen", @@ -242,7 +242,7 @@ "Unable to add email address": "E-Mail-Adresse konnte nicht hinzugefügt werden", "Unable to remove contact information": "Die Kontakt-Informationen konnten nicht gelöscht werden", "Unable to verify email address.": "Die E-Mail-Adresse konnte nicht verifiziert werden.", - "Unban": "Dauerhaftes Ausschließen aus dem Raum aufheben", + "Unban": "Verbannung aufheben", "Unencrypted room": "Unverschlüsselter Raum", "unknown error code": "Unbekannter Fehlercode", "unknown": "unbekannt", @@ -260,10 +260,10 @@ "VoIP conference finished.": "VoIP-Konferenz wurde beendet.", "VoIP conference started.": "VoIP-Konferenz gestartet.", "(warning: cannot be disabled again!)": "(Warnung: Kann nicht wieder deaktiviert werden!)", - "was banned": "wurde dauerhaft aus dem Raum ausgeschlossen", + "was banned": "wurde aus dem Raum verbannt", "was invited": "wurde eingeladen", - "was kicked": "wurde aus dem Raum entfernt", - "was unbanned": "wurde vom dauerhaften Ausschluss aus dem Raum befreit", + "was kicked": "wurde gekickt", + "was unbanned": "wurde von der Verbannung aus dem Raum befreit", "was": "wurde", "Who can access this room?": "Wer hat Zugang zu diesem Raum?", "Who can read history?": "Wer kann den bisherigen Chatverlauf lesen?", @@ -350,7 +350,7 @@ "%(names)s and one other are typing": "%(names)s und ein weiteres Raum-Mitglied schreiben", "%(names)s and %(count)s others are typing": "%(names)s und %(count)s weitere Raum-Mitglieder schreiben", "%(senderName)s answered the call.": "%(senderName)s hat den Anruf angenommen.", - "%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s dauerhaft aus dem Raum ausgeschlossen.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s dauerhaft aus dem Raum verbannt.", "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s hat den Anzeigenamen von \"%(oldDisplayName)s\" auf \"%(displayName)s\" geändert.", "%(senderName)s changed their profile picture.": "%(senderName)s hat das Profilbild geändert.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s hat das Berechtigungslevel von %(powerLevelDiffText)s geändert.", @@ -364,7 +364,7 @@ "%(senderName)s invited %(targetName)s.": "%(senderName)s hat %(targetName)s eingeladen.", "%(displayName)s is typing": "%(displayName)s schreibt", "%(targetName)s joined the room.": "%(targetName)s hat den Raum betreten.", - "%(senderName)s kicked %(targetName)s.": "%(senderName)s hat %(targetName)s aus dem Raum entfernt.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s hat %(targetName)s aus dem Raum gekickt.", "%(targetName)s left the room.": "%(targetName)s hat den Raum verlassen.", "%(senderName)s made future room history visible to": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für", "Missing room_id in request": "Fehlende room_id in Anfrage", @@ -388,7 +388,7 @@ "These are experimental features that may break in unexpected ways": "Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können", "To use it, just wait for autocomplete results to load and tab through them.": "Um diese Funktion zu nutzen, warte einfach auf die Autovervollständigungsergebnisse und benutze dann die TAB-Taste zum durchblättern.", "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s hat die Ende-zu-Ende-Verschlüsselung aktiviert (Algorithmus: %(algorithm)s).", - "%(senderName)s unbanned %(targetName)s.": "%(senderName)s hat das dauerhafte Ausschließen von %(targetName)s aus dem Raum aufgehoben.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s hat die Verbannung von %(targetName)s aufgehoben.", "Usage": "Verwendung", "Use with caution": "Mit Vorsicht zu verwenden", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen.", @@ -556,7 +556,7 @@ "and %(count)s others....one": "und ein(e) weitere(r)...", "Are you sure?": "Bist du sicher?", "Attachment": "Anhang", - "Ban": "Dauerhaft aus dem Raum ausschließen", + "Ban": "Verbannen", "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Verbindungsaufbau zum Heimserver nicht möglich - bitte Internetverbindung überprüfen und sicherstellen, ob das SSL-Zertifikat des Heimservers vertrauenswürdig ist.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Es kann keine Verbindung zum Heimserver via HTTP aufgebaut werden, wenn die Adresszeile des Browsers eine HTTPS-URL enthält. Entweder HTTPS verwenden oder alternativ unsichere Skripte erlauben.", "changing room on a RoomView is not supported": "Das Ändern eines Raumes in einer RaumAnsicht wird nicht unterstützt", @@ -570,7 +570,7 @@ "Disinvite": "Einladung zurückziehen", "Download %(text)s": "%(text)s herunterladen", "Enter Code": "Code eingeben", - "Failed to ban user": "Dauerhaftes Ausschließen des Benutzers aus dem Raum fehlgeschlagen", + "Failed to ban user": "Verbannen des Benutzers fehlgeschlagen", "Failed to change power level": "Ändern des Berechtigungslevels fehlgeschlagen", "Failed to delete device": "Löschen des Geräts fehlgeschlagen", "Failed to join room": "Betreten des Raumes ist fehlgeschlagen", @@ -587,7 +587,7 @@ "'%(alias)s' is not a valid format for an address": "'%(alias)s' ist kein gültiges Adressformat", "'%(alias)s' is not a valid format for an alias": "'%(alias)s' ist kein gültiges Alias-Format", "Join Room": "Dem Raum beitreten", - "Kick": "Aus dem Raum entfernen", + "Kick": "Kicken", "Level": "Berechtigungslevel", "Local addresses for this room:": "Lokale Adressen dieses Raumes:", "Markdown is disabled": "Markdown ist deaktiviert", @@ -649,7 +649,7 @@ "%(items)s and %(remaining)s others": "%(items)s und %(remaining)s weitere", "%(items)s and one other": "%(items)s und ein(e) weitere(r)", "%(items)s and %(lastItem)s": "%(items)s und %(lastItem)s", - "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)ssind dem Raum %(repeats)s mal beigetreten", + "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)shaben den Raum %(repeats)s-mal betreten", "%(oneUser)sjoined %(repeats)s times": "%(oneUser)shat den Raum %(repeats)s mal betreten", "%(severalUsers)sjoined": "%(severalUsers)shaben den Raum betreten", "%(oneUser)sjoined": "%(oneUser)shat den Raum betreten", @@ -676,15 +676,15 @@ "were invited %(repeats)s times": "wurden %(repeats)s mal eingeladen", "was invited %(repeats)s times": "wurde %(repeats)s mal eingeladen", "were invited": "wurden eingeladen", - "were banned %(repeats)s times": "wurden %(repeats)s-mal dauerhaft aus dem Raum ausgeschlossen", - "was banned %(repeats)s times": "wurde %(repeats)s-mal aus dem Raum ausgeschlossen", - "were banned": "wurden dauerhaft aus dem Raum ausgeschlossen", - "were unbanned %(repeats)s times": "wurden %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit", - "was unbanned %(repeats)s times": "wurde %(repeats)s mal vom dauerhaften Ausschluss aus dem Raum befreit", - "were unbanned": "wurden vom dauerhaften Ausschluss aus dem Raum befreit", - "were kicked %(repeats)s times": "wurden %(repeats)s-mal aus dem Raum entfernt", - "was kicked %(repeats)s times": "wurde %(repeats)s-mal aus dem Raum entfernt", - "were kicked": "wurden aus dem Raum entfernt", + "were banned %(repeats)s times": "wurden %(repeats)s-mal aus dem Raum verbannt", + "was banned %(repeats)s times": "wurde %(repeats)s-mal aus dem Raum verbannt", + "were banned": "wurden aus dem Raum verbannt", + "were unbanned %(repeats)s times": "wurden %(repeats)s-mal von der Verbannung aus dem Raum befreit", + "was unbanned %(repeats)s times": "wurde %(repeats)s-mal von der Verbannung aus dem Raum befreit", + "were unbanned": "wurden von der Verbannung aus dem Raum befreit", + "were kicked %(repeats)s times": "wurden %(repeats)s-mal gekickt", + "was kicked %(repeats)s times": "wurde %(repeats)s-mal gekickt", + "were kicked": "wurden gekickt", "%(severalUsers)schanged their name %(repeats)s times": "%(severalUsers)shaben ihren Namen %(repeats)s mal geändert", "%(oneUser)schanged their name %(repeats)s times": "%(oneUser)shat den Namen %(repeats)s mal geändert", "%(severalUsers)schanged their name": "%(severalUsers)shaben ihre Namen geändert", @@ -957,8 +957,8 @@ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (Berechtigungslevel %(powerLevelNumber)s)", "Verified": "Verifiziert", "Would you like to accept or decline this invitation?": "Möchtest du diese Einladung akzeptieren oder ablehnen?", - "You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s dauerhaft aus dem Raum %(roomName)s ausgeschlossen.", - "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s entfernt.", + "You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s verbannt.", + "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum \"%(roomName)s\" gekickt.", "You may wish to login with a different account, or add this email to this account.": "Du möchtest dich eventuell mit einem anderen Konto anmelden oder alternativ diese E-Mail-Adresse diesem Konto hinzufügen.", "Your home server does not support device management.": "Dein Heimserver unterstützt kein Geräte-Management.", "(~%(count)s results).one": "(~%(count)s Ergebnis)", @@ -991,7 +991,7 @@ "Delete widget": "Widget entfernen", "Define the power level of a user": "Setze das Berechtigungslevel eines Benutzers", "Edit": "Bearbeiten", - "Enable automatic language detection for syntax highlighting": "Aktiviere automatische Spracherkennung zum Syntax-Hervorheben", + "Enable automatic language detection for syntax highlighting": "Automatische Spracherkennung für die Syntax-Hervorhebung aktivieren", "Hide Apps": "Apps verbergen", "Hide join/leave messages (invites/kicks/bans unaffected)": "Verberge Beitritt-/Verlassen-Meldungen (außer Einladungen/Kicks/Bans)", "Hide avatar and display name changes": "Verberge Avatar- und Anzeigenamen-Änderungen", @@ -1001,7 +1001,7 @@ "Show Apps": "Apps anzeigen", "To get started, please pick a username!": "Um zu starten, wähle bitte einen Nutzernamen!", "Unable to create widget.": "Widget kann nicht erstellt werden.", - "Unbans user with given id": "Entbanne Nutzer mit angegebener ID", + "Unbans user with given id": "Verbannung aufheben für Benutzer mit angegebener ID", "You are not in this room.": "Du bist nicht in diesem Raum.", "You do not have permission to do that in this room.": "Du hast keine Berechtigung, dies in diesem Raum zu tun.", "Verifies a user, device, and pubkey tuple": "Verifiziert ein Tupel aus Nutzer, Gerät und öffentlichem Schlüssel", @@ -1027,12 +1027,12 @@ "Error whilst fetching joined groups": "Fehler beim Laden beigetretener Gruppen", "Featured Users:": "Hervorgehobene Nutzer:", "Edit Group": "Gruppe bearbeiten", - "Automatically replace plain text Emoji": "Automatisch Klarzeichen-Emoji ersetzen", + "Automatically replace plain text Emoji": "Klartext-Emoji automatisch ersetzen", "Failed to upload image": "Bild-Hochladen fehlgeschlagen", "Failed to update group": "Aktualisieren der Gruppe fehlgeschlagen", "Hide avatars in user and room mentions": "Verberge Profilbilder in Benutzer- und Raum-Erwähnungen", - "AM": "am", - "PM": "pm", + "AM": "a. m.", + "PM": "p. m.", "The maximum permitted number of widgets have already been added to this room.": "Die maximal erlaubte Anzahl an hinzufügbaren Widgets für diesen Raum wurde erreicht.", "Cannot add any more widgets": "Kann keine weiteren Widgets hinzufügen", "Do you want to load widget from URL:": "Möchtest du das Widget von folgender URL laden:", @@ -1040,5 +1040,5 @@ "NOTE: Apps are not end-to-end encrypted": "BEACHTE: Apps sind nicht Ende-zu-Ende verschlüsselt", "%(widgetName)s widget added by %(senderName)s": "Widget \"%(widgetName)s\" von %(senderName)s hinzugefügt", "%(widgetName)s widget removed by %(senderName)s": "Widget \"%(widgetName)s\" von %(senderName)s entfernt", - "Robot check is currently unavailable on desktop - please use a web browser": "Auf dem Desktop kann aktuell nicht geprüft werden, ob du ein Roboter bist. Bitte nutze einen Browser" + "Robot check is currently unavailable on desktop - please use a web browser": "In der Desktop-Version kann derzeit nicht geprüft werden, ob ein Benutzer ein Roboter ist. Bitte einen Webbrowser verwenden" } From 6847dddcc428e3c47aebb05221e16e5f5e37a1f3 Mon Sep 17 00:00:00 2001 From: lazz0 Date: Mon, 4 Sep 2017 07:29:13 +0000 Subject: [PATCH 34/52] Translated using Weblate (German) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index d0f98973c6..877bad9bfe 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -298,7 +298,7 @@ "The remote side failed to pick up": "Die Gegenstelle konnte nicht abheben", "This phone number is already in use": "Diese Telefonnummer wird bereits verwendet", "Unable to restore previous session": "Die vorherige Sitzung konnte nicht wiederhergestellt werden", - "Unable to capture screen": "Unfähig den Bildschirm aufzunehmen", + "Unable to capture screen": "Der Bildschirm konnte nicht aufgenommen werden.", "Unable to enable Notifications": "Benachrichtigungen konnten nicht aktiviert werden", "Upload Failed": "Upload fehlgeschlagen", "VoIP is unsupported": "VoIP wird nicht unterstützt", From ce914349ce9a274bcec8c6383ed5e69dcd5a08ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=9F=E8=BF=9B?= Date: Sat, 2 Sep 2017 05:00:46 +0000 Subject: [PATCH 35/52] Translated using Weblate (Chinese (Simplified)) Currently translated at 72.5% (704 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hans/ --- src/i18n/strings/zh_Hans.json | 90 ++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 483112005c..77c2232619 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -26,7 +26,7 @@ "Email": "电子邮箱", "Email address": "电子邮箱地址", "Email, name or matrix ID": "电子邮箱,姓名或者matrix ID", - "Emoji": "Emoji", + "Emoji": "表情", "Enable encryption": "启用加密", "Encrypted messages will not be visible on clients that do not yet implement encryption": "不支持加密的客户端将看不到加密的消息", "Encrypted room": "加密聊天室", @@ -619,5 +619,91 @@ "%(senderName)s requested a VoIP conference.": "%(senderName)s 请求一个 VoIP 会议。", "Seen by %(userName)s at %(dateTime)s": "在 %(dateTime)s 被 %(userName)s 看到", "Show Apps": "显示应用", - "Tagged as: ": "标记为:" + "Tagged as: ": "标记为:", + "ar-sy": "阿拉伯语(Syria)", + "ar-tn": "阿拉伯语(Tunisia)", + "be": "白俄罗斯", + "bg": "保加利亚", + "de-li": "德语(列支敦士登)", + "en-bz": "英语(伯利兹)", + "en-tt": "英语(特立尼达)", + "es-bo": "西班牙语(玻利维亚)", + "es-do": "西班牙语(Dominican)", + "es-ec": "西班牙语(Ecuador)", + "es-gt": "西班牙语(Guatemala)", + "es-hn": "西班牙语(Honduras)", + "es-ni": "西班牙语(Nicaragua)", + "es-pa": "西班牙语(Panama)", + "es-pr": "西班牙语(Puerto Rico)", + "es-py": "西班牙语(Paraguay)", + "es-sv": "西班牙语(El Salvador)", + "es-uy": "西班牙语(Uruguay)", + "es-ve": "西班牙语(Venezuela)", + "et": "爱沙尼亚", + "eu": "巴斯克", + "fa": "波斯语", + "fo": "法罗群岛", + "fr-lu": "法语(Luxembourg)", + "ga": "爱尔兰", + "gd": "盖尔", + "lt": "立陶宛", + "mk": "马其顿", + "mt": "马耳他", + "nl-be": "荷兰语(Belgium)", + "nl": "荷兰语", + "no": "挪威", + "pt-br": "巴西葡萄牙语", + "rm": "瑞士南部", + "sb": "索布语", + "ru-mo": "俄语(Moldova)", + "ro-mo": "罗马尼亚(Moldova)", + "sq": "阿尔巴尼亚", + "sv-fi": "瑞典(Finland)", + "sv": "瑞典", + "sx": "苏图", + "sz": "萨米(Lappish)", + "tn": "茨瓦纳语", + "ts": "聪加", + "uk": "乌克兰", + "ur": "乌尔都语", + "ve": "文达", + "xh": "科萨", + "zu": "祖鲁语", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "验证码将发送到+%(msisdn),请输入接收到的验证码", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName) 接受了 %(displayName)的邀请。", + "Active call (%(roomName)s)": "%(roomName)的呼叫", + "And %(count)s more...": "添加%(count)个...", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName) 将级别调整到%(powerLevelDiffText)。", + "Changes colour scheme of current room": "修改了样式", + "changing room on a RoomView is not supported": "暂不支持修改", + "demote": "降级", + "Deops user with given id": "Deops user", + "Join as voice or video.": "通过 语言 或者 视频加入.", + "%(senderName)s made future room history visible to": "%(senderName) 设定历史浏览功能为", + "AM": "上午", + "PM": "下午", + "NOTE: Apps are not end-to-end encrypted": "提示:APP不支持端对端加密", + "People": "联系人", + "Press": "点击", + "Profile": "个人配置", + "Public Chat": "公开的", + "Refer a friend to Riot:": "介绍朋友加入Riot:", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName) 删除了显示名称。", + "%(roomName)s is not accessible at this time.": "%(roomName)此时无法访问。", + "Set": "设置", + "Start authentication": "开始认证", + "tag as %(tagName)s": "标签", + "tag direct chat": "标签", + "The maximum permitted number of widgets have already been added to this room.": "小部件的最大允许数量已经添加到这个房间了。", + "The phone number entered looks invalid": "输入的电话号码看起来无效", + "The remote side failed to pick up": "远端未能接收到", + "This Home Server does not support login using email address.": "HS不支持使用电子邮件地址登陆。", + "This invitation was sent to an email address which is not associated with this account:": "此邀请被发送到与此帐户不相关的电子邮件地址:", + "This room is not recognised.": "这个房间未匹配。", + "times": "次", + "To get started, please pick a username!": "请点击用户名!", + "Unable to add email address": "无法添加电子邮件地址", + "Failed to update group": "更新群组失败", + "Automatically replace plain text Emoji": "文字、表情自动转换", + "Join an existing group": "试图加入一个不存在的群组" } From b3a53c43fd3c0b7046628ad66dbe4e8186e5b556 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sat, 26 Aug 2017 13:46:47 +0000 Subject: [PATCH 36/52] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 72 +++++++++++++++++------------------ 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 35631310ad..dd071153bf 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -9,7 +9,7 @@ "Are you sure you want to reject the invitation?": "您確認要謝絕邀請嗎?", "Are you sure you want to upload the following files?": "您確認要上傳以下文件嗎?", "Attachment": "附件", - "Autoplay GIFs and videos": "自動播放GIF和視頻", + "Autoplay GIFs and videos": "自動播放 GIF 和影片", "%(senderName)s banned %(targetName)s.": "%(senderName)s 封禁了 %(targetName)s.", "Ban": "封禁", "Banned users": "被封禁的用戶", @@ -96,7 +96,7 @@ "Admin": "管理者", "Advanced": "高級", "Algorithm": "算法", - "Always show message timestamps": "總是顯示消息時間戳", + "Always show message timestamps": "總是顯示訊息時間戳", "Authentication": "授權", "all room members": "所有聊天室成員", "all room members, from the point they are invited": "所有聊天室成員,從他們被邀請開始", @@ -127,13 +127,13 @@ "Decrypt %(text)s": "解密 %(text)s", "Decryption error": "解密出錯", "Delete": "刪除", - "Default": "默認", - "Device ID": "設備識別碼", - "Devices": "設備列表", - "Devices will not yet be able to decrypt history from before they joined the room": "新加入聊天室的設備不能解密加入之前的聊天記錄", + "Default": "預設", + "Device ID": "裝置識別碼", + "Devices": "裝置列表", + "Devices will not yet be able to decrypt history from before they joined the room": "新加入聊天室的裝置不能解密加入之前的聊天記錄", "Direct Chat": "私人聊天", "Direct chats": "私聊", - "Disable inline URL previews by default": "默認禁用自動網址預覽", + "Disable inline URL previews by default": "預設停用自動網址預覽", "Disinvite": "取消邀請", "Display name": "顯示名稱", "Displays action": "顯示操作", @@ -141,12 +141,12 @@ "Download %(text)s": "下載 %(text)s", "Drop here %(toAction)s": "拖曳到這裡 %(toAction)s", "Ed25519 fingerprint": "Ed25519指紋", - "Email": "電子郵箱", - "Email address": "電子郵箱地址", - "Email, name or matrix ID": "電子郵箱,姓名或者matrix ID", + "Email": "電子郵件", + "Email address": "電子郵件地址", + "Email, name or matrix ID": "電子郵件、名稱或者matrix ID", "Emoji": "顏文字", "Enable encryption": "啟用加密", - "Encrypted messages will not be visible on clients that do not yet implement encryption": "不支持加密的客戶端將看不到加密的消息", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "不支援加密的客戶端將看不到加密的訊息", "Encrypted room": "加密聊天室", "%(senderName)s ended the call.": "%(senderName)s 結束了通話。.", "End-to-end encryption information": "端到端加密信息", @@ -159,7 +159,7 @@ "Export E2E room keys": "導出聊天室的端到端加密密鑰", "Failed to ban user": "封禁用戶失敗", "Failed to change password. Is your password correct?": "變更密碼失敗。您的密碼正確嗎?", - "Failed to delete device": "刪除設備失敗", + "Failed to delete device": "刪除裝置失敗", "Failed to forget room %(errCode)s": "無法忘記聊天室 %(errCode)s", "Failed to join room": "無法加入聊天室", "Failed to join the room": "無法加入此聊天室", @@ -179,7 +179,7 @@ "Failed to toggle moderator status": "無法切換管理員權限", "Failed to unban": "解除封禁失敗", "Failed to upload file": "上傳文件失敗", - "Failed to verify email address: make sure you clicked the link in the email": "郵箱驗證失敗: 請確保你已點擊郵件中的鏈接", + "Failed to verify email address: make sure you clicked the link in the email": "電子郵件地址驗證失敗: 請確保你已點擊郵件中的連結", "Failure to create room": "創建聊天室失敗", "Favourite": "我的最愛", "favourite": "收藏", @@ -188,8 +188,8 @@ "Filter room members": "過濾聊天室成員", "Forget room": "忘記聊天室", "Forgot your password?": "忘記密碼?", - "For security, this session has been signed out. Please sign in again.": "出於安全考慮,此會話已被注銷。請重新登錄。.", - "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "出於安全考慮,用戶注銷時會清除瀏覽器里的端到端加密密鑰。如果你想要下次登錄 Riot 時能解密過去的聊天記錄,請導出你的聊天室密鑰。", + "For security, this session has been signed out. Please sign in again.": "因為安全因素,此工作階段已被登出。請重新登入。", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "因為安全因素,登出將會從此瀏覽器刪除任何端到端加密的金鑰。若您想要在未來的 Riot 工作階段中解密您的對話紀錄,請將您的聊天室金鑰匯出並好好存放。", "Found a bug?": "發現漏洞?", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s 從 %(fromPowerLevel)s 變為 %(toPowerLevel)s", "Guests can't set avatars. Please register.": "游客不能設置頭像。請注冊。.", @@ -204,49 +204,49 @@ "Historical": "曆史", "Homeserver is": "主服務器是", "Identity Server is": "身份認證服務器是", - "I have verified my email address": "我已經驗證了我的郵箱地址", + "I have verified my email address": "我已經驗證了我的電子郵件地址", "Import E2E room keys": "導入聊天室端對端加密密鑰", "Incorrect verification code": "驗證碼錯誤", "Interface Language": "界面語言", "Invalid alias format": "別名格式錯誤", "Invalid address format": "地址格式錯誤", - "Invalid Email Address": "郵箱地址格式錯誤", + "Invalid Email Address": "無效的電子郵件地址", "Invalid file%(extra)s": "非法文件%(extra)s", "Invite new room members": "邀請新的聊天室成員", "Join Room": "加入聊天室", "joined": "加入了", "%(targetName)s joined the room.": "%(targetName)s 加入了聊天室。.", - "Jump to first unread message.": "跳到第一條未讀消息。", + "Jump to first unread message.": "跳到第一則未讀訊息。", "%(senderName)s kicked %(targetName)s.": "%(senderName)s 把 %(targetName)s 踢出了聊天室。.", "Leave room": "離開聊天室", "Login as guest": "以游客的身份登錄", "New password": "新密碼", "Report it": "報告", - "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "重設密碼會導致所有設備上的端到端加密密鑰被重置,使得加密的聊天記錄不可讀,除非你事先導出密鑰,修改密碼后再導入。此問題將來會得到改善。.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "重設密碼目前會把所有裝置上的端到端加密金鑰重設,讓已加密的聊天歷史不可讀,除非您先匯出您的聊天室金鑰並在稍後重新匯入。這會在未來改進。", "restore": "恢復", "Return to app": "返回 App", "Return to login screen": "返回登錄頁面", - "Riot does not have permission to send you notifications - please check your browser settings": "Riot 未被允許向你推送消息 - 請檢查瀏覽器設置", - "Riot was not given permission to send notifications - please try again": "Riot 未被允許推送消息通知 - 請重試", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot 未被允許向你推送通知 ── 請檢查您的瀏覽器設定", + "Riot was not given permission to send notifications - please try again": "Riot 未被允許向你推送通知 ── 請重試", "riot-web version:": "riot-網頁版:", "Room %(roomId)s not visible": "聊天室 %(roomId)s 已隱藏", "Room Colour": "聊天室顏色", "Room name (optional)": "聊天室名稱 (可選)", "Rooms": "聊天室", "Scroll to bottom of page": "滾動到頁面底部", - "Scroll to unread messages": "滾動到未讀消息", + "Scroll to unread messages": "捲動到未讀訊息", "Search": "搜尋", "Search failed": "搜索失敗", "Searches DuckDuckGo for results": "搜索 DuckDuckGo", - "Send a message (unencrypted)": "發送消息 (非加密)", - "Send an encrypted message": "發送加密消息", - "Sender device information": "發送者的設備信息", + "Send a message (unencrypted)": "傳送訊息(未加密)", + "Send an encrypted message": "傳送加密訊息", + "Sender device information": "發送者的裝置信息", "Send Invites": "發送邀請", "Send Reset Email": "發送密碼重設郵件", "sent an image": "發了一張圖片", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s 發了一張圖片。.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s 向 %(targetDisplayName)s 發了加入聊天室的邀請。.", - "sent a video": "發了一個視頻", + "sent a video": "影片已傳送", "Server error": "伺服器錯誤", "Server may be unavailable or overloaded": "服務器可能不可用或者超載", "Server may be unavailable, overloaded, or search timed out :(": "服務器可能不可用、超載,或者搜索超時 :(", @@ -261,7 +261,7 @@ "Show timestamps in 12 hour format (e.g. 2:30pm)": "用12小時制顯示時間戳 (如:下午 2:30)", "Signed Out": "已退出登錄", "Sign in": "登錄", - "Sign out": "注銷", + "Sign out": "登出", "since the point in time of selecting this option": "從選擇此選項起", "since they joined": "從他們加入時起", "since they were invited": "從他們被邀請時起", @@ -272,13 +272,13 @@ "Start Chat": "開始聊天", "Submit": "提交", "Success": "成功", - "The default role for new room members is": "此聊天室新成員的默認角色是", + "The default role for new room members is": "此聊天室新成員的預設角色是", "The main address for this room is": "此聊天室的主要地址是", "This action cannot be performed by a guest user. Please register to be able to do this.": "訪客無法執行此動作。請註冊以執行此動作。", - "This email address is already in use": "此郵箱地址已經被使用", - "This email address was not found": "未找到此郵箱地址", + "This email address is already in use": "此電子郵件地址已經被使用", + "This email address was not found": "未找到此電子郵件地址", "%(actionVerb)s this person?": "%(actionVerb)s 這個用戶?", - "The email address linked to your account must be entered.": "必須輸入和你帳號關聯的郵箱地址。", + "The email address linked to your account must be entered.": "必須輸入和你帳號關聯的電子郵件地址。", "The file '%(fileName)s' exceeds this home server's size limit for uploads": "文件 '%(fileName)s' 超過了此主伺服器的上傳大小限制", "The file '%(fileName)s' failed to upload": "文件 '%(fileName)s' 上傳失敗", "Turn Markdown off": "關閉Markdown 語法", @@ -329,7 +329,7 @@ "Please Register": "請註冊", "Add a topic": "新增標題", "VoIP": "VoIP", - "Default Device": "默認裝置", + "Default Device": "預設裝置", "Microphone": "麥克風", "Camera": "攝影機", "Anyone": "任何人", @@ -341,7 +341,7 @@ "Reason": "原因", "Register": "注冊", "rejected": "拒絕", - "Default server": "默認的伺服器", + "Default server": "預設伺服器", "Custom server": "自定的伺服器", "Home server URL": "自家伺服器網址", "Identity server URL": "識別伺服器網址", @@ -353,12 +353,12 @@ "Error decrypting video": "解密影片出錯", "Add an Integration": "新增整合器", "Ongoing conference call%(supportedText)s.": "%(supportedText)s 正在進行會議通話。", - " (unsupported)": " (不支持)", + " (unsupported)": " (不支援)", "URL Previews": "網址預覽", "Enable URL previews for this room (affects only you)": "啟用此房間的網址預覽(僅影響您)", "Drop file here to upload": "把文件放在這裡上傳", - "Disable URL previews by default for participants in this room": "默認情況下,此房間的參與者禁用網址預覽", - "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "默認情況下,這個房間的參與者的網址預覽是%(globalDisableUrlPreview)s。", + "Disable URL previews by default for participants in this room": "預設情況下,此房間的參與者停用網址預覽", + "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "預設情況下,這個房間的參與者的網址預覽是%(globalDisableUrlPreview)s。", "Removed or unknown message type": "已刪除或未知的信息類型", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "您即將被帶到第三方網站,以便您可以驗證您的帳戶以使用%(integrationsUrl)s。你想繼續嗎?", "Close": "關閉", From 0186bfc483a963093d7ca1c5a37b3e470ea0cb0e Mon Sep 17 00:00:00 2001 From: Jan Kudrik Date: Sat, 26 Aug 2017 18:46:42 +0000 Subject: [PATCH 37/52] Translated using Weblate (Czech) Currently translated at 23.8% (232 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 167 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 165 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index d10f006254..c592e14076 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -53,7 +53,7 @@ "Favourite": "V oblíbených", "Mute": "Ztišit", "Continue": "Pokračovat", - "Failed to change password. Is your password correct?": "Nelze změnit heslo. Je Vaše heslo správné?", + "Failed to change password. Is your password correct?": "Nepodařilo se změnit heslo. Je vaše heslo správné?", "Welcome page": "Uvítací stránka", "Operation failed": "Chyba operace", "Please Register": "Prosím zaregistrujte se", @@ -67,5 +67,168 @@ "Friday": "Pátek", "Saturday": "Sobota", "OK": "OK", - "Failed to forget room %(errCode)s": "Nepodařilo se zapomenout místnost %(errCode)s" + "Failed to forget room %(errCode)s": "Nepodařilo se zapomenout místnost %(errCode)s", + "Dismiss": "Zahodit", + "powered by Matrix": "poháněno Matrixem", + "Custom Server Options": "Vlastní serverové volby", + "to favourite": "oblíbíte", + "to demote": "upozadíte", + "Drop here %(toAction)s": "Přetažením sem %(toAction)s", + "Add a widget": "Přidat widget", + "af": "Afrikánština", + "ar-ae": "Arabština (SAE)", + "ar-bh": "Arabština (Bahrajn)", + "ar-dz": "Arabština (Alžírsko)", + "ar-eg": "Arabština (Egypt)", + "ar-iq": "Arabština (Irák)", + "ar-jo": "Arabština (Jordánsko)", + "ar-kw": "Arabština (Kuvajt)", + "ar-lb": "Arabština (Libanon)", + "ar-ly": "Arabština (Libye)", + "ar-ma": "Arabština (Maroko)", + "ar-om": "Arabština (Omán)", + "ar-qa": "Arabština (Katar)", + "ar-sa": "Arabština (Saúdská Arábie)", + "ar-sy": "Arabština (Sýrie)", + "ar-tn": "Arabština (Tunisko)", + "ar-ye": "Arabština (Jemen)", + "be": "Běloruština", + "bg": "Bulharština", + "ca": "Katalánština", + "cs": "Čeština", + "da": "Dánština", + "de-at": "Němčina (Rakousko)", + "de-ch": "Němčina (Švýcarsko)", + "de": "Němčina", + "de-li": "Němčina (Lichtenštejnsko)", + "de-lu": "Němčina (Lucembursko)", + "el": "Řečtina", + "en-au": "Angličtina (Austrálie)", + "en-bz": "Angličtina (Belize)", + "en-ca": "Angličtina (Kanada)", + "en": "Angličtina", + "en-gb": "Angličtina (Spojené království)", + "en-ie": "Angličtina (Irsko)", + "en-jm": "Angličtina (Jamajka)", + "en-nz": "Angličtina (Nový Zéland)", + "en-tt": "Angličtina (Trinidad)", + "en-us": "Angličtina (Spojené státy)", + "en-za": "Angličtina (Jihoafrická republika)", + "es-ar": "Španělština (Argentina)", + "es-bo": "Španělština (Bolívie)", + "es-cl": "Španělština (Chile)", + "es-co": "Španělština (Kolumbie)", + "es-cr": "Španělština (Kostarika)", + "es-do": "Španělština (Dominikánská republika)", + "es-ec": "Španělština (Ekvádor)", + "es-gt": "Španělština (Guatemala)", + "es-hn": "Španělština (Honduras)", + "es-mx": "Španělština (Mexiko)", + "es-ni": "Španělština (Nikaragua)", + "es-pa": "Španělština (Panama)", + "es-pe": "Španělština (Peru)", + "es-pr": "Španělština (Portoriko)", + "es-py": "Španělština (Paraguay)", + "es": "Španělština (Španělsko)", + "es-sv": "Španělština (Salvador)", + "es-uy": "Španělština (Uruguay)", + "es-ve": "Španělština (Venezuela)", + "et": "Estonština", + "eu": "Baskičtina (Baskicko)", + "fa": "Perština", + "fi": "Finština", + "fo": "Faerština", + "fr-be": "Francouzština (Belgie)", + "fr-ca": "Francouzština (Kanada)", + "fr-ch": "Francouzština (Švýcarsko)", + "fr": "Francouzština", + "fr-lu": "Francouzština (Lucembursko)", + "ga": "Irština", + "gd": "Gaelština (Skotsko)", + "he": "Hebrejština", + "hi": "Hindština", + "hr": "Chorvatština", + "hu": "Maďarština", + "id": "Indonéština", + "is": "Islandština", + "it-ch": "Italština (Švýcarsko)", + "it": "Italština", + "ja": "Japonština", + "ji": "Jidiš", + "ko": "Korejština", + "lt": "Litevština", + "lv": "Lotyština", + "mk": "Makedonština (Makedonie)", + "ms": "Malajština", + "mt": "Maltština", + "nl-be": "Nizozemština (Belgie)", + "nl": "Nizozemština", + "no": "Norština", + "pl": "Polština", + "pt-br": "Brazilská portugalština", + "pt": "Portugalština", + "rm": "Rétorománština", + "ro-mo": "Rumunština (Moldavsko)", + "ro": "Rumunština", + "ru-mo": "Ruština (Moldavsko)", + "ru": "Ruština", + "sb": "Lužická srbština", + "sk": "Slovenština", + "sl": "Slovinština", + "sq": "Albánština", + "sr": "Srbština", + "sv-fi": "Švédština (Finsko)", + "sv": "Švédština", + "sz": "Sámština (Laponsko)", + "th": "Thajština", + "tr": "Turečtina", + "uk": "Ukrajinština", + "ur": "Urdština", + "vi": "Vietnamština", + "zh-cn": "Čínština (ČLR)", + "zh-hk": "Čínština (Hongkong)", + "xh": "Xhoština", + "ve": "Luvendština", + "ts": "Tsonga", + "tn": "Setswanština", + "zh-sg": "Čínština (Singapur)", + "zh-tw": "Čínština (Tchaj-wan)", + "zu": "Zuluština", + "a room": "místnost", + "Accept": "Přijmout", + "%(targetName)s accepted an invitation.": "%(targetName)s přijal/a pozvání.", + "Account": "Účet", + "Access Token:": "Přístupový žeton:", + "Add": "Přidat", + "Add a topic": "Přidat téma", + "Add email address": "Přidat e-mailovou adresu", + "Add phone number": "Přidat telefonní číslo", + "Admin": "Správce", + "Admin tools": "Nástroje pro správu", + "Allow": "Povolit", + "VoIP": "VoIP", + "No Microphones detected": "Nerozpoznány žádné mikrofony", + "No Webcams detected": "Nerozpoznány žádné webkamery", + "Default Device": "Výchozí zařízení", + "Microphone": "Mikrofon", + "Camera": "Kamera", + "Advanced": "Pokročilé", + "Algorithm": "Algoritmus", + "Hide removed messages": "Skrýt odstraněné zprávy", + "Always show message timestamps": "Vždy zobrazovat časové značky zpráv", + "Authentication": "Ověření", + "all room members": "všichni členové místnosti", + "and": "a", + "A new password must be entered.": "Musíte zadat nové heslo.", + "anyone": "kdokoliv", + "An error has occurred.": "Nastala chyba.", + "Anyone": "Kdokoliv", + "Are you sure?": "Určitě?", + "Are you sure you want to leave the room '%(roomName)s'?": "Určitě chcete odejít z místnosti '%(roomName)s'?", + "Are you sure you want to reject the invitation?": "Určitě chcete odmítnout pozvání?", + "Are you sure you want to upload the following files?": "Určitě chcete nahrát následující soubory?", + "Attachment": "Příloha", + "Autoplay GIFs and videos": "Automaticky přehrávat GIFy a videa", + "Bug Report": "Hlášení o chybě", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nelze se připojit k domovskému serveru – zkontrolujte prosím své připojení, prověřte, zdali je SSL certifikát vašeho domovského serveru důvěryhodný, a že některé z rozšíření prohlížeče neblokuje komunikaci." } From 197c449badbe1686db7751b074a8e320353fa72e Mon Sep 17 00:00:00 2001 From: Kaj Printz Date: Wed, 23 Aug 2017 20:45:58 +0000 Subject: [PATCH 38/52] Translated using Weblate (Danish) Currently translated at 23.6% (230 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/da/ --- src/i18n/strings/da.json | 69 ++++++++++++++++++++++++++++++++-------- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json index 8ac311d315..dec3219da9 100644 --- a/src/i18n/strings/da.json +++ b/src/i18n/strings/da.json @@ -144,10 +144,10 @@ "ar-sy": "Arabisk (Syrien)", "be": "Hviderussisk", "bg": "Bulgarisk", - "ca": "Katalansk", + "ca": "Catalansk", "cs": "Tjekkisk", "de-at": "Tysk (Østrig)", - "de-ch": "Tysk (Schweitz)", + "de-ch": "Tysk (Schweiz)", "el": "Græsk", "en-au": "Engelsk (Australien)", "en-ca": "Engelsk (Canada)", @@ -166,42 +166,42 @@ "es": "Spansk (Spanien)", "es-uy": "Spansk (Uruguay)", "es-ve": "Spansk (Venezuela)", - "et": "Estonsk", + "et": "Estisk", "fa": "Farsi", "fi": "Finsk", "fr-be": "Fransk (Belgien)", "fr-ca": "Fransk (Canada)", - "fr-ch": "Fransk (Schweitz)", - "fr": "French", + "fr-ch": "Fransk (Schweiz)", + "fr": "Fransk", "ga": "Irsk", - "he": "Hebræisk", + "he": "Hebraisk", "hi": "Hindi", "hr": "Kroatisk", "hu": "Ungarsk", "id": "Indonesisk", "is": "Islandsk", - "it": "Italian", + "it": "Italiensk", "ja": "Japansk", - "ji": "Yiddish", - "lt": "Littauisk", + "ji": "Jiddisch", + "lt": "Litauisk", "lv": "Lettisk", "ms": "Malaysisk", "mt": "Maltesisk", - "nl": "Dutch", + "nl": "Hollandsk", "no": "Norsk", "pl": "Polsk", - "pt": "Portuguese", + "pt": "Portugisisk", "ro": "Rumænsk", "sb": "Sorbisk", "sk": "Slovakisk", "sl": "Slovensk", "sq": "Albansk", - "sr": "Serbisk (Latin)", + "sr": "Serbisk", "sv": "Svensk", "th": "Thai", "tn": "Tswana", "tr": "Tyrkisk", - "ts": "Tonga", + "ts": "Tsonga", "uk": "Ukrainsk", "ur": "Urdu", "ve": "Venda", @@ -210,5 +210,46 @@ "zh-cn": "Kinesisk (Folkerepublikken Kina)", "zh-sg": "Kinesisk (Singapore)", "zh-tw": "Kinesisk (Taiwan)", - "zu": "Zulu" + "zu": "Zulu", + "Add a widget": "Tilføj en widget", + "ar-ae": "Arabisk (U.A.E.)", + "ar-bh": "Arabisk (Bahrain)", + "ar-dz": "Arabisk (Algeriet)", + "ar-iq": "Arabisk (Irak)", + "ar-jo": "Arabisk (Jordan)", + "ar-kw": "Arabisk (Kuwait)", + "ar-lb": "Arabisk (Libanon)", + "ar-ly": "Arabisk (Libyen)", + "ar-om": "Arabisk (Oman)", + "ar-qa": "Arabisk (Qatar)", + "ar-ye": "Arabisk (Jemen)", + "ar-tn": "Arabisk (Tunesien)", + "de-li": "Tysk (Liechtenstein)", + "de-lu": "Tysk (Luxembourg)", + "en-bz": "Engelsk (Belize)", + "en-gb": "Engelsk (United Kingdom)", + "en-jm": "Engelsk (Jamaica)", + "en-tt": "Engelsk (Trinidad)", + "es-co": "Spansk (Colombia)", + "es-cr": "Spansk (Costa Rica)", + "es-do": "Spansk (Dominikanske Republik)", + "es-gt": "Spansk (Guatemala)", + "es-pa": "Spansk (Panama)", + "es-pe": "Spansk (Peru)", + "es-pr": "Spansk (Puerto Rico)", + "es-sv": "Spansk (El Salvador)", + "eu": "Baskisk (Baskien)", + "fo": "Færøsk", + "fr-lu": "Fransk (Luxembourg)", + "gd": "Gælisk (Skotland)", + "it-ch": "Italiensk (Schweiz)", + "ko": "Koreansk", + "mk": "Makedonsk (FYROM)", + "nl-be": "Nederlandsk (Belgien)", + "rm": "Rætoromansk", + "ro-mo": "Rumænsk (Republikken Moldova)", + "ru-mo": "Russisk (Republikken Moldova)", + "sv-fi": "Svensk (Finland)", + "sx": "Sutu", + "sz": "Samisk (Lappisk)" } From ea929aac84f0826a827af48997493bfb0c6a17de Mon Sep 17 00:00:00 2001 From: Eric Newport Date: Wed, 23 Aug 2017 23:18:28 +0000 Subject: [PATCH 39/52] Translated using Weblate (English) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/en_EN/ --- src/i18n/strings/en_EN.json | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c1ba1d0c74..7cde0bb9d1 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -158,10 +158,8 @@ "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", "%(items)s and one other": "%(items)s and one other", "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", - "and %(count)s others...": { - "other": "and %(count)s others...", - "one": "and one other..." - }, + "and %(count)s others....other": "and %(count)s others...", + "and %(count)s others....one": "and one other...", "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", "%(names)s and one other are typing": "%(names)s and one other are typing", "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", @@ -224,10 +222,8 @@ "Confirm your new password": "Confirm your new password", "Continue": "Continue", "Could not connect to the integration server": "Could not connect to the integration server", - "%(count)s new messages": { - "one": "%(count)s new message", - "other": "%(count)s new messages" - }, + "%(count)s new messages.one": "%(count)s new message", + "%(count)s new messages.other": "%(count)s new messages", "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", "Create an account": "Create an account", "Create Room": "Create Room", @@ -627,11 +623,9 @@ "Unrecognised command:": "Unrecognised command:", "Unrecognised room alias:": "Unrecognised room alias:", "Unverified": "Unverified", - "Uploading %(filename)s and %(count)s others": { - "zero": "Uploading %(filename)s", - "one": "Uploading %(filename)s and %(count)s other", - "other": "Uploading %(filename)s and %(count)s others" - }, + "Uploading %(filename)s and %(count)s others.zero": "Uploading %(filename)s", + "Uploading %(filename)s and %(count)s others.one": "Uploading %(filename)s and %(count)s other", + "Uploading %(filename)s and %(count)s others.other": "Uploading %(filename)s and %(count)s others", "uploaded a file": "uploaded a file", "Upload avatar": "Upload avatar", "Upload Failed": "Upload Failed", @@ -749,10 +743,8 @@ "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", "Auto-complete": "Auto-complete", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", - "(~%(count)s results)": { - "one": "(~%(count)s result)", - "other": "(~%(count)s results)" - }, + "(~%(count)s results).one": "(~%(count)s result)", + "(~%(count)s results).other": "(~%(count)s results)", "Cancel": "Cancel", "or": "or", "Active call": "Active call", @@ -966,7 +958,7 @@ "You are a member of these groups:": "You are a member of these groups:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", "Join an existing group": "Join an existing group", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.", "Featured Rooms:": "Featured Rooms:", "Error whilst fetching joined groups": "Error whilst fetching joined groups", "Featured Users:": "Featured Users:", From 3549c660be2f63c78fc875172c5f686ed36696cd Mon Sep 17 00:00:00 2001 From: kaiyou Date: Fri, 1 Sep 2017 17:42:18 +0000 Subject: [PATCH 40/52] Translated using Weblate (French) Currently translated at 99.4% (966 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 57b4c302ea..8c2f61fa93 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -337,7 +337,7 @@ "Login as guest": "S'identifier en tant que visiteur", "Logout": "Se déconnecter", "Low priority": "Priorité basse", - "%(senderName)s made future room history visible to": "%(senderName)s a rendu l'historique visible de", + "%(senderName)s made future room history visible to": "%(senderName)s a rendu l'historique visible à", "Manage Integrations": "Gestion des intégrations", "Markdown is disabled": "Le formatage \"Markdown\" est désactivé", "Markdown is enabled": "Le formatage “Markdown” est activé", From 05c4b042adfcd8a181aebb2f07fd6450b32c0cd2 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Mon, 4 Sep 2017 07:30:02 +0000 Subject: [PATCH 41/52] Translated using Weblate (German) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 877bad9bfe..11c7ac9dd5 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -757,7 +757,7 @@ "ex. @bob:example.com": "z. B. @bob:example.com", "Add User": "Benutzer hinzufügen", "Sign in with CAS": "Mit CAS anmelden", - "Custom Server Options": "Erweiterte Server-Optionen", + "Custom Server Options": "Benutzerdefinierte Server-Optionen", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Du kannst die erweiterten Server-Optionen nutzen, um dich an anderen Matrix-Servern anzumelden, indem du eine andere Heimserver-URL angibst.", "This allows you to use this app with an existing Matrix account on a different home server.": "Dies erlaubt es dir, diese App mit einem existierenden Matrix-Benutzerkonto auf einem anderen Heimserver zu verwenden.", "Dismiss": "Ablehnen", From 1996c02adb015d9cb4e935f0171f9b37b28cd0dd Mon Sep 17 00:00:00 2001 From: Lauris Mierkalns Date: Fri, 25 Aug 2017 20:56:35 +0000 Subject: [PATCH 42/52] Translated using Weblate (Latvian) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/lv/ --- src/i18n/strings/lv.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index 3270975938..c222b69a79 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -91,7 +91,7 @@ "pl": "Poļu", "pt-br": "Brazīlijas portugāļu", "pt": "Portugāļu", - "rm": "Rhaeto-Rumāņu", + "rm": "Retoromāņu", "ro-mo": "Rumāņu (Moldovas Republika)", "ro": "Rumāņu", "ru-mo": "Krievu (Moldovas Republika)", @@ -972,5 +972,5 @@ "%(widgetName)s widget added by %(senderName)s": "%(senderName)s pievienoja %(widgetName)s vidžetu", "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s dzēsa vidžetu %(widgetName)s", "Robot check is currently unavailable on desktop - please use a web browser": "Robotu pārbaude šobrīd nav pieejama darbvirsmas versijā. Lūdzu izmanto web pārlūku", - "Revoke widget access": "Atsaukt piekļuvi vidžetam" + "Revoke widget access": "Atsaukt vidžeta piekļuvi" } From a294a2c54520aea67330b0a8d82440983f25d2e9 Mon Sep 17 00:00:00 2001 From: anmcp Date: Sat, 26 Aug 2017 14:00:05 +0000 Subject: [PATCH 43/52] Translated using Weblate (Portuguese) Currently translated at 91.8% (892 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/pt/ --- src/i18n/strings/pt.json | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index 827efeb16a..fae9e3a12a 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -556,10 +556,8 @@ "%(items)s and %(remaining)s others": "%(items)s e %(remaining)s outros", "%(items)s and one other": "%(items)s e um outro", "%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s", - "and %(count)s others...": { - "other": "e %(count)s outros...", - "one": "e um outro..." - }, + "and %(count)s others....other": "e %(count)s outros...", + "and %(count)s others....one": "e um outro...", "Are you sure?": "Você tem certeza?", "Attachment": "Anexo", "Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos", @@ -882,7 +880,7 @@ "Uploading %(filename)s and %(count)s others.one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", "Hide removed messages": "Ocultar mensagens removidas", "You may wish to login with a different account, or add this email to this account.": "Você pode querer fazer login com uma conta diferente, ou adicionar este e-mail a esta conta.", - "Welcome page": "Página de boas vindas", + "Welcome page": "Página de boas-vindas", "Upload new:": "Enviar novo:", "Private Chat": "Conversa privada", "You must register to use this functionality": "Você deve se registrar para poder usar esta funcionalidade", @@ -907,7 +905,7 @@ "Failed to upload profile picture!": "Falha ao enviar a imagem de perfil!", "This invitation was sent to an email address which is not associated with this account:": "Este convite foi enviado para um endereço de e-mail que não é associado a esta conta:", "Show Text Formatting Toolbar": "Exibir barra de formatação de texto", - "Room directory": "Lista pública de salas", + "Room directory": "Lista de salas", "Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil", "Incoming call from %(name)s": "Chamada de %(name)s recebida", "Last seen": "Último uso", @@ -956,7 +954,7 @@ "Home": "Início", "Something went wrong!": "Algo deu errado!", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nível de permissão %(powerLevelNumber)s)", - "Start chat": "Iniciar conversa pessoal", + "Start chat": "Iniciar conversa", "You already have existing direct chats with this user:": "Você já tem conversas pessoais com esta pessoa:", "Accept": "Aceitar", "%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento." From e215e7a4030b44c4f2a9f6847e4c3185ee2d7546 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 25 Aug 2017 06:50:54 +0000 Subject: [PATCH 44/52] Translated using Weblate (Russian) Currently translated at 100.0% (971 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 0d605bed5b..f4444e01f6 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -736,7 +736,7 @@ "This room is not accessible by remote Matrix servers": "Это комната недоступна с удаленных серверов Matrix", "To ban users": "Для блокировки пользователей", "to browse the directory": "для просмотра каталога", - "To configure the room": "для настройки комнаты", + "To configure the room": "Для настройки комнаты", "To invite users into the room": "Чтобы приглашать пользователей в комнату", "to join the discussion": "присоединиться к дискуссии", "To kick users": "Чтобы удалять пользователей", @@ -957,7 +957,7 @@ "Do you want to set an email address?": "Хотите указать адрес электронной почты?", "This will allow you to reset your password and receive notifications.": "Это позволит при необходимости сбросить пароль и получать уведомления.", "Press to start a chat with someone": "Нажмите для начала чата с кем-либо", - "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы ещё не находитесь ни в одной комнате! Нажмите , чтобы создать комнату или для просмотра каталога", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы еще не вошли ни в одну из комнат! Нажмите , чтобы создать комнату или для просмотра каталога", "To return to your account in future you need to set a password": "Чтобы вернуться к учетной записи в будущем, необходимо задать пароль", "Skip": "Пропустить", "Start verification": "Начать проверку", From abbff254544b27a500f0cd1cc922b12c5ba2f653 Mon Sep 17 00:00:00 2001 From: mark Date: Thu, 24 Aug 2017 21:41:33 +0000 Subject: [PATCH 45/52] Translated using Weblate (Spanish) Currently translated at 80.8% (785 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/ --- src/i18n/strings/es.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index fca74df9f9..5b2b87c5a4 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -790,5 +790,6 @@ "Apr": "Abr", "May": "May", "Jun": "Jun", - "Jul": "Jul" + "Jul": "Jul", + "Aug": "August" } From 5d194107237aed3bed1ee70f9e4e702962a01077 Mon Sep 17 00:00:00 2001 From: tompatulpan Date: Fri, 25 Aug 2017 06:20:24 +0000 Subject: [PATCH 46/52] Translated using Weblate (Swedish) Currently translated at 56.4% (548 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 565a470e4e..aa57720502 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -539,5 +539,17 @@ "Thursday": "torsdag", "Friday": "fredag", "Saturday": "lördag", - "Welcome page": "Välkomstsida" + "Welcome page": "Välkomstsida", + "Add a widget": "Lägg till en widget", + "Allow": "Tillåt", + "Cannot add any more widgets": "Det går inte att lägga till fler widgets", + "Changes colour scheme of current room": "Ändrar färgschema för nuvarande rum", + "Delete widget": "Ta bort widget", + "Define the power level of a user": "Definiera anseende för en användare", + "Do you want to load widget from URL:": "Vill du ladda widgeten från URL:", + "Edit": "Redigera", + "Enable automatic language detection for syntax highlighting": "Aktivera automatisk språkdetektering för syntaxmarkering", + "Hide Apps": "Dölj Appar", + "Hide avatar and display name changes": "Dölj avatar och visningsnamns ändringar", + "Integrations Error": "Integrationsfel" } From 102a4dfac054b7c39287044197ec00ece743f4d2 Mon Sep 17 00:00:00 2001 From: sahajkoka Date: Thu, 24 Aug 2017 09:20:06 +0000 Subject: [PATCH 47/52] Translated using Weblate (Telugu) Currently translated at 34.6% (336 of 971 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/te/ --- src/i18n/strings/te.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/te.json b/src/i18n/strings/te.json index 0f1d5b9a6d..f3c65d808f 100644 --- a/src/i18n/strings/te.json +++ b/src/i18n/strings/te.json @@ -305,7 +305,7 @@ "strike": "సమ్మె", "underline": "అండర్లైన్", "Enter Code": "కోడ్ వ్రాయండి", - "Failed to forget room %(errCode)s": "గది %(errCode)s మర్చిపోవడంలో విఫలమైంది", + "Failed to forget room %(errCode)s": "గది మర్చిపోవడం విఫలమైంది %(errCode)s", "Incorrect verification code": "ధృవీకరణ కోడ్ సరిగా లెదు", "unknown error code": "తెలియని కోడ్ లోపం", "code": "కోడ్", @@ -331,7 +331,7 @@ "Failed to join the room": "గదిలో చేరడం విఫలమైంది", "Favourite": "గుర్తుంచు", "Mute": "నిశబ్ధము", - "Notifications": "తాఖీదు", + "Notifications": "ప్రకటనలు", "Operation failed": "కార్యం విఫలమైంది", "Search": "శోధన", "Settings": "అమరికలు", From ce57464dd1c4c37f7eb327e6890c36163f72816e Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 25 Aug 2017 06:50:54 +0000 Subject: [PATCH 48/52] Translated using Weblate (Russian) Currently translated at 100.0% (972 of 972 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 8f537d3abb..3ff15f4f5c 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1024,5 +1024,6 @@ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s виджет, добавленный %(senderName)s", "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s виджет, удаленный %(senderName)s", "Robot check is currently unavailable on desktop - please use a web browser": "Проверка робота в настоящее время недоступна на компьютере - пожалуйста, используйте браузер", - "Publish this room to the public in %(domain)s's room directory?": "Опубликовать эту комнату для пользователей в %(domain)s каталоге комнат?" + "Publish this room to the public in %(domain)s's room directory?": "Опубликовать эту комнату для пользователей в %(domain)s каталоге комнат?", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s виджет, измененный %(senderName)s" } From b66b6b6d9470f91bef2eb984afdd4769c3c27c80 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Mon, 4 Sep 2017 10:59:38 +0000 Subject: [PATCH 49/52] Translated using Weblate (Basque) Currently translated at 100.0% (972 of 972 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/eu/ --- src/i18n/strings/eu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index d14054ad98..f0821f57df 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -972,5 +972,6 @@ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s trepeta kendu du %(senderName)s erabiltzaileak", "Verifies a user, device, and pubkey tuple": "Erabiltzaile, gailu eta gako publiko multzoa egiaztatzen du", "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Dagoen talde batetara elkartzeko taldearen identifikatzailea ezagutu behar duzu, honen antza du: +adibidea:matrix.org.", - "Robot check is currently unavailable on desktop - please use a web browser": "Robot egiaztaketa orain ez dago eskuragarri mahaigainean - erabili web nabigatzailea" + "Robot check is currently unavailable on desktop - please use a web browser": "Robot egiaztaketa orain ez dago eskuragarri mahaigainean - erabili web nabigatzailea", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s trepeta aldatu du %(senderName)s erabiltzaileak" } From c902652f6cf3535c4048545c88a17d85820d196f Mon Sep 17 00:00:00 2001 From: Eric Newport Date: Wed, 23 Aug 2017 23:18:28 +0000 Subject: [PATCH 50/52] Translated using Weblate (English) Currently translated at 100.0% (972 of 972 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/en_EN/ --- src/i18n/strings/en_EN.json | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 9be04ccab8..2ef0fba86d 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -158,8 +158,10 @@ "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", "%(items)s and one other": "%(items)s and one other", "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", - "and %(count)s others....other": "and %(count)s others...", - "and %(count)s others....one": "and one other...", + "and %(count)s others...": { + "other": "and %(count)s others...", + "one": "and one other..." + }, "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", "%(names)s and one other are typing": "%(names)s and one other are typing", "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", @@ -222,8 +224,10 @@ "Confirm your new password": "Confirm your new password", "Continue": "Continue", "Could not connect to the integration server": "Could not connect to the integration server", - "%(count)s new messages.one": "%(count)s new message", - "%(count)s new messages.other": "%(count)s new messages", + "%(count)s new messages": { + "one": "%(count)s new message", + "other": "%(count)s new messages" + }, "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", "Create an account": "Create an account", "Create Room": "Create Room", @@ -623,9 +627,11 @@ "Unrecognised command:": "Unrecognised command:", "Unrecognised room alias:": "Unrecognised room alias:", "Unverified": "Unverified", - "Uploading %(filename)s and %(count)s others.zero": "Uploading %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "Uploading %(filename)s and %(count)s other", - "Uploading %(filename)s and %(count)s others.other": "Uploading %(filename)s and %(count)s others", + "Uploading %(filename)s and %(count)s others": { + "zero": "Uploading %(filename)s", + "one": "Uploading %(filename)s and %(count)s other", + "other": "Uploading %(filename)s and %(count)s others" + }, "uploaded a file": "uploaded a file", "Upload avatar": "Upload avatar", "Upload Failed": "Upload Failed", @@ -743,8 +749,10 @@ "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", "Auto-complete": "Auto-complete", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", - "(~%(count)s results).one": "(~%(count)s result)", - "(~%(count)s results).other": "(~%(count)s results)", + "(~%(count)s results)": { + "one": "(~%(count)s result)", + "other": "(~%(count)s results)" + }, "Cancel": "Cancel", "or": "or", "Active call": "Active call", @@ -958,7 +966,7 @@ "You are a member of these groups:": "You are a member of these groups:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", "Join an existing group": "Join an existing group", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.", + "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.", "Featured Rooms:": "Featured Rooms:", "Error whilst fetching joined groups": "Error whilst fetching joined groups", "Featured Users:": "Featured Users:", From 79ee41351c106b6504236020b193915775dd27d9 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 4 Sep 2017 15:45:28 +0100 Subject: [PATCH 51/52] Fix typo --- src/components/structures/MyGroups.js | 2 +- src/i18n/strings/basefile.json | 2 +- src/i18n/strings/be.json | 2 +- src/i18n/strings/de_DE.json | 2 +- src/i18n/strings/en_EN.json | 2 +- src/i18n/strings/en_US.json | 2 +- src/i18n/strings/eu.json | 2 +- src/i18n/strings/fi.json | 2 +- src/i18n/strings/fr.json | 2 +- src/i18n/strings/hu.json | 2 +- src/i18n/strings/lv.json | 2 +- src/i18n/strings/nl.json | 2 +- src/i18n/strings/ru.json | 2 +- src/i18n/strings/zh_Hant.json | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/components/structures/MyGroups.js b/src/components/structures/MyGroups.js index 0b8055beda..624f3c67dd 100644 --- a/src/components/structures/MyGroups.js +++ b/src/components/structures/MyGroups.js @@ -125,7 +125,7 @@ export default withMatrixClient(React.createClass({ {_tJsx( - 'To join an exisitng group you\'ll have to '+ + 'To join an existing group you\'ll have to '+ 'know its group identifier; this will look '+ 'something like +example:matrix.org.', /(.*)<\/i>/, diff --git a/src/i18n/strings/basefile.json b/src/i18n/strings/basefile.json index 9e26dfeeb6..0967ef424b 100644 --- a/src/i18n/strings/basefile.json +++ b/src/i18n/strings/basefile.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/src/i18n/strings/be.json b/src/i18n/strings/be.json index 9e26dfeeb6..0967ef424b 100644 --- a/src/i18n/strings/be.json +++ b/src/i18n/strings/be.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 24786418a8..d4e61ca310 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1022,7 +1022,7 @@ "You are a member of these groups:": "Du bist Mitglied in folgenden Gruppen:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Erstelle eine Gruppe um deine Community darzustellen! Definiere eine Menge von Räumen und deine eigene angepasste Startseite um deinen Bereich im Matrix-Universum zu markieren.", "Join an existing group": "Trete eine existierenden Gruppe bei", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Um einer bereits vorhandenen Gruppe beitreten zu können, muss dir die Gruppen-Kennung bekannt sein. Diese sieht ungefähr so aus: '+example:matrix.org'.", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Um einer bereits vorhandenen Gruppe beitreten zu können, muss dir die Gruppen-Kennung bekannt sein. Diese sieht ungefähr so aus: '+example:matrix.org'.", "Featured Rooms:": "Hervorgehobene Räume:", "Error whilst fetching joined groups": "Fehler beim Laden beigetretener Gruppen", "Featured Users:": "Hervorgehobene Nutzer:", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 2ef0fba86d..2340def67c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -966,7 +966,7 @@ "You are a member of these groups:": "You are a member of these groups:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.", "Join an existing group": "Join an existing group", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.", "Featured Rooms:": "Featured Rooms:", "Error whilst fetching joined groups": "Error whilst fetching joined groups", "Featured Users:": "Featured Users:", diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index ae9c075683..d75c3d7408 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -985,5 +985,5 @@ "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple", "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org." + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org." } diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index f0821f57df..1c80c9e338 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -971,7 +971,7 @@ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s trepeta gehitu du %(senderName)s erabiltzaileak", "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s trepeta kendu du %(senderName)s erabiltzaileak", "Verifies a user, device, and pubkey tuple": "Erabiltzaile, gailu eta gako publiko multzoa egiaztatzen du", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Dagoen talde batetara elkartzeko taldearen identifikatzailea ezagutu behar duzu, honen antza du: +adibidea:matrix.org.", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Dagoen talde batetara elkartzeko taldearen identifikatzailea ezagutu behar duzu, honen antza du: +adibidea:matrix.org.", "Robot check is currently unavailable on desktop - please use a web browser": "Robot egiaztaketa orain ez dago eskuragarri mahaigainean - erabili web nabigatzailea", "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s trepeta aldatu du %(senderName)s erabiltzaileak" } diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 9e26dfeeb6..0967ef424b 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index aeebc64c83..5ce9eaf02c 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -969,7 +969,7 @@ "You are a member of these groups:": "Vous êtes membre des groupes suivants :", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Créez un groupe pour représenter votre communauté ! Définissez un jeu de salons et votre propre page d'accueil pour marquer votre espace dans l'univers Matrix.", "Join an existing group": "Rejoindre un groupe existant", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Pour rejoindre un groupe existant, vous devez connaître l'identifiant de ce groupe ; il ressemblera à +exemple:matrix.org.", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Pour rejoindre un groupe existant, vous devez connaître l'identifiant de ce groupe ; il ressemblera à +exemple:matrix.org.", "Featured Rooms:": "Salons mis en avant :", "Error whilst fetching joined groups": "Erreur en récupérant la liste des groupes", "Featured Users:": "Utilisateurs mis en avant :", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index e935f63cff..a51fc01044 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -953,7 +953,7 @@ "You are a member of these groups:": "Ezeknek a csoportoknak vagy a tagja:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Hozz létre csoportot a közösség meghatározásához! Jelölj ki szobákat és saját kezdőoldalt amivel meghatározhatod a territóriumodat a Matrix univerzumában.", "Join an existing group": "Csatlakozz meglévő csoporthoz", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Ahhoz, hogy meglévő csoporthoz csatlakozhass tudnod kell a csoport azonosítóját ami valahogy így nézhet ki: +példa:matrix.org.", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Ahhoz, hogy meglévő csoporthoz csatlakozhass tudnod kell a csoport azonosítóját ami valahogy így nézhet ki: +példa:matrix.org.", "Featured Rooms:": "Kiemelt szobák:", "Error whilst fetching joined groups": "Hiba a csatlakozott csoportok betöltésénél", "Featured Users:": "Kiemelt felhasználók:", diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index d4b4052941..6deceac02b 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -960,7 +960,7 @@ "You are a member of these groups:": "Tu esi sekojošo grupu biedrs:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Izveido grupu, lai prezentētu savu komūnu! Definē istabu grupu un savu personīgo mājaslapu, lai iezīmētu savu vietu Matrix universumā.", "Join an existing group": "Pievienoties eksistējošai grupai", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Lai pievienotos eksistējošai grupai, Tev ir jāzina šīs grupas identifikators. Piemēram: +latvija:matrix.org.", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Lai pievienotos eksistējošai grupai, Tev ir jāzina šīs grupas identifikators. Piemēram: +latvija:matrix.org.", "Featured Rooms:": "Ieteiktās istabas:", "Error whilst fetching joined groups": "Notika kļūda, nosakot pievienotās grupas", "Featured Users:": "Ieteiktie lietotāji:", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 1010b31a87..d72813177b 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -964,7 +964,7 @@ "You are a member of these groups:": "Je bent een deelnemer van deze groepen:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Maak een groep aan om je gemeenschap te representateren! Defineer een set van ruimtes en maak je eigen aangepaste homepagina om je eigen plek in het Matrix universum te creëren.", "Join an existing group": "Treed tot een bestaande groep toe", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Om tot een bestaande groep toe te treden moet je groep identificatie weten; dit zal er ongeveer uit zien als +voorbeeld:matrix.org.", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Om tot een bestaande groep toe te treden moet je groep identificatie weten; dit zal er ongeveer uit zien als +voorbeeld:matrix.org.", "Featured Rooms:": "Prominente Ruimtes:", "Error whilst fetching joined groups": "Er is een fout opgetreden tijdens het ophalen van de tot toegretreden groepen", "Featured Users:": "Prominente Gebruikers:", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 3ff15f4f5c..e15fce90c4 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1012,7 +1012,7 @@ "You are a member of these groups:": "Вы являетесь членом этих групп:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Создайте группу для представления своего сообщества! Определите набор комнат и собственную домашнюю страницу, чтобы выделить свое пространство во вселенной Matrix.", "Join an existing group": "Присоединиться к существующей группе", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Чтобы присоединиться к группе, вам нужно знать ее идентификатор; он выглядит примерно так:+пример:matrix.org.", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "Чтобы присоединиться к группе, вам нужно знать ее идентификатор; он выглядит примерно так:+пример:matrix.org.", "Featured Rooms:": "Рекомендуемые комнаты:", "Error whilst fetching joined groups": "Ошибка при извлечении объединенных групп", "Featured Users:": "Избранные пользователи:", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 27ec122709..2f3d36b481 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -968,7 +968,7 @@ "You are a member of these groups:": "您是這些群組的成員:", "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "建立一個群組來代表您的社群!定義一組聊天室與您自己的自訂首頁來標記您在 Matrix 世界中的空間。", "Join an existing group": "加入既有的群組", - "To join an exisitng group you'll have to know its group identifier; this will look something like +example:matrix.org.": "要加入既有的群組,您將會需要知道其群組識別符;其看起來會像是 +範例:matrix.org。", + "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "要加入既有的群組,您將會需要知道其群組識別符;其看起來會像是 +範例:matrix.org。", "Featured Rooms:": "特色聊天室:", "Error whilst fetching joined groups": "在擷取已加入的群組時發生錯誤", "Featured Users:": "特色使用者:", From de2940f469730b7278cf0cf0d72906c56457a811 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 4 Sep 2017 17:09:36 +0100 Subject: [PATCH 52/52] Fix plurals in translations Weblate doesn't understand counterpart's multi-level format for plurals and helpfully mangles them to be dot-separated keys when it saves the translation file. Store the source files with pipe separators and convert to counterpart format at build time. --- src/i18n/strings/de_DE.json | 18 +++++++++--------- src/i18n/strings/el.json | 20 +++++++++----------- src/i18n/strings/en_EN.json | 26 +++++++++----------------- src/i18n/strings/en_US.json | 18 +++++++++--------- src/i18n/strings/es.json | 14 +++++++------- src/i18n/strings/eu.json | 18 +++++++++--------- src/i18n/strings/fr.json | 18 +++++++++--------- src/i18n/strings/hu.json | 18 +++++++++--------- src/i18n/strings/ja.json | 4 ++-- src/i18n/strings/ko.json | 20 +++++++++----------- src/i18n/strings/lv.json | 18 +++++++++--------- src/i18n/strings/nl.json | 18 +++++++++--------- src/i18n/strings/pt.json | 18 +++++++++--------- src/i18n/strings/pt_BR.json | 20 +++++++++----------- src/i18n/strings/ru.json | 18 +++++++++--------- src/i18n/strings/sv.json | 8 ++++---- src/i18n/strings/te.json | 4 ++-- src/i18n/strings/th.json | 20 +++++++++----------- src/i18n/strings/tr.json | 20 +++++++++----------- src/i18n/strings/uk.json | 6 ++---- src/i18n/strings/zh_Hans.json | 8 ++++---- src/i18n/strings/zh_Hant.json | 18 +++++++++--------- 22 files changed, 165 insertions(+), 185 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index d4e61ca310..e4a3d335a3 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -552,8 +552,8 @@ "Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s", "Failed to join the room": "Fehler beim Betreten des Raumes", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte den darin enthaltenen Verifizierungscode eingeben", - "and %(count)s others....other": "und %(count)s weitere...", - "and %(count)s others....one": "und ein(e) weitere(r)...", + "and %(count)s others...|other": "und %(count)s weitere...", + "and %(count)s others...|one": "und ein(e) weitere(r)...", "Are you sure?": "Bist du sicher?", "Attachment": "Anhang", "Ban": "Verbannen", @@ -877,15 +877,15 @@ "Start new chat": "Neuen Chat starten", "Disable markdown formatting": "Markdown-Formatierung deaktivieren", "Add": "Hinzufügen", - "%(count)s new messages.one": "%(count)s neue Nachricht", - "%(count)s new messages.other": "%(count)s neue Nachrichten", + "%(count)s new messages|one": "%(count)s neue Nachricht", + "%(count)s new messages|other": "%(count)s neue Nachrichten", "Error: Problem communicating with the given homeserver.": "Fehler: Problem bei der Kommunikation mit dem angegebenen Home-Server.", "Failed to fetch avatar URL": "Abrufen der Avatar-URL fehlgeschlagen", "The phone number entered looks invalid": "Die eingegebene Telefonnummer scheint ungültig zu sein", "This room is private or inaccessible to guests. You may be able to join if you register.": "Dieser Raum ist privat oder für Gäste nicht betretbar. Du kannst evtl. beitreten wenn du dich registrierst.", - "Uploading %(filename)s and %(count)s others.zero": "%(filename)s wird hochgeladen", - "Uploading %(filename)s and %(count)s others.one": "%(filename)s und %(count)s weitere Dateien werden hochgeladen", - "Uploading %(filename)s and %(count)s others.other": "%(filename)s und %(count)s weitere Dateien werden hochgeladen", + "Uploading %(filename)s and %(count)s others|zero": "%(filename)s wird hochgeladen", + "Uploading %(filename)s and %(count)s others|one": "%(filename)s und %(count)s weitere Dateien werden hochgeladen", + "Uploading %(filename)s and %(count)s others|other": "%(filename)s und %(count)s weitere Dateien werden hochgeladen", "You must register to use this functionality": "Du musst dich registrieren, um diese Funktionalität nutzen zu können", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Alle erneut senden oder alle verwerfen. Du kannst auch einzelne Nachrichten erneut senden oder verwerfen.", "Create new room": "Neuen Raum erstellen", @@ -961,8 +961,8 @@ "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum \"%(roomName)s\" gekickt.", "You may wish to login with a different account, or add this email to this account.": "Du möchtest dich eventuell mit einem anderen Konto anmelden oder alternativ diese E-Mail-Adresse diesem Konto hinzufügen.", "Your home server does not support device management.": "Dein Heimserver unterstützt kein Geräte-Management.", - "(~%(count)s results).one": "(~%(count)s Ergebnis)", - "(~%(count)s results).other": "(~%(count)s Ergebnis)", + "(~%(count)s results)|one": "(~%(count)s Ergebnis)", + "(~%(count)s results)|other": "(~%(count)s Ergebnis)", "Device Name": "Geräte-Name", "(could not connect media)": "(Medienverbindung konnte nicht hergestellt werden)", "(no answer)": "(keine Antwort)", diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index b1b676b505..1211aab6ad 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -175,10 +175,8 @@ "an address": "μία διεύθηνση", "%(items)s and %(remaining)s others": "%(items)s και %(remaining)s ακόμα", "%(items)s and one other": "%(items)s και ένας ακόμα", - "and %(count)s others...": { - "other": "και %(count)s άλλοι...", - "one": "και ένας ακόμα..." - }, + "and %(count)s others...|one": "και ένας ακόμα...", + "and %(count)s others...|other": "και %(count)s άλλοι...", "%(names)s and %(lastPerson)s are typing": "%(names)s και %(lastPerson)s γράφουν", "%(names)s and one other are typing": "%(names)s και ένας ακόμα γράφουν", "%(names)s and %(count)s others are typing": "%(names)s και %(count)s άλλοι γράφουν", @@ -405,8 +403,8 @@ "click to reveal": "κάντε κλικ για εμφάνιση", "Click to unmute video": "Κάντε κλικ για άρση σίγασης του βίντεο", "Click to unmute audio": "Κάντε κλικ για άρση σίγασης του ήχου", - "%(count)s new messages.one": "%(count)s νέο μήνυμα", - "%(count)s new messages.other": "%(count)s νέα μηνύματα", + "%(count)s new messages|one": "%(count)s νέο μήνυμα", + "%(count)s new messages|other": "%(count)s νέα μηνύματα", "Custom": "Προσαρμοσμένο", "Decline": "Απόρριψη", "Disable Notifications": "Απενεργοποίηση ειδοποιήσεων", @@ -569,8 +567,8 @@ "Encrypt room": "Κρυπτογράφηση δωματίου", "Room": "Δωμάτιο", "Auto-complete": "Αυτόματη συμπλήρωση", - "(~%(count)s results).one": "(~%(count)s αποτέλεσμα)", - "(~%(count)s results).other": "(~%(count)s αποτελέσματα)", + "(~%(count)s results)|one": "(~%(count)s αποτέλεσμα)", + "(~%(count)s results)|other": "(~%(count)s αποτελέσματα)", "Active call": "Ενεργή κλήση", "strike": "επιγράμμιση", "bullet": "κουκκίδα", @@ -719,8 +717,8 @@ "to start a chat with someone": "για να ξεκινήσετε μια συνομιλία με κάποιον", "Unable to capture screen": "Αδυναμία σύλληψης οθόνης", "Unknown (user, device) pair:": "Άγνωστο ζεύγος (χρήστη, συσκευής):", - "Uploading %(filename)s and %(count)s others.zero": "Γίνεται αποστολή του %(filename)s", - "Uploading %(filename)s and %(count)s others.other": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπων", + "Uploading %(filename)s and %(count)s others|zero": "Γίνεται αποστολή του %(filename)s", + "Uploading %(filename)s and %(count)s others|other": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπων", "uploaded a file": "ανέβασε ένα αρχείο", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (δύναμη %(powerLevelNumber)s)", "Verification Pending": "Εκκρεμεί επιβεβαίωση", @@ -820,7 +818,7 @@ "to tag direct chat": "για να οριστεί ετικέτα σε απευθείας συνομιλία", "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "Ο %(senderName)s ενεργοποίησε την από άκρο σε άκρο κρυπτογράφηση (algorithm %(algorithm)s).", "Undecryptable": "Μη αποκρυπτογραφημένο", - "Uploading %(filename)s and %(count)s others.one": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπα", + "Uploading %(filename)s and %(count)s others|one": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπα", "Would you like to accept or decline this invitation?": "Θα θέλατε να δεχθείτε ή να απορρίψετε την πρόσκληση;", "You already have existing direct chats with this user:": "Έχετε ήδη απευθείας συνομιλίες με τον χρήστη:", "You are trying to access %(roomName)s.": "Προσπαθείτε να έχετε πρόσβαση στο %(roomName)s.", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 2340def67c..35ca698c03 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -158,10 +158,8 @@ "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", "%(items)s and one other": "%(items)s and one other", "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", - "and %(count)s others...": { - "other": "and %(count)s others...", - "one": "and one other..." - }, + "and %(count)s others...|other": "and %(count)s others...", + "and %(count)s others...|one": "and one other...", "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", "%(names)s and one other are typing": "%(names)s and one other are typing", "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", @@ -224,10 +222,8 @@ "Confirm your new password": "Confirm your new password", "Continue": "Continue", "Could not connect to the integration server": "Could not connect to the integration server", - "%(count)s new messages": { - "one": "%(count)s new message", - "other": "%(count)s new messages" - }, + "%(count)s new messages|one": "%(count)s new message", + "%(count)s new messages|other": "%(count)s new messages", "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", "Create an account": "Create an account", "Create Room": "Create Room", @@ -627,11 +623,9 @@ "Unrecognised command:": "Unrecognised command:", "Unrecognised room alias:": "Unrecognised room alias:", "Unverified": "Unverified", - "Uploading %(filename)s and %(count)s others": { - "zero": "Uploading %(filename)s", - "one": "Uploading %(filename)s and %(count)s other", - "other": "Uploading %(filename)s and %(count)s others" - }, + "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", + "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others", "uploaded a file": "uploaded a file", "Upload avatar": "Upload avatar", "Upload Failed": "Upload Failed", @@ -749,10 +743,8 @@ "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", "Auto-complete": "Auto-complete", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", - "(~%(count)s results)": { - "one": "(~%(count)s result)", - "other": "(~%(count)s results)" - }, + "(~%(count)s results)|one": "(~%(count)s result)", + "(~%(count)s results)|other": "(~%(count)s results)", "Cancel": "Cancel", "or": "or", "Active call": "Active call", diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index d75c3d7408..bb6a6e8c9b 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -154,8 +154,8 @@ "%(items)s and %(remaining)s others": "%(items)s and %(remaining)s others", "%(items)s and one other": "%(items)s and one other", "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", - "and %(count)s others....other": "and %(count)s others...", - "and %(count)s others....one": "and one other...", + "and %(count)s others...|other": "and %(count)s others...", + "and %(count)s others...|one": "and one other...", "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", "%(names)s and one other are typing": "%(names)s and one other are typing", "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", @@ -841,8 +841,8 @@ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.", "Click here to join the discussion!": "Click here to join the discussion!", "Close": "Close", - "%(count)s new messages.one": "%(count)s new message", - "%(count)s new messages.other": "%(count)s new messages", + "%(count)s new messages|one": "%(count)s new message", + "%(count)s new messages|other": "%(count)s new messages", "Custom": "Custom", "Decline": "Decline", "Disable markdown formatting": "Disable markdown formatting", @@ -893,9 +893,9 @@ "unknown caller": "unknown caller", "Unnamed Room": "Unnamed Room", "Unverified": "Unverified", - "Uploading %(filename)s and %(count)s others.zero": "Uploading %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "Uploading %(filename)s and %(count)s other", - "Uploading %(filename)s and %(count)s others.other": "Uploading %(filename)s and %(count)s others", + "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", + "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others", "Upload new:": "Upload new:", "%(user)s is a": "%(user)s is a", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", @@ -909,8 +909,8 @@ "You must register to use this functionality": "You must register to use this functionality", "Your home server does not support device management.": "Your home server does not support device management.", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", - "(~%(count)s results).one": "(~%(count)s result)", - "(~%(count)s results).other": "(~%(count)s results)", + "(~%(count)s results)|one": "(~%(count)s result)", + "(~%(count)s results)|other": "(~%(count)s results)", "New Password": "New Password", "Device Name": "Device Name", "Start chatting": "Start chatting", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 49f7f76b0b..499da6e819 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -140,8 +140,8 @@ "%(items)s and %(remaining)s others": "%(items)s y %(remaining)s otros", "%(items)s and one other": "%(items)s y otro", "%(items)s and %(lastItem)s": "%(items)s y %(lastItem)s", - "and %(count)s others....other": "y %(count)s otros...", - "and %(count)s others....one": "y otro...", + "and %(count)s others...|other": "y %(count)s otros...", + "and %(count)s others...|one": "y otro...", "%(names)s and %(lastPerson)s are typing": "%(names)s y %(lastPerson)s están escribiendo", "%(names)s and one other are typing": "%(names)s y otro están escribiendo", "%(names)s and %(count)s others are typing": "%(names)s y %(count)s otros están escribiendo", @@ -341,8 +341,8 @@ "Anyone": "Cualquiera", "Click here to join the discussion!": "¡Pulse aquí para unirse a la conversación!", "Close": "Cerrar", - "%(count)s new messages.one": "%(count)s mensaje nuevo", - "%(count)s new messages.other": "%(count)s mensajes nuevos", + "%(count)s new messages|one": "%(count)s mensaje nuevo", + "%(count)s new messages|other": "%(count)s mensajes nuevos", "Create a new chat or reuse an existing one": "Cree una nueva conversación o reutilice una existente", "Custom": "Personalizado", "Custom level": "Nivel personalizado", @@ -688,9 +688,9 @@ "unknown": "desconocido", "Unnamed Room": "Sala sin nombre", "Unverified": "Sin verificar", - "Uploading %(filename)s and %(count)s others.zero": "Subiendo %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "Subiendo %(filename)s y %(count)s otros", - "Uploading %(filename)s and %(count)s others.other": "Subiendo %(filename)s y %(count)s otros", + "Uploading %(filename)s and %(count)s others|zero": "Subiendo %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Subiendo %(filename)s y %(count)s otros", + "Uploading %(filename)s and %(count)s others|other": "Subiendo %(filename)s y %(count)s otros", "Upload avatar": "Subir avatar", "Upload Failed": "Error al subir", "Upload Files": "Subir archivos", diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 1c80c9e338..aa9857c3dd 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -337,8 +337,8 @@ "Confirm password": "Berretsi pasahitza", "Conference calls are not supported in this client": "Bezero honek ez ditu konferentzia deiak onartzen", "Could not connect to the integration server": "Ezin izan da integrazio zerbitzarira konektatu", - "%(count)s new messages.one": "mezu berri %(count)s", - "%(count)s new messages.other": "%(count)s mezu berri", + "%(count)s new messages|one": "mezu berri %(count)s", + "%(count)s new messages|other": "%(count)s mezu berri", "Create a new chat or reuse an existing one": "Sortu txat berria edo berrerabili aurreko bat", "Create an account": "Sortu kontua", "Create Room": "Sortu gela", @@ -647,9 +647,9 @@ "Unrecognised command:": "Agindu ezezaguna:", "Unrecognised room alias:": "Gelaren ezizen ezezaguna:", "Unverified": "Egiaztatu gabea", - "Uploading %(filename)s and %(count)s others.zero": "%(filename)s igotzen", - "Uploading %(filename)s and %(count)s others.one": "%(filename)s eta beste %(count)s igotzen", - "Uploading %(filename)s and %(count)s others.other": "%(filename)s eta beste %(count)s igotzen", + "Uploading %(filename)s and %(count)s others|zero": "%(filename)s igotzen", + "Uploading %(filename)s and %(count)s others|one": "%(filename)s eta beste %(count)s igotzen", + "Uploading %(filename)s and %(count)s others|other": "%(filename)s eta beste %(count)s igotzen", "uploaded a file": "fitxategi bat igo du", "Upload avatar": "Igo abatarra", "Upload Failed": "Igoerak huts egin du", @@ -754,8 +754,8 @@ "Sent messages will be stored until your connection has returned.": "Bidalitako mezuak zure konexioa berreskuratu arte gordeko dira.", "Auto-complete": "Osatze automatikoa", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Birbidali guztiak edo baztertu guztiak orain. Mezuak banaka aukeratu ditzakezu ere birbidali ala baztertzeko.", - "(~%(count)s results).one": "(~%(count)s emaitza)", - "(~%(count)s results).other": "(~%(count)s emaitza)", + "(~%(count)s results)|one": "(~%(count)s emaitza)", + "(~%(count)s results)|other": "(~%(count)s emaitza)", "bold": "lodia", "italic": "etzana", "strike": "marratua", @@ -916,8 +916,8 @@ "Disable Peer-to-Peer for 1:1 calls": "Desgaitu P2P biren arteko deietan", "Add a widget": "Gehitu trepeta bat", "Allow": "Baimendu", - "and %(count)s others....other": "eta beste %(count)s...", - "and %(count)s others....one": "eta beste bat...", + "and %(count)s others...|other": "eta beste %(count)s...", + "and %(count)s others...|one": "eta beste bat...", "Cannot add any more widgets": "Ezin dira trepeta gehiago gehitu", "Changes colour scheme of current room": "Gela honen kolore eskema aldatzen du", "Delete widget": "Ezabatu trepeta", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 5ce9eaf02c..f6da302fad 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -191,8 +191,8 @@ "%(names)s and %(lastPerson)s are typing": "%(names)s et %(lastPerson)s sont en train d'écrire", "%(names)s and one other are typing": "%(names)s et un autre sont en train d'écrire", "%(names)s and %(count)s others are typing": "%(names)s et %(count)s d'autres sont en train d'écrire", - "and %(count)s others....other": "et %(count)s autres...", - "and %(count)s others....one": "et un autre...", + "and %(count)s others...|other": "et %(count)s autres...", + "and %(count)s others...|one": "et un autre...", "An email has been sent to": "Un e-mail a été envoyé à", "A new password must be entered.": "Un nouveau mot de passe doit être entré.", "Anyone who knows the room's link, apart from guests": "Tout ceux qui connaissent le lien du salon, à part les visiteurs", @@ -822,16 +822,16 @@ "You have entered an invalid contact. Try using their Matrix ID or email address.": "Vous avez entré un contact invalide. Essayez d’utiliser leur identifiant Matrix ou leur adresse email.", "Hide removed messages": "Cacher les messages supprimés", "Add": "Ajouter", - "%(count)s new messages.one": "%(count)s nouveau message", - "%(count)s new messages.other": "%(count)s nouveaux messages", + "%(count)s new messages|one": "%(count)s nouveau message", + "%(count)s new messages|other": "%(count)s nouveaux messages", "Disable markdown formatting": "Désactiver le formattage markdown", "Error: Problem communicating with the given homeserver.": "Erreur : problème de communication avec le homeserver.", "Failed to fetch avatar URL": "Échec lors de la récupération de l’URL de l’avatar", "The phone number entered looks invalid": "Le numéro de téléphone entré semble être invalide", "This room is private or inaccessible to guests. You may be able to join if you register.": "Ce salon est privé ou interdits aux visiteurs. Vous pourrez peut-être le joindre si vous vous enregistrez.", - "Uploading %(filename)s and %(count)s others.zero": "Téléchargement de %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "Téléchargement de %(filename)s et %(count)s autre", - "Uploading %(filename)s and %(count)s others.other": "Téléchargement de %(filename)s et %(count)s autres", + "Uploading %(filename)s and %(count)s others|zero": "Téléchargement de %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Téléchargement de %(filename)s et %(count)s autre", + "Uploading %(filename)s and %(count)s others|other": "Téléchargement de %(filename)s et %(count)s autres", "You must register to use this functionality": "Vous devez vous inscrire pour utiliser cette fonctionnalité", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Tout renvoyer ou tout annuler maintenant. Vous pouvez aussi sélectionner des messages individuels à envoyer ou annuler.", "Create new room": "Créer un nouveau salon", @@ -895,8 +895,8 @@ "You have been kicked from %(roomName)s by %(userName)s.": "Vous avez été expulsé de %(roomName)s by %(userName)s.", "You may wish to login with a different account, or add this email to this account.": "Vous souhaiteriez peut-être vous identifier avec un autre compte, ou ajouter cette e-mail à votre compte.", "Your home server does not support device management.": "Votre homeserver ne supporte pas la gestion d'appareils.", - "(~%(count)s results).one": "(~%(count)s résultat)", - "(~%(count)s results).other": "(~%(count)s résultats)", + "(~%(count)s results)|one": "(~%(count)s résultat)", + "(~%(count)s results)|other": "(~%(count)s résultats)", "Device Name": "Nom de l'appareil", "Encrypted by a verified device": "Chiffré par un appareil vérifié", "Encrypted by an unverified device": "Chiffré par un appareil non vérifié", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index a51fc01044..eea96f9ea3 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -190,8 +190,8 @@ "%(items)s and %(remaining)s others": "%(items)s és még: %(remaining)s", "%(items)s and one other": "%(items)s és még egy", "%(items)s and %(lastItem)s": "%(items)s és %(lastItem)s", - "and %(count)s others....other": "és még: %(count)s ...", - "and %(count)s others....one": "és még egy...", + "and %(count)s others...|other": "és még: %(count)s ...", + "and %(count)s others...|one": "és még egy...", "%(names)s and %(lastPerson)s are typing": "%(names)s és %(lastPerson)s írnak", "%(names)s and one other are typing": "%(names)s és még valaki ír", "%(names)s and %(count)s others are typing": "%(names)s és %(count)s ember ír", @@ -250,8 +250,8 @@ "Confirm password": "Jelszó megerősítése", "Confirm your new password": "Új jelszó megerősítése", "Could not connect to the integration server": "Az integrációs szerverhez nem lehet kapcsolódni", - "%(count)s new messages.one": "%(count)s új üzenet", - "%(count)s new messages.other": "%(count)s új üzenet", + "%(count)s new messages|one": "%(count)s új üzenet", + "%(count)s new messages|other": "%(count)s új üzenet", "Create a new chat or reuse an existing one": "Új csevegés indítása vagy egy meglévő használata", "Create an account": "Fiók készítése", "Create Room": "Szoba készítése", @@ -610,9 +610,9 @@ "Unrecognised command:": "Ismeretlen parancs:", "Unrecognised room alias:": "Ismeretlen szoba becenév:", "Unverified": "Nem ellenőrzött", - "Uploading %(filename)s and %(count)s others.zero": "%(filename)s feltöltése", - "Uploading %(filename)s and %(count)s others.one": "%(filename)s és még %(count)s db másik feltöltése", - "Uploading %(filename)s and %(count)s others.other": "%(filename)s és még %(count)s db másik feltöltése", + "Uploading %(filename)s and %(count)s others|zero": "%(filename)s feltöltése", + "Uploading %(filename)s and %(count)s others|one": "%(filename)s és még %(count)s db másik feltöltése", + "Uploading %(filename)s and %(count)s others|other": "%(filename)s és még %(count)s db másik feltöltése", "uploaded a file": "fájl feltöltése", "Upload avatar": "Avatar kép feltöltése", "Upload Failed": "Feltöltés sikertelen", @@ -729,8 +729,8 @@ "Sent messages will be stored until your connection has returned.": "Az elküldött üzenetek addig lesznek tárolva amíg a kapcsolatod újra elérhető lesz.", "Auto-complete": "Automatikus kiegészítés", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Most újraküldöd mind vagy eldobod mind. Újraküldésre vagy eldobásra egyenként is kiválaszthatod az üzeneteket.", - "(~%(count)s results).one": "(~%(count)s db eredmény)", - "(~%(count)s results).other": "(~%(count)s db eredmény)", + "(~%(count)s results)|one": "(~%(count)s db eredmény)", + "(~%(count)s results)|other": "(~%(count)s db eredmény)", "or": "vagy", "Active call": "Folyamatban lévő hívás", "bold": "félkövér", diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index 04a7c8877c..f0be3024a5 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -44,8 +44,8 @@ "Only people who have been invited": "この部屋に招待された人のみ参加可能", "Hide removed messages": "削除された発言の印を表示しない", "Always show message timestamps": "発言時刻を常に表示", - "%(count)s new messages.one": "新しい発言 %(count)s", - "%(count)s new messages.other": "新しい発言 %(count)s", + "%(count)s new messages|one": "新しい発言 %(count)s", + "%(count)s new messages|other": "新しい発言 %(count)s", "Don't send typing notifications": "文字入力中であることを公表しない", "Filter room members": "参加者検索", "Send a message (unencrypted)": "ここに送信文を入力 (暗号化なし)", diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index b76dd40c5e..e5faf01da7 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -225,10 +225,8 @@ "%(items)s and %(remaining)s others": "%(items)s과 %(remaining)s", "%(items)s and one other": "%(items)s과 다른 하나", "%(items)s and %(lastItem)s": "%(items)s과 %(lastItem)s", - "and %(count)s others...": { - "other": "그리고 %(count)s...", - "one": "그리고 다른 하나..." - }, + "and %(count)s others...|one": "그리고 다른 하나...", + "and %(count)s others...|other": "그리고 %(count)s...", "%(names)s and %(lastPerson)s are typing": "%(names)s님과 %(lastPerson)s님이 입력중", "%(names)s and one other are typing": "%(names)s님과 다른 분이 입력중", "%(names)s and %(count)s others are typing": "%(names)s님과 %(count)s 분들이 입력중", @@ -267,8 +265,8 @@ "Conference calls are not supported in encrypted rooms": "암호화한 방에서는 전화 회의를 할 수 없어요", "Conference calls are not supported in this client": "이 클라이언트에서는 전화 회의를 할 수 없어요", "Could not connect to the integration server": "통합 서버에 연결할 수 없어요", - "%(count)s new messages.one": "%(count)s 새 메시지", - "%(count)s new messages.other": "%(count)s 새 메시지", + "%(count)s new messages|one": "%(count)s 새 메시지", + "%(count)s new messages|other": "%(count)s 새 메시지", "Create a new chat or reuse an existing one": "새 이야기를 시작하거나 기존에 하던 이야기를 이어하세요", "Cryptography": "암호화", "Current password": "현재 비밀번호", @@ -617,9 +615,9 @@ "Unrecognised command:": "인식 할 수 없는 명령:", "Unrecognised room alias:": "인식할 수 없는 방 가명:", "Unverified": "인증하지 않음", - "Uploading %(filename)s and %(count)s others.zero": "%(filename)s 올리는 중", - "Uploading %(filename)s and %(count)s others.one": "%(filename)s 외 %(count)s 올리는 중", - "Uploading %(filename)s and %(count)s others.other": "%(filename)s 외 %(count)s 올리는 중", + "Uploading %(filename)s and %(count)s others|zero": "%(filename)s 올리는 중", + "Uploading %(filename)s and %(count)s others|one": "%(filename)s 외 %(count)s 올리는 중", + "Uploading %(filename)s and %(count)s others|other": "%(filename)s 외 %(count)s 올리는 중", "uploaded a file": "파일을 올렸어요", "Upload avatar": "아바타 올리기", "Upload Failed": "파일을 올리지 못했어요", @@ -736,8 +734,8 @@ "Sent messages will be stored until your connection has returned.": "보내신 메시지는 다시 연결될 때까지 저장할 거에요.", "Auto-complete": "자동 완성", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "전부 다시 보내거나 취소하세요. 다시 보내거나 취소할 메시지를 하나씩 고르실 수도 있어요.", - "(~%(count)s results).one": "(~%(count)s 결과)", - "(~%(count)s results).other": "(~%(count)s 결과)", + "(~%(count)s results)|one": "(~%(count)s 결과)", + "(~%(count)s results)|other": "(~%(count)s 결과)", "or": "혹은", "Active call": "전화 중", "bold": "굵은 획", diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index 6deceac02b..041403b32f 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -218,8 +218,8 @@ "Confirm your new password": "Apstiprini jauno paroli", "Continue": "Turpināt", "Could not connect to the integration server": "Neizdevās savienoties ar integrācijas serveri", - "%(count)s new messages.one": "jaunu ziņu skaits: %(count)s", - "%(count)s new messages.other": "%(count)s jaunas ziņas", + "%(count)s new messages|one": "jaunu ziņu skaits: %(count)s", + "%(count)s new messages|other": "%(count)s jaunas ziņas", "Create a new chat or reuse an existing one": "Izveidot jaunu čatu vai izmantot eksistējošu", "Create an account": "Reģistrēt kontu", "Create Room": "Izveidot istabu", @@ -494,9 +494,9 @@ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ieslēdza ierīce-ierīce šifrēšanu (algorithm %(algorithm)s).", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s atcēla pieejas ierobežojumu (atbanoja) %(targetName)s.", "Unknown room %(roomId)s": "Nezināma istaba %(roomId)s", - "Uploading %(filename)s and %(count)s others.zero": "Tiek augšuplādēts %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "Tiek augšuplādēts %(filename)s un %(count)s citi", - "Uploading %(filename)s and %(count)s others.other": "Tiek augšuplādēts %(filename)s un %(count)s citi", + "Uploading %(filename)s and %(count)s others|zero": "Tiek augšuplādēts %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Tiek augšuplādēts %(filename)s un %(count)s citi", + "Uploading %(filename)s and %(count)s others|other": "Tiek augšuplādēts %(filename)s un %(count)s citi", "%(user)s is a": "%(user)s ir", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", "Username invalid: %(errMessage)s": "Neatbilstošs lietotājvārds: %(errMessage)s", @@ -512,8 +512,8 @@ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Parole ir par īsu (jābūt vismaz %(MIN_PASSWORD_LENGTH)s zīmēm).", "An error occurred: %(error_string)s": "Notikusi kļūda: %(error_string)s", - "(~%(count)s results).one": "(~%(count)s rezultāts)", - "(~%(count)s results).other": "(~%(count)s rezultāti)", + "(~%(count)s results)|one": "(~%(count)s rezultāts)", + "(~%(count)s results)|other": "(~%(count)s rezultāti)", "%(severalUsers)sjoined %(repeats)s times": "%(severalUsers)s pievienojās %(repeats)s reizes", "%(oneUser)sjoined %(repeats)s times": "%(oneUser)s pievienojās %(repeats)s reizes", "%(severalUsers)sjoined": "%(severalUsers)s pievienojās", @@ -916,8 +916,8 @@ "Encryption key request": "Šifrēšanas atslēgas pieprasījums", "Add a widget": "Pievienot Widžetu", "Allow": "Atļaut", - "and %(count)s others....other": "un vēl %(count)s citi...", - "and %(count)s others....one": "un vēl viens cits...", + "and %(count)s others...|other": "un vēl %(count)s citi...", + "and %(count)s others...|one": "un vēl viens cits...", "Cannot add any more widgets": "Nav iespējams pievienot vairāk vidžetu", "Changes colour scheme of current room": "Nomaina pašreizējās istabas krāsu paleti", "Delete widget": "Dzēst widžetu", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index d72813177b..ebb1c42056 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -141,8 +141,8 @@ "%(items)s and %(remaining)s others": "%(items)s en %(remaining)s andere", "%(items)s and one other": "%(items)s en één andere", "%(items)s and %(lastItem)s": "%(items)s en %(lastItem)s", - "and %(count)s others....other": "en %(count)s andere...", - "and %(count)s others....one": "en één andere...", + "and %(count)s others...|other": "en %(count)s andere...", + "and %(count)s others...|one": "en één andere...", "%(names)s and %(lastPerson)s are typing": "%(names)s en %(lastPerson)s zijn aan het typen", "%(names)s and one other are typing": "%(names)s en één andere zijn aan het typen", "%(names)s and %(count)s others are typing": "%(names)s en %(count)s andere zijn aan het typen", @@ -222,7 +222,7 @@ "Are you sure you want to upload the following files?": "Weet u zeker dat u de volgende bestanden wil uploaden?", "Click here to join the discussion!": "Klik hier om mee te doen aan de discussie!", "Close": "Sluiten", - "%(count)s new messages.one": "%(count)s nieuw bericht", + "%(count)s new messages|one": "%(count)s nieuw bericht", "Create new room": "Een nieuwe kamer maken", "Custom Server Options": "Aangepaste serverinstellingen", "Dismiss": "Afwijzen", @@ -329,7 +329,7 @@ "Set a Display Name": "Weergavenaam instellen", "Upload an avatar:": "Een avatar uploaden:", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Geen verbinding met de thuisserver - controleer je verbinding. Controleer het SSL-certificaat van de thuisserver en browser-extensies die verzoeken kunnen blokkeren.", - "%(count)s new messages.other": "%(count)s nieuwe berichten", + "%(count)s new messages|other": "%(count)s nieuwe berichten", "Create an account": "Open een account", "Cryptography": "Cryptografie", "Current password": "Huidig wachtwoord", @@ -644,9 +644,9 @@ "Unrecognised command:": "Onbekende commando:", "Unrecognised room alias:": "Onbekende ruimte alias:", "Unverified": "Niet geverifieerd", - "Uploading %(filename)s and %(count)s others.zero": "Aan het uploaden %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "%(filename)s en %(count)s andere aan het uploaden", - "Uploading %(filename)s and %(count)s others.other": "%(filename)s en %(count)s anderen aan het uploaden", + "Uploading %(filename)s and %(count)s others|zero": "Aan het uploaden %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "%(filename)s en %(count)s andere aan het uploaden", + "Uploading %(filename)s and %(count)s others|other": "%(filename)s en %(count)s anderen aan het uploaden", "uploaded a file": "Bestand geüpload", "Upload avatar": "Avatar uploaden", "Upload Failed": "Uploaden Mislukt", @@ -737,8 +737,8 @@ "Sent messages will be stored until your connection has returned.": "Verstuurde berichten zullen opgeslagen worden tot je connectie weer terug is.", "Auto-complete": "Automatisch aanvullen", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "Verstuur alle of annuleer alle nu. Je kan ook individuele berichten selecteren om te versturen of te annuleren.", - "(~%(count)s results).one": "(~%(count)s resultaat)", - "(~%(count)s results).other": "(~%(count)s resultaten)", + "(~%(count)s results)|one": "(~%(count)s resultaat)", + "(~%(count)s results)|other": "(~%(count)s resultaten)", "or": "of", "Active call": "Actief gesprek", "bold": "vetgedrukt", diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index 9fd0a6c1a2..cb4ba65ec4 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -556,8 +556,8 @@ "%(items)s and %(remaining)s others": "%(items)s e %(remaining)s outros", "%(items)s and one other": "%(items)s e um outro", "%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s", - "and %(count)s others....other": "e %(count)s outros...", - "and %(count)s others....one": "e um outro...", + "and %(count)s others...|other": "e %(count)s outros...", + "and %(count)s others...|one": "e um outro...", "Are you sure?": "Você tem certeza?", "Attachment": "Anexo", "Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos", @@ -877,7 +877,7 @@ "Disable markdown formatting": "Desabilitar formatação MarkDown", "No display name": "Sem nome público de usuária(o)", "This will be your account name on the homeserver, or you can pick a different server.": "Este será seu nome de conta no Servidor de Base , ou então você pode escolher um servidor diferente.", - "Uploading %(filename)s and %(count)s others.one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", + "Uploading %(filename)s and %(count)s others|one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", "Hide removed messages": "Ocultar mensagens removidas", "You may wish to login with a different account, or add this email to this account.": "Você pode querer fazer login com uma conta diferente, ou adicionar este e-mail a esta conta.", "Welcome page": "Página de boas-vindas", @@ -887,7 +887,7 @@ "And %(count)s more...": "E mais %(count)s...", "Start chatting": "Iniciar a conversa", "Public Chat": "Conversa pública", - "Uploading %(filename)s and %(count)s others.zero": "Enviando o arquivo %(filename)s", + "Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s", "Room contains unknown devices": "Esta sala contém dispositivos desconhecidos", "Admin tools": "Ferramentas de administração", "You have been kicked from %(roomName)s by %(userName)s.": "Você foi removido(a) da sala %(roomName)s por %(userName)s.", @@ -918,14 +918,14 @@ "Enable Notifications": "Habilitar notificações", "Username not available": "Nome de usuária(o) indisponível", "Encrypted by a verified device": "Criptografado por um dispositivo verificado", - "(~%(count)s results).other": "(~%(count)s resultados)", + "(~%(count)s results)|other": "(~%(count)s resultados)", "unknown caller": "a pessoa que está chamando é desconhecida", "Start authentication": "Iniciar autenticação", - "(~%(count)s results).one": "(~%(count)s resultado)", + "(~%(count)s results)|one": "(~%(count)s resultado)", "New Password": "Nova senha", "Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s", "Disable Notifications": "Desabilitar notificações", - "%(count)s new messages.one": "%(count)s nova mensagem", + "%(count)s new messages|one": "%(count)s nova mensagem", "Device Name": "Nome do dispositivo", "Incoming voice call from %(name)s": "Chamada de voz de %(name)s recebida", "If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.", @@ -934,11 +934,11 @@ "Set": "Definir", "Unencrypted message": "Mensagem não criptografada", "Join as voice or video.": "Participar por voz ou por vídeo.", - "Uploading %(filename)s and %(count)s others.other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", + "Uploading %(filename)s and %(count)s others|other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", "Username available": "Nome de usuária(o) disponível", "Close": "Fechar", "Level:": "Nível:", - "%(count)s new messages.other": "%(count)s novas mensagens", + "%(count)s new messages|other": "%(count)s novas mensagens", "Unverified": "Não verificado", "Click here to join the discussion!": "Clique aqui para participar da conversa!", "Decline": "Recusar", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 63efda25d9..cd6230cd68 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -557,10 +557,8 @@ "%(items)s and %(remaining)s others": "%(items)s e %(remaining)s outros", "%(items)s and one other": "%(items)s e um outro", "%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s", - "and %(count)s others...": { - "other": "e %(count)s outros...", - "one": "e um outro..." - }, + "and %(count)s others...|one": "e um outro...", + "and %(count)s others...|other": "e %(count)s outros...", "Are you sure?": "Você tem certeza?", "Attachment": "Anexo", "Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos", @@ -874,16 +872,16 @@ "You have entered an invalid contact. Try using their Matrix ID or email address.": "Você inseriu um contato inválido. Tente usar o ID Matrix ou endereço de e-mail da pessoa que está buscando.", "Hide removed messages": "Ocultar mensagens removidas", "Add": "Adicionar", - "%(count)s new messages.one": "%(count)s nova mensagem", - "%(count)s new messages.other": "%(count)s novas mensagens", + "%(count)s new messages|one": "%(count)s nova mensagem", + "%(count)s new messages|other": "%(count)s novas mensagens", "Disable markdown formatting": "Desabilitar formatação MarkDown", "Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.", "Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil", "Home": "Início", "The phone number entered looks invalid": "O número de telefone inserido parece ser inválido", - "Uploading %(filename)s and %(count)s others.zero": "Enviando o arquivo %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", - "Uploading %(filename)s and %(count)s others.other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", + "Uploading %(filename)s and %(count)s others|zero": "Enviando o arquivo %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", + "Uploading %(filename)s and %(count)s others|other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", "Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s", "Searching known users": "Buscando pessoas conhecidas", "You must register to use this functionality": "Você deve se registrar para poder usar esta funcionalidade", @@ -958,8 +956,8 @@ "You have been kicked from %(roomName)s by %(userName)s.": "Você foi removido(a) da sala %(roomName)s por %(userName)s.", "You may wish to login with a different account, or add this email to this account.": "Você pode querer fazer login com uma conta diferente, ou adicionar este e-mail a esta conta.", "Your home server does not support device management.": "O seu Servidor de Base não suporta o gerenciamento de dispositivos.", - "(~%(count)s results).one": "(~%(count)s resultado)", - "(~%(count)s results).other": "(~%(count)s resultados)", + "(~%(count)s results)|one": "(~%(count)s resultado)", + "(~%(count)s results)|other": "(~%(count)s resultados)", "Device Name": "Nome do dispositivo", "(could not connect media)": "(não foi possível conectar-se à mídia)", "(no answer)": "(sem resposta)", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index e15fce90c4..9a49fca9cb 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -448,8 +448,8 @@ "sx": "Суту", "zh-hk": "Китайский (Гонконг)", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Текстовое сообщение было отправлено на +%(msisdn)s. Введите проверочный код, который оно содержит", - "and %(count)s others....other": "и %(count)s других...", - "and %(count)s others....one": "и ещё один...", + "and %(count)s others...|other": "и %(count)s других...", + "and %(count)s others...|one": "и ещё один...", "Are you sure?": "Вы уверены?", "Autoplay GIFs and videos": "Автовоспроизведение GIF и видео", "Can't connect to homeserver - please check your connectivity and ensure your homeserver's SSL certificate is trusted.": "Невозможно соединиться с домашним сервером - проверьте своё соединение и убедитесь, что SSL-сертификат вашего домашнего сервера включён в доверяемые.", @@ -863,14 +863,14 @@ "Start chat": "Начать чат", "Welcome page": "Страница приветствия", "Add": "Добавить", - "%(count)s new messages.one": "%(count)s новое сообщение", - "%(count)s new messages.other": "%(count)s новых сообщений", + "%(count)s new messages|one": "%(count)s новое сообщение", + "%(count)s new messages|other": "%(count)s новых сообщений", "Error: Problem communicating with the given homeserver.": "Ошибка: проблема связи с данным сервером.", "Failed to fetch avatar URL": "Не удалось извлечь URL-адрес аватара", "The phone number entered looks invalid": "Введенный номер телефона недействителен", - "Uploading %(filename)s and %(count)s others.zero": "Отправка %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "Отправка %(filename)s и %(count)s другой", - "Uploading %(filename)s and %(count)s others.other": "Отправка %(filename)s и %(count)s других", + "Uploading %(filename)s and %(count)s others|zero": "Отправка %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Отправка %(filename)s и %(count)s другой", + "Uploading %(filename)s and %(count)s others|other": "Отправка %(filename)s и %(count)s других", "Username invalid: %(errMessage)s": "Неверное имя пользователя: %(errMessage)s", "Searching known users": "Поиск известных пользователей", "You must register to use this functionality": "Вы должны зарегистрироваться, чтобы использовать эту функцию", @@ -918,7 +918,7 @@ "Set": "Установить", "Start authentication": "Начать проверку подлинности", "This room": "В этой комнате", - "(~%(count)s results).other": "(~%(count)s результаты)", + "(~%(count)s results)|other": "(~%(count)s результаты)", "Device Name": "Имя устройства", "Custom": "Пользовательские", "Decline": "Отклонить", @@ -941,7 +941,7 @@ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (уровень доступа %(powerLevelNumber)s)", "Verified": "Проверено", "Would you like to accept or decline this invitation?": "Вы хотели бы подтвердить или отклонить это приглашение?", - "(~%(count)s results).one": "(~%(count)s результат)", + "(~%(count)s results)|one": "(~%(count)s результат)", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не удается подключиться к домашнему серверу - проверьте подключение, убедитесь, что ваш SSL-сертификат домашнего сервера является доверенным и что расширение браузера не блокирует запросы.", "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s заблокировал вас в %(roomName)s.", "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s выгнал вас из %(roomName)s.", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 662215b541..c38aeec36e 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -150,8 +150,8 @@ "%(items)s and %(remaining)s others": "%(items)s och %(remaining)s andra", "%(items)s and one other": "%(items)s och en annan", "%(items)s and %(lastItem)s": "%(items)s och %(lastItem)s", - "and %(count)s others....other": "och %(count)s andra...", - "and %(count)s others....one": "och en annan...", + "and %(count)s others...|other": "och %(count)s andra...", + "and %(count)s others...|one": "och en annan...", "%(names)s and %(lastPerson)s are typing": "%(names)s och %(lastPerson)s skriver", "%(names)s and one other are typing": "%(names)s och en annan skriver", "%(names)s and %(count)s others are typing": "%(names)s och %(count)s andra skriver", @@ -303,8 +303,8 @@ "changing room on a RoomView is not supported": "det går inte att byta rum i en RoomView", "Click here to join the discussion!": "Klicka här för att gå med i diskussionen!", "Close": "Stäng", - "%(count)s new messages.one": "%(count)s nytt meddelande", - "%(count)s new messages.other": "%(count)s nya meddelanden", + "%(count)s new messages|one": "%(count)s nytt meddelande", + "%(count)s new messages|other": "%(count)s nya meddelanden", "Create a new chat or reuse an existing one": "Skapa en ny chatt eller använd en existerande", "Custom": "Egen", "Decline": "Avvisa", diff --git a/src/i18n/strings/te.json b/src/i18n/strings/te.json index f3c65d808f..a1487a594e 100644 --- a/src/i18n/strings/te.json +++ b/src/i18n/strings/te.json @@ -214,8 +214,8 @@ "Confirm your new password": "మీ క్రొత్త పాస్వర్డ్ను నిర్ధారించండి", "Continue": "కొనసాగించు", "Could not connect to the integration server": "ఇంటిగ్రేషన్ సర్వర్కు కనెక్ట్ చేయడం సాధ్యం కాలేదు", - "%(count)s new messages.one": "%(count)s కొత్త సందేశం", - "%(count)s new messages.other": "%(count)s కొత్త సందేశాలు", + "%(count)s new messages|one": "%(count)s కొత్త సందేశం", + "%(count)s new messages|other": "%(count)s కొత్త సందేశాలు", "Create a new chat or reuse an existing one": "క్రొత్త చాట్ ను సృష్టించుకోండి లేదా ఇప్పటికే ఉన్న ఒకదాన్ని తిరిగి ఉపయోగించండి", "Create an account": "ఒక ఎకౌంటు ను సృష్టించండి", "Create Room": "రూమ్ ని సృష్టించండి", diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json index f5471db7cf..3cf4355821 100644 --- a/src/i18n/strings/th.json +++ b/src/i18n/strings/th.json @@ -98,10 +98,8 @@ "%(items)s and %(remaining)s others": "%(items)s และอีก %(remaining)s ผู้ใช้", "%(items)s and one other": "%(items)s และอีกหนึ่งผู้ใช้", "%(items)s and %(lastItem)s": "%(items)s และ %(lastItem)s", - "and %(count)s others...": { - "other": "และอีก %(count)s ผู้ใช้...", - "one": "และอีกหนึ่งผู้ใช้..." - }, + "and %(count)s others...|one": "และอีกหนึ่งผู้ใช้...", + "and %(count)s others...|other": "และอีก %(count)s ผู้ใช้...", "%(names)s and %(lastPerson)s are typing": "%(names)s และ %(lastPerson)s กำลังพิมพ์", "%(names)s and one other are typing": "%(names)s และอีกหนึ่งคนกำลังพิมพ์", "%(names)s and %(count)s others are typing": "%(names)s และอีก %(count)s คนกำลังพิมพ์", @@ -330,8 +328,8 @@ "Start chat": "เริ่มแชท", "Welcome page": "หน้าต้อนรับ", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "ไม่สามารถเชื่อมต่อไปยังเซิร์ฟเวอร์บ้านผ่านทาง HTTP ได้เนื่องจาก URL ที่อยู่บนเบราว์เซอร์เป็น HTTPS กรุณาใช้ HTTPS หรือเปิดใช้งานสคริปต์ที่ไม่ปลอดภัย.", - "%(count)s new messages.one": "มี %(count)s ข้อความใหม่", - "%(count)s new messages.other": "มี %(count)s ข้อความใหม่", + "%(count)s new messages|one": "มี %(count)s ข้อความใหม่", + "%(count)s new messages|other": "มี %(count)s ข้อความใหม่", "Disable inline URL previews by default": "ตั้งค่าเริ่มต้นให้ไม่แสดงตัวอย่าง URL ในแชท", "Disable markdown formatting": "ปิดใช้งานการจัดรูปแบบ markdown", "End-to-end encryption information": "ข้อมูลการเข้ารหัสจากปลายทางถึงปลายทาง", @@ -368,9 +366,9 @@ "unknown": "ไม่รู้จัก", "Unrecognised command:": "คำสั่งที่ไม่รู้จัก:", "Unrecognised room alias:": "นามแฝงห้องที่ไม่รู้จัก:", - "Uploading %(filename)s and %(count)s others.zero": "กำลังอัปโหลด %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์", - "Uploading %(filename)s and %(count)s others.other": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์", + "Uploading %(filename)s and %(count)s others|zero": "กำลังอัปโหลด %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์", + "Uploading %(filename)s and %(count)s others|other": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์", "uploaded a file": "อัปโหลดไฟล์", "Upload Failed": "การอัปโหลดล้มเหลว", "Upload Files": "อัปโหลดไฟล์", @@ -598,8 +596,8 @@ "This room": "ห้องนี้", "Unnamed Room": "ห้องที่ยังไม่ได้ตั้งชื่อ", "%(user)s is a": "%(user)s เป็น", - "(~%(count)s results).one": "(~%(count)s ผลลัพท์)", - "(~%(count)s results).other": "(~%(count)s ผลลัพท์)", + "(~%(count)s results)|one": "(~%(count)s ผลลัพท์)", + "(~%(count)s results)|other": "(~%(count)s ผลลัพท์)", "Admin tools": "เครื่องมือผู้ดูแล", "And %(count)s more...": "เพิ่มอีก %(count)s ชิ้น...", "Missing Media Permissions, click here to request.": "ไม่มีสิทธิ์เข้าถึงสื่อ, คลิกที่นี่เพื่อขอสิทธิ์", diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 035fd69e8a..fccef004dc 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -156,10 +156,8 @@ "%(items)s and %(remaining)s others": "%(items)s ve %(remaining)s diğerleri", "%(items)s and one other": "%(items)s ve bir başkası", "%(items)s and %(lastItem)s": "%(items)s ve %(lastItem)s", - "and %(count)s others...": { - "other": "ve %(count)s diğerleri...", - "one": "ve bir diğeri..." - }, + "and %(count)s others...|one": "ve bir diğeri...", + "and %(count)s others...|other": "ve %(count)s diğerleri...", "%(names)s and %(lastPerson)s are typing": "%(names)s ve %(lastPerson)s yazıyorlar", "%(names)s and one other are typing": "%(names)s ve birisi yazıyor", "%(names)s and %(count)s others are typing": "%(names)s ve %(count)s diğeri yazıyor", @@ -220,8 +218,8 @@ "Confirm your new password": "Yeni Şifrenizi Onaylayın", "Continue": "Devam Et", "Could not connect to the integration server": "Bütünleştirme (Integration) Sunucusuna bağlanamadı", - "%(count)s new messages.one": "%(count)s yeni mesaj", - "%(count)s new messages.other": "%(count)s yeni mesajlar", + "%(count)s new messages|one": "%(count)s yeni mesaj", + "%(count)s new messages|other": "%(count)s yeni mesajlar", "Create a new chat or reuse an existing one": "Yeni sohbet oluştur veya mevcut sohbetinizi tekrar kullanın", "Create an account": "Hesap Oluştur", "Create Room": "Oda Oluştur", @@ -600,9 +598,9 @@ "Unrecognised command:": "Tanınmayan komut :", "Unrecognised room alias:": "Tanınmayan oda isimleri :", "Unverified": "Doğrulanmamış", - "Uploading %(filename)s and %(count)s others.zero": "%(filename)s yükleniyor", - "Uploading %(filename)s and %(count)s others.one": "%(filename)s ve %(count)s kadarı yükleniyor", - "Uploading %(filename)s and %(count)s others.other": "%(filename)s ve %(count)s kadarları yükleniyor", + "Uploading %(filename)s and %(count)s others|zero": "%(filename)s yükleniyor", + "Uploading %(filename)s and %(count)s others|one": "%(filename)s ve %(count)s kadarı yükleniyor", + "Uploading %(filename)s and %(count)s others|other": "%(filename)s ve %(count)s kadarları yükleniyor", "uploaded a file": "bir dosya yüklendi", "Upload avatar": "Avatar yükle", "Upload Failed": "Yükleme Başarısız", @@ -719,8 +717,8 @@ "Sent messages will be stored until your connection has returned.": "Gönderilen iletiler bağlantınız geri gelene kadar saklanacak.", "Auto-complete": "Otomatik tamamlama", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": " Hepsini yeniden gönderin veya Hepsini iptal edin şimdi . Ayrıca yeniden göndermek veya iptal etmek için özel iletiler seçebilirsin.", - "(~%(count)s results).one": "(~%(count)s sonuç)", - "(~%(count)s results).other": "(~%(count)s sonuçlar)", + "(~%(count)s results)|one": "(~%(count)s sonuç)", + "(~%(count)s results)|other": "(~%(count)s sonuçlar)", "Cancel": "İptal Et", "or": "veya", "Active call": "Aktif çağrı", diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index ae538d76bf..15ddefc956 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -192,10 +192,8 @@ "%(items)s and %(remaining)s others": "%(items)s та інші %(remaining)s", "%(items)s and one other": "%(items)s і ще один інший", "%(items)s and %(lastItem)s": "%(items)s та %(lastItem)s", - "and %(count)s others...": { - "other": "та %(count)s інші...", - "one": "і інше..." - }, + "and %(count)s others...|one": "і інше...", + "and %(count)s others...|other": "та %(count)s інші...", "%(names)s and %(lastPerson)s are typing": "%(names)s та %(lastPerson)s пишуть", "%(names)s and one other are typing": "%(names)s та інші пишуть", "%(names)s and %(count)s others are typing": "%(names)s та %(count)s інших пишуть", diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 77c2232619..f8ee16f67e 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -239,8 +239,8 @@ "%(items)s and %(remaining)s others": "%(items)s 和其它 %(remaining)s 个人", "%(items)s and one other": "%(items)s 和另一个人", "%(items)s and %(lastItem)s": "%(items)s 和 %(lastItem)s", - "and %(count)s others....other": "和其它 %(count)s 个...", - "and %(count)s others....one": "和其它一个...", + "and %(count)s others...|other": "和其它 %(count)s 个...", + "and %(count)s others...|one": "和其它一个...", "%(names)s and one other are typing": "%(names)s 和另一个人正在打字", "anyone": "任何人", "Anyone": "任何人", @@ -282,8 +282,8 @@ "Conference calling is in development and may not be reliable.": "视频会议功能还在开发状态,可能不稳定。", "Conference calls are not supported in encrypted rooms": "加密聊天室不支持视频会议", "Conference calls are not supported in this client": "此客户端不支持视频会议", - "%(count)s new messages.one": "%(count)s 条新消息", - "%(count)s new messages.other": "%(count)s 新消息", + "%(count)s new messages|one": "%(count)s 条新消息", + "%(count)s new messages|other": "%(count)s 新消息", "Create a new chat or reuse an existing one": "创建新聊天或使用已有的聊天", "Custom": "自定义", "Custom level": "自定义级别", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 2f3d36b481..028336f3be 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -463,8 +463,8 @@ "Conference calls are not supported in encrypted rooms": "不支援在加密房間的會議通話", "Conference calls are not supported in this client": "這個客戶端不支援會議通話", "Could not connect to the integration server": "無法連線到整合的伺服器", - "%(count)s new messages.one": "%(count)s 個訊息", - "%(count)s new messages.other": "%(count)s 個訊息", + "%(count)s new messages|one": "%(count)s 個訊息", + "%(count)s new messages|other": "%(count)s 個訊息", "Create a new chat or reuse an existing one": "建立新聊天或重新使用既有的", "Curve25519 identity key": "Curve25519 辨識金鑰", "Custom": "自訂", @@ -661,9 +661,9 @@ "Unrecognised command:": "無法識別的命令:", "Unrecognised room alias:": "無法室別的房間別名:", "Unverified": "未驗證", - "Uploading %(filename)s and %(count)s others.zero": "正在上傳 %(filename)s", - "Uploading %(filename)s and %(count)s others.one": "正在上傳 %(filename)s 與另外 %(count)s 個", - "Uploading %(filename)s and %(count)s others.other": "正在上傳 %(filename)s 與另外 %(count)s 個", + "Uploading %(filename)s and %(count)s others|zero": "正在上傳 %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "正在上傳 %(filename)s 與另外 %(count)s 個", + "Uploading %(filename)s and %(count)s others|other": "正在上傳 %(filename)s 與另外 %(count)s 個", "uploaded a file": "已上傳檔案", "Upload avatar": "上傳大頭貼", "Upload Failed": "上傳失敗", @@ -772,8 +772,8 @@ "Sent messages will be stored until your connection has returned.": "傳送的訊息會在您的連線恢復前先儲存起來。", "Auto-complete": "自動完成", "Resend all or cancel all now. You can also select individual messages to resend or cancel.": "現在重新傳送全部或是取消全部。您也可以單獨選擇訊息來重新傳送或取消。", - "(~%(count)s results).one": "(~%(count)s 結果)", - "(~%(count)s results).other": "(~%(count)s 結果)", + "(~%(count)s results)|one": "(~%(count)s 結果)", + "(~%(count)s results)|other": "(~%(count)s 結果)", "or": "或", "Active call": "活躍的通話", "bold": "粗體", @@ -923,8 +923,8 @@ "Encryption key request": "加密金鑰請求", "Add a widget": "新增小工具", "Allow": "允許", - "and %(count)s others....other": "與其他 %(count)s 個……", - "and %(count)s others....one": "與其他 1 個……", + "and %(count)s others...|other": "與其他 %(count)s 個……", + "and %(count)s others...|one": "與其他 1 個……", "Cannot add any more widgets": "無法新增更多的小工具", "Changes colour scheme of current room": "變更目前聊天室的配色方案", "Delete widget": "刪除小工具",