diff --git a/.dockerignore b/.dockerignore index ced02564a89..70377fccdd6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -7,3 +7,6 @@ karma-reports/ .idea/ .tmp/ config.json* +# Exclude the playwright directory as much as we can as the snapshots are huge and we bind mount it in +playwright/ +!playwright/docker-entrypoint.sh diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index dd793898eca..7252c27b5fb 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -10,7 +10,7 @@ on: jobs: backport: name: Backport - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 # Only react to merged PRs for security reasons. # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target. if: > diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 84bb3d263d2..55f5c1f4a38 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,15 +18,15 @@ jobs: fail-fast: false matrix: image: - - ubuntu-latest - - windows-latest - - macos-latest + - ubuntu-24.04 + - windows-2022 + - macos-14 isDevelop: - ${{ github.event_name == 'push' && github.ref_name == 'develop' }} - # Skip the ubuntu-latest build for the develop branch as the dedicated CD build_develop workflow handles that + # Skip the ubuntu-24.04 build for the develop branch as the dedicated CD build_develop workflow handles that exclude: - isDevelop: true - image: ubuntu-latest + image: ubuntu-24.04 runs-on: ${{ matrix.image }} defaults: run: diff --git a/.github/workflows/build_debian.yaml b/.github/workflows/build_debian.yaml index 254b99d261a..319dccd9f2f 100644 --- a/.github/workflows/build_debian.yaml +++ b/.github/workflows/build_debian.yaml @@ -7,7 +7,7 @@ jobs: build: name: Build package environment: packages.element.io - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 env: R2_INCOMING_BUCKET: ${{ vars.R2_INCOMING_BUCKET }} R2_URL: ${{ vars.CF_R2_S3_API }} diff --git a/.github/workflows/build_develop.yml b/.github/workflows/build_develop.yml index 2407d2e6f1a..b4c96c4eef4 100644 --- a/.github/workflows/build_develop.yml +++ b/.github/workflows/build_develop.yml @@ -14,7 +14,7 @@ jobs: name: "Build & Deploy develop.element.io" # Only respect triggers from our develop branch, ignore that of forks if: github.repository == 'element-hq/element-web' - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 environment: develop env: R2_BUCKET: "element-web-develop" diff --git a/.github/workflows/dockerhub.yaml b/.github/workflows/dockerhub.yaml index c8bec61feaf..2fdc66fb338 100644 --- a/.github/workflows/dockerhub.yaml +++ b/.github/workflows/dockerhub.yaml @@ -13,7 +13,7 @@ permissions: jobs: buildx: name: Docker Buildx - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 environment: dockerhub strategy: fail-fast: false diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e0bf8a6b8ec..c3f08deb1d4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -17,7 +17,7 @@ concurrency: jobs: build: name: GitHub Pages - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Fetch element-desktop uses: actions/checkout@v4 @@ -99,7 +99,7 @@ jobs: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: build steps: - name: Deploy to GitHub Pages diff --git a/.github/workflows/issue_closed.yml b/.github/workflows/issue_closed.yml index ddcd3d12bd9..191f345cc9b 100644 --- a/.github/workflows/issue_closed.yml +++ b/.github/workflows/issue_closed.yml @@ -7,7 +7,7 @@ on: jobs: tidy: name: Tidy closed issues - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/github-script@v7 id: main diff --git a/.github/workflows/pending-reviews.yaml b/.github/workflows/pending-reviews.yaml index f22483547d9..499da6a9b3b 100644 --- a/.github/workflows/pending-reviews.yaml +++ b/.github/workflows/pending-reviews.yaml @@ -9,7 +9,7 @@ concurrency: ${{ github.workflow }} jobs: bot: name: Pending reviews bot - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 environment: Matrix env: URL: "https://github.com/pulls?q=is%3Apr+is%3Aopen+repo%3Amatrix-org%2Fmatrix-js-sdk+repo%3Amatrix-org%2Fmatrix-react-sdk+repo%3Aelement-hq%2Felement-web+repo%3Aelement-hq%2Felement-desktop+review-requested%3A%40me+sort%3Aupdated-desc+" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 799c439f739..0e8c21e7869 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: notify-downstream: name: Trigger release drafter downstream needs: release - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Notify element-desktop repo that element-web release has completed to re-trigger release-drafter uses: benc-uk/workflow-dispatch@e2e5e9a103e331dad343f381a29e654aea3cf8fc # v1 @@ -41,7 +41,7 @@ jobs: check: name: Post release checks needs: release - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Wait for dockerhub uses: t3chguy/wait-on-check-action@18541021811b56544d90e0f073401c2b99e249d6 # fork diff --git a/.github/workflows/release_prepare.yml b/.github/workflows/release_prepare.yml index f88e10493d6..ce088a93276 100644 --- a/.github/workflows/release_prepare.yml +++ b/.github/workflows/release_prepare.yml @@ -19,7 +19,7 @@ on: default: true jobs: prepare: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout Element Desktop uses: actions/checkout@v4 diff --git a/.github/workflows/static_analysis.yaml b/.github/workflows/static_analysis.yaml index 470e0728925..536f78e18dd 100644 --- a/.github/workflows/static_analysis.yaml +++ b/.github/workflows/static_analysis.yaml @@ -19,7 +19,7 @@ env: jobs: ts_lint: name: "Typescript Syntax Check" - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 @@ -81,7 +81,7 @@ jobs: js_lint: name: "ESLint" - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 @@ -99,7 +99,7 @@ jobs: style_lint: name: "Style Lint" - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 @@ -117,7 +117,7 @@ jobs: workflow_lint: name: "Workflow Lint" - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 @@ -135,7 +135,7 @@ jobs: analyse_dead_code: name: "Analyse Dead Code" - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/triage-assigned.yml b/.github/workflows/triage-assigned.yml index 98112d556f2..81d1dff80fd 100644 --- a/.github/workflows/triage-assigned.yml +++ b/.github/workflows/triage-assigned.yml @@ -6,7 +6,7 @@ on: jobs: web-app-team: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: | contains(github.event.issue.assignees.*.login, 't3chguy') || contains(github.event.issue.assignees.*.login, 'andybalaam') || diff --git a/.github/workflows/triage-incoming.yml b/.github/workflows/triage-incoming.yml index 47ed03efe35..e63017dc3be 100644 --- a/.github/workflows/triage-incoming.yml +++ b/.github/workflows/triage-incoming.yml @@ -6,7 +6,7 @@ on: jobs: automate-project-columns: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/add-to-project@main with: diff --git a/.github/workflows/triage-labelled.yml b/.github/workflows/triage-labelled.yml index 0ee40b987ff..0112f180c19 100644 --- a/.github/workflows/triage-labelled.yml +++ b/.github/workflows/triage-labelled.yml @@ -11,7 +11,7 @@ on: jobs: apply_Z-Labs_label: name: Add Z-Labs label for features behind labs flags - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'A-Maths') || contains(github.event.issue.labels.*.name, 'A-Location-Sharing') || @@ -37,7 +37,7 @@ jobs: apply_Help-Wanted_label: name: Add "Help Wanted" label to all "good first issue" and Hacktoberfest - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'good first issue') || contains(github.event.issue.labels.*.name, 'Hacktoberfest') @@ -54,7 +54,7 @@ jobs: move_needs_info_issues: name: X-Needs-Info issues to Need info column on triage board - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'X-Needs-Info') steps: @@ -77,7 +77,7 @@ jobs: move_flakey_test_issues: name: Z-Flaky-Test issues to Sized for maintainer column on triage board - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'Z-Flaky-Test') steps: @@ -100,7 +100,7 @@ jobs: add_priority_design_issues_to_project: name: P1 X-Needs-Design to Design project board - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'X-Needs-Design') && (contains(github.event.issue.labels.*.name, 'S-Critical') && @@ -117,7 +117,7 @@ jobs: add_product_issues: name: X-Needs-Product to product project board - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'X-Needs-Product') steps: @@ -128,7 +128,7 @@ jobs: Search_issues_to_board: name: Search issues to project board - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'A-New-Search-Experience') steps: @@ -139,7 +139,7 @@ jobs: voip: name: Add labelled issues to VoIP project board - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'Team: VoIP') steps: @@ -150,7 +150,7 @@ jobs: verticals_feature: name: Add labelled issues to Verticals Feature project - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'Team: Verticals Feature') steps: @@ -161,7 +161,7 @@ jobs: tech_debt: name: Add labelled issues to tech debt project - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > contains(github.event.issue.labels.*.name, 'A-Developer-Experience') || contains(github.event.issue.labels.*.name, 'A-Documentation') || diff --git a/.github/workflows/triage-move-review-requests.yml b/.github/workflows/triage-move-review-requests.yml index 9d2924c1a92..72d9786a4a9 100644 --- a/.github/workflows/triage-move-review-requests.yml +++ b/.github/workflows/triage-move-review-requests.yml @@ -6,7 +6,7 @@ on: jobs: add_design_pr_to_project: name: Move PRs asking for design review to the design board - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: octokit/graphql-action@v2.x id: find_team_members @@ -73,7 +73,7 @@ jobs: add_product_pr_to_project: name: Move PRs asking for design review to the design board - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: octokit/graphql-action@v2.x id: find_team_members diff --git a/.github/workflows/triage-stale-flaky-tests.yml b/.github/workflows/triage-stale-flaky-tests.yml index ab6693675f6..d339a136cd4 100644 --- a/.github/workflows/triage-stale-flaky-tests.yml +++ b/.github/workflows/triage-stale-flaky-tests.yml @@ -4,7 +4,7 @@ on: - cron: "30 1 * * *" jobs: close: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 permissions: actions: write issues: write diff --git a/.github/workflows/triage-unlabelled.yml b/.github/workflows/triage-unlabelled.yml index 59d1bf471d1..1cd1c80afc3 100644 --- a/.github/workflows/triage-unlabelled.yml +++ b/.github/workflows/triage-unlabelled.yml @@ -7,7 +7,7 @@ on: jobs: Move_Unabeled_Issue_On_Project_Board: name: Move no longer X-Needs-Info issues to Triaged - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > ${{ !contains(github.event.issue.labels.*.name, 'X-Needs-Info') }} @@ -44,7 +44,7 @@ jobs: remove_Z-Labs_label: name: Remove Z-Labs label when features behind labs flags are removed - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: > !(contains(github.event.issue.labels.*.name, 'A-Maths') || contains(github.event.issue.labels.*.name, 'A-Message-Pinning') || diff --git a/.github/workflows/update-jitsi.yml b/.github/workflows/update-jitsi.yml index 71405177d27..68dbf22e631 100644 --- a/.github/workflows/update-jitsi.yml +++ b/.github/workflows/update-jitsi.yml @@ -6,7 +6,7 @@ on: - cron: "0 3 * * 0" # 3am every Sunday jobs: update: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/update-topics.yaml b/.github/workflows/update-topics.yaml index b24c84ad264..a984fc4f038 100644 --- a/.github/workflows/update-topics.yaml +++ b/.github/workflows/update-topics.yaml @@ -18,7 +18,7 @@ concurrency: ${{ github.workflow }} jobs: bot: name: Release topic update - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 environment: Matrix steps: - uses: actions/github-script@v7 @@ -56,7 +56,7 @@ jobs: headers, body: "{}", }); - + let res = await fetch(apiUrl, { method: "GET", headers, @@ -69,7 +69,7 @@ jobs: const data = await res.json(); console.log(roomId, "got event", data); - + const topic = data.topic.replace(regex, releaseTopic); if (topic === data.topic) { console.log(roomId, "nothing to do"); @@ -89,7 +89,7 @@ jobs: }), headers, }); - + if (res.ok) { console.log(roomId, "topic updated:", topic); } else { diff --git a/package.json b/package.json index 521a75b45dc..5703a399a4f 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "test:playwright:open": "yarn test:playwright --ui", "test:playwright:screenshots": "yarn test:playwright:screenshots:build && yarn test:playwright:screenshots:run", "test:playwright:screenshots:build": "docker build playwright -t element-web-playwright", - "test:playwright:screenshots:run": "docker run --rm --network host -e BASE_URL -e CI -v $(pwd):/work/ -v /var/run/docker.sock:/var/run/docker.sock -v /tmp/:/tmp/ -it element-web-playwright", + "test:playwright:screenshots:run": "docker run --rm --network host -e BASE_URL -e CI -v $(pwd):/work/ -v $(node -e 'console.log(require(`path`).dirname(require.resolve(`matrix-js-sdk/package.json`)))'):/work/node_modules/matrix-js-sdk -v /var/run/docker.sock:/var/run/docker.sock -v /tmp/:/tmp/ -it element-web-playwright", "coverage": "yarn test --coverage", "analyse:unused-exports": "ts-node ./scripts/analyse_unused_exports.ts", "analyse:webpack-bundles": "webpack-bundle-analyzer webpack-stats.json webapp", @@ -104,7 +104,7 @@ "emojibase-regex": "15.3.2", "escape-html": "^1.0.3", "file-saver": "^2.0.5", - "filesize": "10.1.4", + "filesize": "10.1.6", "github-markdown-css": "^5.5.1", "glob-to-regexp": "^0.4.1", "highlight.js": "^11.3.1", @@ -140,7 +140,7 @@ "react-transition-group": "^4.4.1", "rfc4648": "^1.4.0", "sanitize-filename": "^1.6.3", - "sanitize-html": "2.13.0", + "sanitize-html": "2.13.1", "tar-js": "^0.3.0", "temporal-polyfill": "^0.2.5", "ua-parser-js": "^1.0.2", diff --git a/playwright.config.ts b/playwright.config.ts index b0fd1ef99e4..1c1d380042d 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -26,6 +26,7 @@ export default defineConfig({ command: process.env.CI ? "npx serve -p 8080 -L ./webapp" : "yarn start", url: `${baseURL}/config.json`, reuseExistingServer: true, + timeout: (process.env.CI ? 30 : 120) * 1000, }, testDir: "playwright/e2e", outputDir: "playwright/test-results", diff --git a/playwright/e2e/accessibility/keyboard-navigation.spec.ts b/playwright/e2e/accessibility/keyboard-navigation.spec.ts index 18983bde014..87cee4e05c3 100644 --- a/playwright/e2e/accessibility/keyboard-navigation.spec.ts +++ b/playwright/e2e/accessibility/keyboard-navigation.spec.ts @@ -15,6 +15,9 @@ test.describe("Landmark navigation tests", () => { }); test("without any rooms", async ({ page, homeserver, app, user }) => { + // sometimes the space button doesn't appear right away + await expect(page.locator(".mx_SpaceButton_active")).toBeVisible(); + /** * Without any rooms, there is no tile in the roomlist to be focused. * So the next landmark in the list should be focused instead. diff --git a/playwright/e2e/chat-export/html-export.spec.ts b/playwright/e2e/chat-export/html-export.spec.ts index 0e12e8d93e4..9a66a4907a3 100644 --- a/playwright/e2e/chat-export/html-export.spec.ts +++ b/playwright/e2e/chat-export/html-export.spec.ts @@ -96,7 +96,10 @@ test.describe("HTML Export", () => { // Send a bunch of messages to populate the room for (let i = 1; i < 10; i++) { - await app.client.sendMessage(room.roomId, { body: `Testing ${i}`, msgtype: "m.text" }); + const respone = await app.client.sendMessage(room.roomId, { body: `Testing ${i}`, msgtype: "m.text" }); + if (i == 1) { + await app.client.reactToMessage(room.roomId, null, respone.event_id, "🙃"); + } } // Wait for all the messages to be displayed diff --git a/playwright/e2e/login/login.spec.ts b/playwright/e2e/login/login.spec.ts index 696ecb183c8..e1307f7402d 100644 --- a/playwright/e2e/login/login.spec.ts +++ b/playwright/e2e/login/login.spec.ts @@ -217,7 +217,7 @@ test.describe("Login", () => { const h1 = await page.getByRole("heading", { name: "Verify this device", level: 1 }); await expect(h1).toBeVisible(); - expect(h1.locator(".mx_CompleteSecurity_skip")).not.toBeVisible(); + await expect(h1.locator(".mx_CompleteSecurity_skip")).toHaveCount(0); }); }); }); diff --git a/playwright/e2e/read-receipts/index.ts b/playwright/e2e/read-receipts/index.ts index 2db4bcbecfa..747717908b4 100644 --- a/playwright/e2e/read-receipts/index.ts +++ b/playwright/e2e/read-receipts/index.ts @@ -222,14 +222,7 @@ export class MessageBuilder { threadId: !ev.isThreadRoot ? ev.threadRootId : undefined, })); const roomId = await room.evaluate((room) => room.roomId); - - await bot.sendEvent(roomId, threadId ?? null, "m.reaction", { - "m.relates_to": { - rel_type: "m.annotation", - event_id: id, - key: reaction, - }, - }); + await bot.reactToMessage(roomId, threadId, id, reaction); } })(this); } diff --git a/playwright/e2e/settings/account-user-settings-tab.spec.ts b/playwright/e2e/settings/account-user-settings-tab.spec.ts index ce54995d453..5492094f937 100644 --- a/playwright/e2e/settings/account-user-settings-tab.spec.ts +++ b/playwright/e2e/settings/account-user-settings-tab.spec.ts @@ -140,4 +140,51 @@ test.describe("Account user settings tab", () => { await expect(page.locator(".mx_UserMenu .mx_BaseAvatar").getByText("A")).toBeVisible(); // Alice await expect(page.locator(".mx_RoomView_wrapper .mx_BaseAvatar").getByText("A")).toBeVisible(); // Alice }); + + // ported to a playwright test because the jest test was very flakey for no obvious reason + test("should display an error if the code is incorrect when adding a phone number", async ({ uut, page }) => { + const dummyUrl = "https://nowhere.dummy/_matrix/client/unstable/add_threepid/msisdn/submit_token"; + + await page.route( + `**/_matrix/client/v3/account/3pid/msisdn/requestToken`, + async (route) => { + await route.fulfill({ + json: { + success: true, + sid: "1", + msisdn: "447700900000", + intl_fmt: "+44 7700 900000", + submit_url: dummyUrl, + }, + }); + }, + { times: 1 }, + ); + + await page.route( + dummyUrl, + async (route) => { + await route.fulfill({ + status: 400, + json: { + errcode: "M_THREEPID_AUTH_FAILED", + error: "That code is definitely wrong", + }, + }); + }, + { times: 1 }, + ); + + const phoneSection = page.getByTestId("mx_AccountPhoneNumbers"); + await phoneSection.getByRole("textbox", { name: "Phone Number" }).fill("07700900000"); + await phoneSection.getByRole("button", { name: "Add" }).click(); + + await phoneSection + .getByRole("textbox", { name: "Verification code" }) + .fill("A small eurasian field mouse dancing the paso doble"); + + await phoneSection.getByRole("button", { name: "Continue" }).click(); + + await expect(page.getByRole("heading", { name: "Unable to verify phone number." })).toBeVisible(); + }); }); diff --git a/playwright/e2e/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts b/playwright/e2e/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts index 4c8f3b3c09b..4f3b75b5baa 100644 --- a/playwright/e2e/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts +++ b/playwright/e2e/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts @@ -74,7 +74,7 @@ test.describe("Appearance user settings tab", () => { await expect(util.getThemePanel()).toMatchScreenshot("theme-panel-custom-theme-added.png"); await util.removeCustomTheme(); - await expect(util.getThemePanel()).toMatchScreenshot("theme-panel-custom-theme.png"); + await expect(util.getThemePanel()).toMatchScreenshot("theme-panel-custom-theme-removed.png"); }); }); }); diff --git a/playwright/pages/client.ts b/playwright/pages/client.ts index 7d62f42ae0a..2dfe7484f5d 100644 --- a/playwright/pages/client.ts +++ b/playwright/pages/client.ts @@ -143,6 +143,29 @@ export class Client { ); } + /** + * Send a reaction to to a message + * @param roomId ID of the room to send the reaction into + * @param threadId ID of the thread to send into or null for main timeline + * @param eventId Event ID of the message you are reacting to + * @param reaction The reaction text to send + * @returns + */ + public async reactToMessage( + roomId: string, + threadId: string | null, + eventId: string, + reaction: string, + ): Promise { + return this.sendEvent(roomId, threadId ?? null, "m.reaction", { + "m.relates_to": { + rel_type: "m.annotation", + event_id: eventId, + key: reaction, + }, + }); + } + /** * Create a room with given options. * @param options the options to apply when creating the room diff --git a/playwright/plugins/homeserver/synapse/index.ts b/playwright/plugins/homeserver/synapse/index.ts index fd1aa440689..cb4882f1b90 100644 --- a/playwright/plugins/homeserver/synapse/index.ts +++ b/playwright/plugins/homeserver/synapse/index.ts @@ -20,7 +20,7 @@ import { randB64Bytes } from "../../utils/rand"; // Docker tag to use for synapse docker image. // We target a specific digest as every now and then a Synapse update will break our CI. // This digest is updated by the playwright-image-updates.yaml workflow periodically. -const DOCKER_TAG = "develop@sha256:fd6ba2d8471a0807e1bccef4124b22d17f0058f2cf9285066fdd94d8c631964a"; +const DOCKER_TAG = "develop@sha256:47c62aa9507a24820190eef547861c0d278cc83fe90329c46b9f4329eed88ef4"; async function cfgDirFromTemplate(opts: StartHomeserverOpts): Promise> { const templateDir = path.join(__dirname, "templates", opts.template); diff --git a/playwright/snapshots/chat-export/html-export.spec.ts/html-export-linux.png b/playwright/snapshots/chat-export/html-export.spec.ts/html-export-linux.png index 9d301e79199..6a490c2157b 100644 Binary files a/playwright/snapshots/chat-export/html-export.spec.ts/html-export-linux.png and b/playwright/snapshots/chat-export/html-export.spec.ts/html-export-linux.png differ diff --git a/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/theme-panel-custom-theme-removed-linux.png b/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/theme-panel-custom-theme-removed-linux.png new file mode 100644 index 00000000000..cdafb6e9ee8 Binary files /dev/null and b/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/theme-panel-custom-theme-removed-linux.png differ diff --git a/src/SlashCommands.tsx b/src/SlashCommands.tsx index 7375cba568e..02c2b338493 100644 --- a/src/SlashCommands.tsx +++ b/src/SlashCommands.tsx @@ -727,7 +727,7 @@ export const Commands = [ isEnabled: (cli) => !isCurrentLocalRoom(cli), runFn: function (cli, roomId) { try { - cli.forceDiscardSession(roomId); + cli.getCrypto()?.forceDiscardSession(roomId); } catch (e) { return reject(e instanceof Error ? e.message : e); } diff --git a/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx b/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx index ba08bcad23a..ac180397499 100644 --- a/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx +++ b/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx @@ -7,10 +7,8 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ -import React from "react"; -import { KeyBackupInfo } from "matrix-js-sdk/src/crypto-api"; +import React, { JSX, useEffect, useState } from "react"; -import { MatrixClientPeg } from "../../../../MatrixClientPeg"; import dis from "../../../../dispatcher/dispatcher"; import { _t } from "../../../../languageHandler"; import Modal from "../../../../Modal"; @@ -18,81 +16,73 @@ import RestoreKeyBackupDialog from "../../../../components/views/dialogs/securit import { Action } from "../../../../dispatcher/actions"; import DialogButtons from "../../../../components/views/elements/DialogButtons"; import BaseDialog from "../../../../components/views/dialogs/BaseDialog"; +import { useMatrixClientContext } from "../../../../contexts/MatrixClientContext.tsx"; -interface IProps { - newVersionInfo: KeyBackupInfo; +/** + * Properties for {@link NewRecoveryMethodDialog}. + */ +interface NewRecoveryMethodDialogProps { + /** + * Callback when the dialog is dismissed. + */ onFinished(): void; } -export default class NewRecoveryMethodDialog extends React.PureComponent { - private onOkClick = (): void => { - this.props.onFinished(); - }; +// Export as default instead of a named export so that it can be dynamically imported with `Modal.createDialogAsync` - private onGoToSettingsClick = (): void => { - this.props.onFinished(); - dis.fire(Action.ViewUserSettings); - }; +/** + * Dialog to inform the user that a new recovery method has been detected. + */ +export default function NewRecoveryMethodDialog({ onFinished }: NewRecoveryMethodDialogProps): JSX.Element { + const matrixClient = useMatrixClientContext(); + const [isKeyBackupEnabled, setIsKeyBackupEnabled] = useState(false); + useEffect(() => { + const checkBackupEnabled = async (): Promise => { + const crypto = matrixClient.getCrypto(); + setIsKeyBackupEnabled(Boolean(crypto && (await crypto.getActiveSessionBackupVersion()) !== null)); + }; - private onSetupClick = async (): Promise => { - Modal.createDialog( - RestoreKeyBackupDialog, - { - onFinished: this.props.onFinished, - }, - undefined, - /* priority = */ false, - /* static = */ true, - ); - }; + checkBackupEnabled(); + }, [matrixClient]); - public render(): React.ReactNode { - const title = ( - - {_t("encryption|new_recovery_method_detected|title")} - - ); - - const newMethodDetected =

