diff --git a/.eslintrc.js b/.eslintrc.js index a65f20893b..7c2ebb96df 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,9 @@ module.exports = { plugins: ["matrix-org"], extends: ["plugin:matrix-org/babel", "plugin:matrix-org/react", "plugin:matrix-org/a11y"], + parserOptions: { + project: ["./tsconfig.json"], + }, env: { browser: true, node: true, @@ -168,6 +171,12 @@ module.exports = { "@typescript-eslint/explicit-member-accessibility": "off", }, }, + { + files: ["cypress/**/*.ts"], + parserOptions: { + project: ["./cypress/tsconfig.json"], + }, + }, ], settings: { react: { diff --git a/.github/workflows/cypress.yaml b/.github/workflows/cypress.yaml index d114217f5c..4e7f0f688f 100644 --- a/.github/workflows/cypress.yaml +++ b/.github/workflows/cypress.yaml @@ -21,7 +21,6 @@ jobs: commit_message: ${{ steps.commit.outputs.message }} commit_author: ${{ steps.commit.outputs.author }} commit_email: ${{ steps.commit.outputs.email }} - percy_enable: ${{ steps.percy.outputs.value || '1' }} testrail_enable: ${{ steps.testrail.outputs.value || '1' }} steps: # We create the status here and then update it to success/failure in the `report` stage @@ -56,14 +55,6 @@ jobs: core.setOutput("author", response.data.author.name); core.setOutput("email", response.data.author.email); - # Only run Percy when it is demanded or on develop - - name: Disable Percy if not needed - id: percy - if: | - github.event.workflow_run.event == 'pull_request' && - !contains(fromJSON(steps.prdetails.outputs.data).labels.*.name, 'X-Needs-Percy') - run: echo "::set-output name=value::0" - # Only run Testrail when it is demanded or on develop - name: Disable Testrail if not needed id: testrail @@ -156,7 +147,7 @@ jobs: # pass the Percy token as an environment variable PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} - PERCY_ENABLE: ${{ needs.prepare.outputs.percy_enable }} + PERCY_ENABLE: 1 PERCY_BROWSER_EXECUTABLE: /usr/bin/chromium-browser # tell Percy more details about the context of this run PERCY_BRANCH: ${{ github.event.workflow_run.head_branch }} diff --git a/cypress/e2e/crypto/decryption-failure.spec.ts b/cypress/e2e/crypto/decryption-failure.spec.ts index 5f0a9056ad..b9e3265b76 100644 --- a/cypress/e2e/crypto/decryption-failure.spec.ts +++ b/cypress/e2e/crypto/decryption-failure.spec.ts @@ -52,6 +52,8 @@ const handleVerificationRequest = (request: VerificationRequest): Chainable { }) .then(() => { cy.botSendMessage(bot, roomId, "test"); - cy.wait(5000); - cy.get(".mx_DecryptionFailureBar .mx_DecryptionFailureBar_message_headline").should( - "have.text", + cy.contains( + ".mx_DecryptionFailureBar .mx_DecryptionFailureBar_message_headline", "Verify this device to access all messages", ); @@ -124,6 +125,7 @@ describe("Decryption Failure Bar", () => { const verificationRequestPromise = waitForVerificationRequest(otherDevice); cy.get(".mx_CompleteSecurity_actionRow .mx_AccessibleButton").click(); + cy.contains("To proceed, please accept the verification request on your other device."); cy.wrap(verificationRequestPromise).then((verificationRequest: VerificationRequest) => { cy.wrap(verificationRequest.accept()); handleVerificationRequest(verificationRequest).then((emojis) => { @@ -170,9 +172,8 @@ describe("Decryption Failure Bar", () => { ); cy.botSendMessage(bot, roomId, "test"); - cy.wait(5000); - cy.get(".mx_DecryptionFailureBar .mx_DecryptionFailureBar_message_headline").should( - "have.text", + cy.contains( + ".mx_DecryptionFailureBar .mx_DecryptionFailureBar_message_headline", "Reset your keys to prevent future decryption errors", ); diff --git a/cypress/support/bot.ts b/cypress/support/bot.ts index 9cb5e472de..2799927916 100644 --- a/cypress/support/bot.ts +++ b/cypress/support/bot.ts @@ -163,6 +163,8 @@ function setupBotClient( } }) .then(() => cli), + // extra timeout, as this sometimes takes a while + { timeout: 30_000 }, ); }); } diff --git a/package.json b/package.json index fe618fc40b..f71915058e 100644 --- a/package.json +++ b/package.json @@ -190,7 +190,7 @@ "eslint-plugin-deprecate": "^0.7.0", "eslint-plugin-import": "^2.25.4", "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-matrix-org": "0.9.0", + "eslint-plugin-matrix-org": "0.10.0", "eslint-plugin-react": "^7.28.0", "eslint-plugin-react-hooks": "^4.3.0", "eslint-plugin-unicorn": "^45.0.0", diff --git a/res/css/views/dialogs/_AddExistingToSpaceDialog.pcss b/res/css/views/dialogs/_AddExistingToSpaceDialog.pcss index cda642f610..9a6372a5ad 100644 --- a/res/css/views/dialogs/_AddExistingToSpaceDialog.pcss +++ b/res/css/views/dialogs/_AddExistingToSpaceDialog.pcss @@ -38,6 +38,8 @@ limitations under the License. } .mx_AddExistingToSpace_section { + margin-right: 12px; // provides space for scrollbar so that checkbox and scrollbar do not collide + &:not(:first-child) { margin-top: 24px; } diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index cc07f28e4a..7fdda93eb6 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -139,6 +139,7 @@ import GenericToast from "../views/toasts/GenericToast"; import RovingSpotlightDialog, { Filter } from "../views/dialogs/spotlight/SpotlightDialog"; import { findDMForUser } from "../../utils/dm/findDMForUser"; import { Linkify } from "../../HtmlUtils"; +import { NotificationColor } from "../../stores/notifications/NotificationColor"; // legacy export export { default as Views } from "../../Views"; @@ -1961,6 +1962,8 @@ export default class MatrixChat extends React.PureComponent { } if (numUnreadRooms > 0) { this.subTitleStatus += `[${numUnreadRooms}]`; + } else if (notificationState.color >= NotificationColor.Bold) { + this.subTitleStatus += `*`; } this.setPageSubtitle(); diff --git a/src/components/structures/PipContainer.tsx b/src/components/structures/PipContainer.tsx index 7bbbb1c568..0697f4a6da 100644 --- a/src/components/structures/PipContainer.tsx +++ b/src/components/structures/PipContainer.tsx @@ -192,10 +192,7 @@ class PipContainerInner extends React.Component { }; private onWidgetPersistence = (): void => { - this.updateShowWidgetInPip( - ActiveWidgetStore.instance.getPersistentWidgetId(), - ActiveWidgetStore.instance.getPersistentRoomId(), - ); + this.updateShowWidgetInPip(); }; private onWidgetDockChanges = (): void => { @@ -234,11 +231,10 @@ class PipContainerInner extends React.Component { } }; - // Accepts a persistentWidgetId to be able to skip awaiting the setState for persistentWidgetId - public updateShowWidgetInPip( - persistentWidgetId = this.state.persistentWidgetId, - persistentRoomId = this.state.persistentRoomId, - ): void { + public updateShowWidgetInPip(): void { + const persistentWidgetId = ActiveWidgetStore.instance.getPersistentWidgetId(); + const persistentRoomId = ActiveWidgetStore.instance.getPersistentRoomId(); + let fromAnotherRoom = false; let notDocked = false; // Sanity check the room - the widget may have been destroyed between render cycles, and diff --git a/src/components/views/dialogs/ServerOfflineDialog.tsx b/src/components/views/dialogs/ServerOfflineDialog.tsx index bacb4257ae..b4b199661d 100644 --- a/src/components/views/dialogs/ServerOfflineDialog.tsx +++ b/src/components/views/dialogs/ServerOfflineDialog.tsx @@ -48,7 +48,8 @@ export default class ServerOfflineDialog extends React.PureComponent { private renderTimeline(): React.ReactElement[] { return EchoStore.instance.contexts.map((c, i) => { if (!c.firstFailedTime) return null; // not useful - if (!(c instanceof RoomEchoContext)) throw new Error("Cannot render unknown context: " + c); + if (!(c instanceof RoomEchoContext)) + throw new Error("Cannot render unknown context: " + c.constructor.name); const header = (
diff --git a/src/components/views/elements/EventListSummary.tsx b/src/components/views/elements/EventListSummary.tsx index 4436b2d9bf..60288fb2f5 100644 --- a/src/components/views/elements/EventListSummary.tsx +++ b/src/components/views/elements/EventListSummary.tsx @@ -507,39 +507,36 @@ export default class EventListSummary extends React.Component { eventsToRender.forEach((e, index) => { const type = e.getType(); - let userId = e.getSender(); - if (type === EventType.RoomMember) { - userId = e.getStateKey(); + let userKey = e.getSender()!; + if (type === EventType.RoomThirdPartyInvite) { + userKey = e.getContent().display_name; + } else if (type === EventType.RoomMember) { + userKey = e.getStateKey(); } else if (e.isRedacted()) { - userId = e.getUnsigned()?.redacted_because?.sender; + userKey = e.getUnsigned()?.redacted_because?.sender; } // Initialise a user's events - if (!userEvents[userId]) { - userEvents[userId] = []; + if (!userEvents[userKey]) { + userEvents[userKey] = []; } - let displayName = userId; - if (type === EventType.RoomThirdPartyInvite) { - displayName = e.getContent().display_name; - if (e.sender) { - latestUserAvatarMember.set(userId, e.sender); - } - } else if (e.isRedacted()) { - const sender = this.context?.room.getMember(userId); + let displayName = userKey; + if (e.isRedacted()) { + const sender = this.context?.room?.getMember(userKey); if (sender) { displayName = sender.name; - latestUserAvatarMember.set(userId, sender); + latestUserAvatarMember.set(userKey, sender); } } else if (e.target && TARGET_AS_DISPLAY_NAME_EVENTS.includes(type as EventType)) { displayName = e.target.name; - latestUserAvatarMember.set(userId, e.target); - } else if (e.sender) { + latestUserAvatarMember.set(userKey, e.target); + } else if (e.sender && type !== EventType.RoomThirdPartyInvite) { displayName = e.sender.name; - latestUserAvatarMember.set(userId, e.sender); + latestUserAvatarMember.set(userKey, e.sender); } - userEvents[userId].push({ + userEvents[userKey].push({ mxEvent: e, displayName, index: index, diff --git a/src/components/views/settings/ProfileSettings.tsx b/src/components/views/settings/ProfileSettings.tsx index 05a44b8e4f..7953c3e965 100644 --- a/src/components/views/settings/ProfileSettings.tsx +++ b/src/components/views/settings/ProfileSettings.tsx @@ -185,6 +185,10 @@ export default class ProfileSettings extends React.Component<{}, IState> { withDisplayName: true, }); + // False negative result from no-base-to-string rule, doesn't seem to account for Symbol.toStringTag + // eslint-disable-next-line @typescript-eslint/no-base-to-string + const avatarUrl = this.state.avatarUrl?.toString(); + return (
{

Give feedback": "Poskytnout zpětnou vazbu", "%(featureName)s Beta feedback": "Zpětná vazba beta funkce %(featureName)s", "Beta feature. Click to learn more.": "Beta funkce. Kliknutím získáte další informace.", "Beta feature": "Beta funkce", - "Threads are a beta feature": "Vlákna jsou beta funkcí", "Threads help keep your conversations on-topic and easy to track.": "Vlákna pomáhají udržovat konverzace k tématu a snadno je sledovat.", "Threads help keep conversations on-topic and easy to track. Learn more.": "Vlákna pomáhají udržovat konverzace k tématu a snadno je sledovat. Další informace.", "Keep discussions organised with threads.": "Diskuse udržovat organizované pomocí vláken.", @@ -3532,7 +3530,6 @@ "Italic": "Kurzíva", "Notifications silenced": "Oznámení ztlumena", "Yes, stop broadcast": "Ano, zastavit vysílání", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Opravdu chcete ukončit živé vysílání? Tím se vysílání ukončí a v místnosti bude k dispozici celý záznam.", "Stop live broadcasting?": "Ukončit živé vysílání?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "Hlasové vysílání už nahrává někdo jiný. Počkejte, až jeho hlasové vysílání skončí, a spusťte nové.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "Nemáte potřebná oprávnění ke spuštění hlasového vysílání v této místnosti. Obraťte se na správce místnosti, aby vám zvýšil oprávnění.", @@ -3641,7 +3638,6 @@ "Right panel stays open": "Pravý panel zůstane otevřený", "Currently experimental.": "V současnosti experimentální.", "New ways to ignore people": "Nové způsoby ignorování lidí", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "V editoru zpráv používat formátovaný text namísto Markdownu. Brzy bude k dispozici režim prostého textu.", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "V místnostech, které podporují moderování, můžete pomocí tlačítka \"Nahlásit\" nahlásit zneužití moderátorům místnosti.", "Report to moderators": "Nahlásit moderátorům", "You have unverified sessions": "Máte neověřené relace", @@ -3661,19 +3657,19 @@ "%(senderName)s ended a voice broadcast": "%(senderName)s ukončil(a) hlasové vysílání", "You ended a voice broadcast": "Ukončili jste hlasové vysílání", "Threaded messages": "Zprávy ve vláknech", - "Unable to decrypt message": "Nelze dešifrovat zprávu", + "Unable to decrypt message": "Nepodařilo se dešifrovat zprávu", "This message could not be decrypted": "Tuto zprávu se nepodařilo dešifrovat", "Resend key requests": "Opětovně odeslat žádosti o klíč", "Unfortunately, there are no other verified devices to request decryption keys from. Signing in and verifying other devices may help avoid this situation in the future.": "Bohužel neexistují žádná další ověřená zařízení, ze kterých by si bylo možné vyžádat dešifrovací klíče. Přihlášení a ověření dalších zařízení může pomoci této situaci v budoucnu předejít.", "Some messages could not be decrypted": "Některé zprávy nebylo možné dešifrovat", "View your device list": "Zobrazit seznam vašich zařízení", - "This device is requesting decryption keys from your other devices. Opening one of your other devices may speed this up.": "Toto zařízení si vyžádá dešifrovací klíče z ostatních zařízení. Otevření některého z vašich dalších zařízení to může urychlit.", + "This device is requesting decryption keys from your other devices. Opening one of your other devices may speed this up.": "Toto zařízení požaduje dešifrovací klíče z vašich ostatních zařízení. Otevření některého z vašich dalších zařízení to může urychlit.", "Open another device to load encrypted messages": "Otevřete jiné zařízení pro načtení zašifrovaných zpráv", "You will not be able to access old undecryptable messages, but resetting your keys will allow you to receive new messages.": "Ke starým nedešifrovatelným zprávám nebudete mít přístup, ale resetování klíčů vám umožní přijímat nové zprávy.", "Reset your keys to prevent future decryption errors": "Resetujte své klíče, abyste předešli budoucím chybám při dešifrování", "This device was unable to decrypt some messages because it has not been verified yet.": "Toto zařízení nebylo schopno dešifrovat některé zprávy, protože dosud nebylo ověřeno.", "Verify this device to access all messages": "Ověřte toto zařízení pro přístup ke všem zprávám", - "Please wait as we try to decrypt your messages. This may take a few moments.": "Počkejte prosím, než se pokusíme vaše zprávy dešifrovat. Může to chvíli trvat.", + "Please wait as we try to decrypt your messages. This may take a few moments.": "Počkejte prosím, zatímco se snažíme dešifrovat vaše zprávy. Může to chvíli trvat.", "Decrypting messages...": "Dešifrování zpráv...", "%(senderName)s ended a voice broadcast": "%(senderName)s ukončil(a) hlasové vysílání", "You ended a voice broadcast": "Ukončili jste hlasové vysílání", @@ -3710,5 +3706,44 @@ "Decrypted source unavailable": "Dešifrovaný zdroj není dostupný", "Connection error - Recording paused": "Chyba připojení - nahrávání pozastaveno", "%(senderName)s started a voice broadcast": "%(senderName)s zahájil(a) hlasové vysílání", - "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)" + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Unable to play this voice broadcast": "Nelze přehrát toto hlasové vysílání", + "Registration token": "Registrační token", + "Enter a registration token provided by the homeserver administrator.": "Zadejte registrační token poskytnutý správcem domovského serveru.", + "Manage account": "Spravovat účet", + "Your account details are managed separately at %(hostname)s.": "Údaje o vašem účtu jsou spravovány samostatně na adrese %(hostname)s.", + "Enable MSC3946 (to support late-arriving room archives)": "Povolit MSC3946 (podpora pozdních archivů místností)", + "Dynamic room predecessors": "Předchůdci dynamické místnosti", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Všechny zprávy a pozvánky od tohoto uživatele budou skryty. Opravdu je chcete ignorovat?", + "Ignore %(user)s": "Ignorovat %(user)s", + "Indent decrease": "Zmenšit odsazení", + "Indent increase": "Zvětšit odsazení", + "View a list of polls in a room. (Under active development)": "Zobrazit seznam hlasování v místnosti. (V aktivním vývoji)", + "Polls history": "Historie hlasování", + "Unable to decrypt voice broadcast": "Nelze dešifrovat hlasové vysílání", + "Use rich text instead of Markdown in the message composer.": "V editoru zpráv použít formátovaný text namísto Markdown.", + "There are no polls in this room": "V této místnosti nejsou žádná hlasování", + "Thread Id: ": "Id vlákna: ", + "Threads timeline": "Časová osa vláken", + "Sender: ": "Odesílatel: ", + "Type: ": "Typ: ", + "ID: ": "ID: ", + "Last event:": "Poslední událost:", + "No receipt found": "Žádné potvrzení o přečtení", + "User read up to: ": "Uživatel přečetl až: ", + "Dot: ": "Tečka: ", + "Highlight: ": "Nejdůležitější: ", + "Total: ": "Celkem: ", + "Main timeline": "Hlavní časová osa", + "not encrypted 🚨": "nešifrovaná 🚨", + "encrypted ✅": "šifrovaná ✅", + "Room is ": "Místnost je ", + "Notification state is": "Stav oznámení je", + ", count:": ", počet:", + "Room unread status: ": "Stav nepřečtené místnosti: ", + "Room status": "Stav místnosti", + "Notifications debug": "Ladění oznámení", + "unknown": "neznámé", + "Red": "Červená", + "Grey": "Šedá" } diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 87e0951831..967faa1fc1 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1298,7 +1298,7 @@ "Accepting…": "Annehmen…", "Start Verification": "Verifizierung starten", "Messages in this room are end-to-end encrypted.": "Nachrichten in diesem Raum sind Ende-zu-Ende verschlüsselt.", - "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "Diese Nachrichten sind verschlüsselt und nur du und der Empfänger könnt sie lesen.", + "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "Diese Nachricht ist verschlüsselt. Nur Sie und der Empfänger haben den Schlüssel, um die Nachricht zu entschlüsseln.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Nachrichten in verschlüsselten Räumen können nur von dir und vom Empfänger gelesen werden.", "Verify User": "Nutzer verifizieren", "For extra security, verify this user by checking a one-time code on both of your devices.": "Für zusätzliche Sicherheit, verifiziere diesen Nutzer, durch Vergleichen eines Einmal-Codes auf euren beiden Geräten.", @@ -3246,8 +3246,6 @@ "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.": "Du wurdest von allen Geräten abgemeldet und erhältst keine Push-Benachrichtigungen mehr. Um Benachrichtigungen wieder zu aktivieren, melde dich auf jedem Gerät erneut an.", "Resetting your password on this homeserver will cause all of your devices to be signed out. This will delete the message encryption keys stored on them, making encrypted chat history unreadable.": "Wenn du dein Passwort zurücksetzt, werden all deine anderen Geräte abgemeldet. Wenn auf diesen Ende-zu-Ende-Schlüssel gespeichert sind, kann der Verlauf deiner verschlüsselten Unterhaltungen verloren gehen.", "Event ID: %(eventId)s": "Event-ID: %(eventId)s", - "Give feedback": "Rückmeldung geben", - "Threads are a beta feature": "Threads sind eine Betafunktion", "Threads help keep your conversations on-topic and easy to track.": "Threads helfen dabei, dass deine Konversationen beim Thema und leicht nachverfolgbar bleiben.", "Your message wasn't sent because this homeserver has been blocked by its administrator. Please contact your service administrator to continue using the service.": "Deine Nachricht wurde nicht gesendet, weil dieser Heim-Server von dessen Administration gesperrt wurde. Bitte kontaktiere deine Dienstadministration, um den Dienst weiterzunutzen.", "Video rooms": "Videoräume", @@ -3531,7 +3529,6 @@ "Italic": "Kursiv", "Underline": "Unterstrichen", "Notifications silenced": "Benachrichtigungen stummgeschaltet", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Möchtest du die Übertragung wirklich beenden? Dies wird die Übertragung beenden und die vollständige Aufnahme im Raum bereitstellen.", "Yes, stop broadcast": "Ja, Übertragung beenden", "Stop live broadcasting?": "Live-Übertragung beenden?", "Sign in with QR code": "Mit QR-Code anmelden", @@ -3627,7 +3624,6 @@ "What's next for %(brand)s? Labs are the best way to get things early, test out new features and help shape them before they actually launch.": "Was passiert als nächstes in %(brand)s? Das Labor ist deine erste Anlaufstelle, um Funktionen früh zu erhalten, zu testen und mitzugestalten, bevor sie tatsächlich veröffentlicht werden.", "Upcoming features": "Zukünftige Funktionen", "Low bandwidth mode": "Modus für geringe Bandbreite", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Nutze direkte Formatierungen statt Markdown im Eingabefeld. Einen Klartextmodus gibt’s auch bald.", "Rich text editor": "Textverarbeitungs-Editor", "WARNING: ": "WARNUNG: ", "Requires compatible homeserver.": "Benötigt kompatiblen Heim-Server.", @@ -3710,5 +3706,45 @@ "Decrypted source unavailable": "Entschlüsselte Quelle nicht verfügbar", "Connection error - Recording paused": "Verbindungsfehler − Aufnahme pausiert", "%(senderName)s started a voice broadcast": "%(senderName)s begann eine Sprachübertragung", - "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)" + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Unable to play this voice broadcast": "Wiedergabe der Sprachübertragung nicht möglich", + "Registration token": "Registrierungstoken", + "Enter a registration token provided by the homeserver administrator.": "Gib einen von deiner Home-Server-Administration zur Verfügung gestellten Registrierungstoken ein.", + "Manage account": "Konto verwalten", + "Your account details are managed separately at %(hostname)s.": "Deine Kontodaten werden separat auf %(hostname)s verwaltet.", + "Dynamic room predecessors": "Veränderbare Raumvorgänger", + "Enable MSC3946 (to support late-arriving room archives)": "MSC3946 aktivieren (zur Verknüpfung von Raumarchiven nach der Raumerstellung)", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Alle Nachrichten und Einladungen der Person werden verborgen. Bist du sicher, dass du sie ignorieren möchtest?", + "Ignore %(user)s": "%(user)s ignorieren", + "Indent decrease": "Einrückung verringern", + "Indent increase": "Einrückung erhöhen", + "Unable to decrypt voice broadcast": "Entschlüsseln der Sprachübertragung nicht möglich", + "View a list of polls in a room. (Under active development)": "Betrachte Raumumfragen in Listenform. (In aktiver Entwicklung)", + "Polls history": "Umfrageverlauf", + "Use rich text instead of Markdown in the message composer.": "Verwende Textverarbeitung (Rich-Text) statt Markdown im Eingabefeld.", + "There are no polls in this room": "In diesem Raum gibt es keine Umfragen", + "Thread Id: ": "Thread-ID: ", + "Threads timeline": "Thread-Verlauf", + "Type: ": "Typ: ", + "ID: ": "ID: ", + "Last event:": "Neuestes Ereignis:", + "Total: ": "Insgesamt: ", + "Main timeline": "Hauptverlauf", + "not encrypted 🚨": "nicht verschlüsselt 🚨", + "encrypted ✅": "verschlüsselt ✅", + "Room status": "Raumstatus", + "unknown": "unbekannt", + "Red": "Rot", + "Grey": "Grau", + "Sender: ": "Absender: ", + "No receipt found": "Keine Bestätigung gefunden", + "User read up to: ": "Der Benutzer hat gelesen bis: ", + "Dot: ": "Punkt: ", + "Highlight: ": "Höhepunkt: ", + "Room is ": "Der Raum ist ", + "Notification state is": "Der Benachrichtigung-Status ist", + ", count:": ", Anzahl:", + "Room unread status: ": "Ungelesenstatus des Raumes: ", + "Notifications debug": "Debug-Modus für Benachrichtigungen", + "Are you sure you want to stop your live broadcast? This will end the broadcast and the full recording will be available in the room.": "Möchtest du deine Übertragung wirklich beenden? Dies wird die Übertragung abschließen und die vollständige Aufnahme im Raum bereitstellen." } diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 89d45fe104..46bc0854dc 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -3198,7 +3198,6 @@ "Close dialog or context menu": "Κλείσιμο διαλόγου ή μενού περιβάλλοντος", "Threads help keep conversations on-topic and easy to track. Learn more.": "Τα νήματα βοηθούν στην καλύτερη οργάνωση των συζητήσεων και στην εύκολη παρακολούθηση. Μάθετε περισσότερα.", "Keep discussions organised with threads.": "Διατηρήστε τις συζητήσεις οργανωμένες σε νήματα.", - "Threads are a beta feature": "Τα νήματα είναι μια δοκιμαστική δυνατότητα", "Close sidebar": "Κλείσιμο πλαϊνής γραμμής", "View List": "Προβολή Λίστας", "View list": "Προβολή λίστας", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 3e7ff552d0..c7f5eebd17 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -662,7 +662,7 @@ "Unable to decrypt voice broadcast": "Unable to decrypt voice broadcast", "Unable to play this voice broadcast": "Unable to play this voice broadcast", "Stop live broadcasting?": "Stop live broadcasting?", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.", + "Are you sure you want to stop your live broadcast? This will end the broadcast and the full recording will be available in the room.": "Are you sure you want to stop your live broadcast? This will end the broadcast and the full recording will be available in the room.", "Yes, stop broadcast": "Yes, stop broadcast", "Listen to live broadcast?": "Listen to live broadcast?", "If you start listening to this live broadcast, your current live broadcast recording will be ended.": "If you start listening to this live broadcast, your current live broadcast recording will be ended.", diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index 23bf4779c4..4c6f3a899f 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -451,5 +451,8 @@ "Answered Elsewhere": "Answered Elsewhere", "The call could not be established": "The call could not be established", "The user you called is busy.": "The user you called is busy.", - "User Busy": "User Busy" + "User Busy": "User Busy", + "%(seconds)ss left": "%(seconds)ss left", + "%(minutes)sm %(seconds)ss left": "%(minutes)sm %(seconds)ss left", + "%(hours)sh %(minutes)sm %(seconds)ss left": "%(hours)sh %(minutes)sm %(seconds)ss left" } diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index 3c7a2209a8..0022a17d5d 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -2876,7 +2876,6 @@ "Unverified sessions": "Nekontrolitaj salutaĵoj", "From the beginning": "De la komenco", "Current Timeline": "Nuna historio", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Uzu riĉan tekston anstataŭ Markdown en la mesaĝkomponilo. Plata teksta reĝimo baldaŭ venos.", "Plain Text": "Plata Teksto", "Show HTML representation of room topics": "Montru HTML-prezenton de ĉambrotemoj", "Creating HTML...": "Kreante HTML...", @@ -2888,7 +2887,6 @@ "Media omitted - file size limit exceeded": "Amaskomunikilaro preterlasis - dosiero tro granda", "Select from the options below to export chats from your timeline": "Elektu el la subaj elektoj por eksporti babilojn el via historio", "Public rooms": "Publikajn ĉambrojn", - "Give feedback": "Doni komentojn", "Results not as expected? Please give feedback.": "Rezultoj ne kiel atenditaj? Bonvolu doni komentojn.", "Show details": "Montri detalojn", "Hide details": "Kaŝi detalojn", @@ -2897,7 +2895,6 @@ "Push notifications": "Puŝaj sciigoj", "IP address": "IP-adreso", "Browser": "Retumilo", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Ĉu vi certas, ke vi volas fini la elsendon? Ĉi tio finos la transdonon kaj provizos la plenan registradon en la ĉambro.", "Add privileged users": "Aldoni rajtigitan uzanton", "Number of messages": "Nombro da mesaĝoj", "Number of messages can only be a number between %(min)s and %(max)s": "Nombro da mesaĝoj povas esti nur nombro inter %(min)s kaj %(max)s", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 63b5b8c5ec..8b8dfd25a8 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -454,7 +454,7 @@ "%(items)s and %(count)s others|other": "%(items)s y otros %(count)s", "%(items)s and %(count)s others|one": "%(items)s y otro más", "collapse": "encoger", - "expand": "despregar", + "expand": "desplegar", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "No se pudo cargar el evento al que se respondió, bien porque no existe o no tiene permiso para verlo.", "In reply to ": "Respondiendo a ", "And %(count)s more...|other": "Y %(count)s más…", @@ -3164,8 +3164,6 @@ "Send custom room account data event": "Enviar evento personalizado de cuenta de la sala", "Send custom timeline event": "Enviar evento personalizado de historial de mensajes", "Help us identify issues and improve %(analyticsOwner)s by sharing anonymous usage data. To understand how people use multiple devices, we'll generate a random identifier, shared by your devices.": "Ayúdanos a identificar problemas y a mejorar %(analyticsOwner)s. Comparte datos anónimos sobre cómo usas la aplicación para que entendamos mejor cómo usa la gente varios dispositivos. Generaremos un identificador aleatorio que usarán todos tus dispositivos.", - "Give feedback": "Danos tu opinión", - "Threads are a beta feature": "Los hilos son una funcionalidad beta", "Create room": "Crear sala", "Create a video room": "Crear una sala de vídeo", "Create video room": "Crear sala de vídeo", @@ -3587,7 +3585,6 @@ "Right panel stays open": "El panel derecho se mantiene abierto", "Currently experimental.": "Actualmente en fase experimental.", "New ways to ignore people": "Nuevas maneras de ignorar a otras personas", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Usar el editor de texto enriquecido en lugar de Markdown en la barra de escritura. El modo de texto plano estará disponible próximamente.", "Rich text editor": "Editor de texto enriquecido", "Threaded messages": "Hilos de mensajes", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "En las salas que sean compatible con la moderación, el botón de «Denunciar» avisará a los moderadores de la sala.", diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 93d3b573e5..90c636677d 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2701,7 +2701,7 @@ "Verify with Security Key or Phrase": "Verifitseeri turvavõtme või turvafraasiga", "Skip verification for now": "Jäta verifitseerimine praegu vahele", "Really reset verification keys?": "Kas tõesti kustutame kõik verifitseerimisvõtmed?", - "Create poll": "Koosta üks küsitlus", + "Create poll": "Loo selline küsitlus", "Space Autocomplete": "Kogukonnakeskuste dünaamiline otsing", "Updating spaces... (%(progress)s out of %(count)s)|one": "Uuendan kogukonnakeskust...", "Updating spaces... (%(progress)s out of %(count)s)|other": "Uuendan kogukonnakeskuseid... (%(progress)s / %(count)s)", @@ -2786,7 +2786,7 @@ "Write something...": "Kirjuta midagi...", "Question or topic": "Küsimus või teema", "What is your poll question or topic?": "Mis on küsitluse teema?", - "Create Poll": "Koosta üks küsitlus", + "Create Poll": "Loo selline küsitlus", "You do not have permission to start polls in this room.": "Sul ei ole õigusi küsitluste korraldamiseks siin jututoas.", "Copy link to thread": "Kopeeri jutulõnga link", "Thread options": "Jutulõnga valikud", @@ -3058,8 +3058,8 @@ "Show current avatar and name for users in message history": "Sõnumite ajaloos leiduvate kasutajate puhul näita kehtivat tunnuspilti ning nime", "Results will be visible when the poll is ended": "Tulemused on näha siis, kui küsitlus on lõppenud", "Poll type": "Küsitluse tüüp", - "Open poll": "Pooleliolev küsitlus", - "Closed poll": "Lõppenud küsitlus", + "Open poll": "Avatud valikutega küsitlus", + "Closed poll": "Suletud valikutega küsitlus", "Voters see results as soon as they have voted": "Osalejad näevad tulemusi kohe peale oma valiku tegemist", "Results are only revealed when you end the poll": "Tulemused on näha vaid siis, kui küsitlus in lõppenud", "Search Dialog": "Otsinguvaade", @@ -3204,8 +3204,6 @@ "%(count)s participants|other": "%(count)s oselejat", "New video room": "Uus videotuba", "New room": "Uus jututuba", - "Give feedback": "Jaga tagasisidet", - "Threads are a beta feature": "Jutulõngad on beetajärgus funktsionaalsus", "Threads help keep your conversations on-topic and easy to track.": "Jutulõngad aitavad hoida vestlused teemakohastena ning mugavalt loetavatena.", "%(featureName)s Beta feedback": "%(featureName)s beetaversiooni tagasiside", "Beta feature. Click to learn more.": "Beetafunktsionaalsus. Lisateabe lugemiseks klõpsi siin.", @@ -3557,7 +3555,6 @@ "You can use this device to sign in a new device with a QR code. You will need to scan the QR code shown on this device with your device that's signed out.": "Sa saad kasutada seda seadet mõne muu seadme logimiseks Matrix'i võrku QR-koodi alusel. Selleks skaneeri võrgust väljalogitud seadmega seda QR-koodi.", "Allow a QR code to be shown in session manager to sign in another device (requires compatible homeserver)": "Teise seadme sisselogimiseks luba QR-koodi kuvamine sessioonihalduris (eeldab, et koduserver sellist võimalust toetab)", "Yes, stop broadcast": "Jah, lõpeta", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Kas sa oled kindel, et soovid otseeetri lõpetada? Sellega ringhäälingukõne salvestamine lõppeb ja salvestis on kättesaadav kõigile jututoas.", "Stop live broadcasting?": "Kas lõpetame otseeetri?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "Keegi juba salvestab ringhäälingukõnet. Uue ringhäälingukõne salvestamiseks palun oota, kuni see teine ringhäälingukõne on lõppenud.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "Sul pole piisavalt õigusi selles jututoas ringhäälingukõne algatamiseks. Õiguste lisamiseks palun võta ühendust jututoa haldajaga.", @@ -3628,7 +3625,6 @@ "Right panel stays open": "Parem paan jääb avatuks", "Currently experimental.": "Parasjagu katsejärgus.", "New ways to ignore people": "Uued võimalused osalejate eiramiseks", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Sõnumi kirjutamisel võid tavalise Markdown-vormingu asemel kasutada kujundatud teksti. Lihtteksti kasutamise võimalus lisandub varsti.", "Rich text editor": "Kujundatud teksti toimeti", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "Kui jututoas on modereerimine kasutusel, siis nupust „Teata sisust“ avaneva vormi abil saad jututoa reegleid rikkuvast sisust teatada moderaatoritele.", "Report to moderators": "Teata moderaatoritele", @@ -3710,5 +3706,44 @@ "Decrypted source unavailable": "Dekrüptitud lähteandmed pole saadaval", "Connection error - Recording paused": "Viga võrguühenduses - salvestamine on peatatud", "%(senderName)s started a voice broadcast": "%(senderName)s alustas ringhäälingukõnet", - "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)" + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Registration token": "Registreerimise tunnuskood", + "Enter a registration token provided by the homeserver administrator.": "Sisesta koduserveri haldaja poolt antud tunnuskood.", + "Unable to play this voice broadcast": "Selle ringhäälingukõne esitamine ei õnnestu", + "Enable MSC3946 (to support late-arriving room archives)": "Võta kasutusele MSC3946 (jututoa ajaloo aeglane laadimine)", + "Your account details are managed separately at %(hostname)s.": "Sinu kasutajakonto lisateave on hallatav siin serveris - %(hostname)s.", + "Manage account": "Halda kasutajakontot", + "Indent decrease": "Vähenda taandrida", + "Indent increase": "Suurenda taandrida", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Kõik selle kasutaja sõnumid ja kutsed saava olema peidetud. Kas sa oled kindel, et soovid teda eirata?", + "Ignore %(user)s": "Eira kasutajat %(user)s", + "Dynamic room predecessors": "Jututoa dünaamilised eellased", + "Unable to decrypt voice broadcast": "Ringhäälingukõne dekrüptimine ei õnnestu", + "Polls history": "Küsitluste ajalugu", + "View a list of polls in a room. (Under active development)": "Vaata jututoas leiduvaid küsitlusi (funktsionaalsus on aktiivsel arendamisel)", + "Thread Id: ": "Jutulõnga tunnus: ", + "Threads timeline": "Jutulõngade ajajoon", + "Sender: ": "Saatja: ", + "Type: ": "Tüüp: ", + "ID: ": "ID: ", + "Last event:": "Viimane sündmus:", + "No receipt found": "Lugemisteatist ei leidu", + "User read up to: ": "Kasutaja on lugenud kuni: ", + "Dot: ": "Punkt: ", + "Highlight: ": "Esiletõstetud: ", + "Total: ": "Kokku: ", + "Main timeline": "Peamine ajajoon", + "not encrypted 🚨": "krüptimata 🚨", + "encrypted ✅": "krüptitud ✅", + "Room is ": "Jututuba on ", + "Notification state is": "Teavituste olek on", + ", count:": ", kokku:", + "Room unread status: ": "Jututoa lugemata sõnumite olek: ", + "Room status": "Jututoa sõnumite olek", + "There are no polls in this room": "Selles jututoas pole küsitlusi", + "Notifications debug": "Teavituste silumine", + "Use rich text instead of Markdown in the message composer.": "Sõnumite kirjutamisel kasuta Markdown'i asemel täisfunktsionaalset küljendust.", + "unknown": "teadmata", + "Red": "Punane", + "Grey": "Hall" } diff --git a/src/i18n/strings/fa.json b/src/i18n/strings/fa.json index 4a81f5c510..eeac8b9c60 100644 --- a/src/i18n/strings/fa.json +++ b/src/i18n/strings/fa.json @@ -2582,7 +2582,6 @@ "resume voice broadcast": "بازگشت به صدای جمعی", "play voice broadcast": "پخش صدای جمعی", "Yes, stop broadcast": "بله، توقف ارسال جمعی", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "آیا میخواهید ارسال جمعی زنده متوقف شود؟ ارسال جمعی متوقف شده و کل صدای ضبط شده اتاق در دسترس خواهد بود.", "Stop live broadcasting?": "آیا ارسال جمعی زنده متوقف شود؟", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "شخص دیگری در حال ضبط صدا برای ارسال جمعی است. برای ارسال صدای جمعی باید منتظر بمانید تا کار ایشان به پایان برسد.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "شما دسترسی لازم برای ارسال صدای جمعی در این اتاق را ندارید. لطفا با مدیر اتاق تماس بگیرید.", diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 0b2ef3e28c..fd5a6ff768 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -2795,7 +2795,6 @@ "Device verified": "Laite vahvistettu", "Verify this device": "Vahvista tämä laite", "Unable to verify this device": "Tätä laitetta ei voitu vahvistaa", - "Give feedback": "Anna palautetta", "Failed to load list of rooms.": "Huoneluettelon lataaminen epäonnistui.", "Joined": "Liitytty", "Joining": "Liitytään", @@ -2982,7 +2981,6 @@ "%(senderName)s removed %(targetName)s": "%(senderName)s poisti %(targetName)s", "%(senderName)s removed %(targetName)s: %(reason)s": "%(senderName)s poisti %(targetName)s: %(reason)s", "Jump to the given date in the timeline": "Siirry annetulle päivälle aikajanalla", - "Threads are a beta feature": "Ketjut ovat beetaominaisuus", "Keep discussions organised with threads": "Pidä keskustelut järjestyksessä ketjuissa", "Show all threads": "Näytä kaikki ketjut", "Shows all threads you've participated in": "Näyttää kaikki ketjut, joissa olet ollut osallinen", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index a33b28bed2..17221e65dd 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2174,7 +2174,7 @@ "Recently visited rooms": "Salons visités récemment", "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Sauvegardez vos clés de chiffrement et les données de votre compte au cas où vous perdiez l’accès à vos sessions. Vos clés seront sécurisés avec une Clé de Sécurité unique.", "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s rooms.|one": "Mettre en cache localement et de manière sécurisée les messages chiffrés pour qu’ils apparaissent dans les résultats de recherche, en utilisant %(size)s pour stocker les messages de %(rooms)s salons.", - "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s rooms.|other": "Mettre en cache localement et de manière sécurisée les messages chiffrés pour qu’ils apparaissent dans les résultats de recherche, en utilisant %(size)s pour stocker les messages de %(rooms)s salons.", + "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s rooms.|other": "Mettre en cache localement et de manière sécurisée les messages chiffrés pour qu’ils apparaissent dans les résultats de recherche. Actuellement %(size)s sont utilisé pour stocker les messages de %(rooms)s salons.", "Channel: ": "Canal : ", "Workspace: ": "Espace de travail : ", "Dial pad": "Pavé de numérotation", @@ -3164,8 +3164,6 @@ "%(value)sm": "%(value)sm", "%(value)sh": "%(value)sh", "%(value)sd": "%(value)sd", - "Give feedback": "Faire un commentaire", - "Threads are a beta feature": "Les fils de discussion sont une fonctionnalité bêta", "Threads help keep your conversations on-topic and easy to track.": "Les fils de discussion vous permettent de recentrer vos conversations et de les rendre facile à suivre.", "An error occurred while stopping your live location, please try again": "Une erreur s’est produite en arrêtant le partage de votre position, veuillez réessayer", "Create room": "Créer un salon", @@ -3557,7 +3555,6 @@ "Browser": "Navigateur", "Notifications silenced": "Notifications silencieuses", "Yes, stop broadcast": "Oui, arrêter la diffusion", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Êtes-vous sûr de vouloir arrêter votre diffusion en direct ? Cela terminera la diffusion et l’enregistrement complet sera disponible dans le salon.", "Stop live broadcasting?": "Arrêter la diffusion en direct ?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "Une autre personne est déjà en train de réaliser une diffusion audio. Attendez que sa diffusion audio soit terminée pour en démarrer une nouvelle.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "Vous n’avez pas les permissions requises pour démarrer une nouvelle diffusion audio dans ce salon. Contactez un administrateur du salon pour mettre-à-jour vos permissions.", @@ -3640,7 +3637,6 @@ "Right panel stays open": "Le panneau de droite reste ouvert", "Currently experimental.": "Actuellement expérimental.", "New ways to ignore people": "Nouvelles manières d’ignorer des gens", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Utilise le texte formaté au lieu de Markdown dans le compositeur de message. Le mode texte brut arrive bientôt.", "Rich text editor": "Éditeur de texte formaté", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "Dans les salons prenant en charge la modération, le bouton « Signaler » vous permet de signaler des abus aux modérateurs du salon.", "Report to moderators": "Signaler aux modérateurs", @@ -3710,5 +3706,44 @@ "Decrypted source unavailable": "Source déchiffrée non disponible", "Connection error - Recording paused": "Erreur de connexion – Enregistrement en pause", "%(senderName)s started a voice broadcast": "%(senderName)s a démarré une diffusion audio", - "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)" + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Registration token": "Jeton d’enregistrement", + "Enter a registration token provided by the homeserver administrator.": "Saisissez un jeton d’enregistrement fourni par l’administrateur du serveur d’accueil.", + "Unable to play this voice broadcast": "Impossible de lire cette diffusion audio", + "Manage account": "Gérer le compte", + "Your account details are managed separately at %(hostname)s.": "Les détails de votre compte sont gérés séparément sur %(hostname)s.", + "Enable MSC3946 (to support late-arriving room archives)": "Active MSC3946 (pour prendre en charge les archives de salon après création)", + "Dynamic room predecessors": "Prédécesseurs de salon dynamique", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Tous les messages et invitations de cette utilisateur seront cachés. Êtes-vous sûr de vouloir les ignorer ?", + "Ignore %(user)s": "Ignorer %(user)s", + "Indent decrease": "Réduire l’indentation", + "Indent increase": "Augmenter l’indentation", + "View a list of polls in a room. (Under active development)": "Voir une liste des sondages présents dans un salon. (En cours de développement)", + "Polls history": "Historique des sondages", + "Unable to decrypt voice broadcast": "Impossible de décrypter la diffusion audio", + "There are no polls in this room": "Il n’y a aucun sondage dans ce salon", + "Use rich text instead of Markdown in the message composer.": "Utilise le texte formaté au lieu de Markdown dans le compositeur de message.", + "Thread Id: ": "Id du fil de discussion : ", + "Threads timeline": "Historique des fils de discussion", + "Sender: ": "Expéditeur : ", + "Type: ": "Type : ", + "ID: ": "ID : ", + "Last event:": "Dernier évènement :", + "No receipt found": "Aucun accusé disponible", + "User read up to: ": "L’utilisateur a lu jusqu’à : ", + "Dot: ": "Point : ", + "Highlight: ": "Mentions : ", + "Total: ": "Total : ", + "Main timeline": "Historique principal", + "not encrypted 🚨": "non chiffré 🚨", + "encrypted ✅": "chiffré ✅", + "Room is ": "Le salon est ", + "Notification state is": "L’état de notification est", + ", count:": ", total :", + "Room unread status: ": "Statut non-lu du salon : ", + "Room status": "Statut du salon", + "Notifications debug": "Débogage des notifications", + "unknown": "inconnu", + "Red": "Rouge", + "Grey": "Gris" } diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 0439679e1d..eb25013ba4 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -3172,8 +3172,6 @@ "User is already invited to the space": "A usuaria xa está convidada ao espazo", "You do not have permission to invite people to this space.": "Non tes permiso para convidar persoas a este espazo.", "Failed to invite users to %(roomName)s": "Fallou o convite das usuarias para %(roomName)s", - "Give feedback": "Informar e dar opinión", - "Threads are a beta feature": "Os fíos son unha ferramenta beta", "Threads help keep your conversations on-topic and easy to track.": "Os fíos axúdanche a manter as conversas no tema e facilitan o seguimento.", "An error occurred while stopping your live location, please try again": "Algo fallou ao deter a túa localización en directo, inténtao outra vez", "Create room": "Crear sala", diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index 5826ada9ff..5a48950ade 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -2458,7 +2458,6 @@ "We're creating a room with %(names)s": "יצרנו חדר עם %(names)s", "Jump to the given date in the timeline": "קיפצו לתאריך הנתון בציר הזמן", "Thread": "שרשורים", - "Threads are a beta feature": "שרשורים הם תכונה ניסיונית", "Keep discussions organised with threads": "שימרו על דיונים מאורגנים בשרשורים", "Tip: Use “%(replyInThread)s” when hovering over a message.": "טיפ: השתמש ב-\"%(replyInThread)s\" כשאתם מרחפים מעל הודעה.", "Threads help keep your conversations on-topic and easy to track.": "שרשורים עוזרים לשמור על השיחות שלכם בנושא וקל למעקב.", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index d1d1417f99..eacefb709b 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -3180,8 +3180,6 @@ "Disinvite from space": "Meghívó visszavonása a térről", "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to the person who invited you.": "A meghívó ellenőrzésekor az alábbi hibát kaptuk: %(errcode)s. Ezt az információt megpróbálhatja eljuttatni a szoba gazdájának.", "Joining …": "Belépés…", - "Give feedback": "Visszajelzés küldése", - "Threads are a beta feature": "Az üzenetszálak béta funkció", "Tip: Use “%(replyInThread)s” when hovering over a message.": "Tipp: Használja a „%(replyInThread)s” lehetőséget a szöveg fölé navigálva.", "Threads help keep your conversations on-topic and easy to track.": "Az üzenetszálak segítenek a különböző témájú beszélgetések figyelemmel kísérésében.", "An error occurred while stopping your live location, please try again": "Élő pozíció megosztás befejezése közben hiba történt, kérjük próbálja újra", @@ -3563,7 +3561,6 @@ "You can use this device to sign in a new device with a QR code. You will need to scan the QR code shown on this device with your device that's signed out.": "Ennek az eszköznek a felhasználásával és a QR kóddal beléptethet egy másik eszközt. Be kell olvasni a QR kódot azon az eszközön ami még nincs belépve.", "Allow a QR code to be shown in session manager to sign in another device (requires compatible homeserver)": "QR kód megjelenítésének engedélyezése a munkamenet kezelőben, hogy másik eszközzel bejelentkezhessen vele (kompatibilis matrix szervert igényel)", "play voice broadcast": "hang közvetítés lejátszása", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Biztos, hogy befejezi az élő közvetítést? Ez befejezi a közvetítést és a felvétel az egész szoba számára elérhető lesz.", "Are you sure you want to sign out of %(count)s sessions?|one": "Biztos, hogy ki szeretne lépni %(count)s munkamenetből?", "Are you sure you want to sign out of %(count)s sessions?|other": "Biztos, hogy ki szeretne lépni %(count)s munkamenetből?", "Show formatting": "Formázás megjelenítése", @@ -3618,7 +3615,6 @@ "For best security and privacy, it is recommended to use Matrix clients that support encryption.": "A biztonság és adatbiztonság érdekében javasolt olyan Matrix klienst használni ami támogatja a titkosítást.", "You won't be able to participate in rooms where encryption is enabled when using this session.": "Ezzel a munkamenettel olyan szobákban ahol a titkosítás be van kapcsolva nem tud részt venni.", "Feeling experimental? Try out our latest ideas in development. These features are not finalised; they may be unstable, may change, or may be dropped altogether. Learn more.": "Kísérletező kedvében van? Próbálja ki a legújabb fejlesztési ötleteinket. Ezek nem befejezettek; lehetnek instabilak, változhatnak vagy el is tűnhetnek. Tudjon meg többet.", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Szövegszerkesztő használata a Markdown helyett az üzenetek írásakor. Nemsokára érkezik az egyszerű szöveges mód.", "Rich text editor": "Szövegszerkesztő használata", "Sign in instead": "Bejelentkezés inkább", "Re-enter email address": "E-mail cím megadása újból", @@ -3710,5 +3706,16 @@ "Decrypted source unavailable": "A visszafejtett forrás nem érhető el", "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", "Connection error - Recording paused": "Kapcsolódási hiba – Felvétel szüneteltetve", - "%(senderName)s started a voice broadcast": "%(senderName)s hangos közvetítést indított" + "%(senderName)s started a voice broadcast": "%(senderName)s hangos közvetítést indított", + "Unable to play this voice broadcast": "A hang közvetítés nem játszható le", + "Registration token": "Regisztrációs kulcs", + "Enter a registration token provided by the homeserver administrator.": "Adja meg a regisztrációs kulcsot amit a szolgáltató szerver adminisztrátora adott meg.", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Minden üzenet és meghívó ettől a felhasználótól rejtve marad. Biztos, hogy figyelmen kívül hagyja?", + "Ignore %(user)s": "%(user)s figyelmen kívül hagyása", + "Manage account": "Fiók kezelése", + "Your account details are managed separately at %(hostname)s.": "A fiók adatok külön vannak kezelve itt: %(hostname)s.", + "Enable MSC3946 (to support late-arriving room archives)": "MSC3946 engedélyezése (a későn érkező szoba archívum támogatáshoz)", + "Dynamic room predecessors": "Dinamikus szoba előfutára", + "Indent decrease": "Behúzás csökkentés", + "Indent increase": "Behúzás növelés" } diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index 81e4cac574..3e60ed7724 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -3210,8 +3210,6 @@ "Beta feature": "Fitur beta", "Threads help keep conversations on-topic and easy to track. Learn more.": "Utasan membantu membuat percakapan sesuai topik dan mudah untuk dilacak. Pelajari lebih lanjut.", "Keep discussions organised with threads.": "Buat diskusi tetap teratur dengan utasan.", - "Give feedback": "Berikan masukan", - "Threads are a beta feature": "Utasan adalah fitur beta", "sends hearts": "mengirim hati", "Sends the given message with hearts": "Kirim pesan dengan hati", "Confirm signing out these devices|one": "Konfirmasi mengeluarkan perangkat ini", @@ -3558,7 +3556,6 @@ "Allow a QR code to be shown in session manager to sign in another device (requires compatible homeserver)": "Perbolehkan sebuah kode QR untuk ditampilkan dalam pengelola sesi untuk masuk ke perangkat lain (membutuhkan homeserver yang kompatibel)", "play voice broadcast": "mainkan siaran suara", "Yes, stop broadcast": "Iya, hentikan siaran", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Apakah Anda yakin ingin menghentikan siaran langsung Anda? Ini akan mengakhiri siaran dan rekaman lengkap akan tersedia di ruangan.", "Stop live broadcasting?": "Hentikan siaran langsung?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "Ada orang lain yang saat ini merekam sebuah siaran suara. Tunggu siaran suaranya berakhir untuk memulai yang baru.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "Anda tidak memiliki izin untuk memulai sebuah siaran suara di ruangan ini. Hubungi sebuah administrator ruangan untuk meningkatkan izin Anda.", @@ -3640,7 +3637,6 @@ "Right panel stays open": "Panel kanan tetap buka", "Currently experimental.": "Saat ini masih dalam uji coba.", "New ways to ignore people": "Cara baru mengabaikan orang", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Gunakan teks kaya daripada Markdown dalam komposer pesan. Mode teks biasa akan datang.", "Rich text editor": "Editor teks kaya", "Report to moderators": "Laporkan ke moderator", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "Dalam ruangan yang mendukung moderasi, tombol “Laporkan” memungkinkan Anda untuk melaporkan penyalahgunaan ke moderator ruangan.", @@ -3710,5 +3706,44 @@ "Decrypted source unavailable": "Sumber terdekripsi tidak tersedia", "Connection error - Recording paused": "Kesalahan koneksi - Perekaman dijeda", "%(senderName)s started a voice broadcast": "%(senderName)s memulai sebuah siaran suara", - "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)" + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Registration token": "Token pendaftaran", + "Enter a registration token provided by the homeserver administrator.": "Masukkan token pendaftaran yang disediakan oleh administrator homeserver.", + "Unable to play this voice broadcast": "Tidak dapat memutar siaran suara ini", + "Manage account": "Kelola akun", + "Your account details are managed separately at %(hostname)s.": "Detail akun Anda dikelola secara terpisah di %(hostname)s.", + "Enable MSC3946 (to support late-arriving room archives)": "Aktifkan MSC3946 (untuk mendukung arsip ruangan yang datang terlambat)", + "Dynamic room predecessors": "Pendahulu ruang dinamis", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Semua pesan dan undangan dari pengguna ini akan disembunyikan. Apakah Anda yakin ingin mengabaikan?", + "Ignore %(user)s": "Abaikan %(user)s", + "Indent increase": "Tambahkan indentasi", + "Indent decrease": "Kurangi indentasi", + "Unable to decrypt voice broadcast": "Tidak dapat mendekripsi siaran suara", + "View a list of polls in a room. (Under active development)": "Tampilkan peminkam. (Dalam pengemabgan aktif)", + "Polls history": "Riwatar pegunungan next2 i1 ak suara", + "Use rich text instead of Markdown in the message composer.": "Menggunakan teks kaya daripada Markdown dalam komposer pesan.", + "There are no polls in this room": "Tidak ada pemungutan suara di ruangan ini", + "Thread Id: ": "ID utasan: ", + "Threads timeline": "Lini masa utasan", + "Sender: ": "Pengirim: ", + "Type: ": "Jenis: ", + "ID: ": "ID: ", + "Last event:": "Peristiwa terakhir:", + "No receipt found": "Tidak ada laporan yang ditemukan", + "User read up to: ": "Pembacaan pengguna sampai: ", + "Dot: ": "Titik: ", + "Highlight: ": "Sorotan: ", + "Total: ": "Jumlah: ", + "Main timeline": "Lini masa utama", + "not encrypted 🚨": "tidak terenkripsi 🚨", + "encrypted ✅": "terenkripsi ✅", + "Room is ": "Ruangan ", + "Notification state is": "Keadaan notifikasi", + ", count:": ", jumlah:", + "Room unread status: ": "Keadaan ruangan belum dibaca: ", + "Room status": "Keadaan ruangan", + "Notifications debug": "Pengawakutuan notifikasi", + "unknown": "tidak diketahui", + "Red": "Merah", + "Grey": "Abu-Abu" } diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json index 66432663ae..ea3a64f85b 100644 --- a/src/i18n/strings/is.json +++ b/src/i18n/strings/is.json @@ -2986,7 +2986,6 @@ "Enter fullscreen": "Fara í fullskjásstillingu", "Show spaces": "Sýna svæði", "Failed to set direct message tag": "Ekki tókst að stilla merki um bein skilaboð", - "Give feedback": "Gefðu umsögn", "Check your email to continue": "Skoðaðu tölvupóstinn þinn til að halda áfram", "Stop and close": "Hætta og loka", "Show rooms": "Sýna spjallrásir", @@ -3180,7 +3179,6 @@ "resume voice broadcast": "halda áfram með talútsendingu", "Listen to live broadcast?": "Hlusta á beina útsendingu?", "Yes, stop broadcast": "Já, stöðva útsendingu", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Ertu viss um að þú viljir stöðva þessa beinu útsendingu? Þetta mun stöðva útsendinguna og full skráning hennar verður tiltæk á spjallrásinni.", "Stop live broadcasting?": "Stöðva beina útsendingu?", "%(senderName)s ended a voice broadcast": "%(senderName)s endaði talútsendingu", "You ended a voice broadcast": "Þú endaðir talútsendingu", diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index b919eb1215..c6f6c111ff 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -3205,8 +3205,6 @@ "New video room": "Nuova stanza video", "New room": "Nuova stanza", "Threads help keep conversations on-topic and easy to track. Learn more.": "Le conversazioni aiutano a tenere le discussioni in tema e rintracciabili. Maggiori info.", - "Give feedback": "Lascia feedback", - "Threads are a beta feature": "Le conversazioni sono una funzionalità beta", "Threads help keep your conversations on-topic and easy to track.": "Le conversazioni ti aiutano a tenere le tue discussioni in tema e rintracciabili.", "%(featureName)s Beta feedback": "Feedback %(featureName)s beta", "Beta feature. Click to learn more.": "Funzionalità beta. Clicca per maggiori informazioni.", @@ -3532,7 +3530,6 @@ "pause voice broadcast": "sospendi trasmissione vocale", "Notifications silenced": "Notifiche silenziose", "Yes, stop broadcast": "Sì, ferma la trasmissione", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Vuoi davvero fermare la tua trasmissione in diretta? Verrà terminata la trasmissione e la registrazione completa sarà disponibile nella stanza.", "Stop live broadcasting?": "Fermare la trasmissione in diretta?", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "Non hai l'autorizzazione necessaria per iniziare una trasmissione vocale in questa stanza. Contatta un amministratore della stanza per aggiornare le tue autorizzazioni.", "You are already recording a voice broadcast. Please end your current voice broadcast to start a new one.": "Stai già registrando una trasmissione vocale. Termina quella in corso per iniziarne una nuova.", @@ -3636,7 +3633,6 @@ "Right panel stays open": "Il pannello destro resta aperto", "Currently experimental.": "Al momento è sperimentale.", "New ways to ignore people": "Nuovi modi di ignorare le persone", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Usa il formato rich text invece del markdown nella scrittura dei messaggi. La modalità in testo semplice è in arrivo.", "Rich text editor": "Editor in rich text", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "Nelle stanze che supportano la moderazione, il pulsante \"Segnala\" ti permetterà di segnalare abusi ai moderatori della stanza.", "Report to moderators": "Segnala ai moderatori", @@ -3710,5 +3706,44 @@ "Bulleted list": "Elenco puntato", "Connection error - Recording paused": "Errore di connessione - Registrazione in pausa", "%(senderName)s started a voice broadcast": "%(senderName)s ha iniziato una trasmissione vocale", - "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)" + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Registration token": "Token di registrazione", + "Enter a registration token provided by the homeserver administrator.": "Inserisci un token di registrazione fornito dall'amministratore dell'homeserver.", + "Unable to play this voice broadcast": "Impossibile avviare questa trasmissione vocale", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Tutti i messaggi e gli inviti da questo utente verranno nascosti. Vuoi davvero ignorarli?", + "Ignore %(user)s": "Ignora %(user)s", + "Indent decrease": "Diminuzione indentazione", + "Indent increase": "Aumento indentazione", + "Manage account": "Gestisci account", + "Your account details are managed separately at %(hostname)s.": "I dettagli del tuo account sono gestiti separatamente su %(hostname)s.", + "Enable MSC3946 (to support late-arriving room archives)": "Attiva MSC3946 (per supportare archivi della stanza arrivati in ritardo)", + "There are no polls in this room": "Non ci sono sondaggi in questa stanza", + "Dynamic room predecessors": "Predecessori della stanza dinamici", + "View a list of polls in a room. (Under active development)": "Vedi una lista di sondaggi in una stanza. (In sviluppo attivo)", + "Polls history": "Cronologia sondaggi", + "Use rich text instead of Markdown in the message composer.": "Usa il rich text invece del Markdown nel compositore di messaggi.", + "Unable to decrypt voice broadcast": "Impossibile decifrare la trasmissione vocale", + "Thread Id: ": "ID conversazione: ", + "Threads timeline": "Linea temporale conversazioni", + "Sender: ": "Mittente: ", + "Type: ": "Tipo: ", + "ID: ": "ID: ", + "Last event:": "Ultimo evento:", + "No receipt found": "Nessuna ricevuta trovata", + "User read up to: ": "L'utente ha letto fino: ", + "Dot: ": "Punto: ", + "Highlight: ": "Evidenziazione: ", + "Total: ": "Totale: ", + "Main timeline": "Linea temporale principale", + "not encrypted 🚨": "non crittografata 🚨", + "encrypted ✅": "crittografata ✅", + "Room is ": "La stanza è ", + "Notification state is": "Lo stato di notifica è", + ", count:": ", conteggio:", + "Room unread status: ": "Stato non letto della stanza: ", + "Room status": "Stato della stanza", + "Notifications debug": "Debug notifiche", + "unknown": "sconosciuto", + "Red": "Rosso", + "Grey": "Grigio" } diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index aa31779369..fa90aab321 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -5,7 +5,7 @@ "Current password": "現在のパスワード", "Favourite": "お気に入り", "Favourites": "お気に入り", - "Invited": "招待中", + "Invited": "招待済", "Low priority": "低優先度", "Mute": "ミュート", "Notifications": "通知", @@ -19,13 +19,13 @@ "Always show message timestamps": "発言時刻を常に表示", "Filter room members": "ルームのメンバーを絞り込む", "Show timestamps in 12 hour format (e.g. 2:30pm)": "発言時刻を12時間形式で表示(例:2:30午後)", - "Upload avatar": "アイコン画像を変更", + "Upload avatar": "アバターをアップロード", "Add": "追加", "No Microphones detected": "マイクが見つかりません", "No Webcams detected": "カメラが見つかりません", "Microphone": "マイク", "Camera": "カメラ", - "Are you sure?": "本当によろしいですか?", + "Are you sure?": "よろしいですか?", "OK": "OK", "Operation failed": "操作に失敗しました", "Dismiss": "閉じる", @@ -43,23 +43,23 @@ "Unnamed room": "名前のないルーム", "This email address is already in use": "このメールアドレスは既に使用されています", "This phone number is already in use": "この電話番号は既に使用されています", - "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": "メールアドレスの認証に失敗しました。電子メール内のリンクを開いたことを確認してください", "Analytics": "分析", "Thursday": "木曜日", "Messages in one-to-one chats": "1対1のチャットでのメッセージ", "All Rooms": "全てのルーム", "You cannot delete this message. (%(code)s)": "この発言を削除できません。(%(code)s)", "Send": "送信", - "All messages": "全ての発言", + "All messages": "全てのメッセージ", "Sunday": "日曜日", "Today": "今日", "Monday": "月曜日", "Messages in group chats": "グループチャットでのメッセージ", "Friday": "金曜日", "Yesterday": "昨日", - "Messages sent by bot": "ボットから送信されたメッセージ", + "Messages sent by bot": "ボットによるメッセージ", "Low Priority": "低優先度", - "Collecting logs": "ログの収集", + "Collecting logs": "ログを収集しています", "No update available.": "更新はありません。", "Collecting app version information": "アプリのバージョン情報を収集", "Changelog": "変更履歴", @@ -76,7 +76,7 @@ "When I'm invited to a room": "ルームに招待されたとき", "Resend": "再送信", "Messages containing my display name": "自身の表示名を含むメッセージ", - "Notification targets": "通知先", + "Notification targets": "通知対象", "Update": "更新", "Failed to send logs: ": "ログの送信に失敗しました: ", "Unavailable": "使用できません", @@ -85,7 +85,7 @@ "Noisy": "音量大", "View Source": "ソースコードを表示", "Back": "戻る", - "Event sent!": "イベントが送信されました!", + "Event sent!": "イベントを送信しました!", "Preparing to send logs": "ログを送信する準備をしています", "Reject": "拒否", "Toolbox": "ツールボックス", @@ -144,26 +144,26 @@ "Admin": "管理者", "Failed to invite": "招待できませんでした", "You need to be logged in.": "ログインする必要があります。", - "You need to be able to invite users to do that.": "それをするためにユーザーを招待できる必要があります。", + "You need to be able to invite users to do that.": "それを行うにはユーザーを招待する権限が必要です。", "Unable to create widget.": "ウィジェットを作成できません。", "Missing roomId.": "roomIdがありません。", "Failed to send request.": "リクエストの送信に失敗しました。", "This room is not recognised.": "このルームは認識されません。", "Power level must be positive integer.": "権限レベルは正の整数でなければなりません。", "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.": "このルームでそれを行う権限がありません。", "Missing room_id in request": "リクエストにroom_idがありません", "Room %(roomId)s not visible": "ルーム %(roomId)s は見えません", "Missing user_id in request": "リクエストにuser_idがありません", "Usage": "用法", "Changes your display nickname": "表示されるニックネームを変更", - "Invites user with given id to current room": "指定されたIDを持つユーザーを現在のルームに招待", + "Invites user with given id to current room": "指定したIDのユーザーを現在のルームに招待", "Leave room": "ルームから退出", - "Bans user with given id": "指定されたIDでユーザーをブロック", - "Ignores a user, hiding their messages from you": "ユーザーを無視し、自分からのメッセージを隠す", + "Bans user with given id": "指定したIDのユーザーをブロック", + "Ignores a user, hiding their messages from you": "ユーザーを無視し、そのメッセージを非表示に設定", "Ignored user": "無視しているユーザー", "You are now ignoring %(userId)s": "%(userId)sを無視しています", - "Stops ignoring a user, showing their messages going forward": "ユーザーの無視を止めて、メッセージを表示", + "Stops ignoring a user, showing their messages going forward": "ユーザーの無視を解除し、以後のメッセージを表示", "Unignored user": "無視していないユーザー", "You are no longer ignoring %(userId)s": "あなたは%(userId)sを無視していません", "Define the power level of a user": "ユーザーの権限レベルを規定", @@ -195,8 +195,8 @@ "Failure to create room": "ルームの作成に失敗しました", "Server may be unavailable, overloaded, or you hit a bug.": "サーバーが使用できないか、オーバーロードしているか、または不具合が発生した可能性があります。", "Unnamed Room": "名前のないルーム", - "This homeserver has hit its Monthly Active User limit.": "このホームサーバーは、月間アクティブユーザー制限を超えています。", - "This homeserver has exceeded one of its resource limits.": "このホームサーバーは、リソース制限の1つを超えています。", + "This homeserver has hit its Monthly Active User limit.": "このホームサーバーは月間アクティブユーザー数の上限に達しました 。", + "This homeserver has exceeded one of its resource limits.": "このホームサーバーはリソースの上限に達しました。", "Please contact your service administrator to continue using the service.": "サービスを引き続き使用するには、サービス管理者にお問い合わせください。", "Unable to connect to Homeserver. Retrying...": "ホームサーバーに接続できません。再試行しています…", "Your browser does not support the required cryptography extensions": "お使いのブラウザーは、必要な暗号化拡張機能をサポートしていません", @@ -216,14 +216,14 @@ "Incorrect verification code": "認証コードが誤っています", "Submit": "提出", "Phone": "電話", - "No display name": "表示名なし", + "No display name": "表示名がありません", "New passwords don't match": "新しいパスワードが一致しません", "Passwords can't be empty": "パスワードを空にすることはできません", "Warning!": "警告!", "Export E2E room keys": "ルームのエンドツーエンド暗号鍵をエクスポート", "Do you want to set an email address?": "メールアドレスを設定しますか?", "Password": "パスワード", - "Confirm password": "確認のパスワード", + "Confirm password": "パスワードを確認", "Authentication": "認証", "Failed to set display name": "表示名の設定に失敗しました", "Off": "オフ", @@ -234,13 +234,13 @@ "Call Failed": "呼び出しに失敗しました", "Automatically replace plain text Emoji": "自動的にプレーンテキスト絵文字を置き換える", "Demote yourself?": "自身を降格しますか?", - "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "自分自身を降格しようとしています。この変更を元に戻すことはできません。ルーム内の最後の特権ユーザーである場合、特権を取り戻すことはできません。", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "あなたは自分自身を降格させようとしています。この変更は取り消せません。あなたがルームの中で最後の特権ユーザーである場合、特権を再取得することはできなくなります。", "Demote": "降格する", "Failed to mute user": "ユーザーのミュートに失敗しました", "Failed to change power level": "権限レベルの変更に失敗しました", - "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "このユーザーにあなたと同じ権限レベルを与えようとしています。この変更を元に戻すことはできません。", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "このユーザーにあなたと同じ権限レベルを与えようとしています。この変更は取り消せません。", "Ignore": "無視", - "Jump to read receipt": "既読へジャンプ", + "Jump to read receipt": "既読通知へ移動", "Invite": "招待", "Share Link to User": "ユーザーへのリンクを共有", "Unmute": "ミュート解除", @@ -252,10 +252,10 @@ "Hangup": "電話を切る", "Voice call": "音声通話", "Video call": "ビデオ通話", - "Send an encrypted reply…": "暗号化された返信を送信…", + "Send an encrypted reply…": "暗号化された返信を送る…", "Send an encrypted message…": "暗号化されたメッセージを送信…", "This room has been replaced and is no longer active.": "このルームは置き換えられており、アクティブではありません。", - "The conversation continues here.": "こちらから継続中の会話を確認する。", + "The conversation continues here.": "こちらから継続中の会話を確認。", "You do not have permission to post to this room": "このルームに投稿する権限がありません", "Server error": "サーバーエラー", "Server unavailable, overloaded, or something else went wrong.": "サーバーが使用できないか、オーバーロードしているか、または問題が発生しました。", @@ -292,12 +292,12 @@ "Muted Users": "ミュートされたユーザー", "Banned users": "ブロックされたユーザー", "This room is not accessible by remote Matrix servers": "このルームはリモートのMatrixサーバーからアクセスできません", - "Publish this room to the public in %(domain)s's room directory?": "%(domain)sのルームディレクトリにこのルームを公開しますか?", - "Who can read history?": "誰が履歴を読むことができますか?", + "Publish this room to the public in %(domain)s's room directory?": "%(domain)sのルームディレクトリーにこのルームを公開しますか?", + "Who can read history?": "履歴を閲覧できる人は?", "Members only (since the point in time of selecting this option)": "メンバーのみ(この設定を選択した時点から)", "Members only (since they were invited)": "メンバーのみ(招待を送った時点から)", "Members only (since they joined)": "メンバーのみ(参加した時点から)", - "Permissions": "アクセス許可", + "Permissions": "権限", "Advanced": "詳細", "Only room administrators will see this warning": "この警告はルームの管理者にのみ表示されます", "You don't currently have any stickerpacks enabled": "現在、使用可能なステッカーパックはありません", @@ -328,7 +328,7 @@ "Copied!": "コピーしました!", "Failed to copy": "コピーに失敗しました", "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で使用するためにアカウントを認証できるようになります。続行しますか?", + "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で使用するアカウントを認証するため、外部サイトに移動します。続行してよろしいですか?", "Please review and accept the policies of this homeserver:": "このホームサーバーの運営方針を確認し、同意してください:", "Token incorrect": "誤ったトークン", "A text message has been sent to %(msisdn)s": "テキストメッセージが%(msisdn)sに送信されました", @@ -403,7 +403,7 @@ "Create": "作成", "Unknown error": "不明なエラー", "Incorrect password": "間違ったパスワード", - "Deactivate Account": "アカウントを無効にする", + "Deactivate Account": "アカウントを無効化", "An error has occurred.": "エラーが発生しました。", "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "以前%(host)sにて、メンバーの遅延ロードを有効にした%(brand)sが使用されていました。このバージョンでは、遅延ロードは無効です。ローカルキャッシュはこれらの2つの設定の間で互換性がないので、%(brand)sはアカウントを再同期する必要があります。", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "他のバージョンの%(brand)sが別のタブで開いている場合は、それを閉じてください。同じホスト上で、遅延ロードを有効と無効の両方に設定して%(brand)sを使用すると、問題が発生します。", @@ -425,7 +425,7 @@ "Sign out": "サインアウト", "Clear Storage and Sign Out": "ストレージのクリアとサインアウト", "Send Logs": "ログを送信", - "Refresh": "リフレッシュ", + "Refresh": "再読み込み", "Unable to restore session": "セッションを復元できません", "We encountered an error trying to restore your previous session.": "以前のセッションを復元する際にエラーが発生しました。", "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "以前に%(brand)sの最新バージョンを使用していた場合、セッションはこのバージョンと互換性がない可能性があります。このウィンドウを閉じて、最新のバージョンに戻ってください。", @@ -433,7 +433,7 @@ "Invalid Email Address": "無効なメールアドレス", "This doesn't appear to be a valid email address": "メールアドレスの形式が正しくありません", "Verification Pending": "認証の保留中", - "Please check your email and click on the link it contains. Once this is done, click continue.": "電子メールを確認して、本文中のURLをクリックしてください。完了したら「続行する」をクリックしてください。", + "Please check your email and click on the link it contains. Once this is done, click continue.": "電子メールを確認して、本文中のURLをクリックしてください。完了したら「続行」をクリックしてください。", "Unable to add email address": "メールアドレスを追加できません", "Unable to verify email address.": "メールアドレスを確認できません。", "This will allow you to reset your password and receive notifications.": "これにより、パスワードをリセットして通知を受け取ることができます。", @@ -443,12 +443,12 @@ "Share User": "ユーザーを共有", "Share Room Message": "ルームのメッセージを共有", "Link to selected message": "選択したメッセージにリンク", - "Reject invitation": "招待を拒否", - "Are you sure you want to reject the invitation?": "招待を拒否しますか?", + "Reject invitation": "招待を辞退", + "Are you sure you want to reject the invitation?": "招待を辞退してよろしいですか?", "Name": "名前", "You must register to use this functionality": "この機能を使用するには登録する必要があります", "You must join the room to see its files": "ルームのファイルを表示するには、ルームに参加する必要があります", - "Description": "説明", + "Description": "詳細", "Failed to reject invitation": "招待を拒否できませんでした", "This room is not public. You will not be able to rejoin without an invite.": "このルームは公開されていません。再度参加するには、招待が必要です。", "Are you sure you want to leave the room '%(roomName)s'?": "このルーム「%(roomName)s」から退出してよろしいですか?", @@ -463,8 +463,8 @@ "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "%(brand)sの古いバージョンのデータを検出しました。これにより、古いバージョンではエンドツーエンドの暗号化が機能しなくなります。古いバージョンを使用している間に最近交換されたエンドツーエンドの暗号化されたメッセージは、このバージョンでは復号化できません。また、このバージョンで交換されたメッセージが失敗することもあります。問題が発生した場合は、ログアウトして再度ログインしてください。メッセージ履歴を保持するには、鍵をエクスポートして再インポートしてください。", "Logout": "ログアウト", "You can't send any messages until you review and agree to our terms and conditions.": "利用規約 を確認して同意するまでは、いかなるメッセージも送信できません。", - "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "このホームサーバーが月間アクティブユーザー制限を超えたため、メッセージは送信されませんでした。サービスを引き続き使用するには、サービス管理者にお問い合わせください。", - "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "このホームサーバーがリソース制限を超えたため、メッセージは送信されませんでした。サービスを引き続き使用するには、サービス管理者にお問い合わせください。", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "このホームサーバーが月間アクティブユーザー制限を超えたため、メッセージを送信できませんでした。サービスを引き続き使用するには、サービスの管理者にお問い合わせください。", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "このホームサーバーがリソース制限を超えたため、メッセージを送信できませんでした。サービスを引き続き使用するには、サービスの管理者にお問い合わせください。", "Connectivity to the server has been lost.": "サーバーとの接続が失われました。", "Sent messages will be stored until your connection has returned.": "送信されたメッセージは、接続が復旧するまで保存されます。", "You seem to be uploading files, are you sure you want to quit?": "ファイルをアップロードしているようですが、中止しますか?", @@ -475,7 +475,7 @@ "Room": "ルーム", "Failed to reject invite": "招待を拒否できませんでした", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "このルームのタイムラインに特定のポイントをロードしようとしましたが、問題のメッセージを見る権限がありません。", - "Tried to load a specific point in this room's timeline, but was unable to find it.": "このルームのタイムラインに特定のポイントをロードしようとしましたが、それを見つけることができませんでした。", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "このルームのタイムラインに特定のポイントを読み込もうとしましたが、見つけられませんでした。", "Failed to load timeline position": "タイムラインの位置を読み込めませんでした", "Uploading %(filename)s and %(count)s others|other": "%(filename)sと他%(count)s件をアップロードしています", "Uploading %(filename)s and %(count)s others|zero": "%(filename)sをアップロードしています", @@ -505,7 +505,7 @@ "New passwords must match each other.": "新しいパスワードは互いに一致する必要があります。", "Return to login screen": "ログイン画面に戻る", "Please contact your service administrator to continue using this service.": "このサービスを続行するには、サービス管理者にお問い合わせください。", - "Incorrect username and/or password.": "不正なユーザー名またはパスワード。", + "Incorrect username and/or password.": "ユーザー名とパスワードの一方あるいは両方が正しくありません。", "Please note you are logging into the %(hs)s server, not matrix.org.": "matrix.orgではなく、%(hs)sのサーバーにログインしていることに注意してください。", "This homeserver doesn't offer any login flows which are supported by this client.": "このホームサーバーは、このクライアントでサポートされているログインフローを提供していません。", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "HTTPS URLがブラウザーバーにある場合、HTTP経由でホームサーバーに接続できません。HTTPSを使用するか安全でないスクリプトを有効にしてください。", @@ -532,7 +532,7 @@ "Import": "インポート", "Failed to remove tag %(tagName)s from room": "ルームからタグ %(tagName)s を削除できませんでした", "Failed to add tag %(tagName)s to room": "ルームにタグ %(tagName)s を追加できませんでした", - "Unignore": "無視をやめる", + "Unignore": "無視を解除", "Unable to load! Check your network connectivity and try again.": "ロードできません!ネットワーク通信を確認して、もう一度やり直してください。", "You do not have permission to invite people to this room.": "このルームにユーザーを招待する権限がありません。", "Unknown server error": "不明なサーバーエラー", @@ -556,34 +556,34 @@ "Sets the room name": "ルーム名を設定", "Change room name": "ルーム名の変更", "Room Name": "ルーム名", - "Add Email Address": "メールアドレスの追加", - "Add Phone Number": "電話番号の追加", + "Add Email Address": "メールアドレスを追加", + "Add Phone Number": "電話番号を追加", "Call failed due to misconfigured server": "サーバーの誤設定により呼び出し失敗", "Try using turn.matrix.org": "turn.matrix.orgを試してみる", "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.": "このサーバーは指定されたルームバージョンに対応していません。", + "The server does not support the room version specified.": "このサーバーは指定されたルームのバージョンに対応していません。", "Identity server has no terms of service": "IDサーバーには利用規約がありません", "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": "ルームを新しいバージョンへアップグレード", + "Upgrades a room to a new version": "ルームを新しいバージョンにアップグレード", "You do not have the required permissions to use this command.": "このコマンドを実行するのに必要な権限がありません。", - "Changes your display nickname in the current room only": "表示されるニックネームをこのルームに関してのみ変更", + "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": "全てのルームに対するアバターを変更", + "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を持つユーザーのブロックを解除", + "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": "与えられたエモートを虹色で送信", + "Sends the given message coloured as a rainbow": "指定したメッセージを虹色で送信", + "Sends the given emote coloured as a rainbow": "指定したエモートを虹色で送信", "Displays list of commands with usages and descriptions": "使い方と説明付きのコマンド一覧を表示", "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)sがこのルームをアップグレードしました。", "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)sがこのルームを「リンクを知っている人全員」に公開しました。", @@ -635,16 +635,16 @@ "Set a new custom sound": "カスタム音を設定", "Browse": "参照", "Roles & Permissions": "役割と権限", - "Changes to who can read history will only apply to future messages in this room. The visibility of existing history will be unchanged.": "誰が履歴を読み取れるかに関する変更は、今後送信されるメッセージにのみ適用されます。既に存在する履歴の表示は変更されません。", + "Changes to who can read history will only apply to future messages in this room. The visibility of existing history will be unchanged.": "履歴の閲覧権限に関する変更は、今後、このルームで表示されるメッセージにのみ適用されます。既存の履歴の見え方には影響しません。", "Encryption": "暗号化", - "Once enabled, encryption cannot be disabled.": "暗号化は一度有効にすると、二度と無効にできません。", + "Once enabled, encryption cannot be disabled.": "いったん有効にすると、暗号化を無効にすることはできません。", "Encrypted": "暗号化", "Email Address": "メールアドレス", "Main address": "メインアドレス", "Join": "参加", "Create a private room": "非公開のルームを作成", "Topic (optional)": "トピック(任意)", - "Hide advanced": "高度な設定を非表示", + "Hide advanced": "高度な設定を非表示にする", "Show advanced": "高度な設定を表示", "Room Settings - %(roomName)s": "ルームの設定 - %(roomName)s", "Enable room encryption": "ルームの暗号化を有効にする", @@ -687,7 +687,7 @@ "Versions": "バージョン", "Voice & Video": "音声とビデオ", "Remove recent messages": "最近のメッセージを削除", - "%(creator)s created and configured the room.": "%(creator)sがルームを作成して設定しました。", + "%(creator)s created and configured the room.": "%(creator)sがルームを作成し設定しました。", "Add room": "ルームを追加", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "本当によろしいですか? もし鍵が正常にバックアップされていない場合、暗号化されたメッセージにアクセスできなくなります。", "not stored": "保存されていません", @@ -696,7 +696,7 @@ "Start using Key Backup": "鍵のバックアップを使用開始", "Edited at %(date)s. Click to view edits.": "%(date)sに編集済。クリックして変更履歴を表示。", "edited": "編集済", - "I don't want my encrypted messages": "暗号化されたメッセージは必要ありません", + "I don't want my encrypted messages": "暗号化されたメッセージは不要です", "Manually export keys": "手動で鍵をエクスポート", "You'll lose access to your encrypted messages": "暗号化されたメッセージにアクセスできなくなります", "You'll upgrade this room from to .": "このルームをからにアップグレードします。", @@ -706,14 +706,14 @@ "Download": "ダウンロード", "Print it and store it somewhere safe": "印刷して安全な場所に保管", "Save it on a USB key or backup drive": "USBメモリーやバックアップ用のドライブに保存", - "Copy it to your personal cloud storage": "個人用クラウドストレージにコピー", + "Copy it to your personal cloud storage": "個人用のクラウドストレージにコピー", "Display Name": "表示名", "Profile picture": "プロフィール画像", "Encryption enabled": "暗号化が有効です", - "Encryption not enabled": "暗号化が無効です", + "Encryption not enabled": "暗号化が有効になっていません", "The encryption used by this room isn't supported.": "このルームで使用されている暗号化はサポートされていません。", - "Cross-signing public keys:": "クロス署名公開鍵:", - "Cross-signing private keys:": "クロス署名秘密鍵:", + "Cross-signing public keys:": "クロス署名の公開鍵:", + "Cross-signing private keys:": "クロス署名の秘密鍵:", "Clear cache and reload": "キャッシュを削除して再読み込み", "Session ID:": "セッションID:", "Session key:": "セッションキー:", @@ -725,9 +725,9 @@ "Encrypted messages in one-to-one chats": "1対1のチャットでの暗号化されたメッセージ", "Encrypted messages in group chats": "グループチャットでの暗号化されたメッセージ", "Upload": "アップロード", - "Enable desktop notifications for this session": "このセッションではデスクトップ通知を有効にする", + "Enable desktop notifications for this session": "このセッションでデスクトップ通知を有効にする", "Email addresses": "メールアドレス", - "This room is end-to-end encrypted": "このルームはエンドツーエンド暗号化されています", + "This room is end-to-end encrypted": "このルームはエンドツーエンドで暗号化されています", "Encrypted by an unverified session": "未認証のセッションによる暗号化", "Close preview": "プレビューを閉じる", "Direct Messages": "ダイレクトメッセージ", @@ -738,7 +738,7 @@ "Destroy cross-signing keys?": "クロス署名鍵を破棄してよろしいですか?", "Clear cross-signing keys": "クロス署名鍵を削除", "Clear all data in this session?": "このセッションの全てのデータを削除してよろしいですか?", - "Clear all data": "全てのデータを削除", + "Clear all data": "全てのデータを消去", "Create a public room": "公開ルームを作成", "Message edits": "メッセージの編集履歴", "Report Content to Your Homeserver Administrator": "あなたのホームサーバーの管理者にコンテンツを報告", @@ -749,7 +749,7 @@ "To continue you need to accept the terms of this service.": "続行するには、このサービスの利用規約に同意する必要があります。", "Report Content": "コンテンツを報告", "Bold": "太字", - "Italics": "イタリック体", + "Italics": "斜字体", "React": "リアクション", "Quick Reactions": "一般的なリアクション", "Keyboard Shortcuts": "キーボードショートカット", @@ -764,13 +764,13 @@ "Unrecognised command: %(commandText)s": "認識されていないコマンド:%(commandText)s", "Send as message": "メッセージとして送信", "Confirm": "確認", - "Enable audible notifications for this session": "このセッションでは音声通知を有効にする", + "Enable audible notifications for this session": "このセッションで音声通知を有効にする", "Enable encryption?": "暗号化を有効にしますか?", - "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "一度有効にしたルームの暗号化は無効にすることはできません。暗号化されたルームで送信されたメッセージは、サーバーからは見ることができず、そのルームのメンバーだけが見ることができます。暗号化を有効にすると、多くのボットやブリッジが正常に動作しなくなる場合があります。暗号化についての詳細はこちらをご覧ください。", + "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "一度有効にしたルームの暗号化は無効にすることはできません。暗号化されたルームで送信されたメッセージは、サーバーからは閲覧できず、そのルームのメンバーだけが閲覧できます。暗号化を有効にすると、多くのボットやブリッジが正常に動作しなくなる可能性があります。暗号化についての詳細はこちらをご覧ください。", "Enter username": "ユーザー名を入力", "Email (optional)": "メールアドレス(任意)", "Phone (optional)": "電話番号(任意)", - "Verify this session": "このセッションの認証", + "Verify this session": "このセッションを認証", "Encryption upgrade available": "暗号化のアップグレードが利用できます", "Not Trusted": "信頼されていません", "Done": "戻る", @@ -789,11 +789,11 @@ "Security": "セキュリティー", "Welcome to %(appName)s": "%(appName)sにようこそ", "Send a Direct Message": "ダイレクトメッセージを送信", - "Explore Public Rooms": "公開ルームを探索", + "Explore Public Rooms": "公開ルームを探す", "Create a Group Chat": "グループチャットを作成", "Go Back": "戻る", - "Messages in this room are end-to-end encrypted.": "このルームでのメッセージはエンドツーエンド暗号化されます。", - "Messages in this room are not end-to-end encrypted.": "このルームでのメッセージはエンドツーエンド暗号化されません。", + "Messages in this room are end-to-end encrypted.": "このルームのメッセージはエンドツーエンドで暗号化されています。", + "Messages in this room are not end-to-end encrypted.": "このルームのメッセージはエンドツーエンドで暗号化されていません。", "You signed in to a new session without verifying it:": "あなたのこのセッションはまだ認証されていません:", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)sの(%(userId)s)は未認証のセッションにサインインしました:", "Recent Conversations": "最近会話したユーザー", @@ -814,7 +814,7 @@ "Secret storage public key:": "機密ストレージの公開鍵:", "in account data": "アカウントデータ内", "Homeserver feature support:": "ホームサーバーの対応状況:", - "exists": "対応している", + "exists": "対応", "Unable to load session list": "セッション一覧を読み込めません", "Manage": "管理", "Custom theme URL": "カスタムテーマURL", @@ -834,9 +834,9 @@ "Error changing power level": "権限レベルを変更する際のエラー", "Frequently Used": "使用頻度の高いリアクション", "Smileys & People": "表情と人々", - "Animals & Nature": "動物と植物", + "Animals & Nature": "動物と自然", "Food & Drink": "食べ物と飲み物", - "Activities": "アクティビティ", + "Activities": "アクティビティー", "Travel & Places": "旅行と場所", "Objects": "物体", "Symbols": "シンボル", @@ -849,7 +849,7 @@ "Room ID": "ルームID", "More options": "他のオプション", "Manually verify all remote sessions": "全てのリモートセッションを手動で認証", - "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "クロス署名された端末を信頼せず、信頼済としてマークするためにユーザーが使用する各セッションを個別に認証します。", + "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "クロス署名された端末を信頼せず、ユーザーが使用する各セッションを個別に認証し、信頼済に設定。", "This session is backing up your keys. ": "このセッションは鍵をバックアップしています。 ", "Show all": "全て表示", "Message deleted": "メッセージが削除されました", @@ -875,11 +875,11 @@ "Document": "ドキュメント", "Appearance": "外観", "Other users may not trust it": "他のユーザーはこのセッションを信頼しない可能性があります", - "Show a placeholder for removed messages": "削除されたメッセージの場所にプレースホルダーを表示", - "Prompt before sending invites to potentially invalid matrix IDs": "不正かもしれないMatrix IDに招待を送信する前に確認を表示", + "Show a placeholder for removed messages": "削除されたメッセージに関する通知を表示", + "Prompt before sending invites to potentially invalid matrix IDs": "不正の可能性があるMatrix IDに招待を送信する前に確認画面を表示", "Show shortcuts to recently viewed rooms above the room list": "最近表示したルームのショートカットをルームリストの上に表示", - "Show previews/thumbnails for images": "画像のプレビュー/サムネイルを表示", - "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "あなたのアカウントではクロス署名の認証情報がシークレットストレージに保存されていますが、このセッションでは信頼されていません。", + "Show previews/thumbnails for images": "画像のプレビューまたはサムネイルを表示", + "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "あなたのアカウントではクロス署名の認証情報が機密ストレージに保存されていますが、このセッションでは信頼されていません。", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "このセッションでは鍵をバックアップしていませんが、復元に使用したり、今後鍵を追加したりできるバックアップがあります。", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "サインアウトする前に、このセッションにだけある鍵を失わないよう、セッションを鍵のバックアップに接続しましょう。", "Connect this session to Key Backup": "このセッションを鍵のバックアップに接続", @@ -895,7 +895,7 @@ "Single Sign On": "シングルサインオン", "Light": "ライト", "Dark": "ダーク", - "Font size": "フォントサイズ", + "Font size": "フォントの大きさ", "Use custom size": "独自のサイズを使用", "Use a system font": "システムフォントを使用", "System font name": "システムフォントの名前", @@ -925,7 +925,7 @@ "Do not use an identity server": "IDサーバーを使用しない", "Composer": "入力欄", "Sort by": "並び替え", - "List options": "一覧の設定", + "List options": "オプションの一覧を表示", "Use Single Sign On to continue": "シングルサインオンを使用して続行", "Accept to continue:": "に同意して続行:", "Always show the window menu bar": "常にウィンドウメニューバーを表示", @@ -973,7 +973,7 @@ "Widgets": "ウィジェット", "Cross-signing is ready for use.": "クロス署名の使用準備が完了しました。", "Secure Backup": "セキュアバックアップ", - "Set up Secure Backup": "セキュアバックアップの設定", + "Set up Secure Backup": "セキュアバックアップを設定", "Go back": "戻る", "Everyone in this room is verified": "このルーム内の全員を認証済", "Verify all users in a room to ensure it's secure.": "このルーム内の全てのユーザーが安全であることを確認しました。", @@ -984,7 +984,7 @@ "Reject & Ignore user": "拒否した上で、このユーザーを無視", " invited you": "があなたを招待しています", "Do you want to join %(roomName)s?": "%(roomName)sに参加しますか?", - "Start chatting": "チャットを開始", + "Start chatting": "会話を開始", " wants to chat": "がチャット開始を求めています", "Do you want to chat with %(user)s?": "%(user)sとのチャットを開始しますか?", "Use the Desktop app to search encrypted messages": "デスクトップアプリを使用すると暗号化されたメッセージを検索できます", @@ -1016,8 +1016,8 @@ "%(displayName)s created this room.": "%(displayName)sがこのルームを作成しました。", "You created this room.": "このルームを作成しました。", "%(creator)s created this DM.": "%(creator)sがこのダイレクトメッセージを作成しました。", - "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their avatar.": "ここでのメッセージはエンドツーエンド暗号化されます。%(displayName)sのアバターをタップすると、プロフィールから認証を行うことができます。", - "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their avatar.": "このルームでのメッセージはエンドツーエンド暗号化されます。参加者のアバターをタップすると、プロフィールから参加者を認証することができます。", + "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their avatar.": "ここでのメッセージはエンドツーエンドで暗号化されます。%(displayName)sのアバターをタップすると、プロフィールから認証を行うことができます。", + "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their avatar.": "このルームでのメッセージはエンドツーエンドで暗号化されます。参加者のアバターをタップすると、プロフィールから参加者を認証することができます。", "Use default": "既定の設定を使用", "e.g. my-room": "例:my-room", "Room address": "ルームのアドレス", @@ -1027,7 +1027,7 @@ "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s rooms.|other": "検索結果の表示用に、暗号化されたメッセージをローカルに安全にキャッシュしています。現在、%(rooms)s件のルームのメッセージの保存に%(size)sを使用しています。", "Mentions & Keywords": "メンションとキーワード", "Security Key": "セキュリティーキー", - "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.": "IDサーバーの使用は任意です。IDサーバーを使用しない場合、あなたは他のユーザーから発見されず、メールアドレスや電話番号で他のユーザーを招待することもできません。", + "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.": "IDサーバーの使用は任意です。IDサーバーを使用しない場合、他のユーザーによって見つけられず、また、メールアドレスや電話で他のユーザーを招待することもできません。", "Integrations not allowed": "インテグレーションは許可されていません", "Integrations are disabled": "インテグレーションが無効になっています", "Manage integrations": "インテグレーションの管理", @@ -1041,11 +1041,11 @@ "Master private key:": "マスター秘密鍵:", "Add a photo, so people can easily spot your room.": "写真を追加して、あなたのルームを目立たせましょう。", "Add a photo so people know it's you.": "写真を追加して、あなただとわかるようにしましょう。", - "Only the two of you are in this conversation, unless either of you invites anyone to join.": "あなたか宛先が誰かを招待しない限りは、この会話は2人だけのものです。", + "Only the two of you are in this conversation, unless either of you invites anyone to join.": "あなたか相手が誰かを招待しない限りは、この会話に参加しているのはあなたたちだけです。", "Password is allowed, but unsafe": "パスワードの要件は満たしていますが、安全ではありません", "Nice, strong password!": "素晴らしい、強固なパスワードです!", "Enter password": "パスワードを入力してください", - "Forgot password?": "パスワードをお忘れですか?", + "Forgot password?": "パスワードを忘れましたか?", "Enter email address": "メールアドレスを入力", "Enter phone number (required on this homeserver)": "電話番号を入力(このホームサーバーでは必須)", "Enter phone number": "電話番号を入力", @@ -1054,7 +1054,7 @@ "New version available. Update now.": "新しいバージョンが利用可能です。今すぐ更新", "Sign In": "サインイン", "Create Account": "アカウントを作成", - "Explore rooms": "ルームを探索", + "Explore rooms": "ルームを探す", "Please view existing bugs on Github first. No match? Start a new one.": "まず、Githubで既知の不具合を確認してください。また掲載されていない新しい不具合を発見した場合は報告してください。", "Report a bug": "不具合の報告", "Update %(brand)s": "%(brand)sの更新", @@ -1068,7 +1068,7 @@ "There was an error updating the room's alternative addresses. It may not be allowed by the server or a temporary failure occurred.": "ルームの代替アドレスを更新する際にエラーが発生しました。サーバーで許可されていないか、一時的な障害が発生した可能性があります。", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "ルームのメインアドレスを更新する際にエラーが発生しました。サーバーで許可されていないか、一時的な障害が発生した可能性があります。", "Error updating main address": "メインアドレスを更新する際のエラー", - "Mark all as read": "全て既読としてマーク", + "Mark all as read": "全て既読にする", "Invited by %(sender)s": "%(sender)sからの招待", "Revoke invite": "招待を取り消す", "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "招待を取り消すことができませんでした。サーバーで一時的な問題が発生しているか、招待を取り消すための十分な権限がない可能性があります。", @@ -1085,8 +1085,8 @@ "%(count)s unread messages including mentions.|other": "メンションを含む未読メッセージ%(count)s件。", "Jump to first invite.": "最初の招待にジャンプします。", "Jump to first unread room.": "未読のある最初のルームにジャンプします。", - "A-Z": "A-Z", - "Activity": "活発さ", + "A-Z": "アルファベット順", + "Activity": "アクティビティー順", "Show previews of messages": "メッセージのプレビューを表示", "Show rooms with unread messages first": "未読メッセージのあるルームを最初に表示", "You're previewing %(roomName)s. Want to join it?": "ルーム %(roomName)s のプレビューです。参加しますか?", @@ -1103,15 +1103,15 @@ "Reason: %(reason)s": "理由:%(reason)s", "Sign Up": "サインアップ", "Join the conversation with an account": "アカウントで会話に参加", - "Rejecting invite …": "招待を拒否する…", - "Explore public rooms": "公開ルームを探索", - "Discovery options will appear once you have added a phone number above.": "上で電話番号を追加すると、ディスカバリーのオプションが表示されます。", + "Rejecting invite …": "招待を拒否しています…", + "Explore public rooms": "公開ルームを探す", + "Discovery options will appear once you have added a phone number above.": "上で電話番号を追加すると、発見可能に設定する電話番号を選択できるようになります。", "Verification code": "認証コード", "Please enter verification code sent via text.": "テキストで送信された確認コードを入力してください。", "Unable to verify phone number.": "電話番号を認証できません。", "Unable to share phone number": "電話番号を共有できません", "Unable to revoke sharing for phone number": "電話番号の共有を取り消せません", - "Discovery options will appear once you have added an email above.": "上でメールアドレスを追加すると、ディスカバリーのオプションが表示されます。", + "Discovery options will appear once you have added an email above.": "上でメールアドレスを追加すると、発見可能に設定するメールアドレスを選択できるようになります。", "Share": "共有", "Revoke": "取り消す", "Complete": "完了", @@ -1162,7 +1162,7 @@ "Please verify the room ID or address and try again.": "ルームのIDやアドレスを確認して、もう一度お試しください。", "Error subscribing to list": "リストを購読する際のエラー", "Something went wrong. Please try again or view your console for hints.": "問題が発生しました。もう一度試すか、コンソールで手がかりを確認してください。", - "Error adding ignored user/server": "無視したユーザー/サーバーを追加する際のエラー", + "Error adding ignored user/server": "無視したユーザーまたはサーバーを追加する際のエラー", "Ignored/Blocked": "無視/ブロック", "Chat with %(brand)s Bot": "%(brand)sボットとチャット", "For help with using %(brand)s, click here or start a chat with our bot using the button below.": "%(brand)sの使用についてサポートが必要な場合は、こちらをクリックするか、下のボタンを使用してボットとチャットを開始してください。", @@ -1175,10 +1175,10 @@ "Use between %(min)s pt and %(max)s pt": "%(min)s~%(max)s(pt)の間の数字を指定", "Custom font size can only be between %(min)s pt and %(max)s pt": "カスタムフォントのサイズは%(min)s~%(max)s(単位:point)の間で指定できます", "Size must be a number": "サイズには数値を指定してください", - "Disconnecting from your identity server will mean you won't be discoverable by other users and you won't be able to invite others by email or phone.": "IDサーバーから切断すると、他のユーザーから発見されたり、メールアドレスや電話番号で他のユーザーを招待したりできなくなります。", - "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "現在、IDサーバーを使用していません。あなたの知っている連絡先を発見したり、その連絡先から発見されるようにするには、以下にIDサーバーを追加してください。", - "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "連絡先の検出にではなく他のIDサーバーを使いたい場合は以下に指定してください。", - "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "現在を使用して、連絡先を検出可能にしています。以下でIDサーバーを変更できます。", + "Disconnecting from your identity server will mean you won't be discoverable by other users and you won't be able to invite others by email or phone.": "IDサーバーとの接続を解除すると、他のユーザーによって見つけられなくなり、また、メールアドレスや電話で他のユーザーを招待することもできなくなります。", + "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "現在、IDサーバーを使用していません。連絡先を見つけたり、連絡先から見つけてもらったりするには、以下にIDサーバーを追加してください。", + "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "連絡先の検出にではなく他のIDサーバーを使いたい場合は、以下に指定してください。", + "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "現在を使用して、自分の連絡先を見つけたり、連絡先から見つけてもらったりできるようにしています。以下でIDサーバーを変更できます。", "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "切断する前に、IDサーバーからメールアドレスと電話番号を削除することを推奨します。", "You are still sharing your personal data on the identity server .": "まだIDサーバー 個人データを共有しています。", "Disconnect anyway": "切断", @@ -1221,8 +1221,8 @@ "Pin": "ピン", "Folder": "フォルダー", "Headphones": "ヘッドホン", - "Anchor": "錨", - "Bell": "鐘", + "Anchor": "いかり", + "Bell": "ベル", "Trumpet": "トランペット", "Guitar": "ギター", "Ball": "ボール", @@ -1230,14 +1230,14 @@ "Rocket": "ロケット", "Aeroplane": "飛行機", "Bicycle": "自転車", - "Train": "列車", + "Train": "電車", "Flag": "旗", - "Telephone": "電話", - "Hammer": "ハンマー", + "Telephone": "電話機", + "Hammer": "金槌", "Key": "鍵", "Lock": "錠前", - "Scissors": "鋏", - "Paperclip": "紙ばさみ", + "Scissors": "はさみ", + "Paperclip": "クリップ", "Pencil": "鉛筆", "Book": "本", "Light bulb": "電球", @@ -1245,53 +1245,53 @@ "Clock": "時計", "Hourglass": "砂時計", "Umbrella": "傘", - "Thumbs up": "サムズアップ", + "Thumbs up": "いいね", "Santa": "サンタ", "Spanner": "スパナ", - "Glasses": "眼鏡", + "Glasses": "めがね", "Hat": "帽子", "Robot": "ロボット", - "Smiley": "笑顔", + "Smiley": "スマイル", "Heart": "ハート", "Cake": "ケーキ", "Pizza": "ピザ", - "Corn": "トウモロコシ", - "Strawberry": "苺", - "Apple": "林檎", + "Corn": "とうもろこし", + "Strawberry": "いちご", + "Apple": "リンゴ", "Banana": "バナナ", "Fire": "炎", "Cloud": "雲", "Moon": "月", - "Globe": "金魚鉢", - "Mushroom": "茸", + "Globe": "地球", + "Mushroom": "きのこ", "Cactus": "サボテン", "Tree": "木", "Flower": "花", - "Butterfly": "蝶", - "Octopus": "蛸", + "Butterfly": "ちょうちょ", + "Octopus": "たこ", "Fish": "魚", "Turtle": "亀", "Penguin": "ペンギン", - "Rooster": "鶏", + "Rooster": "ニワトリ", "Panda": "パンダ", - "Rabbit": "兎", - "Elephant": "象", - "Pig": "豚", - "Unicorn": "一角獣", + "Rabbit": "うさぎ", + "Elephant": "ゾウ", + "Pig": "ブタ", + "Unicorn": "ユニコーン", "Horse": "馬", "Lion": "ライオン", "Cat": "猫", "Dog": "犬", - "To be secure, do this in person or use a trusted way to communicate.": "安全を確保するため、対面で行うか、または信頼できる方法で認証してください。", - "They don't match": "異なる絵文字です", - "They match": "同じ絵文字です", + "To be secure, do this in person or use a trusted way to communicate.": "セキュリティーを高めるために、対面で行うか、または他の信頼できる通信手段を利用しましょう。", + "They don't match": "一致していません", + "They match": "一致しています", "Cancelling…": "キャンセルしています…", "Unable to find a supported verification method.": "どの認証方法にも対応していません。", "Verify this user by confirming the following number appears on their screen.": "このユーザーを認証するため、両方の画面に同じ番号が表示されていることを確認してください。", "The user must be unbanned before they can be invited.": "招待する前にユーザーのブロックを解除する必要があります。", "Unrecognised address": "認識されないアドレス", "Error leaving room": "ルームを出る際のエラー", - "Unexpected server error trying to leave the room": "ルームを退出する際に予期しないサーバーエラーが発生しました", + "Unexpected server error trying to leave the room": "ルームから退出する際に予期しないサーバーエラーが発生しました", "Unexpected error resolving identity server configuration": "IDサーバーの設定の解釈中に予期しないエラーが発生しました", "Unexpected error resolving homeserver configuration": "ホームサーバーの設定の解釈中に予期しないエラーが発生しました", "You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "ログインできますが、IDサーバーがオンラインに戻るまで一部の機能を使用できません。この警告が引き続き表示される場合は、構成を確認するか、サーバー管理者に連絡してください。", @@ -1469,9 +1469,9 @@ "Room %(name)s": "ルーム %(name)s", "Code block": "コードブロック", "Strikethrough": "取り消し線", - "The authenticity of this encrypted message can't be guaranteed on this device.": "この暗号化されたメッセージの信頼性はこの端末では保証できません。", + "The authenticity of this encrypted message can't be guaranteed on this device.": "この暗号化されたメッセージの真正性はこの端末では保証できません。", "Mod": "モデレーター", - "Edit message": "メッセージの編集", + "Edit message": "メッセージを編集", "Someone is using an unknown session": "誰かが不明なセッションを使用しています", "You have verified this user. This user has verified all of their sessions.": "このユーザーを認証しました。このユーザーは全てのセッションを認証しました。", "You have not verified this user.": "あなたはこのユーザーを認証していません。", @@ -1698,12 +1698,12 @@ "Compare a unique set of emoji if you don't have a camera on either device": "両方の端末でQRコードをキャプチャできない場合、絵文字の比較を選んでください", "Compare unique emoji": "絵文字の並びを比較", "Scan this unique code": "ユニークなコードをスキャン", - "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "ユーザー間でエンドツーエンド暗号化されたメッセージです。第三者が解読することはできません。", - "Verified!": "認証されました!", + "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "このユーザーとのメッセージはエンドツーエンドで暗号化されており、第三者が解読することはできません。", + "Verified!": "認証しました!", "The other party cancelled the verification.": "相手が認証をキャンセルしました。", "Unknown caller": "不明な発信者", "Dial pad": "ダイヤルパッド", - "There was an error looking up the phone number": "電話番号を見つける際にエラーが発生しました", + "There was an error looking up the phone number": "電話番号を検索する際にエラーが発生しました", "Unable to look up phone number": "電話番号が見つかりません", "%(name)s on hold": "%(name)sが保留中", "Return to call": "通話に戻る", @@ -1744,22 +1744,22 @@ "Waiting for answer": "応答を待っています", "%(senderName)s started a call": "%(senderName)sが通話を開始しました", "You started a call": "通話を開始しました", - "Call ended": "通話終了", + "Call ended": "通話が終了しました", "%(senderName)s ended the call": "%(senderName)sが通話を終了しました", "You ended the call": "通話を終了しました", "Call in progress": "通話中", "%(senderName)s joined the call": "%(senderName)sが通話に参加しました", "You joined the call": "通話に参加しました", "Guest": "ゲスト", - "New login. Was this you?": "新しいログインがありました。これはあなたですか?", + "New login. Was this you?": "新しいログインです。ログインしましたか?", "Safeguard against losing access to encrypted messages & data": "暗号化されたメッセージとデータへのアクセスが失われるのを防ぎましょう", "Ok": "OK", "Contact your server admin.": "サーバー管理者に問い合わせてください。", - "Your homeserver has exceeded one of its resource limits.": "ホームサーバーはリソースの上限に達しました。", + "Your homeserver has exceeded one of its resource limits.": "あなたのホームサーバーはリソースの上限に達しました。", "Your homeserver has exceeded its user limit.": "あなたのホームサーバーはユーザー数の上限に達しました。", "Use app": "アプリを使用", "Use app for a better experience": "より良い体験のためにアプリケーションを使用", - "Enable": "有効", + "Enable": "有効にする", "Enable desktop notifications": "デスクトップ通知を有効にする", "Don't miss a reply": "返信をお見逃しなく", "No": "いいえ", @@ -1773,7 +1773,7 @@ "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "マイクを利用できなかったため通話に失敗しました。マイクが接続されて正しく設定されているか確認してください。", "Unable to access microphone": "マイクを利用できません", "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "公開サーバー turn.matrix.org を使用することもできますが、信頼性は高くなく、またサーバーとIPアドレスが共有されます。これは設定からも管理できます。", - "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "通話が機能するよう、ホームサーバー(%(homeserverDomain)s)の管理者にTURNサーバーの設定を尋ねてください。", + "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "安定した通話のために、ホームサーバー(%(homeserverDomain)s)の管理者にTURNサーバーの設定を依頼してください。", "The call was answered on another device.": "他の端末で通話に応答しました。", "Answered Elsewhere": "他端末で応答しました", "The call could not be established": "通話を確立できませんでした", @@ -1820,7 +1820,7 @@ "Remove recent messages by %(user)s": "%(user)sからの最近のメッセージを削除", "Try scrolling up in the timeline to see if there are any earlier ones.": "タイムラインを上にスクロールして、以前のものがあるかどうかを確認してください。", "No recent messages by %(user)s found": "%(user)sからの最近のメッセージが見つかりません", - "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.": "自分自身を降格しようとしています。この変更を元に戻すことはできません。スペース内の最後の特権ユーザーである場合、特権を取り戻すことはできません。", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.": "あなたは自分自身を降格させようとしています。この変更は取り消せません。あなたがスペースの中で最後の特権ユーザーである場合、特権を再取得することはできなくなります。", "Not encrypted": "暗号化されていません", "Edit widgets, bridges & bots": "ウィジェット、ブリッジ、ボットを編集", "Set my room layout for everyone": "このルームのレイアウトを参加者全体に設定", @@ -1845,16 +1845,16 @@ "Sending your message...": "メッセージを送信しています…", "Space options": "スペースのオプション", "Leave space": "スペースから退出", - "Invite people": "人々を招待", + "Invite people": "連絡先を招待", "Share your public space": "公開スペースを共有", "Share invite link": "招待リンクを共有", "Click to copy": "クリックでコピー", "Creating...": "作成しています…", "Your private space": "あなたの非公開のスペース", "Your public space": "あなたの公開スペース", - "Invite only, best for yourself or teams": "招待者のみ参加可能、個人やチーム向け", + "Invite only, best for yourself or teams": "招待者のみ参加可能。個人やチーム向け", "Private": "非公開", - "Open space for anyone, best for communities": "誰もが利用できるオープンスペース、コミュニティー向け", + "Open space for anyone, best for communities": "誰でも参加できる公開スペース。コミュニティー向け", "Public": "公開", "Create a space": "スペースを作成", "Delete": "削除", @@ -1875,10 +1875,10 @@ "Welcome to ": "にようこそ", "Invite to just this room": "このルームに招待", "Invite to %(spaceName)s": "%(spaceName)sに招待", - "A private space for you and your teammates": "あなたとチームメイトの非公開のスペース", + "A private space for you and your teammates": "自分とチームメイトの非公開のスペース", "Me and my teammates": "自分とチームメイト", "Just me": "自分専用", - "Make sure the right people have access to %(name)s": "必要な人が%(name)sにアクセスできるようにしましょう", + "Make sure the right people have access to %(name)s": "正しい参加者が%(name)sにアクセスできるようにしましょう。", "Who are you working with?": "誰と使いますか?", "Beta": "ベータ版", "Check your devices": "端末を確認", @@ -1896,8 +1896,8 @@ "Adding rooms... (%(progress)s out of %(count)s)|one": "ルームを追加しています…", "Adding rooms... (%(progress)s out of %(count)s)|other": "ルームを追加しています…(%(progress)s/%(count)s)", "Skip for now": "スキップ", - "What do you want to organise?": "どれを追加しますか?", - "Pick rooms or conversations to add. This is just a space for you, no one will be informed. You can add more later.": "ルームや会話を追加できます。これはあなた専用のスペースで、他の人からは見えません。後からルームや会話を追加することもできます。", + "What do you want to organise?": "何を追加しますか?", + "Pick rooms or conversations to add. This is just a space for you, no one will be informed. You can add more later.": "ルームや会話を追加できます。これはあなた専用のスペースで、他の人からは見えません。後から追加することもできます。", "Support": "サポート", "You can change these anytime.": "ここで入力した情報はいつでも編集できます。", "Add some details to help people recognise it.": "情報を入力してください。", @@ -1906,7 +1906,7 @@ "Integration managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "インテグレーションマネージャーは設定データを受け取り、ユーザーの代わりにウィジェットの変更や、ルームへの招待の送信、権限レベルの設定を行うことができます。", "Use an integration manager to manage bots, widgets, and sticker packs.": "インテグレーションマネージャーを使用すると、ボット、ウィジェット、ステッカーパックを管理できます。", "Use an integration manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "インテグレーションマネージャー(%(serverName)s) を使用すると、ボット、ウィジェット、ステッカーパックを管理できます。", - "Identity server": "認証サーバー", + "Identity server": "IDサーバー", "Identity server (%(server)s)": "IDサーバー(%(server)s)", "Could not connect to identity server": "IDサーバーに接続できませんでした", "Not a valid identity server (status code %(code)s)": "有効なIDサーバーではありません(ステータスコード %(code)s)", @@ -1915,7 +1915,7 @@ "Failed to save space settings.": "スペースの設定を保存できませんでした。", "Transfer Failed": "転送に失敗しました", "Unable to transfer call": "通話を転送できませんでした", - "All rooms you're in will appear in Home.": "ホームに、あなたが参加している全てのルームが表示されます。", + "All rooms you're in will appear in Home.": "あなたが参加している全てのルームがホームに表示されます。", "Show all rooms in Home": "ホームに全てのルームを表示", "Images, GIFs and videos": "画像・GIF・動画", "Displaying time": "表示時刻", @@ -1933,7 +1933,7 @@ "Space members": "スペースのメンバー", "Upgrade required": "アップグレードが必要", "Only invited people can join.": "招待された人のみ参加できます。", - "Private (invite only)": "非公開(招待者のみ)", + "Private (invite only)": "非公開(招待者のみ参加可能)", "Decide who can join %(roomName)s.": "%(roomName)sに参加できる人を設定してください。", "%(senderName)s invited %(targetName)s": "%(senderName)sが%(targetName)sを招待しました", "Verify your identity to access encrypted messages and prove your identity to others.": "暗号化されたメッセージにアクセスするには、本人確認が必要です。", @@ -1941,7 +1941,7 @@ "Are you sure you want to sign out?": "サインアウトしてよろしいですか?", "Upgrade to %(hostSignupBrand)s": "%(hostSignupBrand)sにアップグレード", "Rooms and spaces": "ルームとスペース", - "Add a space to a space you manage.": "管理しているスペースに、スペースを追加します。", + "Add a space to a space you manage.": "新しいスペースを、あなたが管理するスペースに追加。", "Add space": "スペースを追加", "This room is suggested as a good one to join": "このルームは、参加を推奨するルームとしておすすめされています", "Mark as suggested": "おすすめに追加", @@ -1949,9 +1949,9 @@ "Suggested": "おすすめ", "Removing...": "削除しています…", "Joined": "参加済", - "Give feedback.": "フィードバックを送信する。", + "Give feedback.": "フィードバックを送信。", "Thank you for trying Spaces. Your feedback will help inform the next versions.": "スペースをお試しいただきありがとうございます。いただいたフィードバックは、次のバージョンの参考にさせていただきます。", - "Spaces feedback": "スペースに関するフィードバック", + "Spaces feedback": "スペースについてのフィードバック", "Spaces are a new feature.": "スペースは新しい機能です。", "To join a space you'll need an invite.": "スペースに参加するには招待が必要です。", "Sign out %(count)s selected devices|one": "%(count)s個の端末からサインアウト", @@ -1966,7 +1966,7 @@ "Group all your favourite rooms and people in one place.": "お気に入りのルームと連絡先を表示します。", "Show all your rooms in Home, even if they're in a space.": "他のスペースに存在するルームを含めて、全てのルームをホームに表示します。", "Home is useful for getting an overview of everything.": "ホームは全体を把握するのに便利です。", - "Spaces are ways to group rooms and people. Alongside the spaces you're in, you can use some pre-built ones too.": "スペースは、ルームや連絡先をグループ化する方法です。いくつかの構築済スペースと、参加済のスペースを使用できます。", + "Spaces are ways to group rooms and people. Alongside the spaces you're in, you can use some pre-built ones too.": "スペースは、ルームや連絡先をまとめる方法です。いくつかの構築済スペースと、参加済のスペースを使用できます。", "Spaces to show": "表示するスペース", "Sidebar": "サイドバー", "Show all rooms": "全てのルームを表示", @@ -1988,7 +1988,7 @@ "Select from the options below to export chats from your timeline": "以下のオプションを選択して、チャットをエクスポートできます", "Export Chat": "チャットをエクスポート", "Export chat": "チャットをエクスポート", - "View source": "ソースを表示", + "View source": "ソースコードを表示", "Failed to send": "送信に失敗しました", "You can't see earlier messages": "以前のメッセージは表示できません", "Encrypted messages before this point are unavailable.": "これ以前の暗号化されたメッセージは利用できません。", @@ -2007,7 +2007,7 @@ "Preparing to download logs": "ログのダウンロードを準備しています", "User Busy": "ユーザーは通話中です", "The user you called is busy.": "呼び出したユーザーは通話中です。", - "Hide stickers": "ステッカーを隠す", + "Hide stickers": "ステッカーを表示しない", "Send voice message": "音声メッセージを送信", "You do not have permission to start polls in this room.": "このルームでアンケートを開始する権限がありません。", "Voice Message": "音声メッセージ", @@ -2093,7 +2093,7 @@ "Spaces you're in": "参加しているスペース", "Command Help": "コマンドヘルプ", "Link to room": "ルームへのリンク", - "This groups your chats with members of this space. Turning this off will hide those chats from your view of %(spaceName)s.": "このスペースのメンバーとの会話をグループ化します。無効にすると、それらの会話は%(spaceName)sの表示画面に表示されなくなります。", + "This groups your chats with members of this space. Turning this off will hide those chats from your view of %(spaceName)s.": "このスペースのメンバーとの会話をまとめます。無効にすると、それらの会話は%(spaceName)sの表示画面に表示されなくなります。", "Space home": "スペースのホーム", "Go to Home View": "ホームに移動", "Previous autocomplete suggestion": "前の自動補完の候補", @@ -2129,7 +2129,7 @@ "Navigate to next message to edit": "次のメッセージに移動して編集", "Toggle Italics": "斜字体を切り替える", "Toggle Bold": "太字を切り替える", - "Toggle Quote": "引用を切り替える", + "Toggle Quote": "引用の表示を切り替える", "Toggle webcam on/off": "Webカメラのオン/オフを切り替える", "Toggle right panel": "右のパネルの表示を切り替える", "Toggle space panel": "スペースのパネルを切り替える", @@ -2180,7 +2180,7 @@ "Message": "メッセージ", "Shows all threads from current room": "現在のルームのスレッドを全て表示", "All threads": "全てのスレッド", - "Keep discussions organised with threads": "スレッドでディスカッションを整理して管理", + "Keep discussions organised with threads": "スレッド機能を使って、会話をまとめましょう", "Show:": "表示:", "Shows all threads you've participated in": "参加している全スレッドを表示", "My threads": "自分のスレッド", @@ -2230,7 +2230,7 @@ "Successfully restored %(sessionCount)s keys": "%(sessionCount)s個の鍵が復元されました", "Keys restored": "鍵が復元されました", "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "このセキュリティーキーではバックアップを復号化できませんでした。正しいセキュリティーキーを入力したことを確認してください。", - "Security Key mismatch": "セキュリティーキーの不一致", + "Security Key mismatch": "セキュリティーキーが一致しません", "%(completed)s of %(total)s keys restored": "%(total)s個のうち%(completed)s個の鍵が復元されました", "Fetching keys from server...": "鍵をサーバーから取得しています…", "Restoring keys from backup": "バックアップから鍵を復元", @@ -2245,8 +2245,8 @@ "%(senderName)s pinned a message to this room. See all pinned messages.": "%(senderName)sがメッセージをこのルームに固定しました。全ての固定されたメッセージを表示。", "Someone already has that username. Try another or if it is you, sign in below.": "そのユーザー名は既に使用されています。別のユーザー名を試すか、あなたのユーザー名なら、以下でサインインしてください。", "Sign in with SSO": "シングルサインオンでサインイン", - "Use email or phone to optionally be discoverable by existing contacts.": "メールアドレスまたは電話番号で知人に見つけてもらえるようにできます(任意)。", - "Use email to optionally be discoverable by existing contacts.": "メールアドレスで知人に見つけてもらえるようにできます(任意)。", + "Use email or phone to optionally be discoverable by existing contacts.": "メールアドレスまたは電話番号で連絡先に見つけてもらえるようにできます。", + "Use email to optionally be discoverable by existing contacts.": "メールアドレスで連絡先に見つけてもらえるようにできます。", "Add an email to be able to reset your password.": "アカウント復旧用のメールアドレスを設定します。", "About homeservers": "ホームサーバーについて(英語)", "Use your preferred Matrix homeserver if you have one, or host your own.": "好みのホームサーバーがあるか、自分でホームサーバーを運営している場合は、そちらをお使いください。", @@ -2256,7 +2256,7 @@ "Decide where your account is hosted": "アカウントを管理する場所を決めましょう", "Host account on": "アカウントを以下のホームサーバーでホスト", "Continue with %(provider)s": "%(provider)sで続行", - "Join millions for free on the largest public server": "最大のパブリックサーバーで、数百万人に無料で参加", + "Join millions for free on the largest public server": "最大の公開サーバーで、数百万人に無料で参加", "Already have an account? Sign in here": "既にアカウントを持っていますか?ここからサインインしてください", "Your new account (%(newAccountId)s) is registered, but you're already logged into a different account (%(loggedInUserId)s).": "新しいアカウント(%(newAccountId)s)が登録されましたが、あなたは別のアカウント(%(loggedInUserId)s)でログインしています。", "Continue with previous account": "以前のアカウントで続行", @@ -2295,11 +2295,11 @@ "Force complete": "強制的に自動補完", "Activate selected button": "選択したボタンを有効にする", "Close dialog or context menu": "ダイアログかコンテクストメニューを閉じる", - "Enter the name of a new server you want to explore.": "探索したい新しいサーバーの名前を入力してください。", + "Enter the name of a new server you want to explore.": "探したい新しいサーバーの名前を入力してください。", "Upgrade public room": "公開ルームをアップグレード", "Public room": "公開ルーム", "Upgrade private room": "非公開のルームをアップグレード", - "Private room (invite only)": "非公開のルーム(招待者のみ)", + "Private room (invite only)": "非公開のルーム(招待者のみ参加可能)", "Can't find this server or its room list": "サーバーまたはそのルーム一覧が見つかりません", "Join public room": "公開ルームに参加", "You can change this at any time from room settings.": "これはルームの設定で後からいつでも変更できます。", @@ -2392,7 +2392,7 @@ "Upload %(count)s other files|other": "あと%(count)s個のファイルをアップロード", "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.": "アップロードしようとしているファイルのサイズが大きすぎます。最大のサイズは%(limit)sですが、ファイルのサイズは%(sizeOfThisFile)sです。", "Approve": "同意", - "Away": "退席中", + "Away": "離席中", "Categories": "カテゴリー", "Space": "スペース", "Disable": "無効にする", @@ -2419,7 +2419,7 @@ "Signature upload success": "署名のアップロードに成功しました", "Cancelled signature upload": "署名のアップロードをキャンセルしました", "This address does not point at this room": "このアドレスはこのルームを指していません", - "You do not have permissions to add spaces to this space": "スペースをこのスペースに追加する権限がありません", + "You do not have permissions to add spaces to this space": "このスペースに別のスペースを追加する権限がありません", "Open in OpenStreetMap": "OpenStreetMapで開く", "Please enter a name for the room": "ルームの名称を入力してください", "The following users may not exist": "次のユーザーは存在しない可能性があります", @@ -2567,7 +2567,7 @@ "Space information": "スペースの情報", "Retry all": "全て再試行", "You can select all or individual messages to retry or delete": "全てのメッセージ、あるいは個別のメッセージを選択して、再送を試みるか削除することができます", - "Some of your messages have not been sent": "メッセージが送信されませんでした", + "Some of your messages have not been sent": "いくつかのメッセージが送信されませんでした", "Mentions only": "メンションのみ", "Forget": "消去", "Not a valid Security Key": "正しいセッションキーではありません", @@ -2592,7 +2592,7 @@ "Clear personal data": "個人データを消去", "Starting backup...": "バックアップを開始しています…", "This homeserver does not support login using email address.": "このホームサーバーではメールアドレスによるログインをサポートしていません。", - "Your password has been reset.": "パスワードがリセットされました。", + "Your password has been reset.": "パスワードをリセットしました。", "Couldn't load page": "ページを読み込めませんでした", "Confirm the emoji below are displayed on both devices, in the same order:": "以下の絵文字が、両方の端末で、同じ順番で表示されているかどうか確認してください:", "Show sidebar": "サイドバーを表示", @@ -2601,7 +2601,7 @@ "We couldn't create your DM.": "ダイレクトメッセージを作成できませんでした。", "Confirm to continue": "確認して続行", "Failed to find the following users": "次のユーザーの発見に失敗しました", - "Privacy Policy": "個人情報保護方針", + "Privacy Policy": "プライバシーポリシー", "Cookie Policy": "Cookieの使用方針", "Sorry, the poll did not end. Please try again.": "アンケートを終了できませんでした。もう一度やり直してください。", "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "データのエクスポートを停止してよろしいですか?改めてやり直す必要があります。", @@ -2653,13 +2653,13 @@ "Fetched %(count)s events so far|one": "%(count)s個のイベントを取得しました", "Fetched %(count)s events so far|other": "%(count)s個のイベントを取得しました", "Processing event %(number)s out of %(total)s": "%(total)s個のうち%(number)s個のイベントを処理しています", - "Error fetching file": "ファイルを取得する際のエラー", + "Error fetching file": "ファイルの取得中にエラーが発生しました", "Exported %(count)s events in %(seconds)s seconds|one": "%(count)s個のイベントを%(seconds)s秒でエクスポートしました", "Exported %(count)s events in %(seconds)s seconds|other": "%(count)s個のイベントを%(seconds)s秒でエクスポートしました", "Fetched %(count)s events in %(seconds)ss|other": "%(count)s個のイベントを%(seconds)s秒で取得しました", "That's fine": "問題ありません", "Your new device is now verified. Other users will see it as trusted.": "端末が認証されました。他のユーザーには「信頼済」として表示されます。", - "Your new device is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "端末が認証されました。暗号化されたメッセージにアクセスすることができます。また、端末は他のユーザーに「信頼済」として表示されます。", + "Your new device is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "新しい端末が認証されました。端末は暗号化されたメッセージにアクセスすることができます。また、端末は他のユーザーに「信頼済」として表示されます。", "Verify with Security Key": "セキュリティーキーで認証", "Verify with Security Key or Phrase": "セキュリティーキーあるいはセキュリティーフレーズで認証", "A new Security Phrase and key for Secure Messages have been detected.": "新しいセキュリティーフレーズと、セキュアメッセージの鍵が検出されました。", @@ -2682,7 +2682,7 @@ "<%(count)s spaces>|other": "<%(count)s個のスペース>", "Create key backup": "鍵のバックアップを作成", "My current location": "自分の現在の位置情報", - "My live location": "自分の現在の位置情報(ライブ)", + "My live location": "自分の位置情報(ライブ)", "What location type do you want to share?": "どのような種類の位置情報を共有したいですか?", "Match system": "システムに合致", "We couldn't send your location": "位置情報を送信できませんでした", @@ -2718,8 +2718,8 @@ "Write something...": "記入してください…", "Based on %(count)s votes|one": "%(count)s個の投票に基づく途中結果", "Based on %(count)s votes|other": "%(count)s個の投票に基づく途中結果", - "Final result based on %(count)s votes|one": "%(count)s個の投票に基づく最終結果", - "Final result based on %(count)s votes|other": "%(count)s個の投票に基づく最終結果", + "Final result based on %(count)s votes|one": "合計%(count)s票の投票に基づく最終結果", + "Final result based on %(count)s votes|other": "合計%(count)s票の投票に基づく最終結果", "Sorry, you can't edit a poll after votes have been cast.": "投票があったアンケートは編集できません。", "%(oneUser)ssent %(count)s hidden messages|one": "%(oneUser)sが1件の非表示のメッセージを送信しました", "%(oneUser)ssent %(count)s hidden messages|other": "%(oneUser)sが%(count)s件の非表示のメッセージを送信しました", @@ -2920,8 +2920,8 @@ "Message search initialisation failed, check your settings for more information": "メッセージの検索の初期化に失敗しました。設定から詳細を確認してください", "Any of the following data may be shared:": "以下のデータが共有される可能性があります:", "%(reactors)s reacted with %(content)s": "%(reactors)sは%(content)sでリアクションしました", - "%(count)s votes cast. Vote to see the results|one": "%(count)s個の投票がありました。投票すると結果を表示します", - "%(count)s votes cast. Vote to see the results|other": "%(count)s個の投票がありました。投票すると結果を表示します", + "%(count)s votes cast. Vote to see the results|one": "合計%(count)s票。投票すると結果を確認できます", + "%(count)s votes cast. Vote to see the results|other": "合計%(count)s票。投票すると結果を確認できます", "Some encryption parameters have been changed.": "暗号化のパラメーターのいくつかが変更されました。", "The call is in an unknown state!": "通話の状態が不明です!", "Verify this device by completing one of the following:": "以下のいずれかでこの端末を認証してください:", @@ -2974,7 +2974,7 @@ "Just a heads up, if you don't add an email and forget your password, you could permanently lose access to your account.": "注意:メールアドレスを追加せずパスワードを忘れた場合、永久にアカウントにアクセスできなくなる可能性があります。", "Some characters not allowed": "使用できない文字が含まれています", "Send a sticker": "ステッカーを送信", - "Spaces are a new way to group rooms and people. What kind of Space do you want to create? You can change this later.": "スペースは、ルームや連絡先をグループ化する新しい方法です。どんなグループを作りますか?これは後から変更できます。", + "Spaces are a new way to group rooms and people. What kind of Space do you want to create? You can change this later.": "スペースは、ルームや連絡先をまとめる新しい方法です。どんなグループを作りますか?これは後から変更できます。", "Collapse quotes": "引用を折りたたむ", "Expand quotes": "引用を展開", "Click": "クリック", @@ -2987,7 +2987,7 @@ "This version of %(brand)s does not support viewing some encrypted files": "この%(brand)sのバージョンは、暗号化されたファイルの表示をサポートしていません", "This version of %(brand)s does not support searching encrypted messages": "この%(brand)sのバージョンは、暗号化されたメッセージの検索をサポートしていません", "Their device couldn't start the camera or microphone": "相手の端末はカメラ、もしくはマイクを使用できませんでした", - "We don't record or profile any account data": "私たちは、アカウントのいかなるデータも記録したり分析したりしません", + "We don't record or profile any account data": "私たちは、アカウントのいかなるデータも記録したり分析したりすることはありません", "Use an identity server to invite by email. Manage in Settings.": "IDサーバーを使うと、メールアドレスで招待できます。設定画面で管理できます。", "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "IDサーバーを使うと、メールアドレスで招待できます。既定(%(defaultIdentityServerName)s)のサーバーを使うか、設定画面で管理できます。", "Adding spaces has moved.": "スペースの追加機能は移動しました。", @@ -3010,7 +3010,7 @@ "Can't create a thread from an event with an existing relation": "既存の関係のあるイベントからスレッドを作成することはできません", "Remove them from everything I'm able to": "自分に可能な範囲で、全てのものから追放", "Remove them from specific things I'm able to": "自分に可能な範囲で、特定のものから追放", - "Make sure the right people have access. You can invite more later.": "必要な人がアクセスできるようにしましょう。後から追加で招待できます。", + "Make sure the right people have access. You can invite more later.": "正しい参加者がアクセスできるようにしましょう。後から追加で招待できます。", "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "チャットの履歴の消去を防ぐには、ログアウトする前にルームの鍵をエクスポートする必要があります。そのためには%(brand)sの新しいバージョンへと戻る必要があります", "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "このセッションのデータの消去は取り消せません。鍵がバックアップされていない限り、暗号化されたメッセージを読むことはできなくなります。", "Including %(commaSeparatedMembers)s": "%(commaSeparatedMembers)sを含む", @@ -3022,7 +3022,7 @@ "Ban them from specific things I'm able to": "自分に可能な範囲で、特定のものからブロック", "Ban them from everything I'm able to": "自分に可能な範囲で、全てのものからブロック", "If you've submitted a bug via GitHub, debug logs can help us track down the problem. ": "もしGitHubで不具合を報告した場合は、デバッグログが問題の解決に役立ちます。 ", - "Do you want to enable threads anyway?": "スレッドを有効にしますか?", + "Do you want to enable threads anyway?": "スレッド機能を有効にしますか?", "Yes, enable": "有効にする", "Live location error": "位置情報(ライブ)のエラー", "sends hearts": "ハートを送信", @@ -3039,7 +3039,7 @@ "%(value)sh": "%(value)s時", "%(value)sd": "%(value)s日", "Beta feature": "ベータ版の機能", - "Live location enabled": "位置情報が有効です", + "Live location enabled": "位置情報(ライブ)が有効です", "Jump to the given date in the timeline": "タイムラインの指定した日に移動", "Unban from space": "スペースからのブロックを解除", "Ban from space": "スペースからブロック", @@ -3047,8 +3047,6 @@ "Ban from room": "ルームからブロック", "Copy link": "リンクをコピー", "%(featureName)s Beta feedback": "%(featureName)sのベータ版のフィードバック", - "Threads are a beta feature": "スレッドはベータ版の機能です", - "Give feedback": "フィードバックを送信", "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "警告:あなたの個人情報(暗号化の鍵を含む)が、このセッションに保存されています。このセッションの使用を終了するか、他のアカウントにログインしたい場合は、そのデータを消去してください。", "The user's homeserver does not support the version of the space.": "ユーザーのホームサーバーは、このバージョンのスペースをサポートしていません。", "User may or may not exist": "ユーザーが存在するか不明です", @@ -3057,7 +3055,7 @@ "User is already in the space": "ユーザーは既にスペースに入っています", "User is already invited to the room": "ユーザーは既にルームに招待されています", "User is already invited to the space": "ユーザーは既にスペースに招待されています", - "You do not have permission to invite people to this space.": "ユーザーをこのスペースに招待する権限がありません。", + "You do not have permission to invite people to this space.": "このスペースにユーザーを招待する権限がありません。", "Failed to invite users to %(roomName)s": "ユーザーを%(roomName)sに招待するのに失敗しました", "%(value)ss": "%(value)s秒", "You can still join here.": "参加できます。", @@ -3074,12 +3072,12 @@ "Create room": "ルームを作成", "Threads help keep your conversations on-topic and easy to track.": "スレッド機能を使うと、会話のテーマを維持したり、会話を簡単に追跡したりすることができます。", "Keep discussions organised with threads.": "スレッド機能を使って、会話をまとめましょう。", - "Threads help keep conversations on-topic and easy to track. Learn more.": "スレッド機能を使うと、会話のテーマを維持したり、会話を簡単に追跡したりすることができます。詳しく知る。", + "Threads help keep conversations on-topic and easy to track. Learn more.": "スレッド機能を使うと、会話のテーマを維持したり、会話を簡単に追跡したりすることができます。詳細を確認。", "Beta feature. Click to learn more.": "ベータ版の機能です。クリックすると詳細を表示します。", "Partial Support for Threads": "スレッド機能の部分的サポート", - "Your homeserver does not currently support threads, so this feature may be unreliable. Some threaded messages may not be reliably available. Learn more.": "ホームサーバーがサポートしていないため、スレッド機能は不安定かもしれません。スレッドのメッセージは安定して表示されないおそれがあります。詳しく知る。", + "Your homeserver does not currently support threads, so this feature may be unreliable. Some threaded messages may not be reliably available. Learn more.": "ホームサーバーがサポートしていないため、スレッド機能は不安定かもしれません。スレッドのメッセージが安定して表示されないおそれがあります。詳細を表示。", "Confirm this user's session by comparing the following with their User Settings:": "ユーザー設定画面で以下を比較し、このユーザーのセッションを承認してください:", - "Confirm by comparing the following with the User Settings in your other session:": "以下をあなたの別のセッションのユーザー設定画面で比較し、承認してください:", + "Confirm by comparing the following with the User Settings in your other session:": "他のセッションのユーザー設定で、以下を比較して承認してください:", "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s. The administrators will NOT be able to read the encrypted content of this room.": "不法なコンテンツの投稿が行われ、モデレーターによる適切な管理がなされていない。\nこのルームを%(homeserver)sの管理者に報告します。ただし、このルームの暗号化されたコンテンツを、管理者に読み取ることはできません。", "This user is spamming the room with ads, links to ads or to propaganda.\nThis will be reported to the room moderators.": "ユーザーが広告や、広告・プロパガンダへのリンクのスパムを行っている。\nこのユーザーをルームのモデレーターに報告します。", "What this user is writing is wrong.\nThis will be reported to the room moderators.": "ユーザーの投稿内容が正確でない。\nこのユーザーをルームのモデレーターに報告します。", @@ -3097,7 +3095,7 @@ "Send custom account data event": "アカウントのデータイベントを送信", "Doesn't look like valid JSON.": "正しいJSONではありません。", "Failed to send event!": "イベントの送信に失敗しました!", - "Send custom state event": "カスタムステートイベントを送信", + "Send custom state event": "カスタムのステートイベントを送信", "Failed to load.": "読み込みに失敗しました。", "Client Versions": "クライアントのバージョン", "Server Versions": "サーバーのバージョン", @@ -3116,7 +3114,7 @@ "Forget this space": "このスペースの履歴を消去", "You were banned by %(memberName)s": "%(memberName)sによりブロックされました", "Something went wrong with your invite.": "招待に問題が発生しました。", - "This invite was sent to %(email)s which is not associated with your account": "この招待は、あなたのアカウントに関連付けられていない%(email)sに送信されました", + "This invite was sent to %(email)s which is not associated with your account": "この招待は、アカウントに関連付けられていないメールアドレス %(email)s に送られました", "Try again later, or ask a room or space admin to check if you have access.": "後でもう一度やり直すか、ルームまたはスペースの管理者に、アクセス権の有無を確認してください。", "Live location ended": "位置情報(ライブ)が終了しました", "Disinvite from space": "スペースへの招待を取り消す", @@ -3128,13 +3126,13 @@ "View list": "一覧を表示", "View List": "一覧を表示", "Mute microphone": "マイクをミュート", - "Unmute microphone": "ミュート解除", + "Unmute microphone": "マイクのミュートを解除", "Turn off camera": "カメラを無効にする", "Turn on camera": "カメラを有効にする", "%(user1)s and %(user2)s": "%(user1)sと%(user2)s", "Video call started in %(roomName)s. (not supported by this browser)": "ビデオ通話が%(roomName)sで開始しました。(このブラウザーではサポートされていません)", "Video call started in %(roomName)s.": "ビデオ通話が%(roomName)sで開始しました。", - "You need to be able to kick users to do that.": "それをするためにユーザーをキックできる必要があります。", + "You need to be able to kick users to do that.": "それを行うにはユーザーをキックする権限が必要です。", "Empty room (was %(oldName)s)": "空のルーム(以前の名前は%(oldName)s)", "Inviting %(user)s and %(count)s others|one": "%(user)sと1人を招待しています", "Inviting %(user)s and %(count)s others|other": "%(user)sと%(count)s人を招待しています", @@ -3154,15 +3152,15 @@ "Remember my selection for this widget": "このウィジェットに関する選択を記憶", "Unable to load commit detail: %(msg)s": "コミットの詳細を読み込めません:%(msg)s", "Capabilities": "能力", - "Toggle Code Block": "コードブロックを切り替える", + "Toggle Code Block": "コードブロックの表示を切り替える", "Toggle Link": "リンクを切り替える", "New group call experience": "グループ通話の新しい経験", "Element Call video rooms": "Element Callのビデオ通話ルーム", "Send read receipts": "開封確認メッセージを送信", - "Explore public spaces in the new search dialog": "新しい検索ダイアログで公開スペースを探索", + "Explore public spaces in the new search dialog": "新しい検索ダイアログで公開スペースを探す", "Yes, the chat timeline is displayed alongside the video.": "はい、会話のタイムラインが動画と並んで表示されます。", "Can I use text chat alongside the video call?": "テキストによる会話も行えますか?", - "Use the “+” button in the room section of the left panel.": "左のパネルにあるルームのセクションの「+」ボタンで作成できます。", + "Use the “+” button in the room section of the left panel.": "左のパネルにあるルームのセクションの「+」ボタンで作成できます。", "How can I create a video room?": "ビデオ通話ルームの作成方法", "Video rooms are always-on VoIP channels embedded within a room in %(brand)s.": "ビデオ通話ルームは、%(brand)sのルームに埋め込まれている、VoIPが常時有効のチャンネルです。", "A new way to chat over voice and video in %(brand)s.": "%(brand)sで音声と動画により会話する新しい方法です。", @@ -3170,14 +3168,14 @@ "You were disconnected from the call. (Error: %(message)s)": "通話から切断されました。(エラー:%(message)s)", "Connection lost": "接続が切断されました", "Video": "動画", - "Room info": "ルーム情報", - "Receive push notifications on this session.": "このセッションでプッシュ通知を受信します。", + "Room info": "ルームの情報", + "Receive push notifications on this session.": "このセッションでプッシュ通知を受信。", "Push notifications": "プッシュ通知", "Sign out of this session": "このセッションからサインアウト", - "Last activity": "最後のアクティビティ", - "Other sessions": "他のセッション", + "Last activity": "直近のアクティビティー", + "Other sessions": "その他のセッション", "Current session": "現在のセッション", - "Our new sessions manager provides better visibility of all your sessions, and greater control over them including the ability to remotely toggle push notifications.": "新しいセッションマネージャーは、全セッションを見やすくし、遠隔からプッシュ通知を切り替えるなど、セッションを管理しやすくします。", + "Our new sessions manager provides better visibility of all your sessions, and greater control over them including the ability to remotely toggle push notifications.": "新しいセッションマネージャーを使用すると、全てのセッションが見えやすくなり、遠隔からプッシュ通知を切り替えるなど、セッションをより容易に管理できるようになります。", "New session manager": "新しいセッションマネージャー", "Use new session manager": "新しいセッションマネージャーを使用", "Video room": "ビデオ通話ルーム", @@ -3199,8 +3197,8 @@ "Copy invite link": "招待リンクをコピー", "Show spaces": "スペースを表示", "Show rooms": "ルームを表示", - "Interactively verify by emoji": "絵文字によるインタラクティブ認証", - "Manually verify by text": "テキストによる手動認証", + "Interactively verify by emoji": "絵文字によるインタラクティブな認証", + "Manually verify by text": "テキストを使って手動で認証", "Checking...": "確認中...", "Modal Widget": "モーダルウィジェット", "You will no longer be able to log in": "ログインできなくなります", @@ -3208,8 +3206,8 @@ "Help": "ヘルプ", "Minimise": "最小化", "Underline": "下線", - "Italic": "イタリック", - "Joining…": "参加中…", + "Italic": "斜字体", + "Joining…": "参加しています…", "Show Labs settings": "ラボ設定を表示", "Private room": "非公開ルーム", "Video call (Jitsi)": "ビデオ通話(Jitsi)", @@ -3220,10 +3218,10 @@ "All": "全て", "Verified session": "認証済のセッション", "IP address": "IPアドレス", - "Browser": "ブラウザ", + "Browser": "ブラウザー", "Version": "バージョン", "Click the button below to confirm your identity.": "本人確認のため下のボタンをクリックしてください。", - "Ignore user": "ユーザーを無視する", + "Ignore user": "ユーザーを無視", "Proxy URL (optional)": "プロキシーURL(任意)", "Proxy URL": "プロキシーURL", "%(count)s Members|other": "%(count)s人の参加者", @@ -3242,22 +3240,22 @@ "The request was cancelled.": "リクエストはキャンセルされました。", "An unexpected error occurred.": "予期しないエラーが起こりました。", "Devices connected": "接続中の端末", - "Check that the code below matches with your other device:": "下のコードが他の端末と一致するか確認:", - "Connecting...": "接続中...", + "Check that the code below matches with your other device:": "以下のコードが他の端末と一致していることを確認してください:", + "Connecting...": "接続しています…", "Use lowercase letters, numbers, dashes and underscores only": "小文字、数字、ダッシュ、アンダースコアのみを使ってください", "Your server does not support showing space hierarchies.": "あなたのサーバーはスペースの階層表示をサポートしていません。", - "That e-mail address or phone number is already in use.": "そのメールアドレスまたは電話番号はすでに使われています。", + "That e-mail address or phone number is already in use.": "そのメールアドレスまたは電話番号は既に使われています。", "Great! This Security Phrase looks strong enough.": "すばらしい! このセキュリティーフレーズは十分に強力なようです。", "%(downloadButton)s or %(copyButton)s": "%(downloadButton)sまたは%(copyButton)s", - "Voice broadcast": "音声ブロードキャスト", + "Voice broadcast": "音声配信", "Live": "ライブ", - "pause voice broadcast": "音声ブロードキャストを一時停止", - "resume voice broadcast": "音声ブロードキャストを再開", - "play voice broadcast": "音声ブロードキャストを再生", - "Yes, stop broadcast": "はい、ブロードキャストを停止します", - "Stop live broadcasting?": "ライブブロードキャストを停止しますか?", - "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "他の人がすでに音声ブロードキャストを録音しています。新しく始めるにはその音声ブロードキャストが終わるのを待ってください。", - "Can't start a new voice broadcast": "新しい音声ブロードキャストを開始できません", + "pause voice broadcast": "音声配信を一時停止", + "resume voice broadcast": "音声配信を再開", + "play voice broadcast": "音声配信を再生", + "Yes, stop broadcast": "はい、配信を停止します", + "Stop live broadcasting?": "ライブ配信を停止しますか?", + "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "他の人が既に音声配信を録音しています。新しく始めるには音声配信が終わるまで待機してください。", + "Can't start a new voice broadcast": "新しい音声配信を開始できません", "%(minutes)sm %(seconds)ss left": "残り%(minutes)s分%(seconds)s秒", "%(hours)sh %(minutes)sm %(seconds)ss left": "残り%(hours)s時間 %(minutes)s分%(seconds)s秒", "Exit fullscreen": "フルスクリーンを解除", @@ -3274,18 +3272,18 @@ "Filter devices": "端末を絞り込む", "You made it!": "できました!", "Find and invite your friends": "友達を見つけて招待する", - "Sorry — this call is currently full": "すみませんーこの通話は現在満員です", + "Sorry — this call is currently full": "すみません ― この通話は現在満員です", "Enable hardware acceleration": "ハードウェアアクセラレーションを有効にする", "Allow Peer-to-Peer for 1:1 calls": "1対1通話でP2Pを使用する", "Enter fullscreen": "フルスクリーンにする", "Error downloading image": "画像をダウンロードする際のエラー", "Unable to show image due to error": "エラーにより画像を表示できません", - "Share your activity and status with others.": "アクティビティやステータスを他の人と共有します。", + "Share your activity and status with others.": "アクティビティーやステータスを他の人と共有します。", "Presence": "プレゼンス(ステータス表示)", "Reset event store?": "イベントストアをリセットしますか?", "Your firewall or anti-virus is blocking the request.": "ファイアーウォールまたはアンチウイルスソフトがリクエストをブロックしています。", "We're creating a room with %(names)s": "%(names)sという名前のルームを作成中", - "Enable notifications for this account": "このアカウントでは通知を有効にする", + "Enable notifications for this account": "このアカウントで通知を有効にする", "Welcome to %(brand)s": "%(brand)sにようこそ", "Find your co-workers": "同僚を見つける", "Start your first chat": "最初のチャットを始める", @@ -3304,20 +3302,20 @@ "Show shortcut to welcome checklist above the room list": "ルームリストの上に最初に設定すべき項目リストへのショートカットを表示", "Notifications silenced": "無音で通知", "Sound on": "サウンド再生", - "You are already recording a voice broadcast. Please end your current voice broadcast to start a new one.": "すでに音声ブロードキャストを録音中です。新しく始めるには今の音声ブロードキャストを終了してください。", + "You are already recording a voice broadcast. Please end your current voice broadcast to start a new one.": "既に音声配信を録音しています。新しく始めるには今の音声配信を終了してください。", "Close sidebar": "サイドバーを閉じる", "You are sharing your live location": "位置情報(ライブ)を共有中です", "Stop and close": "停止して閉じる", "Session details": "セッションの詳細", "Operating system": "オペレーティングシステム", - "Model": "モデル", + "Model": "形式", "Device": "端末", "URL": "URL", "Application": "アプリケーション", - "Renaming sessions": "セッション名を変更", + "Renaming sessions": "セッション名を変更しています", "Call type": "通話の種類", "You do not have sufficient permissions to change this.": "これを変更するのに必要な権限を持っていません。", - "Great, that'll help people know it's you": "素晴らしい、他の人があなただと気づく助けになるでしょう", + "Great, that'll help people know it's you": "すばらしい、他の人があなただと気づく助けになるでしょう", "Show HTML representation of room topics": "ルームのトピックをHTML形式で表示", "Reset bearing to north": "北向きにリセット", "Saved Items": "保存済み項目", @@ -3329,7 +3327,7 @@ "Seen by %(count)s people|one": "%(count)s人が閲覧済", "Seen by %(count)s people|other": "%(count)s人が閲覧済", "%(members)s and %(last)s": "%(members)sと%(last)s", - "Hide formatting": "フォーマットを非表示", + "Hide formatting": "フォーマットを表示しない", "Show formatting": "フォーマットを表示", "Updated %(humanizedUpdateTime)s": "%(humanizedUpdateTime)sに更新", "Joining the beta will reload %(brand)s.": "ベータ版に参加すると%(brand)sをリロードします。", @@ -3356,7 +3354,7 @@ "Edit topic": "トピックを編集", "Un-maximise": "最大化をやめる", "%(displayName)s's live location": "%(displayName)sの位置情報(ライブ)", - "You need to have the right permissions in order to share locations in this room.": "このルームで位置情報を共有するには適切な権限を持っていることが必要です。", + "You need to have the right permissions in order to share locations in this room.": "このルームでの位置情報の共有には適切な権限が必要です。", "To view, please enable video rooms in Labs first": "表示するには、まずラボのビデオ通話ルームを有効にしてください", "Are you sure you're at the right place?": "本当に問題ない場所にいますか?", "Unknown session type": "セッションタイプ不明", @@ -3364,15 +3362,15 @@ "Mobile session": "モバイル端末セッション", "Desktop session": "デスクトップセッション", "Unverified": "未認証", - "Verified": "認証済み", - "Can’t start a call": "呼び出しを開始できません", + "Verified": "認証済", + "Can’t start a call": "通話を開始できません", "Failed to read events": "イベント受信に失敗しました", "Failed to send event": "イベント送信に失敗しました", "Show details": "詳細を表示", "Hide details": "詳細を非表示にする", - "Security recommendations": "セキュリティーに関する推奨", + "Security recommendations": "セキュリティーに関する勧告", "Unverified session": "未認証のセッション", - "Community ownership": "コミュニティーの所有者", + "Community ownership": "コミュニティーを所有", "Text": "テキスト", "Link": "リンク", "Freedom": "自由", @@ -3389,7 +3387,7 @@ "Connection": "接続", "Voice processing": "音声を処理しています", "Automatically adjust the microphone volume": "マイクの音量を自動的に調節", - "For best security, verify your sessions and sign out from any session that you don't recognize or use anymore.": "最高のセキュリティーを達成するには、セッションを認証し、不明なセッションや利用していないセッションからサインアウトしてください。", + "For best security, verify your sessions and sign out from any session that you don't recognize or use anymore.": "セキュリティーを最大限に高めるには、セッションを認証し、不明なセッションや利用していないセッションからサインアウトしてください。", "Are you sure you want to sign out of %(count)s sessions?|one": "%(count)s個のセッションからサインアウトしてよろしいですか?", "Are you sure you want to sign out of %(count)s sessions?|other": "%(count)s個のセッションからサインアウトしてよろしいですか?", "Bulk options": "一括オプション", @@ -3399,12 +3397,11 @@ "Yes, end my recording": "はい、録音を終了してください", "If you start listening to this live broadcast, your current live broadcast recording will be ended.": "このライブ配信の視聴を開始すると、現在のライブ配信の録音は終了します。", "Listen to live broadcast?": "ライブ配信を視聴しますか?", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "ライブ配信を終了してよろしいですか?配信を終了し、録音をこのルームで利用できるよう設定します。", "%(senderName)s ended a voice broadcast": "%(senderName)sが音声配信を終了しました", "You ended a voice broadcast": "音声配信を終了しました", "%(senderName)s ended a voice broadcast": "%(senderName)sが音声配信を終了しました", "You ended a voice broadcast": "音声配信を終了しました", - "You can’t start a call as you are currently recording a live broadcast. Please end your live broadcast in order to start a call.": "ライブ配信の録音中のため通話を開始できません。通話を開始するにはライブ配信を終了してください。", + "You can’t start a call as you are currently recording a live broadcast. Please end your live broadcast in order to start a call.": "ライブ配信を録音しているため、通話を開始できません。通話を開始するには、ライブ配信を終了してください。", "Unfortunately we're unable to start a recording right now. Please try again later.": "録音を開始できません。後でもう一度やり直してください。", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "このルームで音声配信を開始する権限がありません。ルームの管理者に連絡して権限の付与を依頼してください。", "%(senderName)s started a voice broadcast": "%(senderName)sが音声配信を開始しました", @@ -3440,7 +3437,6 @@ "Hide notification dot (only display counters badges)": "通知のドットを非表示にする(カウンターのバッジのみを表示)", "Rust cryptography implementation": "Rustによる暗号の実装", "Right panel stays open": "右のパネルを開いたままにする", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "メッセージの入力欄でマークダウンの代わりにリッチテキストを使用。プレーンテキストモードは近日公開。", "Toggle attribution": "属性を切り替える", "Buffering…": "バッファリングしています…", "Go live": "ライブ配信", @@ -3519,5 +3515,153 @@ "No one will be able to reuse your username (MXID), including you: this username will remain unavailable": "あなたのユーザー名(MXID)は、あなた自身を含めて誰も再利用することができなくなります", "You will leave all rooms and DMs that you are in": "全てのルームとダイレクトメッセージから退出します", "Confirm that you would like to deactivate your account. If you proceed:": "アカウントを非アクティブ化したいことを確認してください。継続すると、", - "You will not be able to reactivate your account": "アカウントを再開できなくなります" + "You will not be able to reactivate your account": "アカウントを再開できなくなります", + "Completing set up of your new device": "新しい端末の設定を完了しています", + "Waiting for device to sign in": "端末のサインインを待機しています", + "The request was declined on the other device.": "リクエストはもう一方の端末で拒否されました。", + "When you sign out, these keys will be deleted from this device, which means you won't be able to read encrypted messages unless you have the keys for them on your other devices, or backed them up to the server.": "サインアウトすると、これらの鍵はこの端末から削除され、他の端末に使用できる鍵がなかったり、サーバーにバックアップしたりしているのでない限り、暗号化されたメッセージを読むことができなくなります。", + "%(brand)s encountered an error during upload of:": "以下のアップロードの際にエラーが発生しました:", + "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "以下のユーザーは存在しないか不正であるため、招待できません:%(csvNames)s", + "A call can only be transferred to a single user.": "通話は一人のユーザーにしか転送できません。", + "We couldn't invite those users. Please check the users you want to invite and try again.": "ユーザーを招待できませんでした。招待したいユーザーを確認して、もう一度試してください。", + "Open room": "ルームを開く", + "Settings explorer": "設定を調査", + "Explore account data": "アカウントデータを調査", + "Explore room account data": "ルームのアカウントデータを調査", + "Explore room state": "ルームの状態を調査", + "Send custom timeline event": "カスタムタイムラインイベントを送信", + "Hide my messages from new joiners": "自分のメッセージを新しい参加者に表示しない", + "Messages in this chat will be end-to-end encrypted.": "このチャットのメッセージはエンドツーエンドで暗号化されます。", + "You don't have permission to share locations": "位置情報の共有に必要な権限がありません", + "Unverified sessions are sessions that have logged in with your credentials but have not been cross-verified.": "未認証のセッションは、認証情報でログインされていますが、クロス認証は行われていないセッションです。", + "You should make especially certain that you recognise these sessions as they could represent an unauthorised use of your account.": "これらのセッションは、アカウントの不正使用を示している可能性があるため、注意して確認してください。", + "This means that you have all the keys needed to unlock your encrypted messages and confirm to other users that you trust this session.": "認証済のセッションには、暗号化されたメッセージを復号化する際に使用する全ての鍵が備わっています。また、他のユーザーに対しては、あなたがこのセッションを信頼していることが表示されます。", + "Verified sessions are anywhere you are using this account after entering your passphrase or confirming your identity with another verified session.": "認証済のセッションは、パスフレーズの入力、または他の認証済のセッションで本人確認を行ったセッションです。", + "Removing inactive sessions improves security and performance, and makes it easier for you to identify if a new session is suspicious.": "使用していないセッションを削除すると、セキュリティーとパフォーマンスが改善されます。また、新しいセッションが疑わしい場合に、より容易に特定できるようになります。", + "Inactive sessions are sessions you have not used in some time, but they continue to receive encryption keys.": "非アクティブなセッションは、しばらく使用されていませんが、暗号鍵を受信しているセッションです。", + "Feeling experimental? Try out our latest ideas in development. These features are not finalised; they may be unstable, may change, or may be dropped altogether. Learn more.": "実験に参加したいですか?開発中のアイディアを試してください。これらの機能は完成していません。不安定な可能性や変更される可能性、また、開発が中止される可能性もあります。詳細を確認。", + "Upcoming features": "今後の機能", + "What's next for %(brand)s? Labs are the best way to get things early, test out new features and help shape them before they actually launch.": "%(brand)sのラボでは、最新の機能をいち早く使用したり、テストしたりできるほか、機能が実際にリリースされる前の改善作業を支援することができます。", + "Have greater visibility and control over all your sessions.": "改善したセッションの管理画面を使用します。", + "Verify your current session for enhanced secure messaging.": "より安全なメッセージのやりとりのために、現在のセッションを認証しましょう。", + "Your current session is ready for secure messaging.": "現在のセッションは安全なメッセージのやりとりに対応しています。", + "Inactive for %(inactiveAgeDays)s+ days": "%(inactiveAgeDays)s日以上使用されていません", + "Inactive sessions": "非アクティブなセッション", + "For best security, sign out from any session that you don't recognize or use anymore.": "セキュリティーを最大限に高めるには、不明なセッションや利用していないセッションからサインアウトしてください。", + "Verify your sessions for enhanced secure messaging or sign out from those you don't recognize or use anymore.": "セッションを認証すると、より安全なメッセージのやりとりが可能になります。見覚えのない、または使用していないセッションがあれば、サインアウトしましょう。", + "Improve your account security by following these recommendations.": "以下の勧告に従い、アカウントのセキュリティーを改善しましょう。", + "Turn off to disable notifications on all your devices and sessions": "オフにすると、全ての端末とセッションで通知が無効になります", + "Enable notifications for this device": "この端末で通知を有効にする", + "Deactivating your account is a permanent action — be careful!": "アカウントを無効化すると取り消せません。ご注意ください!", + "Start messages with /plain to send without markdown and /md to send with.": "/plainを先頭に置くとマークダウンを無効にしてメッセージを送信し、/mdを先頭に置くとマークダウンを有効にしてメッセージを送信。", + "Verify your email to continue": "続行するには電子メールを認証してください", + "Did not receive it?": "受け取りませんでしたか?", + "Verification link email resent!": "認証リンクの電子メールを再送しました!", + "Wrong email address?": "メールアドレスが正しくないですか?", + "Re-enter email address": "メールアドレスを再入力", + "For best security and privacy, it is recommended to use Matrix clients that support encryption.": "セキュリティーとプライバシー保護の観点から、暗号化をサポートしているMatrixのクライアントの使用を推奨します。", + "Sign out of %(count)s sessions|other": "%(count)s件のセッションからサインアウト", + "Sign out of %(count)s sessions|one": "%(count)s件のセッションからサインアウト", + "Unable to play this voice broadcast": "この音声配信を再生できません", + "Registration token": "登録用トークン", + "Enter a registration token provided by the homeserver administrator.": "ホームサーバーの管理者から提供された登録用トークンを入力してください。", + "The homeserver doesn't support signing in another device.": "ホームサーバーは他の端末でのサインインをサポートしていません。", + "Select 'Scan QR code'": "「QRコードをスキャン」を選択してください", + "Scan the QR code below with your device that's signed out.": "サインアウトした端末で以下のQRコードをスキャンしてください。", + "We were unable to start a chat with the other user.": "他のユーザーをチャットを開始できませんでした。", + "Error starting verification": "認証を開始する際にエラーが発生しました", + "You can use this device to sign in a new device with a QR code. You will need to scan the QR code shown on this device with your device that's signed out.": "この端末を使い、QRコードをスキャンして新しい端末でサインインできます。この端末に表示されるQRコードを、サインインしていない端末でスキャンしてください。", + "Inactive for %(inactiveAgeDays)s days or longer": "%(inactiveAgeDays)s日以上使用されていません", + "Inactive": "非アクティブ", + "Not ready for secure messaging": "安全なメッセージのやりとりの準備ができていません", + "Ready for secure messaging": "安全なメッセージのやりとりの準備ができました", + "No verified sessions found.": "認証済のセッションはありません。", + "Consider signing out from old sessions (%(inactiveAgeDays)s days or older) you don't use anymore.": "使用していない古いセッション(%(inactiveAgeDays)s日以上使用されていません)からサインアウトすることを検討してください。", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "デバッグログは、ユーザー名、訪問済のルームのIDやエイリアス、最後に使用したユーザーインターフェース上の要素、他のユーザーのユーザー名などを含むアプリケーションの使用状況データを含みます。メッセージは含まれません。", + "You will not receive push notifications on other devices until you sign back in to them.": "再びサインインするまで、他の端末でプッシュ通知は送信されません。", + "If you want to retain access to your chat history in encrypted rooms you should first export your room keys and re-import them afterwards.": "暗号化されたルームの会話の履歴へのアクセスを維持したい場合は、ルームの鍵をエクスポートし、後で再インポートしてください。", + "Other users in direct messages and rooms that you join are able to view a full list of your sessions.": "あなたが参加するダイレクトメッセージとルームの他のユーザーは、あなたのセッションの一覧を閲覧できます。", + "Please be aware that session names are also visible to people you communicate with.": "セッション名は連絡先にも表示されます。", + "This session is ready for secure messaging.": "このセッションは安全なメッセージのやりとりの準備ができています。", + "No inactive sessions found.": "使用していないセッションはありません。", + "No unverified sessions found.": "未認証のセッションはありません。", + "It’s what you’re here for, so lets get to it": "早速初めましょう", + "Don’t miss a thing by taking %(brand)s with you": "%(brand)sを持ち歩いて最新の情報を見逃さないようにしましょう", + "Get stuff done by finding your teammates": "同僚を見つけて仕事を片付けましょう", + "Temporary implementation. Locations persist in room history.": "一時的な実装。位置情報がルームの履歴に残ります。", + "Complete these to get the most out of %(brand)s": "これらを完了し、%(brand)sを最大限に利用しましょう", + "With free end-to-end encrypted messaging, and unlimited voice and video calls, %(brand)s is a great way to stay in touch.": "自由なエンドツーエンド暗号化のメッセージのやり取りと音声・ビデオ通話で、%(brand)sは連絡を取るのに最適な手段です。", + "Decrypted source unavailable": "復号化したソースコードが利用できません", + "Thread root ID: %(threadRootId)s": "スレッドのルートID:%(threadRootId)s", + "Reset your password": "パスワードを再設定", + "Sign out of all devices": "全ての端末からサインアウト", + "Confirm new password": "新しいパスワードを確認", + "Currently removing messages in %(count)s rooms|one": "現在%(count)s個のルームのメッセージを削除しています", + "Currently removing messages in %(count)s rooms|other": "現在%(count)s個のルームのメッセージを削除しています", + "Verify or sign out from this session for best security and reliability.": "セキュリティーと安定性の観点から、このセッションを認証するかサインアウトしてください。", + "Review and approve the sign in": "サインインを確認して承認", + "By approving access for this device, it will have full access to your account.": "この端末へのアクセスを許可すると、あなたのアカウントに完全にアクセスできるようになります。", + "The other device isn't signed in.": "もう一方の端末はサインインしていません。", + "The other device is already signed in.": "もう一方のデバイスは既にサインインしています。", + "%(homeserver)s will send you a verification link to let you reset your password.": "%(homeserver)sが、パスワードの再設定用の認証リンクを送信します。", + "Follow the instructions sent to %(email)s": "%(email)sに送信される指示に従ってください", + "Enter your email to reset password": "パスワードを再設定するには、あなたの電子メールを入力してください", + "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "セキュアメッセージリカバリーを設定しない場合、ログアウトまたは他のセッションを使用した際に、暗号化したメッセージの履歴を復元することができなくなります。", + "Set up Secure Message Recovery": "セキュアメッセージリカバリーを設定", + "Your old messages will still be visible to people who received them, just like emails you sent in the past. Would you like to hide your sent messages from people who join rooms in the future?": "あなたの古いメッセージは、それを受信した人には表示され続けます。これは電子メールの場合と同様です。あなたが送信したメッセージを今後のルームの参加者に表示しないようにしますか?", + "Please note: this is a labs feature using a temporary implementation. This means you will not be able to delete your location history, and advanced users will be able to see your location history even after you stop sharing your live location with this room.": "注意:これは一時的な実装による試験機能です。位置情報の履歴を削除することはできません。高度なユーザーは、あなたがこのルームで位置情報(ライブ)の共有を停止した後でも、あなたの位置情報の履歴を閲覧することができます。", + "Upgrading this room requires closing down the current instance of the room and creating a new room in its place. To give room members the best possible experience, we will:": "このルームをアップグレードするには、現在のルームを閉鎖し、新しくルームを作成する必要があります。ルームの参加者のため、アップグレードの際に以下を行います。", + "Resetting your password on this homeserver will cause all of your devices to be signed out. This will delete the message encryption keys stored on them, making encrypted chat history unreadable.": "このホームサーバーでパスワードをリセットすると、あなたの端末は全てサインアウトします。端末に保存されているメッセージの暗号鍵が削除され、暗号化された会話の履歴を読むことができなくなります。", + "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.": "実行していたこと、ルームID、ユーザーIDなど、問題を分析するのに役立つ追加情報があれば、それをここに含めてください。", + "Changing your password on this homeserver will cause all of your other devices to be signed out. This will delete the message encryption keys stored on them, and may make encrypted chat history unreadable.": "このホームサーバーでパスワードを変更すると、あなたの端末は全てサインアウトします。端末に保存されているメッセージの暗号鍵が削除され、暗号化された会話の履歴を読むことができなくなります。", + "Reminder: Your browser is unsupported, so your experience may be unpredictable.": "注意:ブラウザーはサポートされていません。期待通りに動作しない可能性があります。", + "Invalid identity server discovery response": "IDサーバーのディスカバリー(発見)に関する不正な応答です", + "Show: %(instance)s rooms (%(server)s)": "表示:%(instance)s ルーム(%(server)s)", + "Manage account": "アカウントを管理", + "Signing out your devices will delete the message encryption keys stored on them, making encrypted chat history unreadable.": "端末からサインアウトすると、暗号化の鍵が削除され、暗号化された会話の履歴を読むことができなくなります。", + "If you want to retain access to your chat history in encrypted rooms, set up Key Backup or export your message keys from one of your other devices before proceeding.": "暗号化されたルームの会話の履歴を保ちたい場合は、続行する前に、鍵のバックアップを設定するか、他の端末からメッセージの鍵をエクスポートしてください。", + "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "この端末を認証すると信頼済に設定されます。あなたを認証したユーザーはこの端末を信頼することができるようになります。", + "You can't disable this later. The room will be encrypted but the embedded call will not.": "これを後で無効にすることはできません。ルームは暗号化されますが、埋め込まれる通話は暗号化されません。", + "Message pending moderation: %(reason)s": "メッセージはモデレートの保留中です:%(reason)s", + "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to the person who invited you.": "招待の検証を試みる際にエラー(%(errcode)s)が発生しました。あなたを招待した人にこの情報を渡してみてください。", + "Developer command: Discards the current outbound group session and sets up new Olm sessions": "管理者コマンド:現在のアウトバウンドグループセッションを破棄して、新しいOlmセッションを設定", + "Currently, %(count)s spaces have access|one": "現在1個のスペースがアクセスできます", + "You can also ask your homeserver admin to upgrade the server to change this behaviour.": "この動作を変更したい場合は、あなたのホームサーバーの管理者にサーバーをアップグレードするように依頼してください。", + "Uncheck if you also want to remove system messages on this user (e.g. membership change, profile change…)": "このユーザーに関するシステムメッセージ(メンバーシップの変更、プロフィールの変更など)も削除したい場合は、チェックを外してください", + "You are about to remove %(count)s messages by %(user)s. This will remove them permanently for everyone in the conversation. Do you wish to continue?|one": "%(user)sによる%(count)s件のメッセージを削除しようとしています。これは会話に参加している全員からメッセージを永久に削除します。続行してよろしいですか?", + "You are about to remove %(count)s messages by %(user)s. This will remove them permanently for everyone in the conversation. Do you wish to continue?|other": "%(user)sによる%(count)s件のメッセージを削除しようとしています。これは会話に参加している全員からメッセージを永久に削除します。続行してよろしいですか?", + "This provides them with confidence that they are really speaking to you, but it also means they can see the session name you enter here.": "セッションの一覧から、相手はあなたとやり取りしていることを確かめることができます。なお、あなたがここに入力するセッション名は相手に対して表示されます。", + "Your message wasn't sent because this homeserver has been blocked by its administrator. Please contact your service administrator to continue using the service.": "このホームサーバーが管理者によりブロックされているため、メッセージを送信できませんでした。サービスを引き続き使用するには、サービスの管理者にお問い合わせください。", + "You may want to try a different search or check for typos.": "別のキーワードで検索するか、キーワードが正しいか確認してください。", + "Too many attempts in a short time. Wait some time before trying again.": "再試行の数が多すぎます。少し待ってから再度試してください。", + "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.": "すべての端末からログアウトしているため、プッシュ通知を受け取れません。通知を再び有効にするには、各端末でサインインしてください。", + "Invalid homeserver discovery response": "ホームサーバーのディスカバリー(発見)に関する不正な応答です", + "Failed to get autodiscovery configuration from server": "自動発見の設定をサーバーから取得できませんでした", + "Unable to query for supported registration methods.": "サポートしている登録方法を照会できません。", + "Sign in instead": "サインイン", + "We need to know it’s you before resetting your password.\n Click the link in the email we just sent to %(email)s": "パスワードを再設定する前に本人確認を行います。\n %(email)sに送信した電子メールにあるリンクをクリックしてください。", + "Ignore %(user)s": "%(user)sを無視", + "Indent decrease": "インデントを減らす", + "Indent increase": "インデントを増やす", + "Join the room to participate": "ルームに参加", + "Threads timeline": "スレッドのタイムライン", + "Are you sure you want to stop your live broadcast? This will end the broadcast and the full recording will be available in the room.": "ライブ配信を終了してよろしいですか?配信を終了し、録音をこのルームで利用できるよう設定します。", + "Consult first": "初めに相談", + "Enable 'Manage Integrations' in Settings to do this.": "これを行うには設定から「インテグレーションを管理」を有効にしてください。", + "Notifications debug": "通知のデバッグ", + "Help us identify issues and improve %(analyticsOwner)s by sharing anonymous usage data. To understand how people use multiple devices, we'll generate a random identifier, shared by your devices.": "%(analyticsOwner)sの改善と課題抽出のために、匿名の使用状況データの送信をお願いします。複数の端末での使用を分析するために、あなたの全端末共通のランダムな識別子を生成します。", + "We'll help you get connected.": "みんなと繋がる手助けをいたします。", + "Who will you chat to the most?": "誰と最もよく会話しますか?", + "Share for %(duration)s": "%(duration)sの間共有", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "このユーザーのメッセージと招待を非表示にします。無視してよろしいですか?", + "Send your first message to invite to chat": "最初のメッセージを送信すると、を会話に招待", + "Consulting with %(transferTarget)s. Transfer to %(transferee)s": "%(transferTarget)sと相談しています。%(transferee)sに転送", + "Polls history": "アンケートの履歴", + "unknown": "不明", + "Red": "赤色", + "Grey": "灰色", + "Unable to decrypt voice broadcast": "音声配信を復号化できません", + "Sender: ": "送信者: ", + "Room status": "ルームの状態", + "There are no polls in this room": "このルームにアンケートはありません" } diff --git a/src/i18n/strings/lo.json b/src/i18n/strings/lo.json index ccb486f7a8..8b810db117 100644 --- a/src/i18n/strings/lo.json +++ b/src/i18n/strings/lo.json @@ -962,8 +962,6 @@ "Tried to load a specific point in this room's timeline, but was unable to find it.": "ພະຍາຍາມໂຫຼດຈຸດສະເພາະໃນທາມລາຍຂອງຫ້ອງນີ້, ແຕ່ບໍ່ສາມາດຊອກຫາມັນໄດ້.", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "ພະຍາຍາມໂຫຼດຈຸດສະເພາະຢູ່ໃນທາມລາຍຂອງຫ້ອງນີ້, ແຕ່ທ່ານບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ເບິ່ງຂໍ້ຄວາມທີ່ເປັນຄໍາຖາມ.", "Thread": "ກະທູ້", - "Give feedback": "ໃຫ້ຄໍາຄິດເຫັນ", - "Threads are a beta feature": "ກະທູ້ແມ່ນຄຸນສົມບັດຂອງເບຕ້າ", "Keep discussions organised with threads": "ຮັກສາການສົນທະນາທີ່ມີການຈັດລະບຽບ", "Tip: Use “%(replyInThread)s” when hovering over a message.": "ເຄັດລັບ: ໃຊ້ “%(replyInThread)s” ເມື່ອເລື່ອນໃສ່ຂໍ້ຄວາມ.", "Threads help keep your conversations on-topic and easy to track.": "ກະທູ້ຊ່ວຍໃຫ້ການສົນທະນາຂອງທ່ານຢູ່ໃນຫົວຂໍ້ ແລະ ງ່າຍຕໍ່ການຕິດຕາມ.", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 41ec618270..a48c3c2c04 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -3201,8 +3201,6 @@ "Toggle Link": "Koppeling wisselen", "Accessibility": "Toegankelijkheid", "Event ID: %(eventId)s": "Gebeurtenis ID: %(eventId)s", - "Give feedback": "Feedback geven", - "Threads are a beta feature": "Threads zijn een bètafunctie", "Threads help keep your conversations on-topic and easy to track.": "Threads helpen jou gesprekken on-topic te houden en gemakkelijk bij te houden.", "Reply to an ongoing thread or use “%(replyInThread)s” when hovering over a message to start a new one.": "Reageer op een lopende thread of gebruik \"%(replyInThread)s\" wanneer je de muisaanwijzer op een bericht plaatst om een nieuwe te starten.", "We'll create rooms for each of them.": "We zullen kamers voor elk van hen maken.", @@ -3567,7 +3565,6 @@ "resume voice broadcast": "hervat spraakuitzending", "play voice broadcast": "spraakuitzending afspelen", "Yes, stop broadcast": "Ja, stop uitzending", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Weet u zeker dat u de live uitzending wilt stoppen? Hiermee wordt de uitzending beëindigd en is de volledige opname beschikbaar in de kamer.", "Stop live broadcasting?": "Live uitzending stoppen?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "Iemand anders neemt al een spraakuitzending op. Wacht tot de spraakuitzending is afgelopen om een nieuwe te starten.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "U heeft niet de vereiste rechten om een spraakuitzending in deze kamer te starten. Neem contact op met een kamer beheerder om uw machtiging aan te passen.", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 425e78f5ae..f3c3af3b7b 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -2846,7 +2846,6 @@ "Fetching events...": "Buscando eventos...", "Starting export process...": "Iniciando processo de exportação...", "Yes, stop broadcast": "Sim, interromper a transmissão", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Tem certeza de que deseja interromper sua transmissão ao vivo? Isso encerrará a transmissão e a gravação completa estará disponível na sala.", "Stop live broadcasting?": "Parar a transmissão ao vivo?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "Outra pessoa já está gravando uma transmissão de voz. Aguarde o término da transmissão de voz para iniciar uma nova.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "Você não tem as permissões necessárias para iniciar uma transmissão de voz nesta sala. Entre em contato com um administrador de sala para atualizar suas permissões.", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 21e0662e0d..c3ba599de1 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -3192,7 +3192,6 @@ "Signing out your devices will delete the message encryption keys stored on them, making encrypted chat history unreadable.": "При выходе из устройств удаляются хранящиеся на них ключи шифрования сообщений, что сделает зашифрованную историю чатов нечитаемой.", "Resetting your password on this homeserver will cause all of your devices to be signed out. This will delete the message encryption keys stored on them, making encrypted chat history unreadable.": "Сброс пароля на этом домашнем сервере приведет к тому, что все ваши устройства будут отключены. Это приведет к удалению хранящихся на них ключей шифрования сообщений, что сделает зашифрованную историю чата нечитаемой.", "Event ID: %(eventId)s": "ID события: %(eventId)s", - "Threads are a beta feature": "Обсуждения — бета-функция", "Your message wasn't sent because this homeserver has been blocked by its administrator. Please contact your service administrator to continue using the service.": "Ваше сообщение не отправлено, поскольку домашний сервер заблокирован его администратором. Обратитесь к администратору службы, чтобы продолжить её использование.", "Resent!": "Отправлено повторно!", "Did not receive it? Resend it": "Не получили? Отправить его повторно", @@ -3335,7 +3334,6 @@ "Please note: this is a labs feature using a temporary implementation. This means you will not be able to delete your location history, and advanced users will be able to see your location history even after you stop sharing your live location with this room.": "Обратите внимание: это временная реализация функции. Это означает, что вы не сможете удалить свою историю местоположений, а опытные пользователи смогут просмотреть вашу историю местоположений даже после того, как вы перестанете делиться своим местоположением в этой комнате.", "View live location": "Посмотреть трансляцию местоположения", "Live location enabled": "Трансляция местоположения включена", - "Give feedback": "Оставить отзыв", "If you can't find the room you're looking for, ask for an invite or create a new room.": "Если не можете найти нужную комнату, просто попросите пригласить вас или создайте новую комнату.", "Send custom timeline event": "Отправить пользовательское событие ленты сообщений", "No verification requests found": "Запросов проверки не найдено", @@ -3503,7 +3501,6 @@ "resume voice broadcast": "продолжить голосовую трансляцию", "play voice broadcast": "проиграть голосовую трансляцию", "Yes, stop broadcast": "Да, остановить трансляцию", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Вы уверены в том, что хотите остановить голосовую трансляцию? Это закончит трансляцию и полная запись станет доступной в комнате.", "Stop live broadcasting?": "Закончить голосовую трансляцию?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "Кто-то уже записывает голосовую трансляцию. Ждите окончания их голосовой трансляции, чтобы начать новую.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "У вас нет необходимых разрешений, чтобы начать голосовую трансляцию в этой комнате. Свяжитесь с администратором комнаты для получения разрешений.", diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index aee9e29e98..82850b7233 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -3203,8 +3203,6 @@ "%(count)s participants|other": "%(count)s účastníkov", "New video room": "Nová video miestnosť", "New room": "Nová miestnosť", - "Give feedback": "Poskytnúť spätnú väzbu", - "Threads are a beta feature": "Vlákna sú beta funkciou", "Threads help keep your conversations on-topic and easy to track.": "Vlákna pomáhajú udržiavať konverzácie v téme a uľahčujú ich sledovanie.", "%(featureName)s Beta feedback": "%(featureName)s Beta spätná väzba", "Beta feature. Click to learn more.": "Beta funkcia. Kliknutím sa dozviete viac.", @@ -3557,7 +3555,6 @@ "Browser": "Prehliadač", "Allow a QR code to be shown in session manager to sign in another device (requires compatible homeserver)": "Umožniť zobrazenie QR kódu v správcovi relácií na prihlásenie do iného zariadenia (vyžaduje kompatibilný domovský server)", "Yes, stop broadcast": "Áno, zastaviť vysielanie", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Určite chcete zastaviť vaše vysielanie naživo? Tým sa vysielanie ukončí a v miestnosti bude k dispozícii celý záznam.", "Stop live broadcasting?": "Zastaviť vysielanie naživo?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "Niekto iný už nahráva hlasové vysielanie. Počkajte, kým sa skončí jeho hlasové vysielanie, a potom spustite nové.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "Nemáte požadované oprávnenia na spustenie hlasového vysielania v tejto miestnosti. Obráťte sa na správcu miestnosti, aby vám rozšíril oprávnenia.", @@ -3639,7 +3636,6 @@ "Right panel stays open": "Pravý panel zostáva otvorený", "Currently experimental.": "V súčasnosti experimentálne.", "New ways to ignore people": "Nové spôsoby ignorovania ľudí", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Používajte rozšírený režim textu v správach. Obyčajný text už čoskoro.", "Rich text editor": "Rozšírený textový editor", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "V miestnostiach, ktoré podporujú moderovanie, môžete pomocou tlačidla \"Nahlásiť\" nahlásiť porušovanie pravidiel moderátorom miestnosti.", "Report to moderators": "Nahlásiť moderátorom", @@ -3710,5 +3706,45 @@ "Decrypted source unavailable": "Dešifrovaný zdroj nie je dostupný", "Connection error - Recording paused": "Chyba pripojenia - nahrávanie pozastavené", "%(senderName)s started a voice broadcast": "%(senderName)s začal/a hlasové vysielanie", - "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)" + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Registration token": "Registračný token", + "Enter a registration token provided by the homeserver administrator.": "Zadajte registračný token poskytnutý správcom domovského servera.", + "Unable to play this voice broadcast": "Toto hlasové vysielanie nie je možné prehrať", + "Dynamic room predecessors": "Predchodcovia dynamickej miestnosti", + "Manage account": "Spravovať účet", + "Your account details are managed separately at %(hostname)s.": "Údaje o vašom účte sú spravované samostatne na adrese %(hostname)s.", + "Enable MSC3946 (to support late-arriving room archives)": "Zapnúť MSC3946 (na podporu neskorých archívov miestností)", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Všetky správy a pozvánky od tohto používateľa budú skryté. Ste si istí, že ich chcete ignorovať?", + "Ignore %(user)s": "Ignorovať %(user)s", + "Indent decrease": "Zmenšenie odsadenia", + "Indent increase": "Zväčšenie odsadenia", + "Unable to decrypt voice broadcast": "Hlasové vysielanie sa nedá dešifrovať", + "View a list of polls in a room. (Under active development)": "Zobraziť zoznam ankiet v miestnosti. (V štádiu aktívneho vývoja)", + "Polls history": "História ankety", + "Use rich text instead of Markdown in the message composer.": "Použiť rozšírený text namiesto Markdown v správach.", + "No receipt found": "Nenašlo sa žiadne potvrdenie", + "User read up to: ": "Používateľ sa dočítal až do: ", + "Dot: ": "Bodka: ", + "Room unread status: ": "Stav neprečítaných v miestnosti: ", + "Thread Id: ": "ID vlákna: ", + "Threads timeline": "Časová os vlákien", + "Sender: ": "Odosielateľ: ", + "ID: ": "ID: ", + "Type: ": "Typ: ", + "Last event:": "Posledná udalosť:", + "Highlight: ": "Zvýraznené: ", + "Total: ": "Celkom: ", + "Main timeline": "Hlavná časová os", + "not encrypted 🚨": "nezašifrovaná 🚨", + "encrypted ✅": "zašifrovaná ✅", + "Room is ": "Miestnosť je ", + "Notification state is": "Stav oznámenia je", + ", count:": ", počet:", + "Room status": "Stav miestnosti", + "There are no polls in this room": "V tejto miestnosti nie sú žiadne ankety", + "Notifications debug": "Ladenie oznámení", + "unknown": "neznáme", + "Red": "Červená", + "Grey": "Sivá", + "Are you sure you want to stop your live broadcast? This will end the broadcast and the full recording will be available in the room.": "Určite chcete zastaviť vysielanie naživo? Tým sa vysielanie ukončí a v miestnosti bude k dispozícii celý záznam." } diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 3f829d56c5..2ea45af3fd 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -3199,8 +3199,6 @@ "%(count)s participants|other": "%(count)s pjesëmarrës", "New video room": "Dhomë e re me video", "New room": "Dhomë e re", - "Give feedback": "Jepni përshtypjet", - "Threads are a beta feature": "Rrjedhat janë një veçori beta", "Threads help keep your conversations on-topic and easy to track.": "Rrjedhat ndihmojnë që të mbahen bisedat tuaja brenda temës dhe të ndiqen kollaj.", "%(featureName)s Beta feedback": "Përshtypje për %(featureName)s Beta", "Beta feature. Click to learn more.": "Veçori në version beta. Klikoni për të mësuar më tepër.", @@ -3566,7 +3564,6 @@ "Show shortcut to welcome checklist above the room list": "Shhkurtoren e listës së hapave të mirëseardhjes shfaqe mbi listën e dhomave", "Allow a QR code to be shown in session manager to sign in another device (requires compatible homeserver)": "Lejoni shfaqjen e një kodi QR në përgjegjës sesioni, për hyrje në një pajisje tjetër (lyp shërbyes Home të përputhshëm)", "Our new sessions manager provides better visibility of all your sessions, and greater control over them including the ability to remotely toggle push notifications.": "Përgjegjësi ynë i ri i sesioneve furnizon dukshmëri më të mirë të krejt sesioneve tuaja dhe kontroll më të fortë mbi ta, përfshi aftësinë për aktivizim/çaktivizim së largëti të njoftimeve push.", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Jeni i sigurt se doni të ndalet transmetimi juaj i drejtpërdrejtë? Kjo do të përfundojë transmetimin dhe regjistrimi i plotë do të jetë i passhëm te dhoma.", "We need to know it’s you before resetting your password.\n Click the link in the email we just sent to %(email)s": "Duhet të dimë se jeni ju, përpara ricaktimit të fjalëkalimt.\n Klikoni lidhjen te email-i që sapo ju dërguam te %(email)s", "Verify your email to continue": "Që të vazhdohet, verifikoni email-in tuaj", "%(homeserver)s will send you a verification link to let you reset your password.": "%(homeserver)s do t’ju dërgojë një lidhje verifikimi, që t’ju lejojë të ricaktoni fjalëkalimin tuaj.", @@ -3629,7 +3626,6 @@ "Right panel stays open": "Paneli i djathtë mbetet i hapur", "Currently experimental.": "Aktualisht eksperimental.", "New ways to ignore people": "Rrugë të reja për të shpërfillur njerëz", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Përdorni te hartuesi i mesazheve tekst të pasur, në vend se Markdown. Së shpejti vjen mënyra tekst i thjeshtë.", "Rich text editor": "Përpunues teksti të pasur", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "Në dhoma që mbulojnë moderimin, butoni “Raportojeni” do t’ju lejojë t’u raportoni abuzim moderatorëve të dhomës.", "Report to moderators": "Raportojeni te moderatorët", @@ -3689,7 +3685,7 @@ "Yes, end my recording": "Po, përfundoje regjistrimin tim", "If you start listening to this live broadcast, your current live broadcast recording will be ended.": "Nëse filloni të dëgjoni te ky transmetim i drejtpërdrejtë, regjistrimi juaj i tanishëm i një transmetimi të drejtpërdrejtë do të përfundojë.", "Listen to live broadcast?": "Të dëgjohet te transmetimi i drejtpërdrejtë?", - "You can't start a voice message as you are currently recording a live broadcast. Please end your live broadcast in order to start recording a voice message.": "S’mund të niset mesazh zanor, ngaqë aktualisht po regjistroni një transmetim të drejtpërdrejtë. Ju lutemi, përfundoni transmetimin e drejtpërdrejtë, që të mund të nisni regjistrimin e një mesazhi zanor", + "You can't start a voice message as you are currently recording a live broadcast. Please end your live broadcast in order to start recording a voice message.": "S’mund të niset mesazh zanor, ngaqë aktualisht po incizoni një transmetim të drejtpërdrejtë. Ju lutemi, përfundoni transmetimin e drejtpërdrejtë, që të mund të nisni incizimin e një mesazhi zanor.", "Can't start voice message": "S’niset dot mesazh zanor", "Edit link": "Përpunoni lidhje", "Numbered list": "Listë e numërtuar", @@ -3697,5 +3693,40 @@ "Connection error - Recording paused": "Gabim lidhjeje - Regjistrimi u ndal", "Unfortunately we're unable to start a recording right now. Please try again later.": "Mjerisht, s’qemë në gjendje të nisnim tani një regjistrim. Ju lutemi, riprovoni më vonë.", "Connection error": "Gabim lidhjeje", - "%(senderName)s started a voice broadcast": "%(senderName)s nisi një transmetim zanor" + "%(senderName)s started a voice broadcast": "%(senderName)s nisi një transmetim zanor", + "Decrypted source unavailable": "Burim i shfshehtëzuar jo i passhëm", + "Registration token": "Token regjistrimi", + "Enter a registration token provided by the homeserver administrator.": "Jepni një token regjistrimi dhënë nga përgjegjësi i shërbyesit Home.", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Krejt mesazhet dhe ftesat prej këtij përdoruesi do të fshihen. Jeni i sigurt se doni të shpërfillet?", + "Ignore %(user)s": "Shpërfille %(user)s", + "Manage account": "Administroni llogari", + "Your account details are managed separately at %(hostname)s.": "Hollësitë e llogarisë tuaj administrohen ndarazi te %(hostname)s.", + "Unable to play this voice broadcast": "S’arrihet të luhet ky transmetim zanor", + "Threads timeline": "Rrjedhë kohore rrjedhash", + "Sender: ": "Dërgues: ", + "Type: ": "Lloj: ", + "ID: ": "ID: ", + "Last event:": "Veprimtaria e fundit", + "No receipt found": "S’u gjet dëftesë", + "Highlight: ": "Theksoje: ", + "Total: ": "Gjithsej: ", + "Main timeline": "Rrjedhë kohore kryesore", + "not encrypted 🚨": "jo i fshehtëzuar 🚨", + "encrypted ✅": "fshehtëzuar ✅", + "Room is ": "Dhoma është ", + "Notification state is": "Gjendje njoftimesh është", + ", count:": ", numër:", + "Room status": "Gjendje dhome", + "There are no polls in this room": "S’ka pyetësorë në këtë dhomë", + "Notifications debug": "Diagnostikim njoftimesh", + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Indent decrease": "Zvogëlim shmangieje kryeradhe", + "Indent increase": "Rritje shmangieje kryeradhe", + "View a list of polls in a room. (Under active development)": "Shihni një listë pyetësorësh në një dhomë. (Nën zhvillim aktiv)", + "Polls history": "Historik pyetësorësh", + "Use rich text instead of Markdown in the message composer.": "Përdor tekst të pasur, në vend se Markdown, te hartuesi i mesazheve.", + "unknown": "e panjohur", + "Red": "E kuqe", + "Grey": "Gri", + "Unable to decrypt voice broadcast": "S’arrihet të shfshehtëzohet transmetim zanor" } diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 5d13c5f285..a54256b46e 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -3167,8 +3167,6 @@ "Toggle Link": "Växla länk av/på", "Toggle Code Block": "Växla kodblock av/på", "Event ID: %(eventId)s": "Händelse-ID: %(eventId)s", - "Give feedback": "Ge återkoppling", - "Threads are a beta feature": "Trådar är en beta-funktion", "Tip: Use “%(replyInThread)s” when hovering over a message.": "Tips: Välj \"%(replyInThread)s\" när du håller över ett meddelande.", "Threads help keep your conversations on-topic and easy to track.": "Trådar underlättar för att hålla konversationer till ämnet och gör dem lättare att följa.", "Reply to an ongoing thread or use “%(replyInThread)s” when hovering over a message to start a new one.": "Svara i en pågående tråd eller använd \"%(replyInThread)s\" när du håller över ett meddelande för att starta en ny tråd.", @@ -3393,7 +3391,6 @@ "resume voice broadcast": "återuppta röstsändning", "play voice broadcast": "spela röstsändning", "Yes, stop broadcast": "Ja, avsluta sändning", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Är du säker på att du vill avsluta din livesändning? Det här kommer att avsluta sändningen och den fulla inspelningen kommer att vara tillgänglig i rummet.", "Allow a QR code to be shown in session manager to sign in another device (requires compatible homeserver)": "Låt en QR-kod visas i sessionshanteraren för att logga in en annan enhet (kräver en kompatibel hemserver)", "Our new sessions manager provides better visibility of all your sessions, and greater control over them including the ability to remotely toggle push notifications.": "Vår nya sessionshanterare ger dig bättre insyn i alla dina sessioner, och större kontroll över dem, inklusive förmågan att växla pushnotiser på håll.", "Have greater visibility and control over all your sessions.": "Ha bättre insyn och kontroll över alla dina sessioner.", @@ -3488,7 +3485,6 @@ "Right panel stays open": "Högerpanelen hålls öppen", "Currently experimental.": "För närvarande experimentellt.", "New ways to ignore people": "Nya sätt att ignorera personer", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Använd rik text istället för Markdown i meddelanderedigeraren. Vanligt textläge kommer snart.", "Rich text editor": "Riktextredigerare", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "I rum som stöder moderering så låter \"Rapportera\"-knappen dig rapportera trakasseri till rumsmoderatorer.", "Report to moderators": "Rapportera till moderatorer", @@ -3706,5 +3702,48 @@ "Failed to read events": "Misslyckades att läsa händelser", "Failed to send event": "Misslyckades att skicka händelse", "Numbered list": "Numrerad lista", - "Bulleted list": "Punktlista" + "Bulleted list": "Punktlista", + "Decrypted source unavailable": "Avkrypterad källa otillgänglig", + "Registration token": "Registreringstoken", + "Enter a registration token provided by the homeserver administrator.": "Ange en registreringstoken försedd av hemserveradministratören.", + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Manage account": "Hantera konto", + "Your account details are managed separately at %(hostname)s.": "Dina rumsdetaljer hanteras separat av %(hostname)s.", + "Enable MSC3946 (to support late-arriving room archives)": "Aktivera MSC3946 (för att stöda sen-ankomna rumsarkiv)", + "Dynamic room predecessors": "Dynamiska rumsföregångare", + "Connection error - Recording paused": "Anslutningsfel - Inspelning pausad", + "Unable to play this voice broadcast": "Kan inte spela den här röstsändningen", + "%(senderName)s started a voice broadcast": "%(senderName)s startade en röstsändning", + "Thread Id: ": "Tråd-ID: ", + "Threads timeline": "Trådtidslinje", + "Sender: ": "Avsändare: ", + "Type: ": "Typ: ", + "ID: ": "ID: ", + "Last event:": "Senaste händelsen:", + "No receipt found": "Inga kvitton hittade", + "User read up to: ": "Användaren har läst fram till: ", + "Dot: ": "Punkt: ", + "Highlight: ": "Markering: ", + "Total: ": "Totalt: ", + "Main timeline": "Huvudtidslinje", + "not encrypted 🚨": "inte krypterad 🚨", + "encrypted ✅": "krypterad ✅", + "Room is ": "Rum är ", + "Notification state is": "Aviseringsstatus är", + ", count:": ", antal:", + "Room unread status: ": "Rummets oläststatus: ", + "Room status": "Rumsstatus", + "There are no polls in this room": "Det finns inga omröstningar i det här rummet", + "Notifications debug": "Aviseringsfelsökning", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Alla meddelanden och inbjudningar från den här användaren kommer att döljas. Är du säker på att du vill ignorera denne?", + "Ignore %(user)s": "Ignorera %(user)s", + "Indent decrease": "Minska indrag", + "Indent increase": "Öka indrad", + "View a list of polls in a room. (Under active development)": "Visa lista över omröstningar i ett rum. (Under aktiv utveckling)", + "Polls history": "Omröstningshistorik", + "Use rich text instead of Markdown in the message composer.": "Använd rik text istället för Markdown i meddelanderedigeraren.", + "unknown": "okänd", + "Red": "Röd", + "Grey": "Grå", + "Unable to decrypt voice broadcast": "Kunde inte kryptera röstsändning" } diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 26ea9bf648..60bcf9ad59 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -3204,8 +3204,6 @@ "%(count)s participants|other": "%(count)s учасників", "New video room": "Нова відеокімната", "New room": "Нова кімната", - "Give feedback": "Залиште відгук", - "Threads are a beta feature": "Гілки — бета-функція", "Threads help keep your conversations on-topic and easy to track.": "Гілки допомагають підтримувати розмови за темою та за ними легко стежити.", "%(featureName)s Beta feedback": "%(featureName)s — відгук про бетаверсію", "Beta feature. Click to learn more.": "Бетафункція. Натисніть, щоб дізнатися більше.", @@ -3535,7 +3533,6 @@ "Browser": "Браузер", "Allow a QR code to be shown in session manager to sign in another device (requires compatible homeserver)": "Дозволити показ QR-коду в менеджері сеансів для входу на іншому пристрої (потрібен сумісний домашній сервер)", "Yes, stop broadcast": "Так, припинити трансляцію", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "Ви впевнені, що хочете припинити голосову трансляцію? На цьому трансляція завершиться, і повний запис буде доступний у кімнаті.", "Stop live broadcasting?": "Припинити голосову трансляцію?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "Хтось інший вже записує голосову трансляцію. Зачекайте, поки запис завершиться, щоб розпочати новий.", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "Ви не маєте необхідних дозволів для початку голосової трансляції в цю кімнату. Зверніться до адміністратора кімнати, щоб оновити ваші дозволи.", @@ -3640,7 +3637,6 @@ "Right panel stays open": "Права панель залишається відкритою", "Currently experimental.": "Наразі експериментально.", "New ways to ignore people": "Нові способи нехтувати людей", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "Використовуйте розширений текст замість Markdown у редакторі повідомлень. Режим звичайного тексту з'явиться незабаром.", "Rich text editor": "Розширений текстовий редактор", "Report to moderators": "Поскаржитись модераторам", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "У кімнатах, які підтримують модерацію, кнопка «Поскаржитися» дає змогу повідомити про зловживання модераторам кімнати.", @@ -3710,5 +3706,45 @@ "Decrypted source unavailable": "Розшифроване джерело недоступне", "Connection error - Recording paused": "Помилка з'єднання - Запис призупинено", "%(senderName)s started a voice broadcast": "%(senderName)s розпочинає голосову трансляцію", - "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)" + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Registration token": "Токен реєстрації", + "Enter a registration token provided by the homeserver administrator.": "Введіть реєстраційний токен, наданий адміністратором домашнього сервера.", + "Unable to play this voice broadcast": "Неможливо відтворити цю голосову трансляцію", + "Manage account": "Керувати обліковим записом", + "Your account details are managed separately at %(hostname)s.": "Ваші дані облікового запису керуються окремо за адресою %(hostname)s.", + "Enable MSC3946 (to support late-arriving room archives)": "Увімкнути MSC3946 (для підтримки архівів пізніх кімнат)", + "Dynamic room predecessors": "Попередники динамічної кімнати", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "Усі повідомлення та запрошення від цього користувача будуть приховані. Ви впевнені, що хочете їх нехтувати?", + "Ignore %(user)s": "Нехтувати %(user)s", + "Indent decrease": "Зменшення відступу", + "Indent increase": "Збільшення відступу", + "Unable to decrypt voice broadcast": "Невдалося розшифрувати голосову трансляцію", + "View a list of polls in a room. (Under active development)": "Перегляд списку опитувань у кімнаті (в активній розробці)", + "Polls history": "Історія опитувань", + "Use rich text instead of Markdown in the message composer.": "Використовувати розширений текст замість розмітки в редакторі повідомлень.", + "Thread Id: ": "Id стрічки: ", + "Threads timeline": "Стрічка гілок", + "Sender: ": "Відправник: ", + "Type: ": "Тип: ", + "ID: ": "ID: ", + "Last event:": "Остання подія:", + "No receipt found": "Підтвердження не знайдено", + "User read up to: ": "Користувач прочитав до: ", + "Dot: ": "Крапка: ", + "Highlight: ": "Виділене: ", + "Total: ": "Загалом: ", + "Main timeline": "Основна стрічка", + "not encrypted 🚨": "не зашифрована 🚨", + "encrypted ✅": "зашифрована ✅", + "Room is ": "Кімната ", + "Notification state is": "Стан сповіщення", + ", count:": ", кількість:", + "Room unread status: ": "Статус непрочитаного в кімнаті: ", + "Room status": "Статус кімнати", + "There are no polls in this room": "У цій кімнаті немає опитувань", + "Notifications debug": "Сповіщення зневадження", + "unknown": "невідомо", + "Red": "Черврний", + "Grey": "Сірий", + "Are you sure you want to stop your live broadcast? This will end the broadcast and the full recording will be available in the room.": "Ви впевнені, що хочете припинити пряму трансляцію? Це призведе до завершення трансляції, а повний запис буде доступний у кімнаті." } diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index a5e0f1c19b..170f86de7c 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -3108,7 +3108,6 @@ "Threads help keep your conversations on-topic and easy to track.": "消息列帮助保持你的对话切题并易于追踪。", "Reply to an ongoing thread or use “%(replyInThread)s” when hovering over a message to start a new one.": "回复进行中的消息列或当悬停在消息上时使用%(replyInThread)s来发起新的消息列。", "Can't create a thread from an event with an existing relation": "无法从既有关系的事件创建消息列", - "Threads are a beta feature": "消息列是beta功能", "Joining the beta will reload %(brand)s.": "加入beta会重载%(brand)s。", "Leaving the beta will reload %(brand)s.": "离开beta会重载%(brand)s。", "This is a beta feature": "这是beta功能", @@ -3464,7 +3463,6 @@ "resume voice broadcast": "恢复语音广播", "play voice broadcast": "播放语音广播", "Yes, stop broadcast": "是的,停止广播", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "你确定要停止你的直播吗?这将结束直播,房间里将有完整的录音。", "Stop live broadcasting?": "停止直播吗?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "别人已经在录制语音广播了。等到他们的语音广播结束后再开始新的广播。", "Upcoming features": "即将到来的功能", @@ -3513,7 +3511,6 @@ "Right panel stays open": "右侧面板保持打开状态", "Currently experimental.": "目前是实验性的。", "New ways to ignore people": "忽略他人的新方式", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "在消息撰写器中使用富文本而不是Markdown。纯文本模式即将到来。", "Join %(brand)s calls": "加入%(brand)s呼叫", "Start %(brand)s calls": "开始%(brand)s呼叫", "Automatically adjust the microphone volume": "自动调整话筒音量", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 5901988af0..4ea7b8a396 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -3197,8 +3197,6 @@ "You do not have permission to invite people to this space.": "您無權邀請他人加入此空間。", "Failed to invite users to %(roomName)s": "未能邀請使用者加入 %(roomName)s", "An error occurred while stopping your live location, please try again": "停止您的即時位置時發生錯誤,請再試一次", - "Give feedback": "給予回饋", - "Threads are a beta feature": "討論串是測試版功能", "Threads help keep your conversations on-topic and easy to track.": "討論串可讓您的對話不離題且易於追蹤。", "Create room": "建立聊天室", "Create video room": "建立視訊聊天室", @@ -3557,7 +3555,6 @@ "Browser": "瀏覽器", "Allow a QR code to be shown in session manager to sign in another device (requires compatible homeserver)": "允許在工作階段管理程式中顯示 QR code 以在另一台裝置上登入(需要相容的家伺服器)", "Yes, stop broadcast": "是的,停止廣播", - "Are you sure you want to stop your live broadcast?This will end the broadcast and the full recording will be available in the room.": "您確定您要停止您的即時廣播嗎?這將會結束廣播,聊天室內將會提供完整的錄製內容。", "Stop live broadcasting?": "停止即時廣播?", "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.": "其他人已在錄製語音廣播。等待他們的語音廣播結束以開始新的語音廣播。", "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.": "您沒有在此聊天室內開始語音廣播所需的權限。請聯絡聊天室管理員升級您的權限。", @@ -3639,7 +3636,6 @@ "Right panel stays open": "右側面板維持開啟狀態", "Currently experimental.": "目前為實驗性。", "New ways to ignore people": "忽略人們的新方式", - "Use rich text instead of Markdown in the message composer. Plain text mode coming soon.": "在訊息編輯器中使用格式化文字而非 Markdown。純文字模式即將到來。", "Rich text editor": "格式化文字編輯器", "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.": "在支援審核的聊天室中,「回報」按鈕讓您可以回報濫用行為給聊天室管理員。", "Report to moderators": "回報給管理員", @@ -3710,5 +3706,44 @@ "Bulleted list": "項目符號清單", "Connection error - Recording paused": "連線錯誤 - 紀錄已暫停", "%(senderName)s started a voice broadcast": "%(senderName)s 開始了語音廣播", - "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)" + "%(displayName)s (%(matrixId)s)": "%(displayName)s (%(matrixId)s)", + "Registration token": "註冊權杖", + "Enter a registration token provided by the homeserver administrator.": "輸入由家伺服器管理員提供的註冊權杖。", + "Manage account": "管理帳號", + "Your account details are managed separately at %(hostname)s.": "您的帳號詳細資訊在 %(hostname)s 中單獨管理。", + "Enable MSC3946 (to support late-arriving room archives)": "啟用 MSC3946(為了支援遲到聊天室存檔)", + "Dynamic room predecessors": "動態聊天室前身", + "Unable to play this voice broadcast": "無法播放此音訊廣播", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "來自該使用者的所有訊息與邀請都將被隱藏。您確定要忽略它們嗎?", + "Ignore %(user)s": "忽略 %(user)s", + "Indent decrease": "減少縮排", + "Indent increase": "增加縮排", + "View a list of polls in a room. (Under active development)": "檢視聊天室中的投票清單。(積極開發中)", + "Polls history": "投票歷史紀錄", + "Unable to decrypt voice broadcast": "無法解密語音廣播", + "There are no polls in this room": "此聊天室中沒有投票", + "Use rich text instead of Markdown in the message composer.": "在訊息編輯器中使用格式化文字而非 Markdown。", + "Thread Id: ": "討論串 ID: ", + "Threads timeline": "討論串時間軸", + "Sender: ": "傳送者: ", + "Type: ": "類型: ", + "ID: ": "ID: ", + "Last event:": "最後活動:", + "No receipt found": "找不到回條", + "User read up to: ": "使用者讀取至: ", + "Dot: ": "點: ", + "Highlight: ": "突顯: ", + "Total: ": "總共: ", + "Main timeline": "主時間軸", + "not encrypted 🚨": "未加密 🚨", + "encrypted ✅": "已加密 ✅", + "Room is ": "聊天室為 ", + "Notification state is": "通知狀態為", + ", count:": ", 計數:", + "Room unread status: ": "聊天室未讀狀態: ", + "Room status": "聊天室狀態", + "Notifications debug": "通知除錯", + "unknown": "未知", + "Red": "紅", + "Grey": "灰" } diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index 09f9ae6037..23ea23ff65 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -260,7 +260,7 @@ export async function downloadBugReport(opts: IOpts = {}): Promise { reader.readAsArrayBuffer(value as Blob); }); } else { - metadata += `${key} = ${value}\n`; + metadata += `${key} = ${value as string}\n`; } } tape.append("issue.txt", metadata); diff --git a/src/stores/widgets/StopGapWidget.ts b/src/stores/widgets/StopGapWidget.ts index 5fe190179e..1604e49778 100644 --- a/src/stores/widgets/StopGapWidget.ts +++ b/src/stores/widgets/StopGapWidget.ts @@ -389,7 +389,7 @@ export class StopGapWidget extends EventEmitter { // Now open the integration manager // TODO: Spec this interaction. const data = ev.detail.data; - const integType = data?.integType; + const integType = data?.integType as string; const integId = data?.integId; // noinspection JSIgnoredPromiseFromCall diff --git a/src/utils/FileUtils.ts b/src/utils/FileUtils.ts index b9cd9a79d3..aa12f790b0 100644 --- a/src/utils/FileUtils.ts +++ b/src/utils/FileUtils.ts @@ -69,7 +69,7 @@ export function presentableTextForFile( // it since it is "ugly", users generally aren't aware what it // means and the type of the attachment can usually be inferred // from the file extension. - text += " (" + filesize(content.info.size) + ")"; + text += " (" + filesize(content.info.size) + ")"; } return text; } diff --git a/src/utils/Whenable.ts b/src/utils/Whenable.ts index 8cb50a91a6..2e154fca65 100644 --- a/src/utils/Whenable.ts +++ b/src/utils/Whenable.ts @@ -19,7 +19,7 @@ import { logger } from "matrix-js-sdk/src/logger"; import { IDestroyable } from "./IDestroyable"; import { arrayFastClone } from "./arrays"; -export type WhenFn = (w: Whenable) => void; +export type WhenFn = (w: Whenable) => void; /** * Whenables are a cheap way to have Observable patterns mixed with typical @@ -27,7 +27,7 @@ export type WhenFn = (w: Whenable) => void; * are intended to be used when a condition will be met multiple times and * the consumer needs to know *when* that happens. */ -export abstract class Whenable implements IDestroyable { +export abstract class Whenable implements IDestroyable { private listeners: { condition: T | null; fn: WhenFn }[] = []; /** diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index e915d18025..e2bc560432 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React, { ReactNode } from "react"; +import React from "react"; import ReactDOM from "react-dom"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; @@ -65,7 +65,7 @@ export default class HTMLExporter extends Exporter { this.threadsEnabled = SettingsStore.getValue("feature_threadenabled"); } - protected async getRoomAvatar(): Promise { + protected async getRoomAvatar(): Promise { let blob: Blob | undefined = undefined; const avatarUrl = Avatar.avatarUrlForRoom(this.room, 32, 32, "crop"); const avatarPath = "room.png"; diff --git a/src/voice-broadcast/hooks/useVoiceBroadcastRecording.tsx b/src/voice-broadcast/hooks/useVoiceBroadcastRecording.tsx index 1b2bde2b40..71f4ccf1f1 100644 --- a/src/voice-broadcast/hooks/useVoiceBroadcastRecording.tsx +++ b/src/voice-broadcast/hooks/useVoiceBroadcastRecording.tsx @@ -36,7 +36,7 @@ const showStopBroadcastingDialog = async (): Promise => { description: (

