diff --git a/res/css/structures/_GroupView.scss b/res/css/structures/_GroupView.scss index ae86f68fd07..4ec53a3c9aa 100644 --- a/res/css/structures/_GroupView.scss +++ b/res/css/structures/_GroupView.scss @@ -44,21 +44,29 @@ limitations under the License. } .mx_GroupHeader_button { + position: relative; margin-left: 5px; margin-right: 5px; cursor: pointer; height: 20px; width: 20px; - background-color: $groupheader-button-color; - mask-repeat: no-repeat; - mask-size: contain; + + &::before { + content: ''; + position: absolute; + height: 20px; + width: 20px; + background-color: $groupheader-button-color; + mask-repeat: no-repeat; + mask-size: contain; + } } -.mx_GroupHeader_editButton { +.mx_GroupHeader_editButton::before { mask-image: url('$(res)/img/icons-settings-room.svg'); } -.mx_GroupHeader_shareButton { +.mx_GroupHeader_shareButton::before { mask-image: url('$(res)/img/icons-share.svg'); } diff --git a/res/css/structures/_RightPanel.scss b/res/css/structures/_RightPanel.scss index c63db5d274e..973f6fe9b3e 100644 --- a/res/css/structures/_RightPanel.scss +++ b/res/css/structures/_RightPanel.scss @@ -50,18 +50,18 @@ limitations under the License. height: 20px; width: 20px; position: relative; -} -.mx_RightPanel_headerButton::before { - content: ''; - position: absolute; - top: 0; - left: 0; - height: 20px; - width: 20px; - background-color: $rightpanel-button-color; - mask-repeat: no-repeat; - mask-size: contain; + &::before { + content: ''; + position: absolute; + top: 0; + left: 0; + height: 20px; + width: 20px; + background-color: $rightpanel-button-color; + mask-repeat: no-repeat; + mask-size: contain; + } } .mx_RightPanel_membersButton::before { diff --git a/res/css/views/rooms/_EventTile.scss b/res/css/views/rooms/_EventTile.scss index fafd34f8ca4..a30b2190166 100644 --- a/res/css/views/rooms/_EventTile.scss +++ b/res/css/views/rooms/_EventTile.scss @@ -138,11 +138,13 @@ limitations under the License. // Explicit relationships so that it doesn't apply to nested EventTile components (e.g in Replies) .mx_EventTile_last > div > a > .mx_MessageTimestamp, .mx_EventTile:hover > div > a > .mx_MessageTimestamp, +.mx_EventTile:focus-within > div > a > .mx_MessageTimestamp, .mx_EventTile.mx_EventTile_actionBarFocused > div > a > .mx_MessageTimestamp { visibility: visible; } .mx_EventTile:hover .mx_MessageActionBar, +.mx_EventTile:focus-within .mx_MessageActionBar, .mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar { visibility: visible; } @@ -166,6 +168,7 @@ limitations under the License. } .mx_EventTile:hover .mx_EventTile_line, +.mx_EventTile:focus-within .mx_EventTile_line, .mx_EventTile.mx_EventTile_actionBarFocused .mx_EventTile_line { background-color: $event-selected-color; } @@ -465,7 +468,8 @@ div.mx_EventTile_notSent.mx_EventTile_redacted .mx_UnknownBody { } } -.mx_EventTile:hover .mx_EventTile_body pre { +.mx_EventTile:hover .mx_EventTile_body pre, +.mx_EventTile:focus-within .mx_EventTile_body pre { border: 1px solid #e5e5e5; // deliberate constant as we're behind an invert filter } @@ -487,6 +491,7 @@ div.mx_EventTile_notSent.mx_EventTile_redacted .mx_UnknownBody { background-image: url($copy-button-url); } +.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_copyButton, .mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton { visibility: visible; } diff --git a/res/css/views/rooms/_MessageComposer.scss b/res/css/views/rooms/_MessageComposer.scss index 5b4a9b764b4..e9f33183f53 100644 --- a/res/css/views/rooms/_MessageComposer.scss +++ b/res/css/views/rooms/_MessageComposer.scss @@ -180,34 +180,42 @@ limitations under the License. } .mx_MessageComposer_button { + position: relative; margin-right: 12px; cursor: pointer; - padding-top: 4px; height: 20px; width: 20px; - background-color: $composer-button-color; - mask-repeat: no-repeat; - mask-size: contain; - mask-position: center; + + &::before { + content: ''; + position: absolute; + + height: 20px; + width: 20px; + background-color: $composer-button-color; + mask-repeat: no-repeat; + mask-size: contain; + mask-position: center; + } } -.mx_MessageComposer_upload { +.mx_MessageComposer_upload::before { mask-image: url('$(res)/img/feather-customised/paperclip.svg'); } -.mx_MessageComposer_hangup { +.mx_MessageComposer_hangup::before { mask-image: url('$(res)/img/hangup.svg'); } -.mx_MessageComposer_voicecall { +.mx_MessageComposer_voicecall::before { mask-image: url('$(res)/img/feather-customised/phone.svg'); } -.mx_MessageComposer_videocall { +.mx_MessageComposer_videocall::before { mask-image: url('$(res)/img/feather-customised/video.svg'); } -.mx_MessageComposer_stickers { +.mx_MessageComposer_stickers::before { mask-image: url('$(res)/img/feather-customised/face.svg'); } diff --git a/res/css/views/rooms/_RoomHeader.scss b/res/css/views/rooms/_RoomHeader.scss index 2ee991cac76..5da8ff76b95 100644 --- a/res/css/views/rooms/_RoomHeader.scss +++ b/res/css/views/rooms/_RoomHeader.scss @@ -192,33 +192,41 @@ limitations under the License. } .mx_RoomHeader_button { + position: relative; margin-left: 10px; cursor: pointer; height: 20px; width: 20px; - background-color: $roomheader-button-color; - mask-repeat: no-repeat; - mask-size: contain; + + &::before { + content: ''; + position: absolute; + height: 20px; + width: 20px; + background-color: $roomheader-button-color; + mask-repeat: no-repeat; + mask-size: contain; + } } -.mx_RoomHeader_settingsButton { +.mx_RoomHeader_settingsButton::before { mask-image: url('$(res)/img/feather-customised/settings.svg'); } -.mx_RoomHeader_forgetButton { +.mx_RoomHeader_forgetButton::before { mask-image: url('$(res)/img/leave.svg'); width: 26px; } -.mx_RoomHeader_searchButton { +.mx_RoomHeader_searchButton::before { mask-image: url('$(res)/img/feather-customised/search.svg'); } -.mx_RoomHeader_shareButton { +.mx_RoomHeader_shareButton::before { mask-image: url('$(res)/img/feather-customised/share.svg'); } -.mx_RoomHeader_manageIntegsButton { +.mx_RoomHeader_manageIntegsButton::before { mask-image: url('$(res)/img/feather-customised/grid.svg'); } @@ -234,8 +242,7 @@ limitations under the License. margin-top: 18px; } -.mx_RoomHeader_pinnedButton { - position: relative; +.mx_RoomHeader_pinnedButton::before { mask-image: url('$(res)/img/icons-pin.svg'); } diff --git a/src/components/views/messages/DateSeparator.js b/src/components/views/messages/DateSeparator.js index 900fd619144..56faa670b2e 100644 --- a/src/components/views/messages/DateSeparator.js +++ b/src/components/views/messages/DateSeparator.js @@ -57,7 +57,8 @@ export default class DateSeparator extends React.Component { render() { // ARIA treats
s as separators, here we abuse them slightly so manually treat this entire thing as one - return

+ // tab-index=-1 to allow it to be focusable but do not add tab stop for it, primarily for screen readers + return


{ this.getLabel() }

diff --git a/src/components/views/messages/MessageActionBar.js b/src/components/views/messages/MessageActionBar.js index 565c66410ec..acd8263410f 100644 --- a/src/components/views/messages/MessageActionBar.js +++ b/src/components/views/messages/MessageActionBar.js @@ -180,7 +180,8 @@ export default class MessageActionBar extends React.PureComponent { />; } - return
+ // aria-live=off to not have this read out automatically as navigating around timeline, gets repetitive. + return
{reactButton} {replyButton} {editButton} diff --git a/src/components/views/messages/MessageTimestamp.js b/src/components/views/messages/MessageTimestamp.js index 0bbb3f631e3..199a6f47cea 100644 --- a/src/components/views/messages/MessageTimestamp.js +++ b/src/components/views/messages/MessageTimestamp.js @@ -28,7 +28,7 @@ export default class MessageTimestamp extends React.Component { render() { const date = new Date(this.props.ts); return ( - + { formatTime(date, this.props.showTwelveHour) } ); diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js index ca83dd18145..9497324f5a0 100644 --- a/src/components/views/rooms/EventTile.js +++ b/src/components/views/rooms/EventTile.js @@ -32,6 +32,7 @@ const TextForEvent = require('../../../TextForEvent'); import dis from '../../../dispatcher'; import SettingsStore from "../../../settings/SettingsStore"; import {EventStatus, MatrixClient} from 'matrix-js-sdk'; +import {formatTime} from "../../../DateUtils"; const ObjectUtils = require('../../../ObjectUtils'); @@ -786,14 +787,19 @@ module.exports = createReactClass({ this.props.permalinkCreator, 'replyThread', ); + // tab-index=-1 to allow it to be focusable but do not add tab stop for it, primarily for screen readers return ( -
+
{ readAvatars }
{ sender }
- + { timestamp } { this._renderE2EPadlock() } diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index 29771f6f2b6..2287c5b295d 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -2189,5 +2189,20 @@ "Hide advanced": "Скрий разширени настройки", "Show advanced": "Покажи разширени настройки", "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "Блокирай присъединяването на потребители от други Matrix сървъри в тази стая (Тази настройка не може да се промени по-късно!)", - "Close dialog": "Затвори прозореца" + "Close dialog": "Затвори прозореца", + "Add Email Address": "Добави имейл адрес", + "Add Phone Number": "Добави телефонен номер", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Това действие изисква връзка със сървъра за самоличност за валидиране на имейл адреса или телефонния номер, но сървърът не предоставя условия за ползване.", + "Trust": "Довери се", + "Use the new, consistent UserInfo panel for Room Members and Group Members": "Използвай новия UserInfo панел за членове на стаи и групи", + "Use the new, faster, composer for writing messages": "Използвай новия, по-бърз редактор за писане на съобщения", + "Show previews/thumbnails for images": "Показвай преглед (умален размер) на снимки", + "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "Би било добре да премахнете личните си данни от сървъра за самоличност преди прекъсване на връзката. За съжаление, сървърът за самоличност в момента не е достъпен.", + "You should:": "Ще е добре да:", + "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "проверите браузър добавките за всичко, което може да блокира връзката със сървъра за самоличност (например Privacy Badger)", + "contact the administrators of identity server ": "се свържете с администратора на сървъра за самоличност ", + "wait and try again later": "изчакате и опитате пак", + "Clear cache and reload": "Изчисти кеша и презареди", + "Show tray icon and minimize window to it on close": "Показвай икона в лентата и минимизирай прозореца там при затваряне", + "Your email address hasn't been verified yet": "Имейл адресът ви все още не е потвърден" } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index d6b7eb60a38..5af7e26b796 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1055,6 +1055,7 @@ "React": "React", "Reply": "Reply", "Edit": "Edit", + "Message Actions": "Message Actions", "Options": "Options", "Attachment": "Attachment", "Error decrypting attachment": "Error decrypting attachment", diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index ef2dd9fe8b5..72b6fff50df 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -2188,5 +2188,39 @@ "Emoji Autocomplete": "Emoji osatze automatikoa", "Notification Autocomplete": "Jakinarazpen osatze automatikoa", "Room Autocomplete": "Gela osatze automatikoa", - "User Autocomplete": "Erabiltzaile osatze automatikoa" + "User Autocomplete": "Erabiltzaile osatze automatikoa", + "Use the new, consistent UserInfo panel for Room Members and Group Members": "Erabili erabiltzaile-informazio panel berria gelako eta taldeko kideentzat", + "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "Zure datu pribatuak kendu beharko zenituzke identitate-zerbitzaritik deskonektatu aurretik. Zoritxarrez identitate-zerbitzaria lineaz kanpo dago eta ezin da atzitu.", + "You should:": "Hau egin beharko zenuke:", + "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "egiaztatu zure nabigatzailearen gehigarriren batek ez duela identitate-zerbitzaria blokeatzen (esaterako Privacy Badger)", + "contact the administrators of identity server ": " identitate-zerbitzariko administratzaileekin kontaktuak jarri", + "wait and try again later": "itxaron eta berriro saiatu", + "Show tray icon and minimize window to it on close": "Erakutsi egoera-barrako ikonoa eta minimizatu leihoa itxi ordez", + "Room %(name)s": "%(name)s gela", + "Recent rooms": "Azken gelak", + "%(count)s unread messages including mentions.|one": "Irakurri gabeko aipamen 1.", + "%(count)s unread messages.|one": "Irakurri gabeko mezu 1.", + "Unread messages.": "Irakurri gabeko mezuak.", + "Trust & Devices": "Fidagarritasuna eta gailuak", + "Direct messages": "Mezu zuzenak", + "Failed to deactivate user": "Huts egin du erabiltzailea desaktibatzeak", + "This client does not support end-to-end encryption.": "Bezero honek ez du muturretik muturrerako zifratzea onartzen.", + "Messages in this room are not end-to-end encrypted.": "Gela honetako mezuak ez daude muturretik muturrera zifratuta.", + "React": "Erreakzioa", + "Frequently Used": "Maiz erabilia", + "Smileys & People": "Irribartxoak eta jendea", + "Animals & Nature": "Animaliak eta natura", + "Food & Drink": "Jana eta edana", + "Activities": "Jarduerak", + "Travel & Places": "Bidaiak eta tokiak", + "Objects": "Objektuak", + "Symbols": "Ikurrak", + "Flags": "Banderak", + "Quick Reactions": "Erreakzio azkarrak", + "Cancel search": "Ezeztatu bilaketa", + "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Ez da identitate-zerbitzaririk konfiguratu, beraz ezin duzu e-mail helbide bat gehitu etorkizunean pasahitza berrezartzeko.", + "Jump to first unread room.": "Jauzi irakurri gabeko lehen gelara.", + "Jump to first invite.": "Jauzi lehen gonbidapenera.", + "Command Autocomplete": "Aginduak auto-osatzea", + "DuckDuckGo Results": "DuckDuckGo emaitzak" } diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index af6634992f3..7807facb1c5 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2273,5 +2273,11 @@ "Jump to first invite.": "Sauter à la première invitation.", "Room %(name)s": "Salon %(name)s", "Recent rooms": "Salons récents", - "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Aucun serveur d’identité n’est configuré donc vous ne pouvez pas ajouter une adresse e-mail afin de réinitialiser votre mot de passe dans l’avenir." + "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Aucun serveur d’identité n’est configuré donc vous ne pouvez pas ajouter une adresse e-mail afin de réinitialiser votre mot de passe dans l’avenir.", + "%(count)s unread messages including mentions.|one": "1 mention non lue.", + "%(count)s unread messages.|one": "1 message non lu.", + "Unread messages.": "Messages non lus.", + "Show tray icon and minimize window to it on close": "Afficher l’icône dans la barre d’état et minimiser la fenêtre lors de la fermeture", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Cette action nécessite l’accès au serveur d’identité par défaut afin de valider une adresse e-mail ou un numéro de téléphone, mais le serveur n’a aucune condition de service.", + "Trust": "Confiance" } diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index dc8c42b109a..4946c7b14fe 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -2263,5 +2263,8 @@ "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Azonosítási szerver nincs beállítva, így nem tudsz hozzáadni e-mail címet amivel vissza lehetne állítani a jelszót a későbbiekben.", "%(count)s unread messages including mentions.|one": "1 olvasatlan megemlítés.", "%(count)s unread messages.|one": "1 olvasatlan üzenet.", - "Unread messages.": "Olvasatlan üzenetek." + "Unread messages.": "Olvasatlan üzenetek.", + "Show tray icon and minimize window to it on close": "Tálcaikon mutatása és az ablak összecsukása bezáráskor", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Ez a művelet az e-mail cím vagy telefonszám ellenőrzése miatt hozzáférést igényel az alapértelmezett azonosítási szerverhez (), de a szervernek nincsen semmilyen felhasználási feltétele.", + "Trust": "Megbízom benne" } diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index f1f66b44d21..62623150120 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -2223,5 +2223,6 @@ "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "Nessun server di identità configurato, perciò non puoi aggiungere un indirizzo email per ripristinare la tua password in futuro.", "%(count)s unread messages including mentions.|one": "1 citazione non letta.", "%(count)s unread messages.|one": "1 messaggio non letto.", - "Unread messages.": "Messaggi non letti." + "Unread messages.": "Messaggi non letti.", + "Show tray icon and minimize window to it on close": "Mostra icona in tray e usala alla chiusura della finestra" } diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index 47e53e2ffe8..23199094e86 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -1303,5 +1303,45 @@ "Upgrade": "アップグレード", "Sets the room name": "部屋名を設定する", "Change room name": "部屋名を変える", - "Room Name": "部屋名" + "Room Name": "部屋名", + "Add Email Address": "メールアドレスの追加", + "Add Phone Number": "電話番号の追加", + "Call failed due to misconfigured server": "サーバの誤設定により呼び出し失敗", + "Try using turn.matrix.org": "turn.matrix.orgで試してみる", + "A conference call could not be started because the integrations server is not available": "統合サーバーが利用できないので電話会議を開始できませんでした", + "Replying With Files": "ファイルを添付して返信", + "The file '%(fileName)s' failed to upload.": "ファイル '%(fileName)s' のアップロードに失敗しました。", + "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "ファイル '%(fileName)s' はこのホームサーバのアップロードのサイズ上限を超えています", + "The server does not support the room version specified.": "このサーバは指定された部屋バージョンに対応していません。", + "Name or Matrix ID": "名前またはMatrix ID", + "Identity server has no terms of service": "IDサーバーは利用規約を持っていません", + "Email, name or Matrix ID": "メールアドレス、名前、またはMatrix ID", + "Failed to start chat": "対話開始に失敗しました", + "Messages": "メッセージ", + "Actions": "アクション", + "Other": "その他", + "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "¯\\_(ツ)_/¯ を平文メッセージの前に挿入する", + "Sends a message as plain text, without interpreting it as markdown": "メッセージをマークダウンと解釈せずプレーンテキストとして送信する", + "Upgrades a room to a new version": "部屋を新しいバージョンへアップグレードする", + "You do not have the required permissions to use this command.": "このコマンドを実行するのに必要な権限がありません。", + "Room upgrade confirmation": "部屋のアップグレードの確認", + "Changes your display nickname in the current room only": "表示されるニックネームをこの部屋に関してのみ変更する", + "Changes the avatar of the current room": "現在の部屋のアバターを変更する", + "Changes your avatar in this current room only": "アバターをこの部屋に関してのみ変更する", + "Changes your avatar in all rooms": "全ての部屋に対するアバターを変更する", + "Gets or sets the room topic": "部屋のトピック情報を取得または設定する", + "This room has no topic.": "この部屋はトピックを持ちません。", + "Use an identity server": "IDサーバーを使用する", + "Unbans user with given ID": "与えられたIDを持つユーザーの追放を解除する", + "Adds a custom widget by URL to the room": "部屋にURLで指定したカスタムウィジェットを追加する", + "Please supply a https:// or http:// widget URL": "https:// または http:// で始まるウィジェット URLを指定してください", + "You cannot modify widgets in this room.": "あなたはこの部屋のウィジェットを変更できません。", + "Sends the given message coloured as a rainbow": "与えられたメッセージを虹色にして送信する", + "Sends the given emote coloured as a rainbow": "与えられたエモートを虹色で送信する", + "Displays list of commands with usages and descriptions": "使い方と説明付きのコマンド一覧を表示する", + "%(senderName)s made no change.": "%(senderName)s は変更されませんでした。", + "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s はこの部屋をアップグレードしました。", + "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s はこの部屋をリンクを知っている人全てに公開しました。", + "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s はこの部屋を招待者のみに変更しました。", + "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s はゲストがこの部屋に参加できるようにしました。" } diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 4e94a06dc33..1aebd0ce174 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -2120,5 +2120,8 @@ "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "설정된 ID 서버가 없어서 이후 비밀번호를 초기화하기 위한 이메일 주소를 추가할 수 없습니다.", "%(count)s unread messages including mentions.|one": "1개의 읽지 않은 언급.", "%(count)s unread messages.|one": "1개의 읽지 않은 메시지.", - "Unread messages.": "읽지 않은 메시지." + "Unread messages.": "읽지 않은 메시지.", + "Show tray icon and minimize window to it on close": "닫을 때 창을 최소화하고 트레이 아이콘으로 표시하기", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "이 작업에는 이메일 주소 또는 전화번호를 확인하기 위해 기본 ID 서버 에 접근해야 합니다. 하지만 서버가 서비스 약관을 갖고 있지 않습니다.", + "Trust": "신뢰함" } diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index d7f5e2bf74b..6a8076ac966 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -181,7 +181,7 @@ "%(count)s Members|one": "%(count)s narys", "Developer Tools": "Programuotojo įrankiai", "Unhide Preview": "Rodyti paržiūrą", - "Custom Server Options": "Tinkinto serverio parametrai", + "Custom Server Options": "Pasirinktiniai Serverio Nustatymai", "Event Content": "Įvykio turinys", "Thank you!": "Ačiū!", "Collapse panel": "Suskleisti skydelį", @@ -997,5 +997,8 @@ "Whether or not you're logged in (we don't record your username)": "Nepriklausomai nuo to ar jūs prisijungę (mes neįrašome jūsų vartotojo vardo)", "Chat with Riot Bot": "Kalbėtis su Riot botu", "Sign In": "Prisijungti", - "Explore rooms": "Peržiūrėti kambarius" + "Explore rooms": "Peržiūrėti kambarius", + "Your Riot is misconfigured": "Jūsų Riot yra neteisingai sukonfigūruotas", + "Sign in to your Matrix account on %(serverName)s": "Prisijunkite prie savo paskyros %(serverName)s serveryje", + "Sign in to your Matrix account on ": "Prisijunkite prie savo paskyros serveryje" } diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index f322affd1b3..6d611be4647 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -946,7 +946,7 @@ "Verified key": "Verifierad nyckel", "Unrecognised command:": "Oigenkänt kommando:", "Unbans user with given id": "Avbannar användare med givet id", - "Verifies a user, device, and pubkey tuple": "Verifierar en användare, enhet och nycklar", + "Verifies a user, device, and pubkey tuple": "Verifierar en användare, enhet och offentlig nyckel-tupel", "VoIP conference started.": "VoIP-konferens startad.", "VoIP conference finished.": "VoIP-konferens avslutad.", "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gjorde framtida rumshistorik synligt för okänd (%(visibility)s).", @@ -1812,5 +1812,10 @@ "Connect this device to Key Backup": "Anslut den här enheten till nyckelsäkerhetskopiering", "Backing up %(sessionsRemaining)s keys...": "Säkerhetskopierar %(sessionsRemaining)s nycklar...", "All keys backed up": "Alla nycklar säkerhetskopierade", - "Backup has a signature from unknown device with ID %(deviceId)s.": "Säkerhetskopian har en signatur från okänd enhet med ID %(deviceId)s." + "Backup has a signature from unknown device with ID %(deviceId)s.": "Säkerhetskopian har en signatur från okänd enhet med ID %(deviceId)s.", + "Add Email Address": "Lägg till e-postadress", + "Add Phone Number": "Lägg till telefonnummer", + "Identity server has no terms of service": "Identitetsserver har inga användarvillkor", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Den här åtgärden kräver åtkomst till standardidentitetsservern för att validera en e-postadress eller telefonnummer, men servern har inga användarvillkor.", + "Trust": "Förtroende" } diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index bb383c7f5aa..94183ef83f4 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2269,5 +2269,8 @@ "No identity server is configured so you cannot add an email address in order to reset your password in the future.": "未設定身份識別伺服器,所以您無法新增電子郵件以在未來重設您的密碼。", "%(count)s unread messages including mentions.|one": "1 則未讀的提及。", "%(count)s unread messages.|one": "1 則未讀的訊息。", - "Unread messages.": "未讀的訊息。" + "Unread messages.": "未讀的訊息。", + "Show tray icon and minimize window to it on close": "顯示系統匣圖示並在關閉視窗時將其最小化至其中", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "此動作需要存取預設的身份識別伺服器 以驗證電子郵件或電話號碼,但伺服器沒有任何服務條款。", + "Trust": "信任" }