{_t("encryption|new_recovery_method_detected|description_1")}

; - - const hackWarning = ( - {_t("encryption|new_recovery_method_detected|warning")} - ); - - let content: JSX.Element | undefined; - if (MatrixClientPeg.safeGet().getKeyBackupEnabled()) { - content = ( -
- {newMethodDetected} -

{_t("encryption|new_recovery_method_detected|description_2")}

- {hackWarning} - -
- ); + function onClick(): void { + if (isKeyBackupEnabled) { + onFinished(); } else { - content = ( -
- {newMethodDetected} - {hackWarning} - -
+ Modal.createDialog( + RestoreKeyBackupDialog, + { + onFinished, + }, + undefined, + false, + true, ); } - - return ( - - {content} - - ); } + + return ( + + {_t("encryption|new_recovery_method_detected|title")} + + } + > +

{_t("encryption|new_recovery_method_detected|description_1")}

+ {isKeyBackupEnabled &&

{_t("encryption|new_recovery_method_detected|description_2")}

} + {_t("encryption|new_recovery_method_detected|warning")} + { + onFinished(); + dis.fire(Action.ViewUserSettings); + }} + /> +
+ ); } diff --git a/src/components/structures/GenericDropdownMenu.tsx b/src/components/structures/GenericDropdownMenu.tsx index 3e3d415371c..b323d9b8ade 100644 --- a/src/components/structures/GenericDropdownMenu.tsx +++ b/src/components/structures/GenericDropdownMenu.tsx @@ -106,6 +106,10 @@ type IProps = WithKeyFunction & { AdditionalOptions?: FunctionComponent; }; +function calculateKey(value: T, toKey: ((key: T) => Key) | undefined): Key { + return toKey ? toKey(value) : (value as Key); +} + export function GenericDropdownMenu({ value, onChange, @@ -119,23 +123,24 @@ export function GenericDropdownMenu({ }: IProps): JSX.Element { const [menuDisplayed, button, openMenu, closeMenu] = useContextMenu(); + const valueKey = calculateKey(value, toKey); const selected: GenericDropdownMenuItem | undefined = options .flatMap((it) => (isGenericDropdownMenuGroup(it) ? [it, ...it.options] : [it])) - .find((option) => (toKey ? toKey(option.key) === toKey(value) : option.key === value)); + .find((option) => calculateKey(option.key, toKey) === valueKey); let contextMenuOptions: JSX.Element; if (options && isGenericDropdownMenuGroupArray(options)) { contextMenuOptions = ( <> {options.map((group) => ( {group.options.map((option) => ( { @@ -144,7 +149,7 @@ export function GenericDropdownMenu({ onClose?.(ev); }} adornment={option.adornment} - isSelected={option === selected} + isSelected={calculateKey(option.key, toKey) === valueKey} /> ))} @@ -156,7 +161,7 @@ export function GenericDropdownMenu({ <> {options.map((option) => ( { @@ -165,7 +170,7 @@ export function GenericDropdownMenu({ onClose?.(ev); }} adornment={option.adornment} - isSelected={option === selected} + isSelected={calculateKey(option.key, toKey) === valueKey} /> ))} diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 8b23455967b..0f122b2d5f9 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -1631,8 +1631,12 @@ export default class MatrixChat extends React.PureComponent { cli.on(CryptoEvent.KeyBackupFailed, async (errcode): Promise => { let haveNewVersion: boolean | undefined; let newVersionInfo: KeyBackupInfo | null = null; + const keyBackupEnabled = Boolean( + cli.getCrypto() && (await cli.getCrypto()?.getActiveSessionBackupVersion()) !== null, + ); + // if key backup is still enabled, there must be a new backup in place - if (cli.getKeyBackupEnabled()) { + if (keyBackupEnabled) { haveNewVersion = true; } else { // otherwise check the server to see if there's a new one @@ -1650,7 +1654,6 @@ export default class MatrixChat extends React.PureComponent { import( "../../async-components/views/dialogs/security/NewRecoveryMethodDialog" ) as unknown as Promise, - { newVersionInfo: newVersionInfo! }, ); } else { Modal.createDialogAsync( diff --git a/src/components/views/dialogs/ChangelogDialog.tsx b/src/components/views/dialogs/ChangelogDialog.tsx index a33b2413ee7..ae3c157c788 100644 --- a/src/components/views/dialogs/ChangelogDialog.tsx +++ b/src/components/views/dialogs/ChangelogDialog.tsx @@ -15,8 +15,8 @@ import Spinner from "../elements/Spinner"; import Heading from "../typography/Heading"; interface IProps { - newVersion: string; - version: string; + newVersion: DevelopVersionString; + version: DevelopVersionString; onFinished: (success: boolean) => void; } @@ -32,6 +32,28 @@ interface Commit { const REPOS = ["element-hq/element-web", "matrix-org/matrix-js-sdk"] as const; +export type DevelopVersionString = string & { _developVersionString: never }; + +/* + * Parse a version string is compatible with the Changelog dialog ([element-version]-js-[js-sdk-version]) + */ +export function parseVersion(version: string): Record<(typeof REPOS)[number], string> | null { + const parts = version.split("-"); + if (parts.length === 3 && parts[1] === "js") { + const obj: Record = {}; + for (let i = 0; i < REPOS.length; i++) { + const commit = parts[2 * i]; + obj[REPOS[i]] = commit; + } + return obj; + } + return null; +} + +export function checkVersion(version: string): version is DevelopVersionString { + return parseVersion(version) !== null; +} + export default class ChangelogDialog extends React.Component { public constructor(props: IProps) { super(props); @@ -58,14 +80,11 @@ export default class ChangelogDialog extends React.Component { } public componentDidMount(): void { - const version = this.props.newVersion.split("-"); - const version2 = this.props.version.split("-"); - if (version == null || version2 == null) return; - // parse versions of form: [vectorversion]-react-[react-sdk-version]-js-[js-sdk-version] - for (let i = 0; i < REPOS.length; i++) { - const oldVersion = version2[2 * i]; - const newVersion = version[2 * i]; - this.fetchChanges(REPOS[i], oldVersion, newVersion); + const commits = parseVersion(this.props.version)!; + const newCommits = parseVersion(this.props.newVersion)!; + + for (const repo of REPOS) { + this.fetchChanges(repo, commits[repo], newCommits[repo]); } } diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 347a8773800..ff55a126332 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -543,7 +543,6 @@ "unmute": "Povolit", "unnamed_room": "Nepojmenovaná místnost", "unnamed_space": "Nejmenovaný prostor", - "unsent": "Neodeslané", "unverified": "Neověřeno", "user": "Uživatel", "user_avatar": "Profilový obrázek", @@ -726,19 +725,11 @@ "low_bandwidth_mode": "Režim malé šířky pásma", "low_bandwidth_mode_description": "Vyžaduje kompatibilní domovský server.", "main_timeline": "Hlavní časová osa", - "methods": "Metody", "no_receipt_found": "Žádné potvrzení o přečtení", - "no_verification_requests_found": "Nebyly nalezeny žádné požadavky na ověření", "notification_state": "Stav oznámení je %(notificationState)s", "notifications_debug": "Ladění oznámení", "number_of_users": "Počet uživatelů", "original_event_source": "Původní zdroj události", - "phase": "Fáze", - "phase_cancelled": "Zrušeno", - "phase_ready": "Připraveno", - "phase_requested": "Požadované", - "phase_started": "Zahájeno", - "phase_transaction": "Transakce", "room_encrypted": "Místnost je šifrovaná ✅", "room_id": "ID místnosti: %(roomId)s", "room_not_encrypted": "Místnost není šifrovaná 🚨", @@ -777,7 +768,6 @@ "state_key": "Stavový klíč", "thread_root_id": "ID kořenového vlákna: %(threadRootId)s", "threads_timeline": "Časová osa vláken", - "timeout": "Časový limit", "title": "Nástroje pro vývojáře", "toggle_event": "přepnout událost", "toolbox": "Sada nástrojů", @@ -794,7 +784,6 @@ "values_explicit_colon": "Hodnoty na explicitních úrovních:", "values_explicit_room": "Hodnoty na explicitních úrovních v této místnosti", "values_explicit_this_room_colon": "Hodnoty na explicitních úrovních v této místnosti:", - "verification_explorer": "Průzkumník ověřování", "view_servers_in_room": "Zobrazit servery v místnosti", "view_source_decrypted_event_source": "Dešifrovaný zdroj události", "view_source_decrypted_event_source_unavailable": "Dešifrovaný zdroj není dostupný", @@ -868,10 +857,6 @@ "export_unsupported": "Váš prohlížeč nepodporuje požadovaná kryptografická rozšíření", "import_invalid_keyfile": "Neplatný soubor s klíčem %(brand)s", "import_invalid_passphrase": "Kontrola ověření selhala: špatné heslo?", - "incompatible_database_description": "V této relaci jste již dříve používali novější verzi %(brand)s. Chcete-li tuto verzi znovu použít s šifrováním, budete se muset odhlásit a znovu přihlásit.", - "incompatible_database_disable": "Pokračovat bez šifrování", - "incompatible_database_sign_out_description": "Abyste po odhlášení nepřišli o přístup k historii šifrovaných konverzací, měli byste si před odhlášením exportovat šifrovací klíče místností. Prosím vraťte se k novější verzi %(brand)su a exportujte si klíče", - "incompatible_database_title": "Nekompatibilní databáze", "messages_not_secure": { "cause_1": "Váš domovský server", "cause_2": "Domovský server, ke kterému je ověřovaný uživatel připojen", @@ -2435,7 +2420,6 @@ "msisdn_verification_field_label": "Ověřovací kód", "msisdn_verification_instructions": "Zadejte prosím ověřovací SMS kód.", "msisdns_heading": "Telefonní čísla", - "name_placeholder": "Žádné zobrazované jméno", "oidc_manage_button": "Spravovat účet", "password_change_section": "Nastavení nového hesla k účtu…", "password_change_success": "Vaše heslo bylo úspěšně změněno.", @@ -2880,7 +2864,6 @@ "rageshake": "Zaslat hlášení o chybě", "rainbow": "Pošle zprávu v barvách duhy", "rainbowme": "Pošle reakci v barvách duhy", - "remakeolm": "Příkaz pro vývojáře: Zruší aktuální odchozí relaci skupiny a nastaví nové relace Olm", "remove": "Odstraní uživatele s daným id z této místnosti", "roomavatar": "Změní avatar této místnosti", "roomname": "Nastaví název místnosti", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 9de304fbd6c..e8bff7cd442 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -538,7 +538,6 @@ "unmute": "Stummschalten aufheben", "unnamed_room": "Unbenannter Raum", "unnamed_space": "Unbenannter Space", - "unsent": "Nicht gesendet", "unverified": "Nicht verifiziert", "user": "Benutzer", "user_avatar": "Profilbild", @@ -721,19 +720,11 @@ "low_bandwidth_mode": "Modus für geringe Bandbreite", "low_bandwidth_mode_description": "Benötigt kompatiblen Heim-Server.", "main_timeline": "Hauptverlauf", - "methods": "Methoden", "no_receipt_found": "Keine Bestätigung gefunden", - "no_verification_requests_found": "Keine Verifizierungsanfrage gefunden", "notification_state": "Benachrichtigungsstand ist %(notificationState)s", "notifications_debug": "Debug-Modus für Benachrichtigungen", "number_of_users": "Benutzeranzahl", "original_event_source": "Ursprüngliche Rohdaten", - "phase": "Phase", - "phase_cancelled": "Abgebrochen", - "phase_ready": "Bereit", - "phase_requested": "Angefragt", - "phase_started": "Gestartet", - "phase_transaction": "Transaktion", "room_encrypted": "Raum ist verschlüsselt ✅", "room_id": "Raum-ID: %(roomId)s", "room_not_encrypted": "Raum ist nicht verschlüsselt 🚨", @@ -770,7 +761,6 @@ "state_key": "Statusschlüssel", "thread_root_id": "Thread-Ursprungs-ID: %(threadRootId)s", "threads_timeline": "Thread-Verlauf", - "timeout": "Zeitüberschreitung", "title": "Entwicklungswerkzeuge", "toggle_event": "Event umschalten", "toolbox": "Werkzeugkasten", @@ -787,7 +777,6 @@ "values_explicit_colon": "Werte für explizite Stufen:", "values_explicit_room": "Werte für explizite Stufen in diesem Raum", "values_explicit_this_room_colon": "Werte für explizite Stufen in diesem Raum:", - "verification_explorer": "Verifizierungsübersicht", "view_servers_in_room": "Zeige Server im Raum", "view_source_decrypted_event_source": "Entschlüsselte Rohdaten", "view_source_decrypted_event_source_unavailable": "Entschlüsselte Quelle nicht verfügbar", @@ -861,10 +850,6 @@ "export_unsupported": "Dein Browser unterstützt die benötigten Verschlüsselungserweiterungen nicht", "import_invalid_keyfile": "Keine gültige %(brand)s-Schlüsseldatei", "import_invalid_passphrase": "Authentifizierung fehlgeschlagen: Falsches Passwort?", - "incompatible_database_description": "Du hast für diese Sitzung zuvor eine neuere Version von %(brand)s verwendet. Um diese Version mit Ende-zu-Ende-Verschlüsselung wieder zu benutzen, musst du dich erst ab- und dann wieder anmelden.", - "incompatible_database_disable": "Mit deaktivierter Verschlüsselung fortfahren", - "incompatible_database_sign_out_description": "Um zu vermeiden, dass dein Verlauf verloren geht, musst du deine Raumschlüssel exportieren, bevor du dich abmeldest. Dazu musst du auf die neuere Version von %(brand)s zurückgehen", - "incompatible_database_title": "Inkompatible Datenbanken", "messages_not_secure": { "cause_1": "Dein Heim-Server", "cause_2": "Der Heim-Server der Person, die du verifizierst", @@ -2415,7 +2400,6 @@ "msisdn_verification_field_label": "Bestätigungscode", "msisdn_verification_instructions": "Gib den Bestätigungscode ein, den du empfangen hast.", "msisdns_heading": "Telefonnummern", - "name_placeholder": "Kein Anzeigename", "oidc_manage_button": "Konto verwalten", "password_change_section": "Setze neues Kontopasswort …", "password_change_success": "Dein Passwort wurde erfolgreich geändert.", @@ -2857,7 +2841,6 @@ "rageshake": "Einen Fehlerbericht mit der Protokolldatei senden", "rainbow": "Sendet die Nachricht in Regenbogenfarben", "rainbowme": "Zeigt Aktionen in Regenbogenfarben", - "remakeolm": "Entwicklungsbefehl: Verwirft die aktuell ausgehende Gruppensitzung und setzt eine neue Olm-Sitzung auf", "remove": "Entfernt den Benutzer mit der angegebenen ID aus diesem Raum", "roomavatar": "Ändert das Icon vom Raum", "roomname": "Setze einen Raumnamen", diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 9ba4d091e61..59309710cf3 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -460,7 +460,6 @@ "unmute": "Άρση σίγασης", "unnamed_room": "Ανώνυμο δωμάτιο", "unnamed_space": "Χώρος χωρίς όνομα", - "unsent": "Μη απεσταλμένα", "user_avatar": "Εικόνα προφίλ", "username": "Όνομα χρήστη", "verification_cancelled": "Η επαλήθευση ακυρώθηκε", @@ -605,16 +604,8 @@ "failed_to_send": "Αποτυχία αποστολής συμβάντος!", "invalid_json": "Δε μοιάζει με έγκυρο JSON.", "level": "Επίπεδο", - "methods": "Μέθοδοι", - "no_verification_requests_found": "Δεν βρέθηκαν αιτήματα επαλήθευσης", "number_of_users": "Αριθμός χρηστών", "original_event_source": "Αρχική πηγή συμβάντος", - "phase": "Φάση", - "phase_cancelled": "Ακυρώθηκαν", - "phase_ready": "Έτοιμα", - "phase_requested": "Απαιτείται", - "phase_started": "Ξεκίνησαν", - "phase_transaction": "Συναλλαγή", "room_id": "ID δωματίου: %(roomId)s", "save_setting_values": "Αποθήκευση τιμών ρύθμισης", "send_custom_account_data_event": "Αποστολή προσαρμοσμένου συμβάντος δεδομένων λογαριασμού", @@ -635,7 +626,6 @@ "other": "<%(count)s χώροι>" }, "state_key": "Κλειδί κατάστασης", - "timeout": "Λήξη χρόνου", "title": "Εργαλεία προγραμματιστή", "toggle_event": "μεταβολή συμβάντος", "toolbox": "Εργαλειοθήκη", @@ -648,7 +638,6 @@ "values_explicit_colon": "Τιμές σε σαφή επίπεδα:", "values_explicit_room": "Αξίες σε σαφής επίπεδα σε αυτό το δωμάτιο", "values_explicit_this_room_colon": "Τιμές σε σαφή επίπεδα σε αυτό το δωμάτιο:", - "verification_explorer": "Εξερευνητής επαλήθευσης", "view_servers_in_room": "Προβολή διακομιστών στο δωμάτιο", "view_source_decrypted_event_source": "Αποκρυπτογραφημένη πηγή συμβάντος", "widget_screenshots": "Ενεργοποίηση στιγμιότυπων οθόνης μικροεφαρμογών σε υποστηριζόμενες μικροεφαρμογές" @@ -716,10 +705,6 @@ "export_unsupported": "Ο περιηγητής σας δεν υποστηρίζει τα απαιτούμενα πρόσθετα κρυπτογράφησης", "import_invalid_keyfile": "Μη έγκυρο αρχείο κλειδιού %(brand)s", "import_invalid_passphrase": "Αποτυχία ελέγχου πιστοποίησης: λανθασμένος κωδικός πρόσβασης;", - "incompatible_database_description": "Έχετε χρησιμοποιήσει στο παρελθόν μια νεότερη έκδοση του %(brand)s με αυτήν την συνεδρία. Για να χρησιμοποιήσετε ξανά αυτήν την έκδοση με κρυπτογράφηση από άκρο σε άκρο, θα πρέπει να αποσυνδεθείτε και να συνδεθείτε ξανά.", - "incompatible_database_disable": "Συνέχεια με Απενεργοποίηση Κρυπτογράφησης", - "incompatible_database_sign_out_description": "Για να αποφύγετε να χάσετε το ιστορικό των συνομιλιών σας, πρέπει να εξαγάγετε τα κλειδιά του δωματίου σας πριν αποσυνδεθείτε. Για να το κάνετε αυτό, θα χρειαστεί να επιστρέψετε στη νεότερη έκδοση του %(brand)s", - "incompatible_database_title": "Μη συμβατή Βάση Δεδομένων", "messages_not_secure": { "cause_1": "Ο κεντρικός σας διακομιστής", "cause_2": "Ο κεντρικός διακομιστής στον οποίο είναι συνδεδεμένος ο χρήστης που επαληθεύετε", @@ -1954,7 +1939,6 @@ "msisdn_verification_field_label": "Κωδικός επαλήθευσης", "msisdn_verification_instructions": "Εισαγάγετε τον κωδικό επαλήθευσης που εστάλη μέσω μηνύματος sms.", "msisdns_heading": "Τηλεφωνικοί αριθμοί", - "name_placeholder": "Χωρίς όνομα", "password_change_success": "Ο κωδικός πρόσβασης σας άλλαξε με επιτυχία.", "remove_email_prompt": "Κατάργηση %(email)s;", "remove_msisdn_prompt": "Κατάργηση %(phone)s;" diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index 9dd27a2269f..51d17e01411 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -646,10 +646,6 @@ "export_unsupported": "Via foliumilo ne subtenas la bezonatajn ĉifrajn kromprogramojn", "import_invalid_keyfile": "Nevalida ŝlosila dosiero de %(brand)s", "import_invalid_passphrase": "Aŭtentikiga kontrolo malsukcesis: ĉu pro malĝusta pasvorto?", - "incompatible_database_description": "Vi antaŭe uzis pli novan version de %(brand)s kun tiu ĉi salutaĵo. Por ree uzi ĉi tiun version kun tutvoja ĉifrado, vi devos adiaŭi kaj resaluti.", - "incompatible_database_disable": "Pluigi sen ĉifrado", - "incompatible_database_sign_out_description": "Por eviti perdon de via babila historio, vi devas elporti la ŝlosilojn de viaj ĉambroj antaŭ adiaŭo. Por tio vi bezonos reveni al la pli nova versio de %(brand)s", - "incompatible_database_title": "Neakorda datumbazo", "messages_not_secure": { "cause_1": "Via hejmservilo", "heading": "Unu el la jenaj eble estas malkonfidencigita:", @@ -1749,7 +1745,6 @@ "msisdn_verification_field_label": "Kontrola kodo", "msisdn_verification_instructions": "Bonvolu enigi kontrolan kodon senditan per tekstmesaĝo.", "msisdns_heading": "Telefonnumeroj", - "name_placeholder": "Sen vidiga nomo", "remove_email_prompt": "Ĉu forigi %(email)s?", "remove_msisdn_prompt": "Ĉu forigi %(phone)s?" }, @@ -2036,7 +2031,6 @@ "rageshake": "Sendi erarraporton kun protokolo", "rainbow": "Sendas la mesaĝon ĉielarke kolorigitan", "rainbowme": "Sendas la mienon ĉielarke kolorigitan", - "remakeolm": "Komando de programisto: Forĵetas la nunan eliran grupsesion kaj starigas novajn Olm-salutaĵojn", "remove": "Forigas uzanton kun la donita identigilo de tiu ĉambro", "roomavatar": "Ŝanĝas la profilbildon de la nuna ĉambro", "roomname": "Agordas nomon de la ĉambro", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index acb1f3a5da9..7b5185d360c 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -504,7 +504,6 @@ "unmute": "Dejar de silenciar", "unnamed_room": "Sala sin nombre", "unnamed_space": "Espacio sin nombre", - "unsent": "No enviado", "unverified": "Sin verificar", "user_avatar": "Foto de perfil", "username": "Nombre de usuario", @@ -681,16 +680,8 @@ "level": "Nivel", "low_bandwidth_mode": "Modo de bajo ancho de banda", "low_bandwidth_mode_description": "Es necesario que el servidor base sea compatible.", - "methods": "Métodos", - "no_verification_requests_found": "Ninguna solicitud de verificación encontrada", "number_of_users": "Número de usuarios", "original_event_source": "Fuente original del evento", - "phase": "Fase", - "phase_cancelled": "Cancelado", - "phase_ready": "Listo", - "phase_requested": "Solicitado", - "phase_started": "Empezado", - "phase_transaction": "Transacción", "room_encrypted": "La sala está cifrada ✅", "room_id": "ID de la sala: %(roomId)s", "room_not_encrypted": "La sala no está cifrada 🚨", @@ -716,7 +707,6 @@ "other": "<%(count)s espacios>" }, "state_key": "Clave de estado", - "timeout": "Tiempo de espera", "title": "Herramientas de desarrollo", "toggle_event": "activar o desactivar el evento", "toolbox": "Caja de herramientas", @@ -729,7 +719,6 @@ "values_explicit_colon": "Valores a niveles explícitos:", "values_explicit_room": "Valores a niveles explícitos en esta sala", "values_explicit_this_room_colon": "Valores a niveles explícitos en esta sala:", - "verification_explorer": "Explorador de verificación", "view_servers_in_room": "Ver servidores en la sala", "view_source_decrypted_event_source": "Descifrar fuente del evento", "widget_screenshots": "Activar capturas de pantalla de accesorios en los accesorios que lo permitan" @@ -799,10 +788,6 @@ "export_unsupported": "Su navegador no soporta las extensiones de criptografía requeridas", "import_invalid_keyfile": "No es un archivo de claves de %(brand)s válido", "import_invalid_passphrase": "La verificación de autenticación falló: ¿contraseña incorrecta?", - "incompatible_database_description": "Anteriormente usaste una versión más nueva de %(brand)s con esta sesión. Para volver a utilizar esta versión con cifrado de extremo a extremo, deberá cerrar sesión y volver a iniciar sesión.", - "incompatible_database_disable": "Seguir con el cifrado desactivado", - "incompatible_database_sign_out_description": "Para evitar perder tu historial de chat, debes exportar las claves de la sala antes de salir. Debes volver a la versión actual de %(brand)s para esto", - "incompatible_database_title": "Base de datos incompatible", "messages_not_secure": { "cause_1": "Tu servidor base", "cause_2": "El servidor base del usuario al que estás invitando", @@ -2232,7 +2217,6 @@ "msisdn_verification_field_label": "Código de verificación", "msisdn_verification_instructions": "Por favor, escribe el código de verificación que te hemos enviado por SMS.", "msisdns_heading": "Números de teléfono", - "name_placeholder": "Sin nombre público", "oidc_manage_button": "Gestionar cuenta", "password_change_section": "Elige una contraseña para la cuenta…", "password_change_success": "Has cambiado tu contraseña.", @@ -2612,7 +2596,6 @@ "rageshake": "Enviar un informe de errores con los registros", "rainbow": "Envía el mensaje coloreado como un arcoiris", "rainbowme": "Envía el emoji coloreado como un arcoiris", - "remakeolm": "Comando para desarrolladores: descarta la sesión de grupo actual saliente y crea nuevas sesiones de Olm", "remove": "Saca al usuario con la ID dada de esta sala", "roomavatar": "Cambia la imagen de la sala actual", "roomname": "Establece el nombre de la sala", diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index e9d51fd1e73..9777913c0b1 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -542,7 +542,6 @@ "unmute": "Eemalda summutamine", "unnamed_room": "Ilma nimeta jututuba", "unnamed_space": "Nimetu kogukonnakeskus", - "unsent": "Saatmata", "unverified": "Verifitseerimata", "user": "Kasutaja", "user_avatar": "Profiilipilt", @@ -726,19 +725,11 @@ "low_bandwidth_mode": "Vähese ribalaiusega režiim", "low_bandwidth_mode_description": "Eeldab, et koduserver toetab sellist funktsionaalsust.", "main_timeline": "Peamine ajajoon", - "methods": "Meetodid", "no_receipt_found": "Lugemisteatist ei leidu", - "no_verification_requests_found": "Verifitseerimispäringuid ei leidu", "notification_state": "Teavituste olek: %(notificationState)s", "notifications_debug": "Teavituste silumine", "number_of_users": "Kasutajate arv", "original_event_source": "Sündmuse töötlemata lähtekood", - "phase": "Faas", - "phase_cancelled": "Katkestatud", - "phase_ready": "Valmis", - "phase_requested": "Päring tehtud", - "phase_started": "Alustatud", - "phase_transaction": "Transaktsioon", "room_encrypted": "Jututuba on krüptitud ✅", "room_id": "Jututoa tunnus: %(roomId)s", "room_not_encrypted": "Jututuba on krüptimata 🚨", @@ -775,7 +766,6 @@ "state_key": "Oleku võti", "thread_root_id": "Jutulõnga esimese kirje tunnus: %(threadRootId)s", "threads_timeline": "Jutulõngade ajajoon", - "timeout": "Aegumine", "title": "Arendusvahendid", "toggle_event": "lülita sündmus sisse/välja", "toolbox": "Töövahendid", @@ -792,7 +782,6 @@ "values_explicit_colon": "Väärtused konkreetsel tasemel:", "values_explicit_room": "Väärtused konkreetsel tasemel selles jututoas", "values_explicit_this_room_colon": "Väärtused konkreetsel tasemel selles jututoas:", - "verification_explorer": "Verifitseerimise haldus", "view_servers_in_room": "Näita jututoas kasutatavaid servereid", "view_source_decrypted_event_source": "Sündmuse dekrüptitud lähtekood", "view_source_decrypted_event_source_unavailable": "Dekrüptitud lähteandmed pole saadaval", @@ -866,10 +855,6 @@ "export_unsupported": "Sinu brauser ei toeta vajalikke krüptoteeke", "import_invalid_keyfile": "See ei ole sobilik võtmefail %(brand)s'i jaoks", "import_invalid_passphrase": "Autentimine ebaõnnestus: kas salasõna pole õige?", - "incompatible_database_description": "Sa oled selle sessiooni jaoks varem kasutanud %(brand)s'i uuemat versiooni. Selle versiooni kasutamiseks läbiva krüptimisega, pead sa esmalt logima välja ja siis uuesti logima tagasi sisse.", - "incompatible_database_disable": "Jätka ilma krüptimiseta", - "incompatible_database_sign_out_description": "Selleks, et sa ei kaotaks oma vestluste ajalugu, pead sa eksportima jututoa krüptovõtmed enne välja logimist. Küll, aga pead sa selleks kasutama %(brand)s uuemat versiooni", - "incompatible_database_title": "Mitteühilduv andmebaas", "messages_not_secure": { "cause_1": "Sinu koduserver", "cause_2": "Sinu poolt verifitseeritava kasutaja koduserver", @@ -2399,7 +2384,6 @@ "msisdn_verification_field_label": "Verifikatsioonikood", "msisdn_verification_instructions": "Palun sisesta verifikatsioonikood, mille said telefoni tekstisõnumina.", "msisdns_heading": "Telefoninumbrid", - "name_placeholder": "Kuvatav nimi puudub", "oidc_manage_button": "Halda kasutajakontot", "password_change_section": "Määra kontole uus salasõna…", "password_change_success": "Sinu salasõna muutmine õnnestus.", @@ -2831,7 +2815,6 @@ "rageshake": "Saada veakirjeldus koos logikirjetega", "rainbow": "Saadab selle sõnumi vikerkaarevärvilisena", "rainbowme": "Saadab antud emote vikerkaarevärvides", - "remakeolm": "Arendaja toiming: Lõpetab kehtiva väljuva rühmasessiooni ja seadistab uue Olm sessiooni", "remove": "Järgnevaga eemaldad antud kasutajatunnusega osaleja sellest jututoast", "roomavatar": "Muudab selle jututoa tunnuspilti", "roomname": "Määrab jututoa nime", diff --git a/src/i18n/strings/fa.json b/src/i18n/strings/fa.json index 9d4428ff062..cddf37c691e 100644 --- a/src/i18n/strings/fa.json +++ b/src/i18n/strings/fa.json @@ -607,10 +607,6 @@ "export_unsupported": "مرورگر شما از افزونه‌های رمزنگاری مورد نیاز پشتیبانی نمی‌کند", "import_invalid_keyfile": "فایل کلید %(brand)s معتبر نیست", "import_invalid_passphrase": "احراز هویت موفقیت‌آمیز نبود: گذرواژه نادرست است؟", - "incompatible_database_description": "شما قبلاً با این نشست از نسخه جدیدتر %(brand)s استفاده کرده‌اید. برای استفاده مجدد از این نسخه با قابلیت رمزنگاری سرتاسر ، باید از حسابتان خارج شده و دوباره وارد برنامه شوید.", - "incompatible_database_disable": "با رمزنگاری غیرفعال ادامه بده", - "incompatible_database_sign_out_description": "برای جلوگیری از دست دادن تاریخچه‌ی گفتگوی خود باید قبل از ورود به برنامه ، کلیدهای اتاق خود را استخراج (Export) کنید. برای این کار باید از نسخه جدیدتر %(brand)s استفاده کنید", - "incompatible_database_title": "پایگاه داده ناسازگار", "messages_not_secure": { "cause_1": "سرور شما", "heading": "ممکن است یکی از موارد زیر به در معرض خطر باشد:", @@ -1544,7 +1540,6 @@ "msisdn_verification_field_label": "کد تائید", "msisdn_verification_instructions": "لطفا کد تائیدی را که از طریق متن ارسال شده‌است، وارد کنید.", "msisdns_heading": "شماره تلفن", - "name_placeholder": "هیچ نامی برای نمایش وجود ندارد", "remove_email_prompt": "%(email)s را پاک می‌کنید؟", "remove_msisdn_prompt": "%(phone)s را پاک می‌کنید؟" }, @@ -1792,7 +1787,6 @@ "rageshake": "گزارش یک اشکال به همراه سیاهه‌های مربوط", "rainbow": "پیام داده شده را به صورت رنگین کمان ارسال می کند", "rainbowme": "emote داده شده را به صورت رنگین کمان می فرستد", - "remakeolm": "فرمان توسعه دهنده: سشن گروه خارجی فعلی رد شد و یک سشن دیگر تعریف شد", "remove": "کاربر دارای شناسه ارائه شده از این اتاق حذف می‌شود", "roomavatar": "تصویر نمایه اتاق فعلی را تغییر دهید", "roomname": "نام اتاق را تنظیم می کند", diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 5489e3229aa..acb77b4f8dd 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -668,17 +668,9 @@ "level": "Taso", "low_bandwidth_mode_description": "Vaatii yhteensopivan kotipalvelimen.", "main_timeline": "Pääaikajana", - "methods": "Menetelmät", "no_receipt_found": "Kuittausta ei löytynyt", - "no_verification_requests_found": "Vahvistuspyyntöjä ei löytynyt", "number_of_users": "Käyttäjämäärä", "original_event_source": "Alkuperäinen tapahtumalähde", - "phase": "Vaihe", - "phase_cancelled": "Peruttu", - "phase_ready": "Valmis", - "phase_requested": "Pyydetty", - "phase_started": "Käynnistetty", - "phase_transaction": "Transaktio", "room_id": "Huoneen ID-tunniste: %(roomId)s", "room_notifications_sender": "Lähettäjä: ", "save_setting_values": "Tallenna asetusarvot", @@ -693,7 +685,6 @@ "other": "<%(count)s avaruutta>" }, "state_key": "Tila-avain", - "timeout": "Aikakatkaisu", "title": "Kehittäjätyökalut", "toolbox": "Työkalut", "use_at_own_risk": "Tämä käyttöliittymä EI tarkista arvojen tyyppejä. Käytä omalla vastuullasi.", @@ -764,9 +755,6 @@ "export_unsupported": "Selaimesi ei tue vaadittuja kryptografisia laajennuksia", "import_invalid_keyfile": "Ei kelvollinen %(brand)s-avaintiedosto", "import_invalid_passphrase": "Autentikointi epäonnistui: virheellinen salasana?", - "incompatible_database_disable": "Jatka salaus poistettuna käytöstä", - "incompatible_database_sign_out_description": "Jotta et menetä keskusteluhistoriaasi, sinun täytyy tallentaa huoneen avaimet ennen kuin kirjaudut ulos. Joudut käyttämään uudempaa %(brand)sin versiota tätä varten", - "incompatible_database_title": "Yhteensopimaton tietokanta", "messages_not_secure": { "cause_1": "Kotipalvelimesi", "cause_3": "Sinun tai toisen osapuolen internet-yhteys", @@ -2120,7 +2108,6 @@ "msisdn_verification_field_label": "Varmennuskoodi", "msisdn_verification_instructions": "Syötä tekstiviestillä saamasi varmennuskoodi.", "msisdns_heading": "Puhelinnumerot", - "name_placeholder": "Ei näyttönimeä", "oidc_manage_button": "Hallitse tiliä", "password_change_section": "Aseta uusi tilin salasana…", "password_change_success": "Salasanasi vaihtaminen onnistui.", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index d4089899615..bb79008a834 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -574,7 +574,6 @@ "unmute": "Activer le son", "unnamed_room": "Salon anonyme", "unnamed_space": "Espace sans nom", - "unsent": "Non envoyé", "unverified": "Non vérifiée", "updating": "Mise à jour...", "user": "Utilisateur", @@ -759,20 +758,11 @@ "low_bandwidth_mode": "Mode faible bande passante", "low_bandwidth_mode_description": "Nécessite un serveur d’accueil compatible.", "main_timeline": "Historique principal", - "methods": "Méthodes", "no_receipt_found": "Aucun accusé disponible", - "no_verification_requests_found": "Aucune demande de vérification trouvée", "notification_state": "L’état des notifications est %(notificationState)s", "notifications_debug": "Débogage des notifications", "number_of_users": "Nombre d’utilisateurs", "original_event_source": "Évènement source original", - "other_user": "Autre utilisateur", - "phase": "Phase", - "phase_cancelled": "Annulé", - "phase_ready": "Prêt", - "phase_requested": "Envoyé", - "phase_started": "Démarré", - "phase_transaction": "Transaction", "room_encrypted": "Le salon est chiffré ✅", "room_id": "Identifiant du salon : %(roomId)s", "room_not_encrypted": "Le salon n’est pas chiffré 🚨", @@ -810,8 +800,6 @@ "state_key": "Clé d’état", "thread_root_id": "ID du fil de discussion racine : %(threadRootId)s", "threads_timeline": "Historique des fils de discussion", - "timeout": "Temps d’attente", - "timeout_none": "Aucun", "title": "Outils de développement", "toggle_event": "Afficher/masquer l’évènement", "toolbox": "Boîte à outils", @@ -828,7 +816,6 @@ "values_explicit_colon": "Valeurs pour les rangs explicites :", "values_explicit_room": "Valeurs pour des rangs explicites dans ce salon", "values_explicit_this_room_colon": "Valeurs pour les rangs explicites de ce salon :", - "verification_explorer": "Explorateur de vérification", "view_servers_in_room": "Voir les serveurs dans le salon", "view_source_decrypted_event_source": "Évènement source déchiffré", "view_source_decrypted_event_source_unavailable": "Source déchiffrée non disponible", @@ -902,10 +889,6 @@ "export_unsupported": "Votre navigateur ne prend pas en charge les extensions cryptographiques nécessaires", "import_invalid_keyfile": "Fichier de clé %(brand)s non valide", "import_invalid_passphrase": "Erreur d’authentification : mot de passe incorrect ?", - "incompatible_database_description": "Vous avez précédemment utilisé une version plus récente de %(brand)s avec cette session. Pour réutiliser cette version avec le chiffrement de bout en bout, vous devrez vous déconnecter et vous reconnecter.", - "incompatible_database_disable": "Continuer avec le chiffrement désactivé", - "incompatible_database_sign_out_description": "Pour éviter de perdre l’historique de vos discussions, vous devez exporter vos clés avant de vous déconnecter. Vous devez revenir à une version plus récente de %(brand)s pour pouvoir le faire", - "incompatible_database_title": "Base de données incompatible", "messages_not_secure": { "cause_1": "Votre serveur d’accueil", "cause_2": "Le serveur d’accueil auquel l’utilisateur que vous vérifiez est connecté", @@ -2466,7 +2449,6 @@ "msisdn_verification_field_label": "Code de vérification", "msisdn_verification_instructions": "Veuillez saisir le code de vérification envoyé par SMS.", "msisdns_heading": "Numéros de téléphone", - "name_placeholder": "Pas de nom d’affichage", "oidc_manage_button": "Gérer le compte", "password_change_section": "Définir un nouveau mot de passe de compte…", "password_change_success": "Votre mot de passe a été mis à jour.", @@ -2909,7 +2891,6 @@ "rageshake": "Envoyer un rapport d’anomalie avec les journaux", "rainbow": "Envoie le message coloré aux couleurs de l’arc-en-ciel", "rainbowme": "Envoie la réaction colorée aux couleurs de l’arc-en-ciel", - "remakeolm": "Commande développeur : oublier la session de groupe sortante actuelle et négocier une nouvelle session Olm", "remove": "Expulse l’utilisateur avec l’identifiant donné de ce salon", "roomavatar": "Modifie l’avatar du salon actuel", "roomname": "Définit le nom du salon", diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 8fe44074db2..c1b2fe83e92 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -468,7 +468,6 @@ "unmute": "Non acalar", "unnamed_room": "Sala sen nome", "unnamed_space": "Espazo sen nome", - "unsent": "Sen enviar", "unverified": "Non verificada", "user_avatar": "Imaxe de perfil", "username": "Nome de usuaria", @@ -619,16 +618,8 @@ "failed_to_send": "Fallou o envio do evento!", "invalid_json": "Non semella un JSON válido.", "level": "Nivel", - "methods": "Métodos", - "no_verification_requests_found": "Non se atopan solicitudes de verificación", "number_of_users": "Número de usuarias", "original_event_source": "Fonte orixinal do evento", - "phase": "Fase", - "phase_cancelled": "Cancelado", - "phase_ready": "Preparado", - "phase_requested": "Solicitado", - "phase_started": "Iniciado", - "phase_transaction": "Transacción", "room_id": "ID da sala: %(roomId)s", "save_setting_values": "Gardar valores configurados", "send_custom_account_data_event": "Enviar evento de datos da conta personalizado", @@ -649,7 +640,6 @@ "other": "<%(count)s espazos>" }, "state_key": "Chave do estado", - "timeout": "Caducidade", "title": "Ferramentas desenvolvemento", "toggle_event": "activar evento", "toolbox": "Ferramentas", @@ -662,7 +652,6 @@ "values_explicit_colon": "Valores a niveis explícitos:", "values_explicit_room": "Valores a niveis explícitos nesta sala", "values_explicit_this_room_colon": "Valores a niveis explícitos nesta sala:", - "verification_explorer": "Explorador da verificación", "view_servers_in_room": "Ver servidores na sala", "view_source_decrypted_event_source": "Fonte descifrada do evento", "widget_screenshots": "Activar as capturas de trebellos para aqueles que as permiten" @@ -732,10 +721,6 @@ "export_unsupported": "O seu navegador non soporta as extensións de criptografía necesarias", "import_invalid_keyfile": "Non é un ficheiro de chaves %(brand)s válido", "import_invalid_passphrase": "Fallou a comprobación de autenticación: contrasinal incorrecto?", - "incompatible_database_description": "Xa utilizaches unha versión máis nova de %(brand)s nesta sesión. Para usar esta versión novamente con cifrado extremo-a-extremo tes que saír e volver a acceder.", - "incompatible_database_disable": "Continuar con Cifrado Desactivado", - "incompatible_database_sign_out_description": "Para evitar perder o historial da conversa, debes exportar as chaves da sala antes de saír. Necesitarás volver á nova versión de %(brand)s para facer esto", - "incompatible_database_title": "Base de datos non compatible", "messages_not_secure": { "cause_1": "O teu servidor", "cause_2": "O servidor ao que está conectado a persoa que estás verificando", @@ -2070,7 +2055,6 @@ "msisdn_verification_field_label": "Código de verificación", "msisdn_verification_instructions": "Escribe o código de verificación enviado no SMS.", "msisdns_heading": "Número de teléfono", - "name_placeholder": "Sen nome público", "password_change_success": "Cambiouse correctamente o contrasinal.", "remove_email_prompt": "Eliminar %(email)s?", "remove_msisdn_prompt": "Eliminar %(phone)s?", @@ -2394,7 +2378,6 @@ "rageshake": "Envía un informe de fallos con rexistros", "rainbow": "Envía a mensaxe dada colorida como o arco da vella", "rainbowme": "Envía o emoji colorido como un arco da vella", - "remakeolm": "Comando de desenvolvemento: descarta a actual sesión en grupo e crea novas sesións Olm", "remove": "Elimina desta sala á usuaria co ID dado", "roomavatar": "Cambia o avatar da sala actual", "roomname": "Establecer nome da sala", diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index bec46c5392e..85982203ce1 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -543,7 +543,6 @@ "failed_to_find_widget": "אירעה שגיאה במציאת היישומון הזה.", "failed_to_load": "נכשל בטעינה.", "invalid_json": "תבנית JSON לא חוקית", - "phase": "שלב", "room_id": "זיהוי חדר: %(roomId)s", "send_custom_state_event": "שלח אירוע מצב מותאם אישית", "server_versions": "גירסאות שרת", @@ -614,10 +613,6 @@ "export_unsupported": "הדפדפן שלכם אינו תומך בהצפנה הדרושה", "import_invalid_keyfile": "קובץ מפתח של %(brand)s אינו תקין", "import_invalid_passphrase": "האימות שלכם נכשל: סיסמא שגויה?", - "incompatible_database_description": "השתמשת בעבר בגרסה חדשה יותר של %(brand)s עם הפעלה זו. כדי להשתמש בגרסה זו שוב עם הצפנה מקצה לקצה, יהיה עליך לצאת ולחזור שוב.", - "incompatible_database_disable": "המשך כאשר ההצפנה מושבתת", - "incompatible_database_sign_out_description": "כדי להימנע מאיבוד היסטוריית הצ'אט שלכם, עליכם לייצא את מפתחות החדר שלכם לפני שאתם מתנתקים. יהיה עליכם לחזור לגרסה החדשה יותר של %(brand)s כדי לעשות זאת", - "incompatible_database_title": "מסד נתונים לא תואם", "messages_not_secure": { "cause_1": "שרת הבית שלכם", "heading": "אחד מהדברים הבאים עלול להוות סיכון:", @@ -1664,7 +1659,6 @@ "msisdn_verification_field_label": "קוד אימות", "msisdn_verification_instructions": "אנא הזן קוד אימות שנשלח באמצעות טקסט.", "msisdns_heading": "מספרי טלפון", - "name_placeholder": "אין שם לתצוגה", "password_change_section": "הגדרת סיסמה חדשה לחשבונך…", "remove_email_prompt": "הסר כתובות %(email)s ?", "remove_msisdn_prompt": "הסר מספרי %(phone)s ?" @@ -1947,7 +1941,6 @@ "rageshake": "שולח דוח תקלה עם לוג", "rainbow": "שולח את ההודעה כקשת של צבעים", "rainbowme": "שולח את האימוג'י צבוע בקשת של צבעים", - "remakeolm": "פקודת מפתחים: מסלקת את הפגישה הנוכחית של הקבוצה היוצאת ומגדירה הפעלות חדשות של Olm", "remove": "הוצאת משתמש מחדר זה", "roomavatar": "משנה את האווטר של החדר הנוכחי", "roomname": "מגדיר את שם החדר", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index e1d32651b4b..97e87f663a4 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -535,7 +535,6 @@ "unmute": "Némítás visszavonása", "unnamed_room": "Névtelen szoba", "unnamed_space": "Névtelen tér", - "unsent": "Elküldetlen", "unverified": "Ellenőrizetlen", "user": "Felhasználó", "user_avatar": "Profilkép", @@ -718,19 +717,11 @@ "low_bandwidth_mode": "Alacsony sávszélességű mód", "low_bandwidth_mode_description": "Kompatibilis Matrix-kiszolgálóra van szükség.", "main_timeline": "Fő idővonal", - "methods": "Metódusok", "no_receipt_found": "Nincs visszajelzés", - "no_verification_requests_found": "Nem található ellenőrző kérés", "notification_state": "Értesítés állapot: %(notificationState)s", "notifications_debug": "Értesítések hibakeresése", "number_of_users": "Felhasználószám", "original_event_source": "Eredeti esemény forráskód", - "phase": "Fázis", - "phase_cancelled": "Megszakítva", - "phase_ready": "Kész", - "phase_requested": "Kérve", - "phase_started": "Elindult", - "phase_transaction": "Tranzakció", "room_encrypted": "A szoba titkosított ✅", "room_id": "Szoba azon.: %(roomId)s", "room_not_encrypted": "A szoba nincs titkosítva 🚨", @@ -767,7 +758,6 @@ "state_key": "Állapotkulcs", "thread_root_id": "Üzenetszál gyökérazonosítója: %(threadRootId)s", "threads_timeline": "Üzenetszálak idővonala", - "timeout": "Időtúllépés", "title": "Fejlesztői eszközök", "toggle_event": "esemény be/ki", "toolbox": "Eszköztár", @@ -784,7 +774,6 @@ "values_explicit_colon": "Egyedi szinthez tartozó értékek:", "values_explicit_room": "Egyedi szinthez tartozó értékek ebben a szobában", "values_explicit_this_room_colon": "Egyedi szinthez tartozó értékek ebben a szobában:", - "verification_explorer": "Ellenőrzések böngésző", "view_servers_in_room": "Kiszolgálók megjelenítése a szobában", "view_source_decrypted_event_source": "Visszafejtett esemény forráskód", "view_source_decrypted_event_source_unavailable": "A visszafejtett forrás nem érhető el", @@ -858,10 +847,6 @@ "export_unsupported": "A böngészője nem támogatja a szükséges titkosítási kiterjesztéseket", "import_invalid_keyfile": "Nem érvényes %(brand)s kulcsfájl", "import_invalid_passphrase": "Hitelesítési ellenőrzés sikertelen: hibás jelszó?", - "incompatible_database_description": "Ezt a munkamenetet előzőleg egy újabb %(brand)s verzióval használtad. Ahhoz, hogy újra ezt a verziót tudd használni végpontok közötti titkosítással, ki kell lépned majd újra vissza.", - "incompatible_database_disable": "Folytatás a titkosítás kikapcsolásával", - "incompatible_database_sign_out_description": "Hogy a régi üzenetekhez továbbra is hozzáférhess kijelentkezés előtt ki kell mentened a szobák titkosító kulcsait. Ehhez a %(brand)s egy frissebb verzióját kell használnod", - "incompatible_database_title": "Nem kompatibilis adatbázis", "messages_not_secure": { "cause_1": "Matrix szervered", "cause_2": "Az ellenőrizendő felhasználó ehhez a Matrix-kiszolgálóhoz kapcsolódik:", @@ -2358,7 +2343,6 @@ "msisdn_verification_field_label": "Ellenőrző kód", "msisdn_verification_instructions": "Kérlek add meg az ellenőrző kódot amit szövegben küldtünk.", "msisdns_heading": "Telefonszámok", - "name_placeholder": "Nincs megjelenítendő név", "oidc_manage_button": "Fiók kezelése", "password_change_section": "Új fiókjelszó beállítása…", "password_change_success": "A jelszó sikeresen megváltozott.", @@ -2800,7 +2784,6 @@ "rageshake": "Hibajelentés beküldése naplóval", "rainbow": "A megadott üzenetet szivárványszínben küldi el", "rainbowme": "A megadott hangulatjelet szivárványszínben küldi el", - "remakeolm": "Fejlesztői parancs: Eldobja a jelenlegi kimenő csoport kapcsolatot és új Olm munkamenetet hoz létre", "remove": "Eltávolítja a megadott azonosítójú felhasználót a szobából", "roomavatar": "Megváltoztatja a profilképét a jelenlegi szobában", "roomname": "Szobanév beállítása", diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index 51bff3a1442..4881ee45e90 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -535,7 +535,6 @@ "unmute": "Suarakan", "unnamed_room": "Ruangan Tanpa Nama", "unnamed_space": "Space Tidak Dinamai", - "unsent": "Belum dikirim", "unverified": "Belum diverifikasi", "user": "Pengguna", "user_avatar": "Gambar profil", @@ -716,19 +715,11 @@ "low_bandwidth_mode": "Mode bandwidth rendah", "low_bandwidth_mode_description": "Membutuhkan homeserver yang kompatibel.", "main_timeline": "Lini masa utama", - "methods": "Metode", "no_receipt_found": "Tidak ada laporan yang ditemukan", - "no_verification_requests_found": "Tidak ada permintaan verifikasi yang ditemukan", "notification_state": "Keadaan notifikasi adalah %(notificationState)s", "notifications_debug": "Pengawakutuan notifikasi", "number_of_users": "Jumlah pengguna", "original_event_source": "Sumber peristiwa asli", - "phase": "Masa", - "phase_cancelled": "Dibatalkan", - "phase_ready": "Siap", - "phase_requested": "Diminta", - "phase_started": "Dimulai", - "phase_transaction": "Transaksi", "room_encrypted": "Ruangan terenkripsi ✅", "room_id": "ID ruangan: %(roomId)s", "room_not_encrypted": "Ruangan tidak terenkripsi 🚨", @@ -765,7 +756,6 @@ "state_key": "Kunci Status", "thread_root_id": "ID Akar Utas: %(threadRootId)s", "threads_timeline": "Lini masa utasan", - "timeout": "Waktu habis", "title": "Alat pengembang", "toggle_event": "alih peristiwa", "toolbox": "Kotak Peralatan", @@ -782,7 +772,6 @@ "values_explicit_colon": "Nilai-nilai di tingkat eksplisit:", "values_explicit_room": "Nilai-nilai di tingkat eksplisit di ruangan ini", "values_explicit_this_room_colon": "Nilai-nilai di tingkat ekspliksi di ruangan ini:", - "verification_explorer": "Penelusur verifikasi", "view_servers_in_room": "Tampilkan server-server di ruangan", "view_source_decrypted_event_source": "Sumber peristiwa terdekripsi", "view_source_decrypted_event_source_unavailable": "Sumber terdekripsi tidak tersedia", @@ -856,10 +845,6 @@ "export_unsupported": "Browser Anda tidak mendukung ekstensi kriptografi yang dibutuhkan", "import_invalid_keyfile": "Bukan keyfile %(brand)s yang absah", "import_invalid_passphrase": "Pemeriksaan autentikasi gagal: kata sandi salah?", - "incompatible_database_description": "Anda sebelumnya menggunakan sebuah versi %(brand)s yang baru dengan sesi ini. Untuk menggunakan versi ini lagi dengan enkripsi ujung ke ujung, Anda harus keluar dan masuk lagi.", - "incompatible_database_disable": "Lanjutkan Dengan Enkripsi Dinonaktifkan", - "incompatible_database_sign_out_description": "Untuk menghindari kehilangan riwayat obrolan, Anda harus mengekspor kunci ruangan Anda sebelum keluar. Anda harus kembali ke versi %(brand)s yang baru untuk melakukannya", - "incompatible_database_title": "Databasis Tidak Kompatibel", "messages_not_secure": { "cause_1": "Homeserver Anda", "cause_2": "Homeserver pengguna yang Anda memverifikasi", @@ -2390,7 +2375,6 @@ "msisdn_verification_field_label": "Kode verifikasi", "msisdn_verification_instructions": "Silakan masukkan kode verifikasi yang terkirim melalui teks.", "msisdns_heading": "Nomor telepon", - "name_placeholder": "Tidak ada nama tampilan", "oidc_manage_button": "Kelola akun", "password_change_section": "Atur kata sandi akun baru…", "password_change_success": "Kata sandi Anda berhasil diubah.", @@ -2832,7 +2816,6 @@ "rageshake": "Kirim laporan kutu dengan catatan", "rainbow": "Mengirim pesan dengan warna pelangi", "rainbowme": "Mengirim emote dengan warna pelangi", - "remakeolm": "Perintah pengembang: Membuang sesi grup keluar saat ini dan menyiapkan sesi Olm baru", "remove": "Mengeluarkan pengguna dengan id yang dicantumkan dari ruangan ini", "roomavatar": "Mengubah avatar ruangan saat ini", "roomname": "Mengatur nama ruangan", diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json index 4b38c8f5df3..6d5a2194e93 100644 --- a/src/i18n/strings/is.json +++ b/src/i18n/strings/is.json @@ -474,7 +474,6 @@ "unmute": "Ekki þagga", "unnamed_room": "Nafnlaus spjallrás", "unnamed_space": "Nafnlaust svæði", - "unsent": "Ósent", "unverified": "Óstaðfest", "user_avatar": "Notandamynd", "username": "Notandanafn", @@ -628,15 +627,7 @@ "level": "Stig", "low_bandwidth_mode": "Hamur fyrir litla bandbreidd", "low_bandwidth_mode_description": "Krefst samhæfðs heimaþjóns.", - "methods": "Aðferðir", - "no_verification_requests_found": "Engar staðfestingarbeiðnir fundust", "number_of_users": "Fjöldi notenda", - "phase": "Fasi", - "phase_cancelled": "Hætt við", - "phase_ready": "Tilbúið", - "phase_requested": "Umbeðið", - "phase_started": "Hafið", - "phase_transaction": "Færsluaðgerð", "room_id": "Auðkenni spjallrásar: %(roomId)s", "save_setting_values": "Vista gildi valkosta", "send_custom_state_event": "Senda sérsniðinn stöðuatburð", @@ -654,7 +645,6 @@ "other": "<%(count)s svæði>" }, "state_key": "Stöðulykill", - "timeout": "Tímamörk", "title": "Forritunartól", "toggle_event": "víxla atburði af/á", "toolbox": "Verkfærakassi", @@ -729,8 +719,6 @@ "export_unsupported": "Vafrinn þinn styður ekki nauðsynlegar dulritunarviðbætur", "import_invalid_keyfile": "Er ekki gild %(brand)s lykilskrá", "import_invalid_passphrase": "Sannvottun auðkenningar mistókst: er lykilorðið rangt?", - "incompatible_database_disable": "Halda áfram með dulritun óvirka", - "incompatible_database_title": "Ósamhæfður gagnagrunnur", "messages_not_secure": { "cause_1": "Heimaþjónninn þinn", "heading": "Eitt af eftirfarandi gæti verið berskjaldað:", @@ -1960,7 +1948,6 @@ "msisdn_verification_field_label": "Sannvottunarkóði", "msisdn_verification_instructions": "Settu inn staðfestingarkóða sem sendur var með SMS.", "msisdns_heading": "Símanúmer", - "name_placeholder": "Ekkert birtingarnafn", "password_change_success": "Það tókst að breyta lykilorðinu þínu.", "remove_email_prompt": "Fjarlægja %(email)s?", "remove_msisdn_prompt": "Fjarlægja %(phone)s?", diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index 6957cb3c952..61889463b0f 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -543,7 +543,6 @@ "unmute": "Togli silenzio", "unnamed_room": "Stanza senza nome", "unnamed_space": "Spazio senza nome", - "unsent": "Non inviato", "unverified": "Non verificato", "user": "Utente", "user_avatar": "Immagine del profilo", @@ -726,19 +725,11 @@ "low_bandwidth_mode": "Modalità larghezza di banda bassa", "low_bandwidth_mode_description": "Richiede un homeserver compatibile.", "main_timeline": "Linea temporale principale", - "methods": "Metodi", "no_receipt_found": "Nessuna ricevuta trovata", - "no_verification_requests_found": "Nessuna richiesta di verifica trovata", "notification_state": "Lo stato di notifica è %(notificationState)s", "notifications_debug": "Debug notifiche", "number_of_users": "Numero di utenti", "original_event_source": "Sorgente dell'evento originale", - "phase": "Fase", - "phase_cancelled": "Annullato", - "phase_ready": "Pronto", - "phase_requested": "Richiesto", - "phase_started": "Iniziato", - "phase_transaction": "Transazione", "room_encrypted": "La stanza è crittografata ✅", "room_id": "ID stanza: %(roomId)s", "room_not_encrypted": "La stanza non è crittografata 🚨", @@ -776,7 +767,6 @@ "state_key": "Chiave dello stato", "thread_root_id": "ID root del thread: %(threadRootId)s", "threads_timeline": "Linea temporale conversazioni", - "timeout": "Scadenza", "title": "Strumenti per sviluppatori", "toggle_event": "commuta evento", "toolbox": "Strumenti", @@ -793,7 +783,6 @@ "values_explicit_colon": "Valori a livelli espliciti:", "values_explicit_room": "Valori a livelli espliciti in questa stanza", "values_explicit_this_room_colon": "Valori a livelli espliciti in questa stanza:", - "verification_explorer": "Esploratore di verifiche", "view_servers_in_room": "Vedi i server nella stanza", "view_source_decrypted_event_source": "Sorgente dell'evento decrittografato", "view_source_decrypted_event_source_unavailable": "Sorgente decifrata non disponibile", @@ -867,10 +856,6 @@ "export_unsupported": "Il tuo browser non supporta l'estensione crittografica richiesta", "import_invalid_keyfile": "Non è una chiave di %(brand)s valida", "import_invalid_passphrase": "Controllo di autenticazione fallito: password sbagliata?", - "incompatible_database_description": "Hai precedentemente usato una versione più recente di %(brand)s con questa sessione. Per usare ancora questa versione con la crittografia end to end, dovrai disconnetterti e riaccedere.", - "incompatible_database_disable": "Continua con la crittografia disattivata", - "incompatible_database_sign_out_description": "Per evitare di perdere la cronologia della chat, devi esportare le tue chiavi della stanza prima di uscire. Dovrai tornare alla versione più recente di %(brand)s per farlo", - "incompatible_database_title": "Database non compatibile", "messages_not_secure": { "cause_1": "Il tuo homeserver", "cause_2": "L'homeserver al quale è connesso l'utente che stai verificando", @@ -2431,7 +2416,6 @@ "msisdn_verification_field_label": "Codice di verifica", "msisdn_verification_instructions": "Inserisci il codice di verifica inviato via SMS.", "msisdns_heading": "Numeri di telefono", - "name_placeholder": "Nessun nome visibile", "oidc_manage_button": "Gestisci account", "password_change_section": "Imposta una nuova password dell'account…", "password_change_success": "La tua password è stata cambiata correttamente.", @@ -2873,7 +2857,6 @@ "rageshake": "Invia una segnalazione di errore con i registri", "rainbow": "Invia il messaggio dato colorato come un arcobaleno", "rainbowme": "Invia l'emoticon dato colorato come un arcobaleno", - "remakeolm": "Comando sviluppatore: scarta l'attuale sessione di gruppo in uscita e imposta nuove sessioni Olm", "remove": "Rimuove l'utente con il dato ID da questa stanza", "roomavatar": "Cambia l'avatar della stanza attuale", "roomname": "Imposta il nome della stanza", diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index 581c3ce7810..db4cb20ca02 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -517,7 +517,6 @@ "unmute": "ミュート解除", "unnamed_room": "名前のないルーム", "unnamed_space": "名前のないスペース", - "unsent": "未送信", "unverified": "未認証", "user_avatar": "プロフィール画像", "username": "ユーザー名", @@ -692,18 +691,10 @@ "low_bandwidth_mode": "低速モード", "low_bandwidth_mode_description": "対応するホームサーバーが必要。", "main_timeline": "メインのタイムライン", - "methods": "方法", "no_receipt_found": "開封確認が見つかりません", - "no_verification_requests_found": "認証リクエストがありません", "notifications_debug": "通知のデバッグ", "number_of_users": "ユーザー数", "original_event_source": "元のイベントのソースコード", - "phase": "フェーズ", - "phase_cancelled": "キャンセル済", - "phase_ready": "準備ができました", - "phase_requested": "要求済", - "phase_started": "開始済", - "phase_transaction": "トランザクション", "room_id": "ルームID:%(roomId)s", "room_notifications_dot": "ドット: ", "room_notifications_highlight": "ハイライト: ", @@ -733,7 +724,6 @@ }, "state_key": "ステートキー", "threads_timeline": "スレッドのタイムライン", - "timeout": "タイムアウト", "title": "開発者ツール", "toggle_event": "イベントを切り替える", "toolbox": "ツールボックス", @@ -747,7 +737,6 @@ "values_explicit_colon": "明示的なレベルでの値:", "values_explicit_room": "このルーム内の明示的なレベルでの値", "values_explicit_this_room_colon": "このルーム内の明示的なレベルでの値:", - "verification_explorer": "認証の調査", "view_servers_in_room": "ルームでサーバーを表示", "view_source_decrypted_event_source": "復号化したイベントのソースコード", "view_source_decrypted_event_source_unavailable": "復号化したソースコードが利用できません", @@ -818,10 +807,6 @@ "export_unsupported": "お使いのブラウザーは、必要な暗号化拡張機能をサポートしていません", "import_invalid_keyfile": "有効な%(brand)sキーファイルではありません", "import_invalid_passphrase": "認証に失敗しました:間違ったパスワード?", - "incompatible_database_description": "以前このセッションで、より新しい%(brand)sのバージョンを使用していました。エンドツーエンド暗号化を有効にしてこのバージョンを再び使用するには、サインアウトして、再びサインインする必要があります。", - "incompatible_database_disable": "暗号化を無効にして続行", - "incompatible_database_sign_out_description": "チャットの履歴の消去を防ぐには、ログアウトする前にルームの鍵をエクスポートする必要があります。そのためには%(brand)sの新しいバージョンへと戻る必要があります", - "incompatible_database_title": "互換性のないデータベース", "messages_not_secure": { "cause_1": "あなたのホームサーバー", "cause_2": "認証しようとしているユーザーが接続しているホームサーバー", @@ -2219,7 +2204,6 @@ "msisdn_verification_field_label": "認証コード", "msisdn_verification_instructions": "テキストで送信された確認コードを入力してください。", "msisdns_heading": "電話番号", - "name_placeholder": "表示名がありません", "oidc_manage_button": "アカウントを管理", "password_change_section": "アカウントの新しいパスワードを設定…", "password_change_success": "パスワードを変更しました。", @@ -2613,7 +2597,6 @@ "rageshake": "ログ付きのバグレポートを送信", "rainbow": "指定したメッセージを虹色で送信", "rainbowme": "指定したエモートを虹色で送信", - "remakeolm": "管理者コマンド:現在のアウトバウンドグループセッションを破棄して、新しいOlmセッションを設定", "remove": "指定したIDのユーザーをこのルームから追放", "roomavatar": "現在のルームのアバターを変更", "roomname": "ルーム名を設定", diff --git a/src/i18n/strings/lo.json b/src/i18n/strings/lo.json index 673adffacf7..fffbd25e9ba 100644 --- a/src/i18n/strings/lo.json +++ b/src/i18n/strings/lo.json @@ -469,7 +469,6 @@ "unmute": "ຍົກເລີກປິດສຽງ", "unnamed_room": "ບໍ່ມີຊື່ຫ້ອງ", "unnamed_space": "ພື້ນທີ່ບໍ່ລະບຸຊື່", - "unsent": "ຍັງບໍ່ໄດ້ສົ່ງ", "user_avatar": "ຮູບໂປຣໄຟລ໌", "username": "ຊື່ຜູ້ໃຊ້", "verification_cancelled": "ຍົກເລີກການຢັ້ງຢືນແລ້ວ", @@ -615,16 +614,8 @@ "failed_to_send": "ສົ່ງນັດໝາຍບໍ່ສຳເລັດ!", "invalid_json": "ເບິ່ງຄືວ່າ JSON ບໍ່ຖືກຕ້ອງ.", "level": "ລະດັບ", - "methods": "ວິທີການ", - "no_verification_requests_found": "ບໍ່ພົບການຮ້ອງຂໍການຢັ້ງຢືນ", "number_of_users": "ຈໍານວນຜູ້ໃຊ້", "original_event_source": "ແຫຼ່ງຕົ້ນສະບັບ", - "phase": "ໄລຍະ", - "phase_cancelled": "ຍົກເລີກ", - "phase_ready": "ຄວາມພ້ອມ/ພ້ອມ", - "phase_requested": "ຮ້ອງຂໍ", - "phase_started": "ໄດ້ເລີ່ມແລ້ວ", - "phase_transaction": "ທຸລະກໍາ", "room_id": "ID ຫ້ອງ: %(roomId)s", "save_setting_values": "ບັນທຶກຄ່າການຕັ້ງຄ່າ", "send_custom_account_data_event": "ສົ່ງຂໍ້ມູນບັນຊີແບບກຳນົດເອງທຸກເຫດການ", @@ -641,7 +632,6 @@ "settings_explorer": "ການຕັ້ງຄ່າຕົວສຳຫຼວດ", "show_hidden_events": "ສະແດງເຫດການທີ່ເຊື່ອງໄວ້ໃນທາມລາຍ", "state_key": "ປຸມລັດ", - "timeout": "ຫມົດເວລາ", "title": "ເຄື່ອງມືພັດທະນາ", "toggle_event": "ສະຫຼັບກິດຈະກຳ", "toolbox": "ກ່ອງເຄື່ອງມື", @@ -654,7 +644,6 @@ "values_explicit_colon": "ຄ່າໃນລະດັບທີ່ຊັດເຈນ:", "values_explicit_room": "ປະເມີນຄ່າໃນລະດັບທີ່ຊັດເຈນຢູ່ໃນຫ້ອງນີ້", "values_explicit_this_room_colon": "ຄ່າໃນລະດັບທີ່ຊັດເຈນຢູ່ໃນຫ້ອງນີ້:", - "verification_explorer": "ຕົວສຳຫຼວດການຢັ້ງຢືນ", "view_servers_in_room": "ເບິ່ງເຊີບເວີໃນຫ້ອງ", "view_source_decrypted_event_source": "ບ່ອນທີ່ຖືກຖອດລະຫັດໄວ້", "widget_screenshots": "ເປີດໃຊ້ widget ຖ່າຍໜ້າຈໍໃນ widget ທີ່ຮອງຮັບ" @@ -722,10 +711,6 @@ "export_unsupported": "ບຣາວເຊີຂອງທ່ານບໍ່ຮອງຮັບການເພິ່ມເຂົ້າລະຫັດລັບທີ່ຕ້ອງການ", "import_invalid_keyfile": "ບໍ່ແມ່ນ %(brand)s ຟຮາຍຫຼັກ ທີ່ຖືກຕ້ອງ", "import_invalid_passphrase": "ການກວດສອບຄວາມຖືກຕ້ອງບໍ່ສຳເລັດ: ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ?", - "incompatible_database_description": "ກ່ອນໜ້ານີ້ທ່ານເຄີຍໃຊ້%(brand)sເວີຊັ້ນໃໝ່ກວ່າໃນລະບົບນີ້. ເພື່ອໃຊ້ເວີຊັ້ນນີ້ອີກເທື່ອໜຶ່ງດ້ວຍການເຂົ້າລະຫັດແບບຕົ້ນທາງເຖິງປາຍທາງ, ທ່ານຈະຕ້ອງອອກຈາກລະບົບ ແລະ ກັບຄືນເຂົ້າລະຫັດໃໝ່ອີກຄັ້ງ.", - "incompatible_database_disable": "ສືບຕໍ່ດ້ວຍການປິດການເຂົ້າລະຫັດ", - "incompatible_database_sign_out_description": "ເພື່ອຫຼີກເວັ້ນການສູນເສຍປະຫວັດການສົນທະນາຂອງທ່ານ, ທ່ານຕ້ອງອອກກະແຈຫ້ອງຂອງທ່ານກ່ອນທີ່ຈະອອກຈາກລະບົບ. ທ່ານຈະຕ້ອງໄດ້ກັບຄືນໄປຫາເວີຊັ້ນໃຫມ່ຂອງ %(brand)s ເພື່ອເຮັດສິ່ງນີ້", - "incompatible_database_title": "ຖານຂໍ້ມູນບໍ່ສອດຄ່ອງກັນ", "messages_not_secure": { "cause_1": "homeserver ຂອງທ່ານ", "cause_2": "homeserver ຜູ້ໃຊ້ທີ່ທ່ານກໍາລັງຢືນຢັນແມ່ນເຊື່ອມຕໍ່ກັບ", @@ -1982,7 +1967,6 @@ "msisdn_verification_field_label": "ລະຫັດຢືນຢັນ", "msisdn_verification_instructions": "ກະລຸນາໃສ່ລະຫັດຢືນຢັນທີ່ສົ່ງຜ່ານຂໍ້ຄວາມ.", "msisdns_heading": "ເບີໂທລະສັບ", - "name_placeholder": "ບໍ່ມີຊື່ສະແດງຜົນ", "password_change_success": "ລະຫັດຜ່ານຂອງທ່ານຖືກປ່ຽນສຳເລັດແລ້ວ.", "remove_email_prompt": "ລຶບ %(email)s ອອກບໍ?", "remove_msisdn_prompt": "ລຶບ %(phone)sອອກບໍ?" diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index 9847381c906..9ccd0962caa 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -548,10 +548,6 @@ "export_unsupported": "Jūsų naršyklė nepalaiko reikalingų kriptografijos plėtinių", "import_invalid_keyfile": "Negaliojantis %(brand)s rakto failas", "import_invalid_passphrase": "Autentifikavimo patikra nepavyko: neteisingas slaptažodis?", - "incompatible_database_description": "Anksčiau šiame seanse naudojote naujesnę %(brand)s versiją. Norėdami vėl naudoti šią versiją su visapusiu šifravimu, turėsite atsijungti ir prisijungti iš naujo.", - "incompatible_database_disable": "Tęsti išjungus šifravimą", - "incompatible_database_sign_out_description": "Tam, kad neprarastumėte savo pokalbių istorijos, prieš atsijungdami turite eksportuoti kambario raktus. Norėdami tai padaryti, turėsite grįžti į naujesnę %(brand)s versiją", - "incompatible_database_title": "Nesuderinama duomenų bazė", "messages_not_secure": { "cause_1": "Jūsų serveris", "cause_2": "Namų serveris, prie kurio yra prisijungęs patvirtinamas naudotojas", @@ -1559,7 +1555,6 @@ "msisdn_verification_field_label": "Patvirtinimo kodas", "msisdn_verification_instructions": "Įveskite patvirtinimo kodą išsiųstą teksto žinute.", "msisdns_heading": "Telefono numeriai", - "name_placeholder": "Nėra rodomo vardo", "password_change_success": "Jūsų slaptažodis sėkmingai pakeistas.", "remove_email_prompt": "Pašalinti %(email)s?", "remove_msisdn_prompt": "Pašalinti %(phone)s?" diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index ea226efeeea..18500da4bf7 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -468,7 +468,6 @@ "unmute": "Niet dempen", "unnamed_room": "Naamloze Kamer", "unnamed_space": "Naamloze Space", - "unsent": "niet verstuurd", "unverified": "Niet geverifieerd", "user_avatar": "Profielfoto", "username": "Inlognaam", @@ -618,16 +617,8 @@ "failed_to_send": "Kan gebeurtenis niet versturen!", "invalid_json": "Lijkt niet op geldige JSON.", "level": "Niveau", - "methods": "Methoden", - "no_verification_requests_found": "Geen verificatieverzoeken gevonden", "number_of_users": "Aantal personen", "original_event_source": "Originele gebeurtenisbron", - "phase": "Fase", - "phase_cancelled": "Geannuleerd", - "phase_ready": "Gereed", - "phase_requested": "Aangevraagd", - "phase_started": "Begonnen", - "phase_transaction": "Transactie", "room_id": "Kamer ID: %(roomId)s", "save_setting_values": "Instelling waardes opslaan", "send_custom_account_data_event": "Aangepaste accountgegevens gebeurtenis versturen", @@ -643,7 +634,6 @@ "settings_explorer": "Instellingen verkenner", "show_hidden_events": "Verborgen gebeurtenissen op de tijdslijn weergeven", "state_key": "Toestandssleutel", - "timeout": "Time-out", "title": "Ontwikkelaarstools", "toggle_event": "wissel gebeurtenis", "toolbox": "Gereedschap", @@ -656,7 +646,6 @@ "values_explicit_colon": "Waardes op expliciete niveaus:", "values_explicit_room": "Waardes op expliciete niveaus in deze kamer", "values_explicit_this_room_colon": "Waarde op expliciete niveaus in deze kamer:", - "verification_explorer": "Verificatie verkenner", "view_servers_in_room": "Servers in de kamer bekijken", "view_source_decrypted_event_source": "Ontsleutel de gebeurtenisbron", "widget_screenshots": "Widget-schermafbeeldingen inschakelen op ondersteunde widgets" @@ -726,10 +715,6 @@ "export_unsupported": "Jouw browser ondersteunt de benodigde cryptografie-extensies niet", "import_invalid_keyfile": "Geen geldig %(brand)s-sleutelbestand", "import_invalid_passphrase": "Aanmeldingscontrole mislukt: onjuist wachtwoord?", - "incompatible_database_description": "Je hebt eerder een nieuwere versie van %(brand)s in deze sessie gebruikt. Om deze versie opnieuw met eind-tot-eind-versleuteling te gebruiken, zal je moeten uitloggen en opnieuw inloggen.", - "incompatible_database_disable": "Verdergaan met versleuteling uitgeschakeld", - "incompatible_database_sign_out_description": "Om jouw kamergeschiedenis niet te verliezen vóór het uitloggen dien je jouw veiligheidssleutel te exporteren. Dat moet vanuit de nieuwere versie van %(brand)s", - "incompatible_database_title": "Incompatibele database", "messages_not_secure": { "cause_1": "Jouw homeserver", "cause_2": "De homeserver waarmee de persoon die jij verifieert verbonden is", @@ -2058,7 +2043,6 @@ "msisdn_verification_field_label": "Verificatiecode", "msisdn_verification_instructions": "Voer de verificatiecode in die werd verstuurd via sms.", "msisdns_heading": "Telefoonnummers", - "name_placeholder": "Geen weergavenaam", "password_change_success": "Wachtwoord veranderen geslaagd.", "remove_email_prompt": "%(email)s verwijderen?", "remove_msisdn_prompt": "%(phone)s verwijderen?", @@ -2411,7 +2395,6 @@ "rageshake": "Stuur een bugrapport met logs", "rainbow": "Verstuurt het gegeven bericht in regenboogkleuren", "rainbowme": "Verstuurt de gegeven emoticon in regenboogkleuren", - "remakeolm": "Opdracht voor ontwikkelaars: verwijdert de huidige uitgaande groepssessie en stelt nieuwe Olm-sessies in", "remove": "Verwijder persoon met opgegeven ID uit deze kamer", "roomavatar": "Wijzigt de afbeelding van de huidige kamer", "roomname": "Stelt de kamernaam in", diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index b9f38883bd2..7aa90f7f85b 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -578,7 +578,6 @@ "unmute": "Wyłącz wyciszenie", "unnamed_room": "Pokój bez nazwy", "unnamed_space": "Przestrzeń bez nazwy", - "unsent": "Niewysłane", "unverified": "Niezweryfikowane", "updating": "Aktualizowanie...", "user": "Użytkownik", @@ -763,20 +762,11 @@ "low_bandwidth_mode": "Tryb niskiej przepustowości", "low_bandwidth_mode_description": "Wymaga kompatybilnego serwera domowego.", "main_timeline": "Główna oś czasu", - "methods": "Metody", "no_receipt_found": "Nie znaleziono potwierdzenia", - "no_verification_requests_found": "Nie znaleziono żądań weryfikacji", "notification_state": "Status powiadomień %(notificationState)s", "notifications_debug": "Debug powiadomień", "number_of_users": "Liczba użytkowników", "original_event_source": "Oryginalne źródło wydarzenia", - "other_user": "Inny użytkownik", - "phase": "Etap", - "phase_cancelled": "Anulowano", - "phase_ready": "Gotowe", - "phase_requested": "Żądane", - "phase_started": "Rozpoczęto", - "phase_transaction": "Transakcja", "room_encrypted": "Pokój jest szyfrowany ✅", "room_id": "ID pokoju: %(roomId)s", "room_not_encrypted": "Pokój nie jest szyfrowany 🚨", @@ -815,8 +805,6 @@ "state_key": "Klucz stanu", "thread_root_id": "ID Root Wątku:%(threadRootId)s", "threads_timeline": "Oś czasu wątków", - "timeout": "Czas oczekiwania", - "timeout_none": "Brak", "title": "Ustawienia deweloperskie", "toggle_event": "przełącz wydarzenie", "toolbox": "Przybornik", @@ -833,7 +821,6 @@ "values_explicit_colon": "Wartości w ścisłych poziomach:", "values_explicit_room": "Wartości w ścisłych poziomach w tym pokoju", "values_explicit_this_room_colon": "Wartości w ścisłych poziomach w tym pokoju:", - "verification_explorer": "Eksplorator weryfikacji", "view_servers_in_room": "Wyświetl serwery w pokoju", "view_source_decrypted_event_source": "Rozszyfrowane wydarzenie źródłowe", "view_source_decrypted_event_source_unavailable": "Rozszyfrowane źródło niedostępne", @@ -907,10 +894,6 @@ "export_unsupported": "Twoja przeglądarka nie wspiera wymaganych rozszerzeń kryptograficznych", "import_invalid_keyfile": "Niepoprawny plik klucza %(brand)s", "import_invalid_passphrase": "Próba autentykacji nieudana: nieprawidłowe hasło?", - "incompatible_database_description": "Użyłeś wcześniej nowszej wersji %(brand)s na tej sesji. Aby korzystać z tej wersji z szyfrowaniem end-to-end, będziesz musiał zalogować się ponownie.", - "incompatible_database_disable": "Kontynuuj Z Wyłączonym Szyfrowaniem", - "incompatible_database_sign_out_description": "Aby uniknąć utraty historii czatu, eksportuj swoje klucze pokoju przed wylogowaniem. Musisz powrócić do nowszej wersji %(brand)s, aby do zrobić", - "incompatible_database_title": "Niekompatybilna baza danych", "messages_not_secure": { "cause_1": "Twój serwer domowy", "cause_2": "Użytkownik, którego weryfikujesz jest połączony z serwerem domowym", @@ -2567,7 +2550,6 @@ "msisdn_verification_field_label": "Kod weryfikacyjny", "msisdn_verification_instructions": "Wprowadź kod weryfikacyjny wysłany wiadomością tekstową.", "msisdns_heading": "Numery telefonów", - "name_placeholder": "Brak nazwy ekranowej", "oidc_manage_button": "Zarządzaj kontem", "password_change_section": "Ustaw nowe hasło użytkownika…", "password_change_success": "Twoje hasło zostało pomyślnie zmienione.", @@ -3041,7 +3023,6 @@ "rageshake": "Wyślij raport błędu z logami", "rainbow": "Wysyła podaną wiadomość w kolorach tęczy", "rainbowme": "Wysyła podaną emotkę w kolorach tęczy", - "remakeolm": "Komenda programisty: Odrzuca bieżącą sesję grupową i tworzy nowe sesje Olm", "remove": "Usuwa użytkowników z danym id z tego pokoju", "roomavatar": "Zmienia awatar dla obecnego pokoju", "roomname": "Ustawia nazwę pokoju", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index da70ce20455..6428774388c 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -625,10 +625,6 @@ "export_unsupported": "O seu navegador não suporta as extensões de criptografia necessárias", "import_invalid_keyfile": "Não é um arquivo de chave válido do %(brand)s", "import_invalid_passphrase": "Falha ao checar a autenticação: senha incorreta?", - "incompatible_database_description": "Você já usou uma versão mais recente do %(brand)s nesta sessão. Para usar esta versão novamente com a criptografia de ponta a ponta, você terá que se desconectar e entrar novamente.", - "incompatible_database_disable": "Continuar com criptografia desativada", - "incompatible_database_sign_out_description": "Para evitar perder seu histórico de bate-papo, você precisa exportar as chaves da sua sala antes de se desconectar. Quando entrar novamente, você precisará usar a versão mais atual do %(brand)s", - "incompatible_database_title": "Banco de dados incompatível", "messages_not_secure": { "cause_1": "Seu servidor local", "cause_2": "O servidor doméstico do usuário que você está verificando está conectado", @@ -1658,7 +1654,6 @@ "msisdn_verification_field_label": "Código de confirmação", "msisdn_verification_instructions": "Digite o código de confirmação enviado por mensagem de texto.", "msisdns_heading": "Números de Telefone", - "name_placeholder": "Nenhum nome e sobrenome", "remove_email_prompt": "Remover %(email)s?", "remove_msisdn_prompt": "Remover %(phone)s?" }, @@ -1956,7 +1951,6 @@ "rageshake": "Envia um relatório de erro", "rainbow": "Envia a mensagem colorida como arco-íris", "rainbowme": "Envia o emoji colorido como um arco-íris", - "remakeolm": "Comando do desenvolvedor: descarta a sessão de grupo de saída atual e configura novas sessões do Olm", "remove": "Remove desta sala o usuário com o ID determinado", "roomavatar": "Altera a foto da sala", "roomname": "Altera o nome da sala", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index d0263c6aacc..fef57bbef2b 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -536,7 +536,6 @@ "unmute": "Вернуть право речи", "unnamed_room": "Комната без названия", "unnamed_space": "Безымянное пространство", - "unsent": "Не отправлено", "unverified": "Не заверено", "user": "Пользователь", "user_avatar": "Аватар", @@ -720,19 +719,11 @@ "low_bandwidth_mode": "Режим низкой пропускной способности", "low_bandwidth_mode_description": "Требуется совместимый сервер.", "main_timeline": "Основная хронология", - "methods": "Методы", "no_receipt_found": "Квитанция не найдена", - "no_verification_requests_found": "Запросов проверки не найдено", "notification_state": "Состояние уведомления %(notificationState)s", "notifications_debug": "Отладка уведомлений", "number_of_users": "Количество пользователей", "original_event_source": "Оригинальный исходный код", - "phase": "Фаза", - "phase_cancelled": "Отменено", - "phase_ready": "Готово", - "phase_requested": "Запрошено", - "phase_started": "Начато", - "phase_transaction": "Транзакция", "room_encrypted": "Комната зашифрована ✅", "room_id": "ID комнаты: %(roomId)s", "room_not_encrypted": "Комната не имеет шифрования 🚨", @@ -772,7 +763,6 @@ "state_key": "Ключ состояния", "thread_root_id": "Идентификатор Root ID: %(threadRootId)s", "threads_timeline": "Хронология тем", - "timeout": "Тайм-аут", "title": "Инструменты разработчика", "toggle_event": "переключить событие", "toolbox": "Панель инструментов", @@ -789,7 +779,6 @@ "values_explicit_colon": "Значения на явных уровнях:", "values_explicit_room": "Значения на явных уровнях в этой комнате", "values_explicit_this_room_colon": "Значения на явных уровнях:", - "verification_explorer": "Посмотреть проверки", "view_servers_in_room": "Посмотреть серверы в комнате", "view_source_decrypted_event_source": "Расшифрованный исходный код", "view_source_decrypted_event_source_unavailable": "Источник расшифровки недоступен", @@ -863,10 +852,6 @@ "export_unsupported": "Ваш браузер не поддерживает необходимые криптографические расширения", "import_invalid_keyfile": "Недействительный файл ключей %(brand)s", "import_invalid_passphrase": "Ошибка аутентификации: возможно, неправильный пароль?", - "incompatible_database_description": "Ранее вы использовали более новую версию %(brand)s через этот сеанс. Чтобы снова использовать эту версию со сквозным шифрованием, вам нужно будет выйти из учётной записи и снова войти.", - "incompatible_database_disable": "Продолжить с отключенным шифрованием", - "incompatible_database_sign_out_description": "Чтобы не потерять историю чата, вы должны экспортировать ключи от комнаты перед выходом из системы. Для этого вам нужно будет вернуться к более новой версии %(brand)s", - "incompatible_database_title": "Несовместимая база данных", "messages_not_secure": { "cause_1": "Ваш домашний сервер", "cause_2": "Домашний сервер пользователя, которого вы подтверждаете", @@ -2416,7 +2401,6 @@ "msisdn_verification_field_label": "Код подтверждения", "msisdn_verification_instructions": "Пожалуйста, введите проверочный код, высланный с помощью текста.", "msisdns_heading": "Телефонные номера", - "name_placeholder": "Нет отображаемого имени", "oidc_manage_button": "Настройки аккаунта", "password_change_section": "Установите новый пароль…", "password_change_success": "Ваш пароль успешно изменён.", @@ -2858,7 +2842,6 @@ "rageshake": "Отправить отчёт об ошибке с логами", "rainbow": "Отправляет сообщение, окрашенное в цвета радуги", "rainbowme": "Отправляет эмоцию, окрашенную в цвета радуги", - "remakeolm": "Команда разработчика: Отменить текущий сеанс исходящей группы и настроить новые сеансы Olm", "remove": "Удаляет пользователя с заданным id из этой комнаты", "roomavatar": "Меняет аватар текущей комнаты", "roomname": "Устанавливает название комнаты", diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 8dcb19d674d..d336a89bba7 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -536,7 +536,6 @@ "unmute": "Zrušiť stlmenie", "unnamed_room": "Nepomenovaná miestnosť", "unnamed_space": "Nepomenovaný priestor", - "unsent": "Neodoslané", "unverified": "Neoverené", "user": "Používateľ", "user_avatar": "Obrázok v profile", @@ -720,19 +719,11 @@ "low_bandwidth_mode": "Režim nízkej šírky pásma", "low_bandwidth_mode_description": "Vyžaduje kompatibilný domovský server.", "main_timeline": "Hlavná časová os", - "methods": "Metódy", "no_receipt_found": "Nenašlo sa žiadne potvrdenie", - "no_verification_requests_found": "Nenašli sa žiadne žiadosti o overenie", "notification_state": "Stav oznámenia je %(notificationState)s", "notifications_debug": "Ladenie oznámení", "number_of_users": "Počet používateľov", "original_event_source": "Pôvodný zdroj udalosti", - "phase": "Fáza", - "phase_cancelled": "Zrušené", - "phase_ready": "Pripravené", - "phase_requested": "Vyžiadané", - "phase_started": "Spustené", - "phase_transaction": "Transakcia", "room_encrypted": "Miestnosť je šifrovaná ✅", "room_id": "ID miestnosti: %(roomId)s", "room_not_encrypted": "Miestnosť nie je šifrovaná 🚨", @@ -772,7 +763,6 @@ "state_key": "Stavový kľúč", "thread_root_id": "ID koreňového vlákna: %(threadRootId)s", "threads_timeline": "Časová os vlákien", - "timeout": "Časový limit", "title": "Vývojárske nástroje", "toggle_event": "prepnúť udalosť", "toolbox": "Nástroje", @@ -789,7 +779,6 @@ "values_explicit_colon": "Hodnoty na explicitných úrovniach:", "values_explicit_room": "Hodnoty na explicitných úrovniach v tejto miestnosti", "values_explicit_this_room_colon": "Hodnoty na explicitných úrovniach v tejto miestnosti:", - "verification_explorer": "Prieskumník overenia", "view_servers_in_room": "Zobraziť servery v miestnosti", "view_source_decrypted_event_source": "Zdroj dešifrovanej udalosti", "view_source_decrypted_event_source_unavailable": "Dešifrovaný zdroj nie je dostupný", @@ -863,10 +852,6 @@ "export_unsupported": "Váš prehliadač nepodporuje požadované kryptografické rozšírenia", "import_invalid_keyfile": "Toto nie je správny súbor s kľúčmi %(brand)s", "import_invalid_passphrase": "Kontrola overenia zlyhala: Nesprávne heslo?", - "incompatible_database_description": "Pri tejto relácii ste už predtým použili novšiu verziu %(brand)s. Ak chcete túto verziu znovu používať s end-to-end šifrovaním, budete sa musieť odhlásiť a znova prihlásiť.", - "incompatible_database_disable": "Pokračovať s vypnutým šifrovaním", - "incompatible_database_sign_out_description": "Aby ste po odhlásení neprišli o možnosť čítať históriu šifrovaných konverzácií, mali by ste si ešte pred odhlásením exportovať šifrovacie kľúče miestností. Prosím vráťte sa k novšej verzii %(brand)s a exportujte si kľúče", - "incompatible_database_title": "Nekompatibilná databáza", "messages_not_secure": { "cause_1": "Váš domovský server", "cause_2": "Domovský server, ku ktorému je pripojený používateľ, ktorého overujete", @@ -2419,7 +2404,6 @@ "msisdn_verification_field_label": "Overovací kód", "msisdn_verification_instructions": "Zadajte prosím overovací kód zaslaný prostredníctvom SMS.", "msisdns_heading": "Telefónne čísla", - "name_placeholder": "Žiadne zobrazované meno", "oidc_manage_button": "Spravovať účet", "password_change_section": "Nastaviť nové heslo k účtu…", "password_change_success": "Vaše heslo bolo úspešne zmenené.", @@ -2861,7 +2845,6 @@ "rageshake": "Zaslať chybové hlásenie so záznamami", "rainbow": "Odošle danú správu vo farbe dúhy", "rainbowme": "Odošle daný emotív sfarbený ako dúha", - "remakeolm": "Príkaz pre vývojárov: Zruší aktuálnu reláciu odchádzajúcej skupiny a vytvorí nové relácie Olm", "remove": "Odstráni používateľa s daným ID z tejto miestnosti", "roomavatar": "Zmení obrázok aktuálnej miestnosti", "roomname": "Nastaví názov miestnosti", diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 84f18e5cf0c..a8b484da54d 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -512,7 +512,6 @@ "unmute": "Ktheji zërin", "unnamed_room": "Dhomë e Paemërtuar", "unnamed_space": "Hapësirë e Paemërtuar", - "unsent": "Të padërguar", "unverified": "I paverifikuar", "user": "Përdorues", "user_avatar": "Foto profili", @@ -691,19 +690,11 @@ "low_bandwidth_mode": "Mënyra gjerësi e ulët bande", "low_bandwidth_mode_description": "Lyp shërbyes Home të përputhshëm.", "main_timeline": "Rrjedhë kohore kryesore", - "methods": "Metoda", "no_receipt_found": "S’u gjet dëftesë", - "no_verification_requests_found": "S’u gjetën kërkesa verifikimi", "notification_state": "Gjendje njoftimi është %(notificationState)s", "notifications_debug": "Diagnostikim njoftimesh", "number_of_users": "Numër përdoruesish", "original_event_source": "Burim i veprimtarisë origjinale", - "phase": "Fazë", - "phase_cancelled": "Anuluar", - "phase_ready": "Gati", - "phase_requested": "E kërkuar", - "phase_started": "Nisur më", - "phase_transaction": "Transaksion", "room_encrypted": "Dhoma është e fshehtëzuar ✅", "room_id": "ID Dhome: %(roomId)s", "room_not_encrypted": "Dhoma është e pafshehtëzuar 🚨", @@ -737,7 +728,6 @@ }, "state_key": "Kyç Gjendjesh", "threads_timeline": "Rrjedhë kohore rrjedhash", - "timeout": "Mbarim kohe", "title": "Mjete zhvilluesi", "toggle_event": "shfaqe/fshihe aktin", "toolbox": "Grup mjetesh", @@ -750,7 +740,6 @@ "values_explicit_colon": "Vlera në nivele shprehimisht:", "values_explicit_room": "Vlera në nivele shprehimisht në këtë dhomë", "values_explicit_this_room_colon": "Vlera në nivele shprehimisht në këtë dhomë:", - "verification_explorer": "Eksplorues verifikimi", "view_servers_in_room": "Shihni shërbyes në dhomë", "view_source_decrypted_event_source": "U shfshehtëzua burim veprimtarie", "view_source_decrypted_event_source_unavailable": "Burim i shfshehtëzuar jo i passhëm", @@ -821,10 +810,6 @@ "export_unsupported": "Shfletuesi juaj nuk mbulon zgjerimet kriptografike të domosdoshme", "import_invalid_keyfile": "S’është kartelë kyçesh %(brand)s e vlefshme", "import_invalid_passphrase": "Dështoi kontrolli i mirëfilltësimit: fjalëkalim i pasaktë?", - "incompatible_database_description": "Me këtë sesion, keni përdorur më herët një version më të ri të %(brand)s-it. Që të ripërdorni këtë version me fshehtëzim skaj më skaj, do t’ju duhet të bëni daljen dhe të rihyni.", - "incompatible_database_disable": "Vazhdo Me Fshehtëzimin të Çaktivizuar", - "incompatible_database_sign_out_description": "Që të shmanget humbja e historikut të fjalosjes tuaj, duhet të eksportoni kyçet e dhomës tuaj përpara se të dilni nga llogari. Që ta bëni këtë, duhe të riktheheni te versioni më i ri i %(brand)s-it", - "incompatible_database_title": "Bazë të dhënash e Papërputhshme", "messages_not_secure": { "cause_1": "Shërbyesi juaj Home", "cause_2": "Shërbyesi Home te i cili është lidhur përdoruesi që po verifikoni", @@ -2284,7 +2269,6 @@ "msisdn_verification_field_label": "Kod verifikimi", "msisdn_verification_instructions": "Ju lutemi, jepni kod verifikimi të dërguar përmes teksti.", "msisdns_heading": "Numra telefonash", - "name_placeholder": "S’ka emër shfaqjeje", "oidc_manage_button": "Administroni llogari", "password_change_section": "Caktoni një fjalëkalim të ri llogarie…", "password_change_success": "Fjalëkalimi juaj u ndryshua me sukses.", @@ -2684,7 +2668,6 @@ "rageshake": "Dërgoni një njoftim të metash me regjistra", "rainbow": "E dërgon mesazhin e dhënë të ngjyrosur si ylber", "rainbowme": "E dërgon emote-n e dhënë të ngjyrosur si ylber", - "remakeolm": "Urdhër zhvilluesish: Hedh tej sesionin e tanishëm të grupit me dikë dhe ujdis sesione të rinj Olm", "remove": "Heq prej kësaj dhome përdoruesin me ID-në e dhënë", "roomavatar": "Ndryshon avatarin e dhomës së atëçastshme", "roomname": "Cakton emrin e dhomës", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 869e202cc5b..4be1a8df938 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -543,7 +543,6 @@ "unmute": "Avtysta", "unnamed_room": "Namnlöst rum", "unnamed_space": "Namnlöst utrymme", - "unsent": "Ej skickat", "unverified": "Overifierad", "user": "Användare", "user_avatar": "Profilbild", @@ -727,19 +726,11 @@ "low_bandwidth_mode": "Lågt bandbreddsläge", "low_bandwidth_mode_description": "Kräver kompatibel hemserver.", "main_timeline": "Huvudtidslinje", - "methods": "Metoder", "no_receipt_found": "Inga kvitton hittade", - "no_verification_requests_found": "Inga verifieringsförfrågningar hittade", "notification_state": "Aviseringsstatus är %(notificationState)s", "notifications_debug": "Aviseringsfelsökning", "number_of_users": "Antal användare", "original_event_source": "Ursprunglig händelsekällkod", - "phase": "Fas", - "phase_cancelled": "Avbruten", - "phase_ready": "Redo", - "phase_requested": "Efterfrågad", - "phase_started": "Påbörjad", - "phase_transaction": "Transaktion", "room_encrypted": "Rummet är krypterat ✅", "room_id": "Rums-ID: %(roomId)s", "room_not_encrypted": "Rummet är inte krypterat 🚨", @@ -777,7 +768,6 @@ "state_key": "Lägesnyckel", "thread_root_id": "Trådroots-ID: %(threadRootId)s", "threads_timeline": "Trådtidslinje", - "timeout": "Timeout", "title": "Utvecklarverktyg", "toggle_event": "växla händelse", "toolbox": "Verktygslåda", @@ -794,7 +784,6 @@ "values_explicit_colon": "Värden vid explicita nivåer:", "values_explicit_room": "Värden vid explicita nivåer i det här rummet", "values_explicit_this_room_colon": "Värden vid explicita nivåer i det här rummet:", - "verification_explorer": "Verifieringsutforskaren", "view_servers_in_room": "Se servrar i rummet", "view_source_decrypted_event_source": "Avkrypterad händelsekällkod", "view_source_decrypted_event_source_unavailable": "Avkrypterad källa otillgänglig", @@ -868,10 +857,6 @@ "export_unsupported": "Din webbläsare stödjer inte nödvändiga kryptografitillägg", "import_invalid_keyfile": "Inte en giltig %(brand)s-nyckelfil", "import_invalid_passphrase": "Autentiseringskontroll misslyckades: felaktigt lösenord?", - "incompatible_database_description": "Du har tidigare använt en nyare version av %(brand)s med den här sessionen. Om du vill använda den här versionen igen med totalsträckskryptering behöver du logga ut och logga in igen.", - "incompatible_database_disable": "Fortsätt med kryptering inaktiverad", - "incompatible_database_sign_out_description": "För att undvika att förlora din chatthistorik måste du exportera dina rumsnycklar innan du loggar ut. Du behöver gå tillbaka till den nyare versionen av %(brand)s för att göra detta", - "incompatible_database_title": "Inkompatibel databas", "messages_not_secure": { "cause_1": "Din hemserver", "cause_2": "Hemservern användaren du verifierar är ansluten till", @@ -2431,7 +2416,6 @@ "msisdn_verification_field_label": "Verifieringskod", "msisdn_verification_instructions": "Ange verifieringskod skickad via SMS.", "msisdns_heading": "Telefonnummer", - "name_placeholder": "Inget visningsnamn", "oidc_manage_button": "Hantera konto", "password_change_section": "Sätt ett nytt kontolösenord …", "password_change_success": "Ditt lösenord byttes framgångsrikt.", @@ -2873,7 +2857,6 @@ "rageshake": "Skicka en buggrapport med loggar", "rainbow": "Skickar angivet meddelande i regnbågsfärg", "rainbowme": "Skickar angiven emoji i regnbågsfärg", - "remakeolm": "Utvecklarkommando: Slänger den nuvarande utgående gruppsessionen och sätter upp nya Olm-sessioner", "remove": "Tar bort användaren med det givna ID:t från det här rummet", "roomavatar": "Byter avataren i det nuvarande rummet", "roomname": "Sätter rumsnamnet", diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 9ee7d347903..f5652b6b444 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -531,7 +531,6 @@ "unmute": "Розтишити", "unnamed_room": "Кімната без назви", "unnamed_space": "Простір без назви", - "unsent": "Не надіслано", "unverified": "Не звірений", "user": "Користувач", "user_avatar": "Зображення профілю", @@ -713,19 +712,11 @@ "low_bandwidth_mode": "Режим низької пропускної спроможності", "low_bandwidth_mode_description": "Потрібен сумісний домашній сервер.", "main_timeline": "Основна стрічка", - "methods": "Методи", "no_receipt_found": "Підтвердження не знайдено", - "no_verification_requests_found": "Запитів на звірку не знайдено", "notification_state": "Стан сповіщень %(notificationState)s", "notifications_debug": "Сповіщення зневадження", "number_of_users": "Кількість користувачів", "original_event_source": "Оригінальний початковий код", - "phase": "Фаза", - "phase_cancelled": "Скасовано", - "phase_ready": "Готово", - "phase_requested": "Подано запит", - "phase_started": "Почато", - "phase_transaction": "Транзакція", "room_encrypted": "Кімната зашифрована ✅", "room_id": "ID кімнати: %(roomId)s", "room_not_encrypted": "Кімната не зашифрована 🚨", @@ -762,7 +753,6 @@ "state_key": "Ключ стану", "thread_root_id": "ID кореневої гілки: %(threadRootId)s", "threads_timeline": "Стрічка гілок", - "timeout": "Обмеження часу", "title": "Інструменти розробника", "toggle_event": "перемкнути подію", "toolbox": "Панель інструментів", @@ -779,7 +769,6 @@ "values_explicit_colon": "Значення на явних рівнях:", "values_explicit_room": "Значення на явних рівнях у цій кімнаті", "values_explicit_this_room_colon": "Значення на явних рівнях у цій кімнаті:", - "verification_explorer": "Оглядач автентифікації", "view_servers_in_room": "Переглянути сервери в кімнаті", "view_source_decrypted_event_source": "Розшифрований початковий код події", "view_source_decrypted_event_source_unavailable": "Розшифроване джерело недоступне", @@ -850,10 +839,6 @@ "export_unsupported": "Ваш браузер не підтримує необхідних криптографічних функцій", "import_invalid_keyfile": "Файл ключа %(brand)s некоректний", "import_invalid_passphrase": "Помилка автентифікації: неправильний пароль?", - "incompatible_database_description": "Ви раніше використовували новішу версію %(brand)s для цього сеансу. Щоб знову використовувати цю версію із наскрізним шифруванням, вам потрібно буде вийти та знову ввійти.", - "incompatible_database_disable": "Продовжити із вимкненим шифруванням", - "incompatible_database_sign_out_description": "Щоб уникнути втрати історії ваших листувань, ви маєте експортувати ключі кімнати перед виходом. Вам треба буде повернутися до новішої версії %(brand)s аби зробити це", - "incompatible_database_title": "Несумісна база даних", "messages_not_secure": { "cause_1": "Ваш домашній сервер", "cause_2": "Домашній сервер користувача, якого ви підтверджуєте", @@ -2357,7 +2342,6 @@ "msisdn_verification_field_label": "Код перевірки", "msisdn_verification_instructions": "Введіть код перевірки, надісланий у текстовому повідомленні.", "msisdns_heading": "Номери телефонів", - "name_placeholder": "Немає псевдоніма", "oidc_manage_button": "Керувати обліковим записом", "password_change_section": "Встановити новий пароль облікового запису…", "password_change_success": "Ваш пароль успішно змінено.", @@ -2796,7 +2780,6 @@ "rageshake": "Надіслати звіт про ваду разом з журналами", "rainbow": "Надсилає вказане повідомлення, розфарбоване веселкою", "rainbowme": "Надсилає вказаний смайлик, розфарбований веселкою", - "remakeolm": "Команда розробника: відкликає поточний сеанс вихідної групи та встановлює нові сеанси Olm", "remove": "Вилучає користувача з указаним ID з цієї кімнати", "roomavatar": "Змінює аватар поточної кімнати", "roomname": "Встановлює назву кімнати", diff --git a/src/i18n/strings/vi.json b/src/i18n/strings/vi.json index cbb82dbafe7..7f92c668203 100644 --- a/src/i18n/strings/vi.json +++ b/src/i18n/strings/vi.json @@ -495,7 +495,6 @@ "unmute": "Bật tiếng", "unnamed_room": "Phòng Không tên", "unnamed_space": "space không tên", - "unsent": "Chưa gửi", "unverified": "Chưa xác thực", "user": "Người dùng", "user_avatar": "Ảnh đại diện", @@ -661,7 +660,6 @@ "level": "Cấp độ", "low_bandwidth_mode": "Chế độ băng thông thấp", "low_bandwidth_mode_description": "Cần máy chủ nhà tương thích.", - "no_verification_requests_found": "Không tìm thấy yêu cầu xác thực nào", "notifications_debug": "Gỡ lỗi thông báo", "number_of_users": "Số người dùng", "original_event_source": "Nguồn sự kiện ban đầu", @@ -766,10 +764,6 @@ "export_unsupported": "Trình duyệt của bạn không hỗ trợ chức năng mã hóa", "import_invalid_keyfile": "Tệp khóa %(brand)s không hợp lệ", "import_invalid_passphrase": "Kiểm tra đăng nhập thất bại: sai mật khẩu?", - "incompatible_database_description": "Trước đây, bạn đã sử dụng phiên bản %(brand)s mới hơn với phiên này. Để sử dụng lại phiên bản này với mã hóa đầu cuối, bạn cần đăng xuất và đăng nhập lại.", - "incompatible_database_disable": "Tiếp tục với mã hóa bị tắt", - "incompatible_database_sign_out_description": "Để tránh mất lịch sử trò chuyện, bạn phải xuất chìa khóa phòng trước khi đăng xuất. Bạn sẽ cần quay lại phiên bản %(brand)s mới hơn để thực hiện việc này", - "incompatible_database_title": "Cơ sở dữ liệu không tương thích", "messages_not_secure": { "cause_1": "Chủ nhà của bạn", "cause_2": "Máy chủ nhà người dùng bạn đang xác thực được kết nối đến", @@ -2165,7 +2159,6 @@ "msisdn_verification_field_label": "Mã xác nhận", "msisdn_verification_instructions": "Vui lòng nhập mã xác minh được gửi qua văn bản.", "msisdns_heading": "Số điện thoại", - "name_placeholder": "Không có tên hiển thị", "oidc_manage_button": "Quản lý tài khoản", "password_change_section": "Đặt mật khẩu tài khoản mới…", "password_change_success": "Đã đổi mật khẩu thành công.", @@ -2571,7 +2564,6 @@ "rageshake": "Gửi báo cáo lỗi kèm theo nhật ký", "rainbow": "Gửi nội dung tin nhắn được tô màu cầu vồng", "rainbowme": "Gửi hình emote được tô màu cầu vồng", - "remakeolm": "Lệnh cho nhà phát triển: Hủy phiên ra ngoài hiện tại của nhóm và thiết lập phiên Olm mới", "remove": "Xóa thành viên với ID chỉ định ra khỏi phòng chat", "roomavatar": "Thay đổi ảnh đại diện của phòng hiện tại", "roomname": "Đặt tên phòng", diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 37446cc9edd..a9e1df778a9 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -516,7 +516,6 @@ "unmute": "取消静音", "unnamed_room": "未命名的房间", "unnamed_space": "未命名空间", - "unsent": "未发送", "unverified": "未验证", "user": "用户", "user_avatar": "头像", @@ -683,15 +682,8 @@ "level": "层级", "low_bandwidth_mode": "低带宽模式", "low_bandwidth_mode_description": "需要兼容的家服务器。", - "methods": "方法", - "no_verification_requests_found": "未找到验证请求", "number_of_users": "用户数", "original_event_source": "原始事件源码", - "phase": "阶段", - "phase_cancelled": "已取消", - "phase_requested": "已请求", - "phase_started": "已开始", - "phase_transaction": "交易", "room_id": "房间ID: %(roomId)s", "save_setting_values": "保存设置值", "send_custom_account_data_event": "发送自定义账户数据事件", @@ -711,7 +703,6 @@ "other": "<%(count)s个空间>" }, "state_key": "状态键(State Key)", - "timeout": "超时", "title": "开发者工具", "toggle_event": "切换事件", "toolbox": "工具箱", @@ -724,7 +715,6 @@ "values_explicit_colon": "各层级的值:", "values_explicit_room": "此房间中各层级的值", "values_explicit_this_room_colon": "此房间中各层级的值:", - "verification_explorer": "验证查看", "view_source_decrypted_event_source": "解密的事件源码", "widget_screenshots": "对支持的挂件启用挂件截图" }, @@ -793,10 +783,6 @@ "export_unsupported": "你的浏览器不支持所需的密码学扩展", "import_invalid_keyfile": "不是有效的 %(brand)s 密钥文件", "import_invalid_passphrase": "身份验证失败:密码错误?", - "incompatible_database_description": "你曾在此会话中使用了一个更新版本的 %(brand)s。要再使用此版本并使用端到端加密,你需要登出再重新登录。", - "incompatible_database_disable": "在停用加密的情况下继续", - "incompatible_database_sign_out_description": "为避免丢失聊天记录,你必须在登出前导出房间密钥。你需要切换至新版 %(brand)s 方可继续执行此操作", - "incompatible_database_title": "数据库不兼容", "messages_not_secure": { "cause_1": "你的家服务器", "cause_2": "你正在验证的用户所连接的家服务器", @@ -2188,7 +2174,6 @@ "msisdn_verification_field_label": "验证码", "msisdn_verification_instructions": "请输入短信中发送的验证码。", "msisdns_heading": "电话号码", - "name_placeholder": "无显示名称", "password_change_section": "设置一个新密码", "password_change_success": "你的密码已成功更改。", "remove_email_prompt": "删除 %(email)s 吗?", @@ -2542,7 +2527,6 @@ "rageshake": "发送带日志的错误报告", "rainbow": "此消息以彩虹色进行渲染", "rainbowme": "以彩虹色发送给定表情符号", - "remakeolm": "开发者命令:放弃当前输出群组会话并设置新的Olm会话", "remove": "将给定 ID 的用户移除此房间", "roomavatar": "更改当前房间头像", "roomname": "设置房间名称", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index bcc15dd6324..f5e8b0926c5 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -531,7 +531,6 @@ "unmute": "解除靜音", "unnamed_room": "未命名的聊天室", "unnamed_space": "未命名聊天空間", - "unsent": "未傳送", "unverified": "未驗證", "user": "使用者", "user_avatar": "大頭照", @@ -714,19 +713,11 @@ "low_bandwidth_mode": "低頻寬模式", "low_bandwidth_mode_description": "需要相容的家伺服器。", "main_timeline": "主時間軸", - "methods": "方法", "no_receipt_found": "找不到回條", - "no_verification_requests_found": "找不到驗證請求", "notification_state": "通知狀態為 %(notificationState)s", "notifications_debug": "通知除錯", "number_of_users": "使用者數量", "original_event_source": "原始活動來源", - "phase": "階段", - "phase_cancelled": "已取消", - "phase_ready": "已準備好", - "phase_requested": "已請求", - "phase_started": "已開始", - "phase_transaction": "交易", "room_encrypted": "聊天室已加密 ✅", "room_id": "聊天室 ID:%(roomId)s", "room_not_encrypted": "聊天室未加密 🚨", @@ -763,7 +754,6 @@ "state_key": "狀態金鑰", "thread_root_id": "討論串 Root ID:%(threadRootId)s", "threads_timeline": "討論串時間軸", - "timeout": "逾時", "title": "開發者工具", "toggle_event": "切換事件", "toolbox": "工具箱", @@ -780,7 +770,6 @@ "values_explicit_colon": "明確等級的值:", "values_explicit_room": "此聊天室中明確等級的值", "values_explicit_this_room_colon": "此聊天室中明確等級的值:", - "verification_explorer": "驗證探索程式", "view_servers_in_room": "檢視聊天室內的伺服器", "view_source_decrypted_event_source": "解密活動來源", "view_source_decrypted_event_source_unavailable": "已解密的來源不可用", @@ -851,10 +840,6 @@ "export_unsupported": "您的瀏覽器不支援需要的加密擴充", "import_invalid_keyfile": "不是有效的 %(brand)s 金鑰檔案", "import_invalid_passphrase": "無法檢查認證:密碼錯誤?", - "incompatible_database_description": "您先前在此工作階段中使用了較新版本的 %(brand)s。要再次與此版本使用端對端加密,您必須先登出再登入。", - "incompatible_database_disable": "在停用加密的情況下繼續", - "incompatible_database_sign_out_description": "為了避免遺失您的聊天歷史,您必須在登出前匯出您的聊天室金鑰。您必須回到較新版的 %(brand)s 才能執行此動作", - "incompatible_database_title": "不相容的資料庫", "messages_not_secure": { "cause_1": "您的家伺服器", "cause_2": "您正在驗證的使用者所連線的家伺服器", @@ -2359,7 +2344,6 @@ "msisdn_verification_field_label": "驗證碼", "msisdn_verification_instructions": "請輸入透過簡訊傳送的驗證碼。", "msisdns_heading": "電話號碼", - "name_placeholder": "沒有顯示名稱", "oidc_manage_button": "管理帳號", "password_change_section": "設定新帳號密碼…", "password_change_success": "您的密碼已成功變更。", @@ -2791,7 +2775,6 @@ "rageshake": "傳送有紀錄檔的錯誤回報", "rainbow": "將給定的訊息以彩虹顏色的方式傳送", "rainbowme": "將給定的表情符號以彩虹顏色的方式傳送", - "remakeolm": "開發者指令:丟棄目前外傳的群組工作階段,並設定新的 Olm 工作階段", "remove": "從此聊天室中移除特定 ID 的使用者", "roomavatar": "變更目前聊天室的大頭照", "roomname": "設定聊天室名稱", diff --git a/src/stores/right-panel/RightPanelStore.ts b/src/stores/right-panel/RightPanelStore.ts index 94637b9cd45..9da06580dc5 100644 --- a/src/stores/right-panel/RightPanelStore.ts +++ b/src/stores/right-panel/RightPanelStore.ts @@ -80,6 +80,7 @@ export default class RightPanelStore extends ReadyWatchingStore { if (this.currentCard.phase !== RightPanelPhases.RoomSummary) { this.setCard({ phase: RightPanelPhases.RoomSummary, state: { focusRoomSearch: true } }); } + this.show(null); } } } diff --git a/src/stores/right-panel/RightPanelStoreIPanelState.ts b/src/stores/right-panel/RightPanelStoreIPanelState.ts index deffe045e64..afb74425636 100644 --- a/src/stores/right-panel/RightPanelStoreIPanelState.ts +++ b/src/stores/right-panel/RightPanelStoreIPanelState.ts @@ -40,6 +40,8 @@ export interface IRightPanelCardStateStored { initialEventId?: string; isInitialEventHighlighted?: boolean; initialEventScrollIntoView?: boolean; + // room summary card + focusRoomSearch?: boolean; } export interface IRightPanelCard { @@ -85,6 +87,7 @@ export function convertCardToStore(panelState: IRightPanelCard): IRightPanelCard memberInfoEventId: !!state?.memberInfoEvent?.getId() ? state.memberInfoEvent.getId() : undefined, initialEventId: !!state?.initialEvent?.getId() ? state.initialEvent.getId() : undefined, memberId: !!state?.member?.userId ? state.member.userId : undefined, + focusRoomSearch: state.focusRoomSearch, }; return { state: stateStored, phase: panelState.phase }; @@ -105,6 +108,7 @@ function convertStoreToCard(panelStateStore: IRightPanelCardStored, room: Room): : undefined, initialEvent: !!stateStored?.initialEventId ? room.findEventById(stateStored.initialEventId) : undefined, member: (!!stateStored?.memberId && room.getMember(stateStored.memberId)) || undefined, + focusRoomSearch: stateStored?.focusRoomSearch, }; return { state: state, phase: panelStateStore.phase }; diff --git a/src/toasts/UpdateToast.tsx b/src/toasts/UpdateToast.tsx index a0ee6b80892..786b6263174 100644 --- a/src/toasts/UpdateToast.tsx +++ b/src/toasts/UpdateToast.tsx @@ -13,21 +13,12 @@ import SdkConfig from "../SdkConfig"; import GenericToast from "../components/views/toasts/GenericToast"; import ToastStore from "../stores/ToastStore"; import QuestionDialog from "../components/views/dialogs/QuestionDialog"; -import ChangelogDialog from "../components/views/dialogs/ChangelogDialog"; +import ChangelogDialog, { checkVersion } from "../components/views/dialogs/ChangelogDialog"; import PlatformPeg from "../PlatformPeg"; import Modal from "../Modal"; const TOAST_KEY = "update"; -/* - * Check a version string is compatible with the Changelog - * dialog ([element-version]-react-[react-sdk-version]-js-[js-sdk-version]) - */ -function checkVersion(ver: string): boolean { - const parts = ver.split("-"); - return parts.length === 5 && parts[1] === "react" && parts[3] === "js"; -} - function installUpdate(): void { PlatformPeg.get()?.installUpdate(); } diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index ed85ba8d67f..053878886bc 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -6,8 +6,8 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ -import { Direction, MatrixEvent, Room } from "matrix-js-sdk/src/matrix"; -import { MediaEventContent } from "matrix-js-sdk/src/types"; +import { Direction, MatrixEvent, Relations, Room } from "matrix-js-sdk/src/matrix"; +import { EventType, MediaEventContent, RelationType } from "matrix-js-sdk/src/types"; import { saveAs } from "file-saver"; import { logger } from "matrix-js-sdk/src/logger"; import sanitizeFilename from "sanitize-filename"; @@ -284,5 +284,13 @@ export default abstract class Exporter { return mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype!); } + protected getRelationsForEvent = ( + eventId: string, + relationType: RelationType | string, + eventType: EventType | string, + ): Relations | undefined => { + return this.room.getUnfilteredTimelineSet().relations.getChildEventsForEvent(eventId, relationType, eventType); + }; + public abstract export(): Promise; } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 9a16a9e44b0..08e488e5ffe 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -288,9 +288,10 @@ export default class HTMLExporter extends Exporter { permalinkCreator={this.permalinkCreator} lastSuccessful={false} isSelectedEvent={false} - showReactions={false} + showReactions={true} layout={Layout.Group} showReadReceipts={false} + getRelationsForEvent={this.getRelationsForEvent} /> diff --git a/test/test-utils/test-utils.ts b/test/test-utils/test-utils.ts index d9f4f3f5a65..43807eb0301 100644 --- a/test/test-utils/test-utils.ts +++ b/test/test-utils/test-utils.ts @@ -129,6 +129,7 @@ export function createTestClient(): MatrixClient { getVerificationRequestsToDeviceInProgress: jest.fn().mockReturnValue([]), setDeviceIsolationMode: jest.fn(), prepareToEncrypt: jest.fn(), + getActiveSessionBackupVersion: jest.fn().mockResolvedValue(null), }), getPushActionsForEvent: jest.fn(), @@ -166,7 +167,6 @@ export function createTestClient(): MatrixClient { }); }), mxcUrlToHttp: jest.fn().mockImplementation((mxc: string) => `http://this.is.a.url/${mxc.substring(6)}`), - scheduleAllGroupSessionsForBackup: jest.fn().mockResolvedValue(undefined), setAccountData: jest.fn(), setRoomAccountData: jest.fn(), setRoomTopic: jest.fn(), diff --git a/test/unit-tests/async-components/dialogs/security/NewRecoveryMethodDialog-test.tsx b/test/unit-tests/async-components/dialogs/security/NewRecoveryMethodDialog-test.tsx new file mode 100644 index 00000000000..fc964e57bf4 --- /dev/null +++ b/test/unit-tests/async-components/dialogs/security/NewRecoveryMethodDialog-test.tsx @@ -0,0 +1,81 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only + * Please see LICENSE files in the repository root for full details. + */ + +import React from "react"; +import { MatrixClient } from "matrix-js-sdk/src/matrix"; +import { render, screen } from "jest-matrix-react"; +import { waitFor } from "@testing-library/dom"; +import userEvent from "@testing-library/user-event"; +import { act } from "@testing-library/react-hooks/dom"; + +import NewRecoveryMethodDialog from "../../../../../src/async-components/views/dialogs/security/NewRecoveryMethodDialog"; +import { createTestClient } from "../../../../test-utils"; +import MatrixClientContext from "../../../../../src/contexts/MatrixClientContext.tsx"; +import dis from "../../../../../src/dispatcher/dispatcher.ts"; +import { Action } from "../../../../../src/dispatcher/actions.ts"; +import Modal from "../../../../../src/Modal.tsx"; + +describe("", () => { + let matrixClient: MatrixClient; + beforeEach(() => { + matrixClient = createTestClient(); + jest.spyOn(dis, "fire"); + jest.spyOn(Modal, "createDialog"); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + function renderComponent(onFinished: () => void = jest.fn()) { + return render( + + + , + ); + } + + test("when cancel is clicked", async () => { + const onFinished = jest.fn(); + act(() => { + renderComponent(onFinished); + }); + + await userEvent.click(screen.getByRole("button", { name: "Go to Settings" })); + expect(onFinished).toHaveBeenCalled(); + expect(dis.fire).toHaveBeenCalledWith(Action.ViewUserSettings); + }); + + test("when key backup is enabled", async () => { + jest.spyOn(matrixClient.getCrypto()!, "getActiveSessionBackupVersion").mockResolvedValue("version"); + + const onFinished = jest.fn(); + + await act(async () => { + const { asFragment } = renderComponent(onFinished); + await waitFor(() => + expect( + screen.getByText("This session is encrypting history using the new recovery method."), + ).toBeInTheDocument(), + ); + expect(asFragment()).toMatchSnapshot(); + }); + + await userEvent.click(screen.getByRole("button", { name: "Set up Secure Messages" })); + expect(onFinished).toHaveBeenCalled(); + }); + + test("when key backup is disabled", async () => { + const onFinished = jest.fn(); + + const { asFragment } = renderComponent(onFinished); + expect(asFragment()).toMatchSnapshot(); + + await userEvent.click(screen.getByRole("button", { name: "Set up Secure Messages" })); + await waitFor(() => expect(Modal.createDialog).toHaveBeenCalled()); + }); +}); diff --git a/test/unit-tests/async-components/dialogs/security/__snapshots__/NewRecoveryMethodDialog-test.tsx.snap b/test/unit-tests/async-components/dialogs/security/__snapshots__/NewRecoveryMethodDialog-test.tsx.snap new file mode 100644 index 00000000000..08b5ee18d33 --- /dev/null +++ b/test/unit-tests/async-components/dialogs/security/__snapshots__/NewRecoveryMethodDialog-test.tsx.snap @@ -0,0 +1,146 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[` when key backup is disabled 1`] = ` + +
+