{_t( - "Are you sure you want to stop your live broadcast?" + + "Are you sure you want to stop your live broadcast? " + "This will end the broadcast and the full recording will be available in the room.", )}

diff --git a/src/voice-broadcast/models/VoiceBroadcastPlayback.ts b/src/voice-broadcast/models/VoiceBroadcastPlayback.ts index 0a5442cb62..cb45d9f29a 100644 --- a/src/voice-broadcast/models/VoiceBroadcastPlayback.ts +++ b/src/voice-broadcast/models/VoiceBroadcastPlayback.ts @@ -396,7 +396,11 @@ export class VoiceBroadcastPlayback } if (!this.playbacks.has(eventId)) { + // set to buffering while loading the chunk data + const currentState = this.getState(); + this.setState(VoiceBroadcastPlaybackState.Buffering); await this.loadPlayback(event); + this.setState(currentState); } const playback = this.playbacks.get(eventId); diff --git a/test/components/views/elements/EventListSummary-test.tsx b/test/components/views/elements/EventListSummary-test.tsx index ebf799e3f2..6f8c5fd7c8 100644 --- a/test/components/views/elements/EventListSummary-test.tsx +++ b/test/components/views/elements/EventListSummary-test.tsx @@ -21,6 +21,7 @@ import { MatrixEvent, RoomMember } from "matrix-js-sdk/src/matrix"; import { getMockClientWithEventEmitter, + mkEvent, mkMembership, mockClientMethodsUser, unmockClientPeg, @@ -100,7 +101,7 @@ describe("EventListSummary", function () { // is created by replacing the first "$" in userIdTemplate with `i` for // `i = 0 .. n`. const generateEventsForUsers = (userIdTemplate, n, events) => { - let eventsForUsers = []; + let eventsForUsers: MatrixEvent[] = []; let userId = ""; for (let i = 0; i < n; i++) { userId = userIdTemplate.replace("$", i); @@ -656,4 +657,56 @@ describe("EventListSummary", function () { expect(summaryText).toBe("user_0, user_1 and 18 others joined"); }); + + it("should not blindly group 3pid invites and treat them as distinct users instead", () => { + const events = [ + mkEvent({ + event: true, + skey: "randomstring1", + user: "@user1:server", + type: "m.room.third_party_invite", + content: { + display_name: "n...@d...", + key_validity_url: "https://blah", + public_key: "public_key", + }, + }), + mkEvent({ + event: true, + skey: "randomstring2", + user: "@user1:server", + type: "m.room.third_party_invite", + content: { + display_name: "n...@d...", + key_validity_url: "https://blah", + public_key: "public_key", + }, + }), + mkEvent({ + event: true, + skey: "randomstring3", + user: "@user1:server", + type: "m.room.third_party_invite", + content: { + display_name: "d...@w...", + key_validity_url: "https://blah", + public_key: "public_key", + }, + }), + ]; + + const props = { + events: events, + children: generateTiles(events), + summaryLength: 2, + avatarsMaxLength: 5, + threshold: 3, + }; + + const wrapper = renderComponent(props); + const summary = wrapper.find(".mx_GenericEventListSummary_summary"); + const summaryText = summary.text(); + + expect(summaryText).toBe("n...@d... was invited 2 times, d...@w... was invited"); + }); }); diff --git a/test/voice-broadcast/models/VoiceBroadcastPlayback-test.tsx b/test/voice-broadcast/models/VoiceBroadcastPlayback-test.tsx index e7f4c8afcc..9f59ba6369 100644 --- a/test/voice-broadcast/models/VoiceBroadcastPlayback-test.tsx +++ b/test/voice-broadcast/models/VoiceBroadcastPlayback-test.tsx @@ -18,6 +18,7 @@ import { mocked } from "jest-mock"; import { screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { MatrixClient, MatrixEvent, MatrixEventEvent, Room } from "matrix-js-sdk/src/matrix"; +import { defer } from "matrix-js-sdk/src/utils"; import { Playback, PlaybackState } from "../../../src/audio/Playback"; import { PlaybackManager } from "../../../src/audio/PlaybackManager"; @@ -31,9 +32,10 @@ import { VoiceBroadcastPlaybackState, VoiceBroadcastRecording, } from "../../../src/voice-broadcast"; -import { filterConsole, flushPromises, stubClient } from "../../test-utils"; +import { filterConsole, flushPromises, flushPromisesWithFakeTimers, stubClient } from "../../test-utils"; import { createTestPlayback } from "../../test-utils/audio"; import { mkVoiceBroadcastChunkEvent, mkVoiceBroadcastInfoStateEvent } from "../utils/test-utils"; +import { LazyValue } from "../../../src/utils/LazyValue"; jest.mock("../../../src/utils/MediaEventHelper", () => ({ MediaEventHelper: jest.fn(), @@ -49,6 +51,7 @@ describe("VoiceBroadcastPlayback", () => { let playback: VoiceBroadcastPlayback; let onStateChanged: (state: VoiceBroadcastPlaybackState) => void; let chunk1Event: MatrixEvent; + let deplayedChunk1Event: MatrixEvent; let chunk2Event: MatrixEvent; let chunk2BEvent: MatrixEvent; let chunk3Event: MatrixEvent; @@ -58,6 +61,7 @@ describe("VoiceBroadcastPlayback", () => { const chunk1Data = new ArrayBuffer(2); const chunk2Data = new ArrayBuffer(3); const chunk3Data = new ArrayBuffer(3); + let delayedChunk1Helper: MediaEventHelper; let chunk1Helper: MediaEventHelper; let chunk2Helper: MediaEventHelper; let chunk3Helper: MediaEventHelper; @@ -97,8 +101,8 @@ describe("VoiceBroadcastPlayback", () => { }; const startPlayback = () => { - beforeEach(async () => { - await playback.start(); + beforeEach(() => { + playback.start(); }); }; @@ -127,11 +131,36 @@ describe("VoiceBroadcastPlayback", () => { }; }; + const mkDeplayedChunkHelper = (data: ArrayBuffer): MediaEventHelper => { + const deferred = defer>(); + + setTimeout(() => { + deferred.resolve({ + // @ts-ignore + arrayBuffer: jest.fn().mockResolvedValue(data), + }); + }, 7500); + + return { + sourceBlob: { + cachedValue: new Blob(), + done: false, + // @ts-ignore + value: deferred.promise, + }, + }; + }; + + const simulateFirstChunkArrived = async (): Promise => { + jest.advanceTimersByTime(10000); + await flushPromisesWithFakeTimers(); + }; + const mkInfoEvent = (state: VoiceBroadcastInfoState) => { return mkVoiceBroadcastInfoStateEvent(roomId, state, userId, deviceId); }; - const mkPlayback = async () => { + const mkPlayback = async (fakeTimers = false): Promise => { const playback = new VoiceBroadcastPlayback( infoEvent, client, @@ -140,7 +169,7 @@ describe("VoiceBroadcastPlayback", () => { jest.spyOn(playback, "removeAllListeners"); jest.spyOn(playback, "destroy"); playback.on(VoiceBroadcastPlaybackEvent.StateChanged, onStateChanged); - await flushPromises(); + fakeTimers ? await flushPromisesWithFakeTimers() : await flushPromises(); return playback; }; @@ -152,6 +181,7 @@ describe("VoiceBroadcastPlayback", () => { const createChunkEvents = () => { chunk1Event = mkVoiceBroadcastChunkEvent(infoEvent.getId()!, userId, roomId, chunk1Length, 1); + deplayedChunk1Event = mkVoiceBroadcastChunkEvent(infoEvent.getId()!, userId, roomId, chunk1Length, 1); chunk2Event = mkVoiceBroadcastChunkEvent(infoEvent.getId()!, userId, roomId, chunk2Length, 2); chunk2Event.setTxnId("tx-id-1"); chunk2BEvent = mkVoiceBroadcastChunkEvent(infoEvent.getId()!, userId, roomId, chunk2Length, 2); @@ -159,6 +189,7 @@ describe("VoiceBroadcastPlayback", () => { chunk3Event = mkVoiceBroadcastChunkEvent(infoEvent.getId()!, userId, roomId, chunk3Length, 3); chunk1Helper = mkChunkHelper(chunk1Data); + delayedChunk1Helper = mkDeplayedChunkHelper(chunk1Data); chunk2Helper = mkChunkHelper(chunk2Data); chunk3Helper = mkChunkHelper(chunk3Data); @@ -181,6 +212,7 @@ describe("VoiceBroadcastPlayback", () => { mocked(MediaEventHelper).mockImplementation((event: MatrixEvent): any => { if (event === chunk1Event) return chunk1Helper; + if (event === deplayedChunk1Event) return delayedChunk1Helper; if (event === chunk2Event) return chunk2Helper; if (event === chunk3Event) return chunk3Helper; }); @@ -488,11 +520,17 @@ describe("VoiceBroadcastPlayback", () => { describe("when there is a stopped voice broadcast", () => { beforeEach(async () => { + jest.useFakeTimers(); infoEvent = mkInfoEvent(VoiceBroadcastInfoState.Stopped); createChunkEvents(); - setUpChunkEvents([chunk2Event, chunk1Event, chunk3Event]); - room.addLiveEvents([infoEvent, chunk1Event, chunk2Event, chunk3Event]); - playback = await mkPlayback(); + // use delayed first chunk here to simulate loading time + setUpChunkEvents([chunk2Event, deplayedChunk1Event, chunk3Event]); + room.addLiveEvents([infoEvent, deplayedChunk1Event, chunk2Event, chunk3Event]); + playback = await mkPlayback(true); + }); + + afterEach(() => { + jest.useRealTimers(); }); it("should expose the info event", () => { @@ -504,166 +542,174 @@ describe("VoiceBroadcastPlayback", () => { describe("and calling start", () => { startPlayback(); - itShouldSetTheStateTo(VoiceBroadcastPlaybackState.Playing); - - it("should play the chunks beginning with the first one", () => { - // assert that the first chunk is being played - expect(chunk1Playback.play).toHaveBeenCalled(); - expect(chunk2Playback.play).not.toHaveBeenCalled(); - }); - - describe("and calling start again", () => { - it("should not play the first chunk a second time", () => { - expect(chunk1Playback.play).toHaveBeenCalledTimes(1); - }); - }); - - describe("and the chunk playback progresses", () => { - beforeEach(() => { - chunk1Playback.clockInfo.liveData.update([11]); - }); - - it("should update the time", () => { - expect(playback.timeSeconds).toBe(11); - expect(playback.timeLeftSeconds).toBe(2); - }); - }); - - describe("and the chunk playback progresses across the actual time", () => { - // This can be the case if the meta data is out of sync with the actual audio data. - - beforeEach(() => { - chunk1Playback.clockInfo.liveData.update([15]); - }); - - it("should update the time", () => { - expect(playback.timeSeconds).toBe(15); - expect(playback.timeLeftSeconds).toBe(0); - }); - }); - - describe("and skipping to the middle of the second chunk", () => { - const middleOfSecondChunk = (chunk1Length + chunk2Length / 2) / 1000; + itShouldSetTheStateTo(VoiceBroadcastPlaybackState.Buffering); + describe("and the first chunk data has been loaded", () => { beforeEach(async () => { - await playback.skipTo(middleOfSecondChunk); + await simulateFirstChunkArrived(); }); - it("should play the second chunk", () => { - expect(chunk1Playback.stop).toHaveBeenCalled(); - expect(chunk1Playback.destroy).toHaveBeenCalled(); - expect(chunk2Playback.play).toHaveBeenCalled(); + itShouldSetTheStateTo(VoiceBroadcastPlaybackState.Playing); + + it("should play the chunks beginning with the first one", () => { + // assert that the first chunk is being played + expect(chunk1Playback.play).toHaveBeenCalled(); + expect(chunk2Playback.play).not.toHaveBeenCalled(); }); - it("should update the time", () => { - expect(playback.timeSeconds).toBe(middleOfSecondChunk); + describe("and calling start again", () => { + it("should not play the first chunk a second time", () => { + expect(chunk1Playback.play).toHaveBeenCalledTimes(1); + }); }); - describe("and skipping to the start", () => { - beforeEach(async () => { - await playback.skipTo(0); + describe("and the chunk playback progresses", () => { + beforeEach(() => { + chunk1Playback.clockInfo.liveData.update([11]); }); - it("should play the first chunk", () => { + it("should update the time", () => { + expect(playback.timeSeconds).toBe(11); + }); + }); + + describe("and the chunk playback progresses across the actual time", () => { + // This can be the case if the meta data is out of sync with the actual audio data. + + beforeEach(() => { + chunk1Playback.clockInfo.liveData.update([15]); + }); + + it("should update the time", () => { + expect(playback.timeSeconds).toBe(15); + expect(playback.timeLeftSeconds).toBe(0); + }); + }); + + describe("and skipping to the middle of the second chunk", () => { + const middleOfSecondChunk = (chunk1Length + chunk2Length / 2) / 1000; + + beforeEach(async () => { + await playback.skipTo(middleOfSecondChunk); + }); + + it("should play the second chunk", () => { + expect(chunk1Playback.stop).toHaveBeenCalled(); + expect(chunk1Playback.destroy).toHaveBeenCalled(); + expect(chunk2Playback.play).toHaveBeenCalled(); + }); + + it("should update the time", () => { + expect(playback.timeSeconds).toBe(middleOfSecondChunk); + }); + + describe("and skipping to the start", () => { + beforeEach(async () => { + await playback.skipTo(0); + }); + + it("should play the first chunk", () => { + expect(chunk2Playback.stop).toHaveBeenCalled(); + expect(chunk2Playback.destroy).toHaveBeenCalled(); + expect(chunk1Playback.play).toHaveBeenCalled(); + }); + + it("should update the time", () => { + expect(playback.timeSeconds).toBe(0); + }); + }); + }); + + describe("and skipping multiple times", () => { + beforeEach(async () => { + return Promise.all([ + playback.skipTo(middleOfSecondChunk), + playback.skipTo(middleOfThirdChunk), + playback.skipTo(0), + ]); + }); + + it("should only skip to the first and last position", () => { + expect(chunk1Playback.stop).toHaveBeenCalled(); + expect(chunk1Playback.destroy).toHaveBeenCalled(); + expect(chunk2Playback.play).toHaveBeenCalled(); + + expect(chunk3Playback.play).not.toHaveBeenCalled(); + expect(chunk2Playback.stop).toHaveBeenCalled(); expect(chunk2Playback.destroy).toHaveBeenCalled(); expect(chunk1Playback.play).toHaveBeenCalled(); }); - - it("should update the time", () => { - expect(playback.timeSeconds).toBe(0); - }); - }); - }); - - describe("and skipping multiple times", () => { - beforeEach(async () => { - return Promise.all([ - playback.skipTo(middleOfSecondChunk), - playback.skipTo(middleOfThirdChunk), - playback.skipTo(0), - ]); }); - it("should only skip to the first and last position", () => { - expect(chunk1Playback.stop).toHaveBeenCalled(); - expect(chunk1Playback.destroy).toHaveBeenCalled(); - expect(chunk2Playback.play).toHaveBeenCalled(); - - expect(chunk3Playback.play).not.toHaveBeenCalled(); - - expect(chunk2Playback.stop).toHaveBeenCalled(); - expect(chunk2Playback.destroy).toHaveBeenCalled(); - expect(chunk1Playback.play).toHaveBeenCalled(); - }); - }); - - describe("and the first chunk ends", () => { - beforeEach(() => { - chunk1Playback.emit(PlaybackState.Stopped); - }); - - it("should play until the end", () => { - // assert first chunk was unloaded - expect(chunk1Playback.destroy).toHaveBeenCalled(); - - // assert that the second chunk is being played - expect(chunk2Playback.play).toHaveBeenCalled(); - - // simulate end of second and third chunk - chunk2Playback.emit(PlaybackState.Stopped); - chunk3Playback.emit(PlaybackState.Stopped); - - // assert that the entire playback is now in stopped state - expect(playback.getState()).toBe(VoiceBroadcastPlaybackState.Stopped); - }); - }); - - describe("and calling pause", () => { - pausePlayback(); - itShouldSetTheStateTo(VoiceBroadcastPlaybackState.Paused); - itShouldEmitAStateChangedEvent(VoiceBroadcastPlaybackState.Paused); - }); - - describe("and calling stop", () => { - stopPlayback(); - itShouldSetTheStateTo(VoiceBroadcastPlaybackState.Stopped); - - it("should stop the playback", () => { - expect(chunk1Playback.stop).toHaveBeenCalled(); - }); - - describe("and skipping to somewhere in the middle of the first chunk", () => { - beforeEach(async () => { - mocked(chunk1Playback.play).mockClear(); - await playback.skipTo(1); + describe("and the first chunk ends", () => { + beforeEach(() => { + chunk1Playback.emit(PlaybackState.Stopped); }); - it("should not start the playback", () => { - expect(chunk1Playback.play).not.toHaveBeenCalled(); + it("should play until the end", () => { + // assert first chunk was unloaded + expect(chunk1Playback.destroy).toHaveBeenCalled(); + + // assert that the second chunk is being played + expect(chunk2Playback.play).toHaveBeenCalled(); + + // simulate end of second and third chunk + chunk2Playback.emit(PlaybackState.Stopped); + chunk3Playback.emit(PlaybackState.Stopped); + + // assert that the entire playback is now in stopped state + expect(playback.getState()).toBe(VoiceBroadcastPlaybackState.Stopped); }); }); - }); - describe("and calling destroy", () => { - beforeEach(() => { - playback.destroy(); + describe("and calling pause", () => { + pausePlayback(); + itShouldSetTheStateTo(VoiceBroadcastPlaybackState.Paused); + itShouldEmitAStateChangedEvent(VoiceBroadcastPlaybackState.Paused); }); - it("should call removeAllListeners", () => { - expect(playback.removeAllListeners).toHaveBeenCalled(); + describe("and calling stop", () => { + stopPlayback(); + itShouldSetTheStateTo(VoiceBroadcastPlaybackState.Stopped); + + it("should stop the playback", () => { + expect(chunk1Playback.stop).toHaveBeenCalled(); + }); + + describe("and skipping to somewhere in the middle of the first chunk", () => { + beforeEach(async () => { + mocked(chunk1Playback.play).mockClear(); + await playback.skipTo(1); + }); + + it("should not start the playback", () => { + expect(chunk1Playback.play).not.toHaveBeenCalled(); + }); + }); }); - it("should call destroy on the playbacks", () => { - expect(chunk1Playback.destroy).toHaveBeenCalled(); - expect(chunk2Playback.destroy).toHaveBeenCalled(); + describe("and calling destroy", () => { + beforeEach(() => { + playback.destroy(); + }); + + it("should call removeAllListeners", () => { + expect(playback.removeAllListeners).toHaveBeenCalled(); + }); + + it("should call destroy on the playbacks", () => { + expect(chunk1Playback.destroy).toHaveBeenCalled(); + expect(chunk2Playback.destroy).toHaveBeenCalled(); + }); }); }); }); describe("and calling toggle for the first time", () => { beforeEach(async () => { - await playback.toggle(); + playback.toggle(); + await simulateFirstChunkArrived(); }); itShouldSetTheStateTo(VoiceBroadcastPlaybackState.Playing); @@ -693,7 +739,8 @@ describe("VoiceBroadcastPlayback", () => { describe("and calling toggle", () => { beforeEach(async () => { mocked(onStateChanged).mockReset(); - await playback.toggle(); + playback.toggle(); + await simulateFirstChunkArrived(); }); itShouldSetTheStateTo(VoiceBroadcastPlaybackState.Playing); diff --git a/yarn.lock b/yarn.lock index b548d9f913..aa88e900a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4226,10 +4226,10 @@ eslint-plugin-jsx-a11y@^6.5.1: minimatch "^3.1.2" semver "^6.3.0" -eslint-plugin-matrix-org@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-matrix-org/-/eslint-plugin-matrix-org-0.9.0.tgz#b2a5186052ddbfa7dc9878779bafa5d68681c7b4" - integrity sha512-+j6JuMnFH421Z2vOxc+0YMt5Su5vD76RSatviy3zHBaZpgd+sOeAWoCLBHD5E7mMz5oKae3Y3wewCt9LRzq2Nw== +eslint-plugin-matrix-org@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-matrix-org/-/eslint-plugin-matrix-org-0.10.0.tgz#8d0998641a4d276343cae2abf253a01bb4d4cc60" + integrity sha512-L7ail0x1yUlF006kn4mHc+OT8/aYZI++i852YXPHxCbM1EY7jeg/fYAQ8tCx5+x08LyqXeS7inAVSL784m0C6Q== eslint-plugin-react-hooks@^4.3.0: version "4.6.0"