diff --git a/__mocks__/languages.json b/__mocks__/languages.json index 36ec89561b20..35a400808b8d 100644 --- a/__mocks__/languages.json +++ b/__mocks__/languages.json @@ -1,10 +1,4 @@ { - "en": { - "fileName": "en_EN.json", - "label": "English" - }, - "en-us": { - "fileName": "en_US.json", - "label": "English (US)" - } + "en": "en_EN.json", + "en-us": "en_US.json" } diff --git a/cypress/e2e/editing/editing.spec.ts b/cypress/e2e/editing/editing.spec.ts index dafe15c885ff..b7dacf860345 100644 --- a/cypress/e2e/editing/editing.spec.ts +++ b/cypress/e2e/editing/editing.spec.ts @@ -119,7 +119,7 @@ describe("Editing", () => { // Assert that the date separator is rendered at the top cy.get("li:nth-child(1) .mx_DateSeparator").within(() => { cy.get("h2").within(() => { - cy.findByText("Today"); + cy.findByText("today").should("have.css", "text-transform", "capitalize"); }); }); @@ -184,7 +184,7 @@ describe("Editing", () => { // Assert that the date is rendered cy.get("li:nth-child(1) .mx_DateSeparator").within(() => { cy.get("h2").within(() => { - cy.findByText("Today"); + cy.findByText("today").should("have.css", "text-transform", "capitalize"); }); }); diff --git a/cypress/e2e/settings/general-user-settings-tab.spec.ts b/cypress/e2e/settings/general-user-settings-tab.spec.ts index 2879d6d93012..7c78ee7196ae 100644 --- a/cypress/e2e/settings/general-user-settings-tab.spec.ts +++ b/cypress/e2e/settings/general-user-settings-tab.spec.ts @@ -133,10 +133,12 @@ describe("General user settings tab", () => { cy.findByRole("button", { name: "Language Dropdown" }).click(); // Assert that the default option is rendered and highlighted - cy.findByRole("option", { name: /Bahasa Indonesia/ }) + cy.findByRole("option", { name: /Albanian/ }) .should("be.visible") .should("have.class", "mx_Dropdown_option_highlight"); + cy.findByRole("option", { name: /Deutsch/ }).should("be.visible"); + // Click again to close the dropdown cy.findByRole("button", { name: "Language Dropdown" }).click(); diff --git a/jest.config.ts b/jest.config.ts index d7f00f194ebd..58bec7684e8e 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -36,7 +36,12 @@ const config: Config = { "RecorderWorklet": "/__mocks__/empty.js", }, transformIgnorePatterns: ["/node_modules/(?!matrix-js-sdk).+$"], - collectCoverageFrom: ["/src/**/*.{js,ts,tsx}"], + collectCoverageFrom: [ + "/src/**/*.{js,ts,tsx}", + // getSessionLock is piped into a different JS context via stringification, and the coverage functionality is + // not available in that contest. So, turn off coverage instrumentation for it. + "!/src/utils/SessionLock.ts", + ], coverageReporters: ["text-summary", "lcov"], testResultsProcessor: "@casualbot/jest-sonar-reporter", }; diff --git a/package.json b/package.json index 0bbd4dffdbd0..6580f806e946 100644 --- a/package.json +++ b/package.json @@ -61,8 +61,9 @@ "dependencies": { "@babel/runtime": "^7.12.5", "@matrix-org/analytics-events": "^0.6.0", + "@matrix-org/emojibase-bindings": "^1.1.2", "@matrix-org/matrix-wysiwyg": "^2.4.1", - "@matrix-org/react-sdk-module-api": "^2.0.0", + "@matrix-org/react-sdk-module-api": "^2.1.0", "@matrix-org/spec": "^1.7.0", "@sentry/browser": "^7.0.0", "@sentry/tracing": "^7.0.0", @@ -76,8 +77,6 @@ "counterpart": "^0.18.6", "diff-dom": "^4.2.2", "diff-match-patch": "^1.0.5", - "emojibase": "15.0.0", - "emojibase-data": "15.0.0", "emojibase-regex": "15.0.0", "escape-html": "^1.0.3", "file-saver": "^2.0.5", @@ -122,6 +121,7 @@ "sanitize-html": "2.11.0", "tar-js": "^0.3.0", "ua-parser-js": "^1.0.2", + "uuid": "^9.0.0", "what-input": "^5.2.10", "zxcvbn": "^4.4.2" }, diff --git a/res/css/_components.pcss b/res/css/_components.pcss index 2b45962f31c2..fcebafcfcc5a 100644 --- a/res/css/_components.pcss +++ b/res/css/_components.pcss @@ -190,6 +190,7 @@ @import "./views/elements/_InteractiveTooltip.pcss"; @import "./views/elements/_InviteReason.pcss"; @import "./views/elements/_LabelledCheckbox.pcss"; +@import "./views/elements/_LanguageDropdown.pcss"; @import "./views/elements/_MiniAvatarUploader.pcss"; @import "./views/elements/_Pill.pcss"; @import "./views/elements/_PowerSelector.pcss"; diff --git a/res/css/views/elements/_LanguageDropdown.pcss b/res/css/views/elements/_LanguageDropdown.pcss new file mode 100644 index 000000000000..60f406af73a0 --- /dev/null +++ b/res/css/views/elements/_LanguageDropdown.pcss @@ -0,0 +1,21 @@ +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_LanguageDropdown { + .mx_Dropdown_option > div { + text-transform: capitalize; + } +} diff --git a/res/css/views/messages/_DateSeparator.pcss b/res/css/views/messages/_DateSeparator.pcss index 0a25cccaafdf..52d263f68884 100644 --- a/res/css/views/messages/_DateSeparator.pcss +++ b/res/css/views/messages/_DateSeparator.pcss @@ -40,6 +40,7 @@ limitations under the License. font-size: inherit; font-weight: inherit; color: inherit; + text-transform: capitalize; } .mx_DateSeparator_jumpToDateMenu { diff --git a/sonar-project.properties b/sonar-project.properties index e0bfadc4ade3..b127fee1e985 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -11,5 +11,6 @@ sonar.exclusions=__mocks__,docs sonar.cpd.exclusions=src/i18n/strings/*.json sonar.typescript.tsconfigPath=./tsconfig.json sonar.javascript.lcov.reportPaths=coverage/lcov.info -sonar.coverage.exclusions=test/**/*,cypress/**/*,src/components/views/dialogs/devtools/**/* +# instrumentation is disabled on SessionLock +sonar.coverage.exclusions=test/**/*,cypress/**/*,src/components/views/dialogs/devtools/**/*,src/utils/SessionLock.ts sonar.testExecutionReportPaths=coverage/jest-sonar-report.xml diff --git a/src/@types/common.ts b/src/@types/common.ts index 4ea9cff802cb..dd42c2078f24 100644 --- a/src/@types/common.ts +++ b/src/@types/common.ts @@ -23,22 +23,41 @@ export type Writeable = { -readonly [P in keyof T]: T[P] }; export type ComponentClass = keyof JSX.IntrinsicElements | JSXElementConstructor; -// Utility type for string dot notation for accessing nested object properties -// Based on https://stackoverflow.com/a/58436959 -type Join = K extends string | number +/** + * Utility type for string dot notation for accessing nested object properties. + * Based on https://stackoverflow.com/a/58436959 + * @example + * { + * "a": { + * "b": { + * "c": "value" + * }, + * "d": "foobar" + * } + * } + * will yield a type of `"a.b.c" | "a.d"` with Separator="." + * @typeParam Target the target type to generate leaf keys for + * @typeParam Separator the separator to use between key segments when accessing nested objects + * @typeParam LeafType the type which leaves of this object extend, used to determine when to stop recursion + * @typeParam MaxDepth the maximum depth to recurse to + * @returns a union type representing all dot (Separator) string notation keys which can access a Leaf (of LeafType) + */ +export type Leaves = [ + MaxDepth, +] extends [never] + ? never + : Target extends LeafType + ? "" + : { + [K in keyof Target]-?: Join, Separator>; + }[keyof Target]; +type Prev = [never, 0, 1, 2, 3, ...0[]]; +type Join = K extends string | number ? P extends string | number - ? `${K}${"" extends P ? "" : "."}${P}` + ? `${K}${"" extends P ? "" : S}${P}` : never : never; -type Prev = [never, 0, 1, 2, 3, ...0[]]; - -export type Leaves = [D] extends [never] - ? never - : T extends object - ? { [K in keyof T]-?: Join> }[keyof T] - : ""; - export type RecursivePartial = { [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial[] diff --git a/src/AsyncWrapper.tsx b/src/AsyncWrapper.tsx index 17868da587b9..901699a3597c 100644 --- a/src/AsyncWrapper.tsx +++ b/src/AsyncWrapper.tsx @@ -77,7 +77,7 @@ export default class AsyncWrapper extends React.Component { return ; } else if (this.state.error) { return ( - + {_t("Unable to load! Check your network connectivity and try again.")} format(sunday + day * DAY_MS)); } -function pad(n: number): string { - return (n < 10 ? "0" : "") + n; +/** + * Returns array of 12 month names, from January to December, internationalised to the user's language. + * @param month - format desired "numeric" | "2-digit" | "long" | "short" | "narrow" + */ +export function getMonthsArray(month: Intl.DateTimeFormatOptions["month"] = "short"): string[] { + const { format } = new Intl.DateTimeFormat(getUserLanguage(), { month, timeZone: "UTC" }); + return [...Array(12).keys()].map((m) => format(Date.UTC(2021, m))); } -function twelveHourTime(date: Date, showSeconds = false): string { - let hours = date.getHours() % 12; - const minutes = pad(date.getMinutes()); - const ampm = date.getHours() >= 12 ? _t("PM") : _t("AM"); - hours = hours ? hours : 12; // convert 0 -> 12 - if (showSeconds) { - const seconds = pad(date.getSeconds()); - return `${hours}:${minutes}:${seconds}${ampm}`; - } - return `${hours}:${minutes}${ampm}`; +// XXX: Ideally we could just specify `hour12: boolean` but it has issues on Chrome in the `en` locale +// https://support.google.com/chrome/thread/29828561?hl=en +function getTwelveHourOptions(showTwelveHour: boolean): Intl.DateTimeFormatOptions { + return { + hourCycle: showTwelveHour ? "h12" : "h23", + }; } -export function formatDate(date: Date, showTwelveHour = false): string { +/** + * Formats a given date to a date & time string. + * + * The output format depends on how far away the given date is from now. + * Will use the browser's default time zone. + * If the date is today it will return a time string excluding seconds. See {@formatTime}. + * If the date is within the last 6 days it will return the name of the weekday along with the time string excluding seconds. + * If the date is within the same year then it will return the weekday, month and day of the month along with the time string excluding seconds. + * Otherwise, it will return a string representing the full date & time in a human friendly manner. See {@formatFullDate}. + * @param date - date object to format + * @param showTwelveHour - whether to use 12-hour rather than 24-hour time. Defaults to `false` (24 hour mode). + * Overrides the default from the locale, whether `true` or `false`. + * @param locale - the locale string to use, in BCP 47 format, defaulting to user's selected application locale + */ +export function formatDate(date: Date, showTwelveHour = false, locale?: string): string { + const _locale = locale ?? getUserLanguage(); const now = new Date(); - const days = getDaysArray(); - const months = getMonthsArray(); if (date.toDateString() === now.toDateString()) { - return formatTime(date, showTwelveHour); - } else if (now.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) { - // TODO: use standard date localize function provided in counterpart - return _t("%(weekDayName)s %(time)s", { - weekDayName: days[date.getDay()], - time: formatTime(date, showTwelveHour), - }); + return formatTime(date, showTwelveHour, _locale); + } else if (now.getTime() - date.getTime() < 6 * DAY_MS) { + // Time is within the last 6 days (or in the future) + return new Intl.DateTimeFormat(_locale, { + ...getTwelveHourOptions(showTwelveHour), + weekday: "short", + hour: "numeric", + minute: "2-digit", + }).format(date); } else if (now.getFullYear() === date.getFullYear()) { - // TODO: use standard date localize function provided in counterpart - return _t("%(weekDayName)s, %(monthName)s %(day)s %(time)s", { - weekDayName: days[date.getDay()], - monthName: months[date.getMonth()], - day: date.getDate(), - time: formatTime(date, showTwelveHour), - }); + return new Intl.DateTimeFormat(_locale, { + ...getTwelveHourOptions(showTwelveHour), + weekday: "short", + month: "short", + day: "numeric", + hour: "numeric", + minute: "2-digit", + }).format(date); } - return formatFullDate(date, showTwelveHour); + return formatFullDate(date, showTwelveHour, false, _locale); } -export function formatFullDateNoTime(date: Date): string { - const days = getDaysArray(); - const months = getMonthsArray(); - return _t("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", { - weekDayName: days[date.getDay()], - monthName: months[date.getMonth()], - day: date.getDate(), - fullYear: date.getFullYear(), - }); +/** + * Formats a given date to a human-friendly string with short weekday. + * Will use the browser's default time zone. + * @example "Thu, 17 Nov 2022" in en-GB locale + * @param date - date object to format + * @param locale - the locale string to use, in BCP 47 format, defaulting to user's selected application locale + */ +export function formatFullDateNoTime(date: Date, locale?: string): string { + return new Intl.DateTimeFormat(locale ?? getUserLanguage(), { + weekday: "short", + month: "short", + day: "numeric", + year: "numeric", + }).format(date); } -export function formatFullDate(date: Date, showTwelveHour = false, showSeconds = true): string { - const days = getDaysArray(); - const months = getMonthsArray(); - return _t("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", { - weekDayName: days[date.getDay()], - monthName: months[date.getMonth()], - day: date.getDate(), - fullYear: date.getFullYear(), - time: showSeconds ? formatFullTime(date, showTwelveHour) : formatTime(date, showTwelveHour), - }); +/** + * Formats a given date to a date & time string, optionally including seconds. + * Will use the browser's default time zone. + * @example "Thu, 17 Nov 2022, 4:58:32 pm" in en-GB locale with showTwelveHour=true and showSeconds=true + * @param date - date object to format + * @param showTwelveHour - whether to use 12-hour rather than 24-hour time. Defaults to `false` (24 hour mode). + * Overrides the default from the locale, whether `true` or `false`. + * @param showSeconds - whether to include seconds in the time portion of the string + * @param locale - the locale string to use, in BCP 47 format, defaulting to user's selected application locale + */ +export function formatFullDate(date: Date, showTwelveHour = false, showSeconds = true, locale?: string): string { + return new Intl.DateTimeFormat(locale ?? getUserLanguage(), { + ...getTwelveHourOptions(showTwelveHour), + weekday: "short", + month: "short", + day: "numeric", + year: "numeric", + hour: "numeric", + minute: "2-digit", + second: showSeconds ? "2-digit" : undefined, + }).format(date); } /** * Formats dates to be compatible with attributes of a ``. Dates - * should be formatted like "2020-06-23" (formatted according to ISO8601) + * should be formatted like "2020-06-23" (formatted according to ISO8601). * * @param date The date to format. * @returns The date string in ISO8601 format ready to be used with an `` @@ -115,22 +141,44 @@ export function formatDateForInput(date: Date): string { const year = `${date.getFullYear()}`.padStart(4, "0"); const month = `${date.getMonth() + 1}`.padStart(2, "0"); const day = `${date.getDate()}`.padStart(2, "0"); - const dateInputValue = `${year}-${month}-${day}`; - return dateInputValue; + return `${year}-${month}-${day}`; } -export function formatFullTime(date: Date, showTwelveHour = false): string { - if (showTwelveHour) { - return twelveHourTime(date, true); - } - return pad(date.getHours()) + ":" + pad(date.getMinutes()) + ":" + pad(date.getSeconds()); +/** + * Formats a given date to a time string including seconds. + * Will use the browser's default time zone. + * @example "4:58:32 PM" in en-GB locale with showTwelveHour=true + * @example "16:58:32" in en-GB locale with showTwelveHour=false + * @param date - date object to format + * @param showTwelveHour - whether to use 12-hour rather than 24-hour time. Defaults to `false` (24 hour mode). + * Overrides the default from the locale, whether `true` or `false`. + * @param locale - the locale string to use, in BCP 47 format, defaulting to user's selected application locale + */ +export function formatFullTime(date: Date, showTwelveHour = false, locale?: string): string { + return new Intl.DateTimeFormat(locale ?? getUserLanguage(), { + ...getTwelveHourOptions(showTwelveHour), + hour: "numeric", + minute: "2-digit", + second: "2-digit", + }).format(date); } -export function formatTime(date: Date, showTwelveHour = false): string { - if (showTwelveHour) { - return twelveHourTime(date); - } - return pad(date.getHours()) + ":" + pad(date.getMinutes()); +/** + * Formats a given date to a time string excluding seconds. + * Will use the browser's default time zone. + * @example "4:58 PM" in en-GB locale with showTwelveHour=true + * @example "16:58" in en-GB locale with showTwelveHour=false + * @param date - date object to format + * @param showTwelveHour - whether to use 12-hour rather than 24-hour time. Defaults to `false` (24 hour mode). + * Overrides the default from the locale, whether `true` or `false`. + * @param locale - the locale string to use, in BCP 47 format, defaulting to user's selected application locale + */ +export function formatTime(date: Date, showTwelveHour = false, locale?: string): string { + return new Intl.DateTimeFormat(locale ?? getUserLanguage(), { + ...getTwelveHourOptions(showTwelveHour), + hour: "numeric", + minute: "2-digit", + }).format(date); } export function formatSeconds(inSeconds: number): string { @@ -183,9 +231,8 @@ export function formatTimeLeft(inSeconds: number): string { }); } -const MILLIS_IN_DAY = 86400000; function withinPast24Hours(prevDate: Date, nextDate: Date): boolean { - return Math.abs(prevDate.getTime() - nextDate.getTime()) <= MILLIS_IN_DAY; + return Math.abs(prevDate.getTime() - nextDate.getTime()) <= DAY_MS; } function withinCurrentDay(prevDate: Date, nextDate: Date): boolean { @@ -210,15 +257,15 @@ export function wantsDateSeparator(prevEventDate: Optional, nextEventDate: } export function formatFullDateNoDay(date: Date): string { + const locale = getUserLanguage(); return _t("%(date)s at %(time)s", { - date: date.toLocaleDateString().replace(/\//g, "-"), - time: date.toLocaleTimeString().replace(/:/g, "-"), + date: date.toLocaleDateString(locale).replace(/\//g, "-"), + time: date.toLocaleTimeString(locale).replace(/:/g, "-"), }); } /** - * Returns an ISO date string without textual description of the date (ie: no "Wednesday" or - * similar) + * Returns an ISO date string without textual description of the date (ie: no "Wednesday" or similar) * @param date The date to format. * @returns The date string in ISO format. */ @@ -226,12 +273,23 @@ export function formatFullDateNoDayISO(date: Date): string { return date.toISOString(); } -export function formatFullDateNoDayNoTime(date: Date): string { - return date.getFullYear() + "/" + pad(date.getMonth() + 1) + "/" + pad(date.getDate()); +/** + * Formats a given date to a string. + * Will use the browser's default time zone. + * @example 17/11/2022 in en-GB locale + * @param date - date object to format + * @param locale - the locale string to use, in BCP 47 format, defaulting to user's selected application locale + */ +export function formatFullDateNoDayNoTime(date: Date, locale?: string): string { + return new Intl.DateTimeFormat(locale ?? getUserLanguage(), { + year: "numeric", + month: "numeric", + day: "numeric", + }).format(date); } export function formatRelativeTime(date: Date, showTwelveHour = false): string { - const now = new Date(Date.now()); + const now = new Date(); if (withinCurrentDay(date, now)) { return formatTime(date, showTwelveHour); } else { @@ -245,15 +303,11 @@ export function formatRelativeTime(date: Date, showTwelveHour = false): string { } } -const MINUTE_MS = 60000; -const HOUR_MS = MINUTE_MS * 60; -const DAY_MS = HOUR_MS * 24; - /** - * Formats duration in ms to human readable string - * Returns value in biggest possible unit (day, hour, min, second) + * Formats duration in ms to human-readable string + * Returns value in the biggest possible unit (day, hour, min, second) * Rounds values up until unit threshold - * ie. 23:13:57 -> 23h, 24:13:57 -> 1d, 44:56:56 -> 2d + * i.e. 23:13:57 -> 23h, 24:13:57 -> 1d, 44:56:56 -> 2d */ export function formatDuration(durationMs: number): string { if (durationMs >= DAY_MS) { @@ -269,9 +323,9 @@ export function formatDuration(durationMs: number): string { } /** - * Formats duration in ms to human readable string + * Formats duration in ms to human-readable string * Returns precise value down to the nearest second - * ie. 23:13:57 -> 23h 13m 57s, 44:56:56 -> 1d 20h 56m 56s + * i.e. 23:13:57 -> 23h 13m 57s, 44:56:56 -> 1d 20h 56m 56s */ export function formatPreciseDuration(durationMs: number): string { const days = Math.floor(durationMs / DAY_MS); @@ -293,13 +347,13 @@ export function formatPreciseDuration(durationMs: number): string { /** * Formats a timestamp to a short date - * (eg 25/12/22 in uk locale) - * localised by system locale + * Similar to {@formatFullDateNoDayNoTime} but with 2-digit on day, month, year. + * @example 25/12/22 in en-GB locale * @param timestamp - epoch timestamp + * @param locale - the locale string to use, in BCP 47 format, defaulting to user's selected application locale * @returns {string} formattedDate */ -export const formatLocalDateShort = (timestamp: number): string => - new Intl.DateTimeFormat( - undefined, // locales - { day: "2-digit", month: "2-digit", year: "2-digit" }, - ).format(timestamp); +export const formatLocalDateShort = (timestamp: number, locale?: string): string => + new Intl.DateTimeFormat(locale ?? getUserLanguage(), { day: "2-digit", month: "2-digit", year: "2-digit" }).format( + timestamp, + ); diff --git a/src/HtmlUtils.tsx b/src/HtmlUtils.tsx index 17fb1e6ad05b..78dcd4a13965 100644 --- a/src/HtmlUtils.tsx +++ b/src/HtmlUtils.tsx @@ -29,6 +29,7 @@ import { Optional } from "matrix-events-sdk"; import _Linkify from "linkify-react"; import escapeHtml from "escape-html"; import GraphemeSplitter from "graphemer"; +import { getEmojiFromUnicode } from "@matrix-org/emojibase-bindings"; import { _linkifyElement, @@ -39,7 +40,6 @@ import { import { IExtendedSanitizeOptions } from "./@types/sanitize-html"; import SettingsStore from "./settings/SettingsStore"; import { tryTransformPermalinkToLocalHref } from "./utils/permalinks/Permalinks"; -import { getEmojiFromUnicode } from "./emoji"; import { mediaFromMxc } from "./customisations/Media"; import { stripHTMLReply, stripPlainReply } from "./utils/Reply"; import { PERMITTED_URL_SCHEMES } from "./utils/UrlUtils"; diff --git a/src/IdentityAuthClient.tsx b/src/IdentityAuthClient.tsx index 19364120d3dd..a596156addfb 100644 --- a/src/IdentityAuthClient.tsx +++ b/src/IdentityAuthClient.tsx @@ -141,9 +141,7 @@ export default class IdentityAuthClient {

{_t( - "This action requires accessing the default identity server " + - " to validate an email address or phone number, " + - "but the server does not have any terms of service.", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.", {}, { server: () => {abbreviateUrl(identityServerUrl)}, diff --git a/src/LegacyCallHandler.tsx b/src/LegacyCallHandler.tsx index 18ae6b8b8e6f..675756b462d1 100644 --- a/src/LegacyCallHandler.tsx +++ b/src/LegacyCallHandler.tsx @@ -823,19 +823,14 @@ export default class LegacyCallHandler extends EventEmitter {

{_t( - "Please ask the administrator of your homeserver " + - "(%(homeserverDomain)s) to configure a TURN server in " + - "order for calls to work reliably.", + "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.", { homeserverDomain: cli.getDomain() }, { code: (sub: string) => {sub} }, )}

{_t( - "Alternatively, you can try to use the public server at " + - ", but this will not be as reliable, and " + - "it will share your IP address with that server. You can also manage " + - "this in Settings.", + "Alternatively, you can try to use the public server at , but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.", undefined, { server: () => {new URL(FALLBACK_ICE_SERVER).pathname} }, )} @@ -845,7 +840,7 @@ export default class LegacyCallHandler extends EventEmitter { button: _t("Try using %(server)s", { server: new URL(FALLBACK_ICE_SERVER).pathname, }), - cancelButton: _t("OK"), + cancelButton: _t("action|ok"), onFinished: (allow) => { SettingsStore.setValue("fallbackICEServerAllowed", null, SettingLevel.DEVICE, allow); cli.setFallbackICEServerAllowed(!!allow); @@ -865,8 +860,7 @@ export default class LegacyCallHandler extends EventEmitter { description = (

{_t( - "Call failed because microphone could not be accessed. " + - "Check that a microphone is plugged in and set up correctly.", + "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.", )}
); diff --git a/src/Lifecycle.ts b/src/Lifecycle.ts index a5be8f7f5c74..0958e036e159 100644 --- a/src/Lifecycle.ts +++ b/src/Lifecycle.ts @@ -305,8 +305,7 @@ export function attemptTokenLogin( logger.warn("Cannot log in with token: can't determine HS URL to use"); onFailedDelegatedAuthLogin( _t( - "We asked the browser to remember which homeserver you use to let you sign in, " + - "but unfortunately your browser has forgotten it. Go to the sign in page and try again.", + "We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.", ), ); return Promise.resolve(false); @@ -613,7 +612,7 @@ async function checkServerVersions(): Promise { brand: SdkConfig.get().brand, }, ), - acceptLabel: _t("OK"), + acceptLabel: _t("action|ok"), onAccept: () => { ToastStore.sharedInstance().dismissToast(toastKey); }, diff --git a/src/Notifier.ts b/src/Notifier.ts index 839be8c83a66..cf9bafdcab78 100644 --- a/src/Notifier.ts +++ b/src/Notifier.ts @@ -299,8 +299,7 @@ class NotifierClass { const description = result === "denied" ? _t( - "%(brand)s does not have permission to send you notifications - " + - "please check your browser settings", + "%(brand)s does not have permission to send you notifications - please check your browser settings", { brand }, ) : _t("%(brand)s was not given permission to send notifications - please try again", { diff --git a/src/SlashCommands.tsx b/src/SlashCommands.tsx index 523faec5c8fd..88c8de7ee3e9 100644 --- a/src/SlashCommands.tsx +++ b/src/SlashCommands.tsx @@ -192,8 +192,7 @@ export const Commands = [ const unixTimestamp = Date.parse(args); if (!unixTimestamp) { throw new UserFriendlyError( - "We were unable to understand the given date (%(inputDate)s). " + - "Try using the format YYYY-MM-DD.", + "We were unable to understand the given date (%(inputDate)s). Try using the format YYYY-MM-DD.", { inputDate: args, cause: undefined }, ); } @@ -401,16 +400,14 @@ export const Commands = [ description: (

{_t( - "Use an identity server to invite by email. " + - "Click continue to use the default identity server " + - "(%(defaultIdentityServerName)s) or manage in Settings.", + "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.", { defaultIdentityServerName: abbreviateUrl(defaultIdentityServerUrl), }, )}

), - button: _t("Continue"), + button: _t("action|continue"), }); prom = finished.then(([useDefault]) => { @@ -460,7 +457,7 @@ export const Commands = [ new Command({ command: "part", args: "[]", - description: _td("Leave room"), + description: _td("action|leave_room"), analyticsName: "Part", isEnabled: (cli) => !isCurrentLocalRoom(cli), runFn: function (cli, roomId, threadId, args) { @@ -717,9 +714,7 @@ export const Commands = [ if (device.getFingerprint() !== fingerprint) { const fprint = device.getFingerprint(); throw new UserFriendlyError( - "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session" + - ' %(deviceId)s is "%(fprint)s" which does not match the provided key ' + - '"%(fingerprint)s". This could mean your communications are being intercepted!', + 'WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is "%(fprint)s" which does not match the provided key "%(fingerprint)s". This could mean your communications are being intercepted!', { fprint, userId, @@ -739,8 +734,7 @@ export const Commands = [

{_t( - "The signing key you provided matches the signing key you received " + - "from %(userId)s's session %(deviceId)s. Session marked as verified.", + "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.", { userId, deviceId }, )}

diff --git a/src/TextForEvent.tsx b/src/TextForEvent.tsx index 93896cd0aa57..c4aa4416a9f5 100644 --- a/src/TextForEvent.tsx +++ b/src/TextForEvent.tsx @@ -482,17 +482,14 @@ function textForHistoryVisibilityEvent(event: MatrixEvent): (() => string) | nul case HistoryVisibility.Invited: return () => _t( - "%(senderName)s made future room history visible to all room members, " + - "from the point they are invited.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.", { senderName }, ); case HistoryVisibility.Joined: return () => - _t( - "%(senderName)s made future room history visible to all room members, " + - "from the point they joined.", - { senderName }, - ); + _t("%(senderName)s made future room history visible to all room members, from the point they joined.", { + senderName, + }); case HistoryVisibility.Shared: return () => _t("%(senderName)s made future room history visible to all room members.", { senderName }); case HistoryVisibility.WorldReadable: @@ -810,33 +807,31 @@ function textForMjolnirEvent(event: MatrixEvent): (() => string) | null { if (USER_RULE_TYPES.includes(event.getType())) { return () => _t( - "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching " + - "%(newGlob)s for %(reason)s", + "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", { senderName, oldGlob: prevEntity, newGlob: entity, reason }, ); } else if (ROOM_RULE_TYPES.includes(event.getType())) { return () => _t( - "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching " + - "%(newGlob)s for %(reason)s", + "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", { senderName, oldGlob: prevEntity, newGlob: entity, reason }, ); } else if (SERVER_RULE_TYPES.includes(event.getType())) { return () => _t( - "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching " + - "%(newGlob)s for %(reason)s", + "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", { senderName, oldGlob: prevEntity, newGlob: entity, reason }, ); } // Unknown type. We'll say something but we shouldn't end up here. return () => - _t( - "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s " + - "for %(reason)s", - { senderName, oldGlob: prevEntity, newGlob: entity, reason }, - ); + _t("%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s", { + senderName, + oldGlob: prevEntity, + newGlob: entity, + reason, + }); } export function textForLocationEvent(event: MatrixEvent): () => string { diff --git a/src/accessibility/KeyboardShortcutUtils.ts b/src/accessibility/KeyboardShortcutUtils.ts index acbf14d75652..8b6ac184f978 100644 --- a/src/accessibility/KeyboardShortcutUtils.ts +++ b/src/accessibility/KeyboardShortcutUtils.ts @@ -25,9 +25,9 @@ import { IKeyboardShortcuts, KeyBindingAction, KEYBOARD_SHORTCUTS, + KeyboardShortcutSetting, MAC_ONLY_SHORTCUTS, } from "./KeyboardShortcuts"; -import { IBaseSetting } from "../settings/Settings"; /** * This function gets the keyboard shortcuts that should be presented in the UI @@ -115,7 +115,7 @@ export const getKeyboardShortcuts = (): IKeyboardShortcuts => { export const getKeyboardShortcutsForUI = (): IKeyboardShortcuts => { const entries = [...Object.entries(getUIOnlyShortcuts()), ...Object.entries(getKeyboardShortcuts())] as [ KeyBindingAction, - IBaseSetting, + KeyboardShortcutSetting, ][]; return entries.reduce((acc, [key, value]) => { @@ -130,5 +130,5 @@ export const getKeyboardShortcutValue = (name: KeyBindingAction): KeyCombo | und export const getKeyboardShortcutDisplayName = (name: KeyBindingAction): string | undefined => { const keyboardShortcutDisplayName = getKeyboardShortcutsForUI()[name]?.displayName; - return keyboardShortcutDisplayName && _t(keyboardShortcutDisplayName as string); + return keyboardShortcutDisplayName && _t(keyboardShortcutDisplayName); }; diff --git a/src/accessibility/KeyboardShortcuts.ts b/src/accessibility/KeyboardShortcuts.ts index bcd720ee21ba..67a835f54630 100644 --- a/src/accessibility/KeyboardShortcuts.ts +++ b/src/accessibility/KeyboardShortcuts.ts @@ -16,7 +16,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { _td } from "../languageHandler"; +import { _td, TranslationKey } from "../languageHandler"; import { IS_MAC, Key } from "../Keyboard"; import { IBaseSetting } from "../settings/Settings"; import { KeyCombo } from "../KeyBindingsManager"; @@ -154,13 +154,15 @@ export enum KeyBindingAction { ToggleHiddenEventVisibility = "KeyBinding.toggleHiddenEventVisibility", } -type KeyboardShortcutSetting = Omit, "supportedLevels">; +export type KeyboardShortcutSetting = Omit, "supportedLevels" | "displayName"> & { + displayName?: TranslationKey; +}; // TODO: We should figure out what to do with the keyboard shortcuts that are not handled by KeybindingManager export type IKeyboardShortcuts = Partial>; export interface ICategory { - categoryLabel?: string; + categoryLabel?: TranslationKey; // TODO: We should figure out what to do with the keyboard shortcuts that are not handled by KeybindingManager settingNames: KeyBindingAction[]; } @@ -179,7 +181,7 @@ export enum CategoryName { // Meta-key representing the digits [0-9] often found at the top of standard keyboard layouts export const DIGITS = "digits"; -export const ALTERNATE_KEY_NAME: Record = { +export const ALTERNATE_KEY_NAME: Record = { [Key.PAGE_UP]: _td("Page Up"), [Key.PAGE_DOWN]: _td("Page Down"), [Key.ESCAPE]: _td("Esc"), diff --git a/src/async-components/views/dialogs/eventindex/DisableEventIndexDialog.tsx b/src/async-components/views/dialogs/eventindex/DisableEventIndexDialog.tsx index a1e9485e0275..dbedac0db04d 100644 --- a/src/async-components/views/dialogs/eventindex/DisableEventIndexDialog.tsx +++ b/src/async-components/views/dialogs/eventindex/DisableEventIndexDialog.tsx @@ -62,7 +62,7 @@ export default class DisableEventIndexDialog extends React.Component :
} {eventIndexingSettings} diff --git a/src/async-components/views/dialogs/security/CreateKeyBackupDialog.tsx b/src/async-components/views/dialogs/security/CreateKeyBackupDialog.tsx index 2a02945621f2..88e69032a263 100644 --- a/src/async-components/views/dialogs/security/CreateKeyBackupDialog.tsx +++ b/src/async-components/views/dialogs/security/CreateKeyBackupDialog.tsx @@ -131,7 +131,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent

{_t("Your keys are being backed up (the first backup could take a few minutes).")}

- +
); } @@ -154,7 +154,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent

{_t("Unable to create key backup")}

{_t( - "Safeguard against losing access to encrypted messages & data by " + - "backing up encryption keys on your server.", + "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.", )}

@@ -568,7 +567,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent @@ -587,7 +586,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent

{_t( - "Upgrade this session to allow it to verify other sessions, " + - "granting them access to encrypted messages and marking them " + - "as trusted for other users.", + "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.", )}

{authPrompt}
@@ -636,8 +633,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent

{_t( - "Enter a Security Phrase only you know, as it's used to safeguard your data. " + - "To be secure, you shouldn't re-use your account password.", + "Enter a Security Phrase only you know, as it's used to safeguard your data. To be secure, you shouldn't re-use your account password.", )}

@@ -658,7 +654,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {passPhraseMatch}

{_t( - "Store your Security Key somewhere safe, like a password manager or a safe, " + - "as it's used to safeguard your encrypted data.", + "Store your Security Key somewhere safe, like a password manager or a safe, as it's used to safeguard your encrypted data.", )}

@@ -782,7 +777,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent - {this.state.copied ? _t("Copied!") : _t("Copy")} + {this.state.copied ? _t("Copied!") : _t("action|copy")}
@@ -805,7 +800,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent

{_t("Your keys are now being backed up from this device.")}

this.props.onFinished(true)} hasCancel={false} /> @@ -819,7 +814,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent{_t("Unable to query secret storage status")}

{_t("Unable to set up secret storage")}

{_t( - "This process allows you to export the keys for messages " + - "you have received in encrypted rooms to a local file. You " + - "will then be able to import the file into another Matrix " + - "client in the future, so that client will also be able to " + - "decrypt these messages.", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", )}

{_t( - "The exported file will allow anyone who can read it to decrypt " + - "any encrypted messages that you can see, so you should be " + - "careful to keep it secure. To help with this, you should enter " + - "a unique passphrase below, which will only be used to encrypt the " + - "exported data. " + - "It will only be possible to import the data by using the same passphrase.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a unique passphrase below, which will only be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", )}

{this.state.errStr}
diff --git a/src/async-components/views/dialogs/security/ImportE2eKeysDialog.tsx b/src/async-components/views/dialogs/security/ImportE2eKeysDialog.tsx index 92d5ae315909..b65e104170d6 100644 --- a/src/async-components/views/dialogs/security/ImportE2eKeysDialog.tsx +++ b/src/async-components/views/dialogs/security/ImportE2eKeysDialog.tsx @@ -146,16 +146,12 @@ export default class ImportE2eKeysDialog extends React.Component

{_t( - "This process allows you to import encryption keys " + - "that you had previously exported from another Matrix " + - "client. You will then be able to decrypt any " + - "messages that the other client could decrypt.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.", )}

{_t( - "The export file will be protected with a passphrase. " + - "You should enter the passphrase here, to decrypt the file.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", )}

{this.state.errStr}
diff --git a/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx b/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx index a7aa464b8d15..db18b4e54d96 100644 --- a/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx +++ b/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx @@ -62,10 +62,7 @@ export default class NewRecoveryMethodDialog extends React.PureComponent const hackWarning = (

{_t( - "If you didn't set the new recovery method, an " + - "attacker may be trying to access your account. " + - "Change your account password and set a new recovery " + - "method immediately in Settings.", + "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.", )}

); @@ -78,7 +75,7 @@ export default class NewRecoveryMethodDialog extends React.PureComponent

{_t("This session is encrypting history using the new recovery method.")}

{hackWarning}

{_t( - "This session has detected that your Security Phrase and key " + - "for Secure Messages have been removed.", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.", )}

{_t( - "If you did this accidentally, you can setup Secure Messages on " + - "this session which will re-encrypt this session's message " + - "history with a new recovery method.", + "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.", )}

{_t( - "If you didn't remove the recovery method, an " + - "attacker may be trying to access your account. " + - "Change your account password and set a new recovery " + - "method immediately in Settings.", + "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.", )}

; public nameMatcher: QueryMatcher; - private readonly recentlyUsed: IEmoji[]; + private readonly recentlyUsed: Emoji[]; public constructor(room: Room, renderingType?: TimelineRenderingType) { super({ commandRegex: EMOJI_REGEX, renderingType }); diff --git a/src/components/structures/EmbeddedPage.tsx b/src/components/structures/EmbeddedPage.tsx index 7ee30cb3ec6b..6b063db99851 100644 --- a/src/components/structures/EmbeddedPage.tsx +++ b/src/components/structures/EmbeddedPage.tsx @@ -21,7 +21,7 @@ import sanitizeHtml from "sanitize-html"; import classnames from "classnames"; import { logger } from "matrix-js-sdk/src/logger"; -import { _t } from "../../languageHandler"; +import { _t, TranslationKey } from "../../languageHandler"; import dis from "../../dispatcher/dispatcher"; import { MatrixClientPeg } from "../../MatrixClientPeg"; import MatrixClientContext from "../../contexts/MatrixClientContext"; @@ -56,7 +56,7 @@ export default class EmbeddedPage extends React.PureComponent { }; } - private translate(s: string): string { + private translate(s: TranslationKey): string { return sanitizeHtml(_t(s)); } diff --git a/src/components/structures/InteractiveAuth.tsx b/src/components/structures/InteractiveAuth.tsx index 67c765760d59..d35d403e5f00 100644 --- a/src/components/structures/InteractiveAuth.tsx +++ b/src/components/structures/InteractiveAuth.tsx @@ -35,8 +35,8 @@ type InteractiveAuthCallbackSuccess = ( success: true, response: T, extra?: { emailSid?: string; clientSecret?: string }, -) => void; -type InteractiveAuthCallbackFailure = (success: false, response: IAuthData | Error) => void; +) => Promise; +type InteractiveAuthCallbackFailure = (success: false, response: IAuthData | Error) => Promise; export type InteractiveAuthCallback = InteractiveAuthCallbackSuccess & InteractiveAuthCallbackFailure; export interface InteractiveAuthProps { @@ -141,15 +141,15 @@ export default class InteractiveAuthComponent extends React.Component { + .then(async (result) => { const extra = { emailSid: this.authLogic.getEmailSid(), clientSecret: this.authLogic.getClientSecret(), }; - this.props.onAuthFinished(true, result, extra); + await this.props.onAuthFinished(true, result, extra); }) - .catch((error) => { - this.props.onAuthFinished(false, error); + .catch(async (error) => { + await this.props.onAuthFinished(false, error); logger.error("Error during user-interactive auth:", error); if (this.unmounted) { return; @@ -251,12 +251,12 @@ export default class InteractiveAuthComponent extends React.Component { - this.props.onAuthFinished(false, ERROR_USER_CANCELLED); + private onStageCancel = async (): Promise => { + await this.props.onAuthFinished(false, ERROR_USER_CANCELLED); }; - private onAuthStageFailed = (e: Error): void => { - this.props.onAuthFinished(false, e); + private onAuthStageFailed = async (e: Error): Promise => { + await this.props.onAuthFinished(false, e); }; private setEmailSid = (sid: string): void => { diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 66601253b327..9d99f3e39f71 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -482,12 +482,10 @@ export default class MatrixChat extends React.PureComponent { const waitText = _t("Wait!"); const scamText = _t( - "If someone told you to copy/paste something here, " + "there is a high likelihood you're being scammed!", + "If someone told you to copy/paste something here, there is a high likelihood you're being scammed!", ); const devText = _t( - "If you know what you're doing, Element is open-source, " + - "be sure to check out our GitHub (https://github.com/vector-im/element-web/) " + - "and contribute!", + "If you know what you're doing, Element is open-source, be sure to check out our GitHub (https://github.com/vector-im/element-web/) and contribute!", ); global.mx_rage_logger.bypassRageshake( @@ -1166,8 +1164,7 @@ export default class MatrixChat extends React.PureComponent { {" " /* Whitespace, otherwise the sentences get smashed together */} {_t( - "You are the only person here. " + - "If you leave, no one will be able to join in the future, including you.", + "You are the only person here. If you leave, no one will be able to join in the future, including you.", )} , ); @@ -1199,7 +1196,7 @@ export default class MatrixChat extends React.PureComponent { const isSpace = roomToLeave?.isSpaceRoom(); Modal.createDialog(QuestionDialog, { - title: isSpace ? _t("Leave space") : _t("Leave room"), + title: isSpace ? _t("Leave space") : _t("action|leave_room"), description: ( {isSpace @@ -1212,7 +1209,7 @@ export default class MatrixChat extends React.PureComponent { {warnings} ), - button: _t("Leave"), + button: _t("action|leave"), onFinished: async (shouldLeave) => { if (shouldLeave) { await leaveRoomBehaviour(cli, roomId); @@ -1401,7 +1398,7 @@ export default class MatrixChat extends React.PureComponent { title: userNotice.title, props: { description: {userNotice.description}, - acceptLabel: _t("OK"), + acceptLabel: _t("action|ok"), onAccept: () => { ToastStore.sharedInstance().dismissToast(key); localStorage.setItem(key, "1"); @@ -1593,8 +1590,7 @@ export default class MatrixChat extends React.PureComponent {

{" "} {_t( - "To continue using the %(homeserverDomain)s homeserver " + - "you must review and agree to our terms and conditions.", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.", { homeserverDomain: cli.getDomain() }, )}

@@ -1643,13 +1639,7 @@ export default class MatrixChat extends React.PureComponent { Modal.createDialog(ErrorDialog, { title: _t("Old cryptography data detected"), description: _t( - "Data from an older version of %(brand)s has been detected. " + - "This will have caused end-to-end cryptography to malfunction " + - "in the older version. End-to-end encrypted messages exchanged " + - "recently whilst using the older version may not be decryptable " + - "in this version. This may also cause messages exchanged with this " + - "version to fail. If you experience problems, log out and back in " + - "again. To retain message history, export and re-import your keys.", + "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.", { brand: SdkConfig.get().brand }, ), }); @@ -2000,7 +1990,7 @@ export default class MatrixChat extends React.PureComponent { this.subTitleStatus = ""; if (state === SyncState.Error) { - this.subTitleStatus += `[${_t("Offline")}] `; + this.subTitleStatus += `[${_t("common|offline")}] `; } if (numUnreadRooms > 0) { this.subTitleStatus += `[${numUnreadRooms}]`; diff --git a/src/components/structures/RoomSearchView.tsx b/src/components/structures/RoomSearchView.tsx index 1b3d8651948a..a0726566df54 100644 --- a/src/components/structures/RoomSearchView.tsx +++ b/src/components/structures/RoomSearchView.tsx @@ -199,7 +199,7 @@ export const RoomSearchView = forwardRef( if (!results?.results?.length) { ret.push(
  • -

    {_t("No results")}

    +

    {_t("common|no_results")}

  • , ); } else { diff --git a/src/components/structures/RoomStatusBar.tsx b/src/components/structures/RoomStatusBar.tsx index 98039b1abcf0..58c8225ab98b 100644 --- a/src/components/structures/RoomStatusBar.tsx +++ b/src/components/structures/RoomStatusBar.tsx @@ -207,8 +207,7 @@ export default class RoomStatusBar extends React.PureComponent { } if (consentError) { title = _t( - "You can't send any messages until you review and agree to " + - "our terms and conditions.", + "You can't send any messages until you review and agree to our terms and conditions.", {}, { consentLink: (sub) => ( @@ -224,16 +223,13 @@ export default class RoomStatusBar extends React.PureComponent { resourceLimitError.data.admin_contact, { "monthly_active_user": _td( - "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. " + - "Please contact your service administrator to continue using the service.", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.", ), "hs_disabled": _td( - "Your message wasn't sent because this homeserver has been blocked by its administrator. " + - "Please contact your service administrator to continue using the service.", + "Your message wasn't sent because this homeserver has been blocked by its administrator. Please contact your service administrator to continue using the service.", ), "": _td( - "Your message wasn't sent because this homeserver has exceeded a resource limit. " + - "Please contact your service administrator to continue using the service.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.", ), }, ); diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index fe4d0c957c8f..e8521aee24a7 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -286,7 +286,7 @@ function LocalRoomView(props: LocalRoomViewProps): ReactElement { if (room.isError) { const buttons = ( - {_t("Retry")} + {_t("action|retry")} ); diff --git a/src/components/structures/SpaceHierarchy.tsx b/src/components/structures/SpaceHierarchy.tsx index 031e6f33c765..c6262fdd8fcc 100644 --- a/src/components/structures/SpaceHierarchy.tsx +++ b/src/components/structures/SpaceHierarchy.tsx @@ -716,7 +716,7 @@ const ManageButtons: React.FC = ({ hierarchy, selected, set kind="danger_outline" disabled={disabled} > - {removing ? _t("Removing…") : _t("Remove")} + {removing ? _t("Removing…") : _t("action|remove")} +
    )} diff --git a/src/components/structures/WaitingForThirdPartyRoomView.tsx b/src/components/structures/WaitingForThirdPartyRoomView.tsx index 8b1fe716f9d8..418199d5d915 100644 --- a/src/components/structures/WaitingForThirdPartyRoomView.tsx +++ b/src/components/structures/WaitingForThirdPartyRoomView.tsx @@ -75,8 +75,7 @@ export const WaitingForThirdPartyRoomView: React.FC = ({ roomView, resize className="mx_cryptoEvent mx_cryptoEvent_icon" title={_t("Waiting for users to join %(brand)s", { brand })} subtitle={_t( - "Once invited users have joined %(brand)s, " + - "you will be able to chat and the room will be end-to-end encrypted", + "Once invited users have joined %(brand)s, you will be able to chat and the room will be end-to-end encrypted", { brand }, )} /> diff --git a/src/components/structures/auth/ForgotPassword.tsx b/src/components/structures/auth/ForgotPassword.tsx index 14d58f372fa5..f3026bbec610 100644 --- a/src/components/structures/auth/ForgotPassword.tsx +++ b/src/components/structures/auth/ForgotPassword.tsx @@ -354,19 +354,17 @@ export default class ForgotPassword extends React.Component {

    {_t( - "Signing out your devices will delete the message encryption keys stored on them, " + - "making encrypted chat history unreadable.", + "Signing out your devices will delete the message encryption keys stored on them, making encrypted chat history unreadable.", )}

    {_t( - "If you want to retain access to your chat history in encrypted rooms, set up Key Backup " + - "or export your message keys from one of your other devices before proceeding.", + "If you want to retain access to your chat history in encrypted rooms, set up Key Backup or export your message keys from one of your other devices before proceeding.", )}

    ), - button: _t("Continue"), + button: _t("action|continue"), }); const [confirmed] = await finished; return !!confirmed; @@ -443,9 +441,7 @@ export default class ForgotPassword extends React.Component { {this.state.logoutDevices ? (

    {_t( - "You have been logged out of all devices and will no longer receive " + - "push notifications. To re-enable notifications, sign in again on each " + - "device.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device.", )}

    ) : null} diff --git a/src/components/structures/auth/Login.tsx b/src/components/structures/auth/Login.tsx index 7307521ea2c1..72bcd9414411 100644 --- a/src/components/structures/auth/Login.tsx +++ b/src/components/structures/auth/Login.tsx @@ -481,7 +481,7 @@ export default class LoginComponent extends React.PureComponent ); }} > - {_t("Continue")} + {_t("action|continue")} ); }; diff --git a/src/components/structures/auth/Registration.tsx b/src/components/structures/auth/Registration.tsx index 37edecdd35e6..53f0576ea4dc 100644 --- a/src/components/structures/auth/Registration.tsx +++ b/src/components/structures/auth/Registration.tsx @@ -622,8 +622,7 @@ export default class Registration extends React.Component {

    {_t( - "Your new account (%(newAccountId)s) is registered, but you're already " + - "logged into a different account (%(loggedInUserId)s).", + "Your new account (%(newAccountId)s) is registered, but you're already logged into a different account (%(loggedInUserId)s).", { newAccountId: this.state.registeredUsername, loggedInUserId: this.state.differentLoggedInUserId, diff --git a/src/components/structures/auth/SetupEncryptionBody.tsx b/src/components/structures/auth/SetupEncryptionBody.tsx index 1de7cc7d83f9..74a61701cbc1 100644 --- a/src/components/structures/auth/SetupEncryptionBody.tsx +++ b/src/components/structures/auth/SetupEncryptionBody.tsx @@ -161,10 +161,7 @@ export default class SetupEncryptionBody extends React.Component

    {_t( - "It looks like you don't have a Security Key or any other devices you can " + - "verify against. This device will not be able to access old encrypted messages. " + - "In order to verify your identity on this device, you'll need to reset " + - "your verification keys.", + "It looks like you don't have a Security Key or any other devices you can verify against. This device will not be able to access old encrypted messages. In order to verify your identity on this device, you'll need to reset your verification keys.", )}

    @@ -234,8 +231,7 @@ export default class SetupEncryptionBody extends React.Component message = (

    {_t( - "Your new device is now verified. It has access to your " + - "encrypted messages, and other users will see it as trusted.", + "Your new device is now verified. It has access to your encrypted messages, and other users will see it as trusted.", )}

    ); @@ -248,7 +244,7 @@ export default class SetupEncryptionBody extends React.Component {message}
    - {_t("Done")} + {_t("action|done")}
    @@ -258,8 +254,7 @@ export default class SetupEncryptionBody extends React.Component

    {_t( - "Without verifying, you won't have access to all your messages " + - "and may appear as untrusted to others.", + "Without verifying, you won't have access to all your messages and may appear as untrusted to others.", )}

    @@ -277,16 +272,12 @@ export default class SetupEncryptionBody extends React.Component

    {_t( - "Resetting your verification keys cannot be undone. After resetting, " + - "you won't have access to old encrypted messages, and any friends who " + - "have previously verified you will see security warnings until you " + - "re-verify with them.", + "Resetting your verification keys cannot be undone. After resetting, you won't have access to old encrypted messages, and any friends who have previously verified you will see security warnings until you re-verify with them.", )}

    {_t( - "Please only proceed if you're sure you've lost all of your other " + - "devices and your Security Key.", + "Please only proceed if you're sure you've lost all of your other devices and your Security Key.", )}

    diff --git a/src/components/structures/auth/SoftLogout.tsx b/src/components/structures/auth/SoftLogout.tsx index cf4ff3642b26..27078fbca31f 100644 --- a/src/components/structures/auth/SoftLogout.tsx +++ b/src/components/structures/auth/SoftLogout.tsx @@ -234,7 +234,7 @@ export default class SoftLogout extends React.Component { {error} { let introText: string | null = null; // null is translated to something area specific in this function if (this.state.keyBackupNeeded) { introText = _t( - "Regain access to your account and recover encryption keys stored in this session. " + - "Without them, you won't be able to read all of your secure messages in any session.", + "Regain access to your account and recover encryption keys stored in this session. Without them, you won't be able to read all of your secure messages in any session.", ); } @@ -329,10 +328,7 @@ export default class SoftLogout extends React.Component { // Default: assume unsupported/error return (

    - {_t( - "You cannot sign in to your account. Please contact your " + - "homeserver admin for more information.", - )} + {_t("You cannot sign in to your account. Please contact your homeserver admin for more information.")}

    ); } @@ -350,9 +346,7 @@ export default class SoftLogout extends React.Component {

    {_t("Clear personal data")}

    {_t( - "Warning: your personal data (including encryption keys) is still stored " + - "in this session. Clear it if you're finished using this session, or want to sign " + - "in to another account.", + "Warning: your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.", )}

    diff --git a/src/components/structures/auth/forgot-password/CheckEmail.tsx b/src/components/structures/auth/forgot-password/CheckEmail.tsx index 7e4679a1dcf4..9bd7078c6375 100644 --- a/src/components/structures/auth/forgot-password/CheckEmail.tsx +++ b/src/components/structures/auth/forgot-password/CheckEmail.tsx @@ -66,7 +66,7 @@ export const CheckEmail: React.FC = ({
    {errorText && } - +
    {_t("Did not receive it?")} = ({

    {_t("Verify your email to continue")}

    {_t( - "We need to know it’s you before resetting your password. " + - "Click the link in the email we just sent to %(email)s", + "We need to know it’s you before resetting your password. Click the link in the email we just sent to %(email)s", { email, }, diff --git a/src/components/views/auth/CountryDropdown.tsx b/src/components/views/auth/CountryDropdown.tsx index a1b428de6807..9946e72dad4c 100644 --- a/src/components/views/auth/CountryDropdown.tsx +++ b/src/components/views/auth/CountryDropdown.tsx @@ -18,16 +18,15 @@ import React, { ReactElement } from "react"; import { COUNTRIES, getEmojiFlag, PhoneNumberCountryDefinition } from "../../../phonenumber"; import SdkConfig from "../../../SdkConfig"; -import { _t } from "../../../languageHandler"; +import { _t, getUserLanguage } from "../../../languageHandler"; import Dropdown from "../elements/Dropdown"; import { NonEmptyArray } from "../../../@types/common"; -const COUNTRIES_BY_ISO2: Record = {}; -for (const c of COUNTRIES) { - COUNTRIES_BY_ISO2[c.iso2] = c; +interface InternationalisedCountry extends PhoneNumberCountryDefinition { + name: string; // already translated to the user's locale } -function countryMatchesSearchQuery(query: string, country: PhoneNumberCountryDefinition): boolean { +function countryMatchesSearchQuery(query: string, country: InternationalisedCountry): boolean { // Remove '+' if present (when searching for a prefix) if (query[0] === "+") { query = query.slice(1); @@ -41,7 +40,7 @@ function countryMatchesSearchQuery(query: string, country: PhoneNumberCountryDef interface IProps { value?: string; - onOptionChange: (country: PhoneNumberCountryDefinition) => void; + onOptionChange: (country: InternationalisedCountry) => void; isSmall: boolean; // if isSmall, show +44 in the selected value showPrefix: boolean; className?: string; @@ -53,15 +52,25 @@ interface IState { } export default class CountryDropdown extends React.Component { - private readonly defaultCountry: PhoneNumberCountryDefinition; + private readonly defaultCountry: InternationalisedCountry; + private readonly countries: InternationalisedCountry[]; + private readonly countryMap: Map; public constructor(props: IProps) { super(props); - let defaultCountry: PhoneNumberCountryDefinition | undefined; + const displayNames = new Intl.DisplayNames([getUserLanguage()], { type: "region" }); + + this.countries = COUNTRIES.map((c) => ({ + name: displayNames.of(c.iso2) ?? c.iso2, + ...c, + })); + this.countryMap = new Map(this.countries.map((c) => [c.iso2, c])); + + let defaultCountry: InternationalisedCountry | undefined; const defaultCountryCode = SdkConfig.get("default_country_code"); if (defaultCountryCode) { - const country = COUNTRIES.find((c) => c.iso2 === defaultCountryCode.toUpperCase()); + const country = this.countries.find((c) => c.iso2 === defaultCountryCode.toUpperCase()); if (country) defaultCountry = country; } @@ -69,9 +78,8 @@ export default class CountryDropdown extends React.Component { try { const locale = new Intl.Locale(navigator.language ?? navigator.languages[0]); const code = locale.region ?? locale.language ?? locale.baseName; - const displayNames = new Intl.DisplayNames(["en"], { type: "region" }); - const displayName = displayNames.of(code)?.toUpperCase(); - defaultCountry = COUNTRIES.find( + const displayName = displayNames.of(code)!.toUpperCase(); + defaultCountry = this.countries.find( (c) => c.iso2 === code.toUpperCase() || c.name.toUpperCase() === displayName, ); } catch (e) { @@ -79,7 +87,7 @@ export default class CountryDropdown extends React.Component { } } - this.defaultCountry = defaultCountry ?? COUNTRIES[0]; + this.defaultCountry = defaultCountry ?? this.countries[0]; this.state = { searchQuery: "", }; @@ -101,7 +109,7 @@ export default class CountryDropdown extends React.Component { }; private onOptionChange = (iso2: string): void => { - this.props.onOptionChange(COUNTRIES_BY_ISO2[iso2]); + this.props.onOptionChange(this.countryMap.get(iso2)!); }; private flagImgForIso2(iso2: string): React.ReactNode { @@ -112,9 +120,9 @@ export default class CountryDropdown extends React.Component { if (!this.props.isSmall) { return undefined; } - let countryPrefix; + let countryPrefix: string | undefined; if (this.props.showPrefix) { - countryPrefix = "+" + COUNTRIES_BY_ISO2[iso2].prefix; + countryPrefix = "+" + this.countryMap.get(iso2)!.prefix; } return ( @@ -125,26 +133,28 @@ export default class CountryDropdown extends React.Component { }; public render(): React.ReactNode { - let displayedCountries; + let displayedCountries: InternationalisedCountry[]; if (this.state.searchQuery) { - displayedCountries = COUNTRIES.filter(countryMatchesSearchQuery.bind(this, this.state.searchQuery)); - if (this.state.searchQuery.length == 2 && COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()]) { + displayedCountries = this.countries.filter((country) => + countryMatchesSearchQuery(this.state.searchQuery, country), + ); + if (this.state.searchQuery.length == 2 && this.countryMap.has(this.state.searchQuery.toUpperCase())) { // exact ISO2 country name match: make the first result the matches ISO2 - const matched = COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()]; + const matched = this.countryMap.get(this.state.searchQuery.toUpperCase())!; displayedCountries = displayedCountries.filter((c) => { return c.iso2 != matched.iso2; }); displayedCountries.unshift(matched); } } else { - displayedCountries = COUNTRIES; + displayedCountries = this.countries; } const options = displayedCountries.map((country) => { return (

    {this.flagImgForIso2(country.iso2)} - {_t(country.name)} (+{country.prefix}) + {country.name} (+{country.prefix})
    ); }) as NonEmptyArray; diff --git a/src/components/views/auth/EmailField.tsx b/src/components/views/auth/EmailField.tsx index 849f38fea7b6..16fa73771ce8 100644 --- a/src/components/views/auth/EmailField.tsx +++ b/src/components/views/auth/EmailField.tsx @@ -17,7 +17,7 @@ limitations under the License. import React, { PureComponent, RefCallback, RefObject } from "react"; import Field, { IInputProps } from "../elements/Field"; -import { _t, _td } from "../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../languageHandler"; import withValidation, { IFieldState, IValidationResult } from "../elements/Validation"; import * as Email from "../../../email"; @@ -27,9 +27,9 @@ interface IProps extends Omit { value: string; autoFocus?: boolean; - label?: string; - labelRequired?: string; - labelInvalid?: string; + label: TranslationKey; + labelRequired: TranslationKey; + labelInvalid: TranslationKey; // When present, completely overrides the default validation rules. validationRules?: (fieldState: IFieldState) => Promise; @@ -50,12 +50,12 @@ class EmailField extends PureComponent { { key: "required", test: ({ value, allowEmpty }) => allowEmpty || !!value, - invalid: () => _t(this.props.labelRequired!), + invalid: () => _t(this.props.labelRequired), }, { key: "email", test: ({ value }) => !value || Email.looksValid(value), - invalid: () => _t(this.props.labelInvalid!), + invalid: () => _t(this.props.labelInvalid), }, ], }); @@ -80,7 +80,7 @@ class EmailField extends PureComponent { id={this.props.id} ref={this.props.fieldRef} type="text" - label={_t(this.props.label!)} + label={_t(this.props.label)} value={this.props.value} autoFocus={this.props.autoFocus} onChange={this.props.onChange} diff --git a/src/components/views/auth/InteractiveAuthEntryComponents.tsx b/src/components/views/auth/InteractiveAuthEntryComponents.tsx index a1d328437bf1..09c0cbd8f94f 100644 --- a/src/components/views/auth/InteractiveAuthEntryComponents.tsx +++ b/src/components/views/auth/InteractiveAuthEntryComponents.tsx @@ -153,7 +153,7 @@ export class PasswordAuthEntry extends React.Component ); } @@ -175,7 +175,7 @@ export class PasswordAuthEntry extends React.Component - {_t("Continue")} + {_t("action|continue")}
    ); } diff --git a/src/components/views/auth/LoginWithQRFlow.tsx b/src/components/views/auth/LoginWithQRFlow.tsx index 7c4ff1461539..19204f18231e 100644 --- a/src/components/views/auth/LoginWithQRFlow.tsx +++ b/src/components/views/auth/LoginWithQRFlow.tsx @@ -211,7 +211,7 @@ export default class LoginWithQRFlow extends React.Component { buttons = this.cancelButton(); break; case Phase.Verifying: - title = _t("Success"); + title = _t("common|success"); centreTitle = true; main = this.simpleSpinner(_t("Completing set up of your new device")); break; diff --git a/src/components/views/auth/PassphraseConfirmField.tsx b/src/components/views/auth/PassphraseConfirmField.tsx index b314c3f838a7..ebb273ff550e 100644 --- a/src/components/views/auth/PassphraseConfirmField.tsx +++ b/src/components/views/auth/PassphraseConfirmField.tsx @@ -18,7 +18,7 @@ import React, { PureComponent, RefCallback, RefObject } from "react"; import Field, { IInputProps } from "../elements/Field"; import withValidation, { IFieldState, IValidationResult } from "../elements/Validation"; -import { _t, _td } from "../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../languageHandler"; interface IProps extends Omit { id?: string; @@ -27,9 +27,9 @@ interface IProps extends Omit { value: string; password: string; // The password we're confirming - label: string; - labelRequired: string; - labelInvalid: string; + label: TranslationKey; + labelRequired: TranslationKey; + labelInvalid: TranslationKey; onChange(ev: React.FormEvent): void; onValidate?(result: IValidationResult): void; diff --git a/src/components/views/auth/PassphraseField.tsx b/src/components/views/auth/PassphraseField.tsx index a40ba0bb07db..4efd06e4e431 100644 --- a/src/components/views/auth/PassphraseField.tsx +++ b/src/components/views/auth/PassphraseField.tsx @@ -20,7 +20,7 @@ import zxcvbn from "zxcvbn"; import SdkConfig from "../../../SdkConfig"; import withValidation, { IFieldState, IValidationResult } from "../elements/Validation"; -import { _t, _td } from "../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../languageHandler"; import Field, { IInputProps } from "../elements/Field"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; @@ -34,10 +34,10 @@ interface IProps extends Omit { // Additional strings such as a username used to catch bad passwords userInputs?: string[]; - label: string; - labelEnterPassword: string; - labelStrongPassword: string; - labelAllowedButUnsafe: string; + label: TranslationKey; + labelEnterPassword: TranslationKey; + labelStrongPassword: TranslationKey; + labelAllowedButUnsafe: TranslationKey; onChange(ev: React.FormEvent): void; onValidate?(result: IValidationResult): void; @@ -45,7 +45,7 @@ interface IProps extends Omit { class PassphraseField extends PureComponent { public static defaultProps = { - label: _td("Password"), + label: _td("common|password"), labelEnterPassword: _td("Enter password"), labelStrongPassword: _td("Nice, strong password!"), labelAllowedButUnsafe: _td("Password is allowed, but unsafe"), diff --git a/src/components/views/auth/PasswordLogin.tsx b/src/components/views/auth/PasswordLogin.tsx index bbab2242f496..8666964fff5b 100644 --- a/src/components/views/auth/PasswordLogin.tsx +++ b/src/components/views/auth/PasswordLogin.tsx @@ -308,8 +308,8 @@ export default class PasswordLogin extends React.PureComponent { autoComplete="username" key="username_input" type="text" - label={_t("Username")} - placeholder={_t("Username").toLocaleLowerCase()} + label={_t("common|username")} + placeholder={_t("common|username").toLocaleLowerCase()} value={this.props.username} onChange={this.onUsernameChanged} onBlur={this.onUsernameBlur} @@ -404,7 +404,7 @@ export default class PasswordLogin extends React.PureComponent { disabled={this.props.busy} >
    {this.props.button !== false && ( diff --git a/src/components/views/dialogs/IntegrationsDisabledDialog.tsx b/src/components/views/dialogs/IntegrationsDisabledDialog.tsx index f8098f3d4194..184bf6a35680 100644 --- a/src/components/views/dialogs/IntegrationsDisabledDialog.tsx +++ b/src/components/views/dialogs/IntegrationsDisabledDialog.tsx @@ -52,9 +52,9 @@ export default class IntegrationsDisabledDialog extends React.Component

    diff --git a/src/components/views/dialogs/IntegrationsImpossibleDialog.tsx b/src/components/views/dialogs/IntegrationsImpossibleDialog.tsx index 5b158402e876..6eee4e73c8b1 100644 --- a/src/components/views/dialogs/IntegrationsImpossibleDialog.tsx +++ b/src/components/views/dialogs/IntegrationsImpossibleDialog.tsx @@ -43,14 +43,13 @@ export default class IntegrationsImpossibleDialog extends React.Component

    {_t( - "Your %(brand)s doesn't allow you to use an integration manager to do this. " + - "Please contact an admin.", + "Your %(brand)s doesn't allow you to use an integration manager to do this. Please contact an admin.", { brand }, )}

    diff --git a/src/components/views/dialogs/InteractiveAuthDialog.tsx b/src/components/views/dialogs/InteractiveAuthDialog.tsx index 16bc2023531f..fbb57148939e 100644 --- a/src/components/views/dialogs/InteractiveAuthDialog.tsx +++ b/src/components/views/dialogs/InteractiveAuthDialog.tsx @@ -116,7 +116,7 @@ export default class InteractiveAuthDialog extends React.Component = (success, result): void => { + private onAuthFinished: InteractiveAuthCallback = async (success, result): Promise => { if (success) { this.props.onFinished(true, result); } else { diff --git a/src/components/views/dialogs/InviteDialog.tsx b/src/components/views/dialogs/InviteDialog.tsx index f99c7eff4bd2..f3d49378c571 100644 --- a/src/components/views/dialogs/InviteDialog.tsx +++ b/src/components/views/dialogs/InviteDialog.tsx @@ -135,7 +135,7 @@ class DMUserTile extends React.PureComponent { {_t("Remove")} @@ -944,7 +944,7 @@ export default class InviteDialog extends React.PureComponent (kind === "recents" ? m.lastActive : undefined); - let sectionName = kind === "recents" ? _t("Recent Conversations") : _t("Suggestions"); + let sectionName = kind === "recents" ? _t("Recent Conversations") : _t("common|suggestions"); if (this.props.kind === InviteKind.Invite) { - sectionName = kind === "recents" ? _t("Recently Direct Messaged") : _t("Suggestions"); + sectionName = kind === "recents" ? _t("Recently Direct Messaged") : _t("common|suggestions"); } // Mix in the server results if we have any, but only if we're searching. We track the additional @@ -1038,7 +1038,7 @@ export default class InviteDialog extends React.PureComponent

    {sectionName}

    -

    {_t("No results")}

    +

    {_t("common|no_results")}

    ); } @@ -1133,9 +1133,7 @@ export default class InviteDialog extends React.PureComponent {_t( - "Use an identity server to invite by email. " + - "Use the default (%(defaultIdentityServerName)s) " + - "or manage in Settings.", + "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.", { defaultIdentityServerName: abbreviateUrl(defaultIdentityServerUrl), }, @@ -1158,7 +1156,7 @@ export default class InviteDialog extends React.PureComponent {_t( - "Use an identity server to invite by email. " + "Manage in Settings.", + "Use an identity server to invite by email. Manage in Settings.", {}, { settings: (sub) => ( @@ -1349,23 +1347,21 @@ export default class InviteDialog extends React.PureComponent) or share this space.", + "Invite someone using their name, email address, username (like ) or share this space.", ); } else { helpTextUntranslated = _td( - "Invite someone using their name, username " + "(like ) or share this space.", + "Invite someone using their name, username (like ) or share this space.", ); } } else { if (identityServersEnabled) { helpTextUntranslated = _td( - "Invite someone using their name, email address, username " + - "(like ) or share this room.", + "Invite someone using their name, email address, username (like ) or share this room.", ); } else { helpTextUntranslated = _td( - "Invite someone using their name, username " + "(like ) or share this room.", + "Invite someone using their name, username (like ) or share this room.", ); } } @@ -1392,7 +1388,7 @@ export default class InviteDialog extends React.PureComponent = ({ failures, source, co body = (
    {text} - +
    ); } diff --git a/src/components/views/dialogs/LazyLoadingDisabledDialog.tsx b/src/components/views/dialogs/LazyLoadingDisabledDialog.tsx index e1d5374fb3ed..cd69a6ce72f6 100644 --- a/src/components/views/dialogs/LazyLoadingDisabledDialog.tsx +++ b/src/components/views/dialogs/LazyLoadingDisabledDialog.tsx @@ -29,19 +29,14 @@ interface IProps { const LazyLoadingDisabledDialog: React.FC = (props) => { const brand = SdkConfig.get().brand; const description1 = _t( - "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. " + - "In this version lazy loading is disabled. " + - "As the local cache is not compatible between these two settings, " + - "%(brand)s needs to resync your account.", + "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.", { brand, host: props.host, }, ); const description2 = _t( - "If the other version of %(brand)s is still open in another tab, " + - "please close it as using %(brand)s on the same host with both " + - "lazy loading enabled and disabled simultaneously will cause issues.", + "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.", { brand, }, diff --git a/src/components/views/dialogs/LazyLoadingResyncDialog.tsx b/src/components/views/dialogs/LazyLoadingResyncDialog.tsx index c5bd2e0227c8..2caa4e6fce86 100644 --- a/src/components/views/dialogs/LazyLoadingResyncDialog.tsx +++ b/src/components/views/dialogs/LazyLoadingResyncDialog.tsx @@ -28,9 +28,7 @@ interface IProps { const LazyLoadingResyncDialog: React.FC = (props) => { const brand = SdkConfig.get().brand; const description = _t( - "%(brand)s now uses 3-5x less memory, by only loading information " + - "about other users when needed. Please wait whilst we resynchronise " + - "with the server!", + "%(brand)s now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!", { brand }, ); @@ -39,7 +37,7 @@ const LazyLoadingResyncDialog: React.FC = (props) => { hasCancelButton={false} title={_t("Updating %(brand)s", { brand })} description={
    {description}
    } - button={_t("OK")} + button={_t("action|ok")} onFinished={props.onFinished} /> ); diff --git a/src/components/views/dialogs/LeaveSpaceDialog.tsx b/src/components/views/dialogs/LeaveSpaceDialog.tsx index cc31183414b5..a8a9aca4d8e7 100644 --- a/src/components/views/dialogs/LeaveSpaceDialog.tsx +++ b/src/components/views/dialogs/LeaveSpaceDialog.tsx @@ -63,15 +63,12 @@ const LeaveSpaceDialog: React.FC = ({ space, onFinished }) => { let onlyAdminWarning; if (isOnlyAdmin(space)) { - onlyAdminWarning = _t( - "You're the only admin of this space. " + "Leaving it will mean no one has control over it.", - ); + onlyAdminWarning = _t("You're the only admin of this space. Leaving it will mean no one has control over it."); } else { const numChildrenOnlyAdminIn = roomsToLeave.filter(isOnlyAdmin).length; if (numChildrenOnlyAdminIn > 0) { onlyAdminWarning = _t( - "You're the only admin of some of the rooms or spaces you wish to leave. " + - "Leaving them will leave them without any admins.", + "You're the only admin of some of the rooms or spaces you wish to leave. Leaving them will leave them without any admins.", ); } } diff --git a/src/components/views/dialogs/LogoutDialog.tsx b/src/components/views/dialogs/LogoutDialog.tsx index 9830cf599221..add749621e21 100644 --- a/src/components/views/dialogs/LogoutDialog.tsx +++ b/src/components/views/dialogs/LogoutDialog.tsx @@ -138,16 +138,12 @@ export default class LogoutDialog extends React.Component {

    {_t( - "Encrypted messages are secured with end-to-end encryption. " + - "Only you and the recipient(s) have the keys to read these messages.", + "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.", )}

    {_t( - "When you sign out, these keys will be deleted from this device, " + - "which means you won't be able to read encrypted messages unless you " + - "have the keys for them on your other devices, or backed them up to the " + - "server.", + "When you sign out, these keys will be deleted from this device, which means you won't be able to read encrypted messages unless you have the keys for them on your other devices, or backed them up to the server.", )}

    {_t("Back up your keys before signing out to avoid losing them.")}

    diff --git a/src/components/views/dialogs/ManageRestrictedJoinRuleDialog.tsx b/src/components/views/dialogs/ManageRestrictedJoinRuleDialog.tsx index 654e3b5f741c..5ac98279a50e 100644 --- a/src/components/views/dialogs/ManageRestrictedJoinRuleDialog.tsx +++ b/src/components/views/dialogs/ManageRestrictedJoinRuleDialog.tsx @@ -152,8 +152,7 @@ const ManageRestrictedJoinRuleDialog: React.FC = ({ room, selected = [], >

    {_t( - "Decide which spaces can access this room. " + - "If a space is selected, its members can find and join .", + "Decide which spaces can access this room. If a space is selected, its members can find and join .", {}, { RoomName: () => {room.name}, @@ -230,7 +229,7 @@ const ManageRestrictedJoinRuleDialog: React.FC = ({ room, selected = [], ) : null} {totalResults < 1 ? ( - {_t("No results")} + {_t("common|no_results")} ) : undefined} diff --git a/src/components/views/dialogs/ModuleUiDialog.tsx b/src/components/views/dialogs/ModuleUiDialog.tsx index b43356666a7b..9308d8811bfd 100644 --- a/src/components/views/dialogs/ModuleUiDialog.tsx +++ b/src/components/views/dialogs/ModuleUiDialog.tsx @@ -46,7 +46,7 @@ export class ModuleUiDialog

    > e this.state = { title: this.props.initialOptions.title, - actionLabel: this.props.initialOptions.actionLabel ?? _t("OK"), + actionLabel: this.props.initialOptions.actionLabel ?? _t("action|ok"), cancelLabel: this.props.initialOptions.cancelLabel, canSubmit: this.props.initialOptions.canSubmit ?? true, }; diff --git a/src/components/views/dialogs/QuestionDialog.tsx b/src/components/views/dialogs/QuestionDialog.tsx index 866b54120679..e6965a75794c 100644 --- a/src/components/views/dialogs/QuestionDialog.tsx +++ b/src/components/views/dialogs/QuestionDialog.tsx @@ -77,7 +77,7 @@ export default class QuestionDialog extends React.Component = ({ onFinished }) => {

    {_t( - "Just a heads up, if you don't add an email and forget your password, you could " + - "permanently lose access to your account.", + "Just a heads up, if you don't add an email and forget your password, you could permanently lose access to your account.", {}, { b: (sub) => {sub}, @@ -80,7 +79,7 @@ const RegistrationEmailPromptDialog: React.FC = ({ onFinished }) => { />

    - + ); }; diff --git a/src/components/views/dialogs/ReportEventDialog.tsx b/src/components/views/dialogs/ReportEventDialog.tsx index 41a24f01bdbc..347c69c712ee 100644 --- a/src/components/views/dialogs/ReportEventDialog.tsx +++ b/src/components/views/dialogs/ReportEventDialog.tsx @@ -317,54 +317,39 @@ export default class ReportEventDialog extends React.Component { let subtitle: string; switch (this.state.nature) { case Nature.Disagreement: - subtitle = _t( - "What this user is writing is wrong.\n" + "This will be reported to the room moderators.", - ); + subtitle = _t("What this user is writing is wrong.\nThis will be reported to the room moderators."); break; case Nature.Toxic: subtitle = _t( - "This user is displaying toxic behaviour, " + - "for instance by insulting other users or sharing " + - "adult-only content in a family-friendly room " + - "or otherwise violating the rules of this room.\n" + - "This will be reported to the room moderators.", + "This user is displaying toxic behaviour, for instance by insulting other users or sharing adult-only content in a family-friendly room or otherwise violating the rules of this room.\nThis will be reported to the room moderators.", ); break; case Nature.Illegal: subtitle = _t( - "This user is displaying illegal behaviour, " + - "for instance by doxing people or threatening violence.\n" + - "This will be reported to the room moderators who may escalate this to legal authorities.", + "This user is displaying illegal behaviour, for instance by doxing people or threatening violence.\nThis will be reported to the room moderators who may escalate this to legal authorities.", ); break; case Nature.Spam: subtitle = _t( - "This user is spamming the room with ads, links to ads or to propaganda.\n" + - "This will be reported to the room moderators.", + "This user is spamming the room with ads, links to ads or to propaganda.\nThis will be reported to the room moderators.", ); break; case NonStandardValue.Admin: if (client.isRoomEncrypted(this.props.mxEvent.getRoomId()!)) { subtitle = _t( - "This room is dedicated to illegal or toxic content " + - "or the moderators fail to moderate illegal or toxic content.\n" + - "This will be reported to the administrators of %(homeserver)s. " + - "The administrators will NOT be able to read the encrypted content of this room.", + "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s. The administrators will NOT be able to read the encrypted content of this room.", { homeserver: homeServerName }, ); } else { subtitle = _t( - "This room is dedicated to illegal or toxic content " + - "or the moderators fail to moderate illegal or toxic content.\n" + - "This will be reported to the administrators of %(homeserver)s.", + "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s.", { homeserver: homeServerName }, ); } break; case Nature.Other: subtitle = _t( - "Any other reason. Please describe the problem.\n" + - "This will be reported to the room moderators.", + "Any other reason. Please describe the problem.\nThis will be reported to the room moderators.", ); break; default: @@ -376,7 +361,7 @@ export default class ReportEventDialog extends React.Component {
    @@ -464,10 +449,7 @@ export default class ReportEventDialog extends React.Component {

    {_t( - "Reporting this message will send its unique 'event ID' to the administrator of " + - "your homeserver. If messages in this room are encrypted, your homeserver " + - "administrator will not be able to read the message text or view any files " + - "or images.", + "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.", )}

    {adminMessage} diff --git a/src/components/views/dialogs/RoomSettingsDialog.tsx b/src/components/views/dialogs/RoomSettingsDialog.tsx index 9b462291d414..d251c5c745df 100644 --- a/src/components/views/dialogs/RoomSettingsDialog.tsx +++ b/src/components/views/dialogs/RoomSettingsDialog.tsx @@ -144,7 +144,7 @@ class RoomSettingsDialog extends React.Component { tabs.push( new Tab( RoomSettingsTab.People, - _td("People"), + _td("common|people"), "mx_RoomSettingsDialog_peopleIcon", , ), diff --git a/src/components/views/dialogs/RoomUpgradeDialog.tsx b/src/components/views/dialogs/RoomUpgradeDialog.tsx index ce4993c99cfe..fd0ff854b8ef 100644 --- a/src/components/views/dialogs/RoomUpgradeDialog.tsx +++ b/src/components/views/dialogs/RoomUpgradeDialog.tsx @@ -94,9 +94,7 @@ export default class RoomUpgradeDialog extends React.Component { >

    {_t( - "Upgrading this room requires closing down the current " + - "instance of the room and creating a new room in its place. " + - "To give room members the best possible experience, we will:", + "Upgrading this room requires closing down the current instance of the room and creating a new room in its place. To give room members the best possible experience, we will:", )}

      @@ -104,14 +102,12 @@ export default class RoomUpgradeDialog extends React.Component {
    1. {_t("Update any local room aliases to point to the new room")}
    2. {_t( - "Stop users from speaking in the old version of the room, " + - "and post a message advising users to move to the new room", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room", )}
    3. {_t( - "Put a link back to the old room at the start of the new room " + - "so people can see old messages", + "Put a link back to the old room at the start of the new room so people can see old messages", )}
    diff --git a/src/components/views/dialogs/RoomUpgradeWarningDialog.tsx b/src/components/views/dialogs/RoomUpgradeWarningDialog.tsx index 1bbaa8f39d6d..cc074f47d2ae 100644 --- a/src/components/views/dialogs/RoomUpgradeWarningDialog.tsx +++ b/src/components/views/dialogs/RoomUpgradeWarningDialog.tsx @@ -135,8 +135,7 @@ export default class RoomUpgradeWarningDialog extends React.Component {_t( - "This usually only affects how the room is processed on the server. If you're " + - "having problems with your %(brand)s, please report a bug.", + "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.", { brand }, )}

    @@ -145,8 +144,7 @@ export default class RoomUpgradeWarningDialog extends React.Component {_t( - "This usually only affects how the room is processed on the server. If you're " + - "having problems with your %(brand)s, please report a bug.", + "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.", { brand, }, @@ -195,14 +193,12 @@ export default class RoomUpgradeWarningDialog extends React.Component {this.props.description || _t( - "Upgrading a room is an advanced action and is usually recommended when a room " + - "is unstable due to bugs, missing features or security vulnerabilities.", + "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.", )}

    {_t( - "Please note upgrading will make a new version of the room. " + - "All current messages will stay in this archived room.", + "Please note upgrading will make a new version of the room. All current messages will stay in this archived room.", {}, { b: (sub) => {sub}, diff --git a/src/components/views/dialogs/ServerOfflineDialog.tsx b/src/components/views/dialogs/ServerOfflineDialog.tsx index 30257a701eaa..5de0e79eb910 100644 --- a/src/components/views/dialogs/ServerOfflineDialog.tsx +++ b/src/components/views/dialogs/ServerOfflineDialog.tsx @@ -107,8 +107,7 @@ export default class ServerOfflineDialog extends React.PureComponent {

    {_t( - "Your server isn't responding to some of your requests. " + - "Below are some of the most likely reasons.", + "Your server isn't responding to some of your requests. Below are some of the most likely reasons.", )}

      diff --git a/src/components/views/dialogs/ServerPickerDialog.tsx b/src/components/views/dialogs/ServerPickerDialog.tsx index c6148896a40d..2a97572dbb92 100644 --- a/src/components/views/dialogs/ServerPickerDialog.tsx +++ b/src/components/views/dialogs/ServerPickerDialog.tsx @@ -239,10 +239,10 @@ export default class ServerPickerDialog extends React.PureComponent{_t("Use your preferred Matrix homeserver if you have one, or host your own.")}

      - {_t("Continue")} + {_t("action|continue")} -

      {_t("Learn more")}

      +

      {_t("action|learn_more")}

      { {_t("You most likely do not want to reset your event index store")}
      {_t( - "If you do, please note that none of your messages will be deleted, " + - "but the search experience might be degraded for a few moments " + - "whilst the index is recreated", + "If you do, please note that none of your messages will be deleted, but the search experience might be degraded for a few moments whilst the index is recreated", )}

    diff --git a/src/components/views/dialogs/SessionRestoreErrorDialog.tsx b/src/components/views/dialogs/SessionRestoreErrorDialog.tsx index 0a82a0b8c7e3..950e1bb6eebc 100644 --- a/src/components/views/dialogs/SessionRestoreErrorDialog.tsx +++ b/src/components/views/dialogs/SessionRestoreErrorDialog.tsx @@ -101,17 +101,14 @@ export default class SessionRestoreErrorDialog extends React.Component {

    {_t( - "If you have previously used a more recent version of %(brand)s, your session " + - "may be incompatible with this version. Close this window and return " + - "to the more recent version.", + "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.", { brand }, )}

    {_t( - "Clearing your browser's storage may fix the problem, but will sign you " + - "out and cause any encrypted chat history to become unreadable.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.", )}

    diff --git a/src/components/views/dialogs/SetEmailDialog.tsx b/src/components/views/dialogs/SetEmailDialog.tsx index 8b3b529a4938..43ba5b9e8c2a 100644 --- a/src/components/views/dialogs/SetEmailDialog.tsx +++ b/src/components/views/dialogs/SetEmailDialog.tsx @@ -78,10 +78,9 @@ export default class SetEmailDialog extends React.Component { Modal.createDialog(QuestionDialog, { title: _t("Verification Pending"), description: _t( - "Please check your email and click on the link it contains. Once this " + - "is done, click continue.", + "Please check your email and click on the link it contains. Once this is done, click continue.", ), - button: _t("Continue"), + button: _t("action|continue"), onFinished: this.onEmailDialogFinished, }); }, @@ -132,7 +131,7 @@ export default class SetEmailDialog extends React.Component { Modal.createDialog(QuestionDialog, { title: _t("Verification Pending"), description: message, - button: _t("Continue"), + button: _t("action|continue"), onFinished: this.onEmailDialogFinished, }); } else { @@ -174,7 +173,12 @@ export default class SetEmailDialog extends React.Component { {emailInput}
    - +
    diff --git a/src/components/views/dialogs/SlidingSyncOptionsDialog.tsx b/src/components/views/dialogs/SlidingSyncOptionsDialog.tsx index 45ace9fa7dbe..9170ccb7190f 100644 --- a/src/components/views/dialogs/SlidingSyncOptionsDialog.tsx +++ b/src/components/views/dialogs/SlidingSyncOptionsDialog.tsx @@ -122,7 +122,7 @@ export const SlidingSyncOptionsDialog: React.FC<{ onFinished(enabled: boolean): } placeholder={hasNativeSupport ? _t("Proxy URL (optional)") : _t("Proxy URL")} value={currentProxy} - button={_t("Enable")} + button={_t("action|enable")} validator={validProxy} onFinished={(enable, proxyUrl) => { if (enable) { diff --git a/src/components/views/dialogs/SpacePreferencesDialog.tsx b/src/components/views/dialogs/SpacePreferencesDialog.tsx index 45f60d1449c5..b36c6e39f8d8 100644 --- a/src/components/views/dialogs/SpacePreferencesDialog.tsx +++ b/src/components/views/dialogs/SpacePreferencesDialog.tsx @@ -55,12 +55,11 @@ const SpacePreferencesAppearanceTab: React.FC> = ({ space ); }} > - {_t("People")} + {_t("common|people")} {_t( - "This groups your chats with members of this space. " + - "Turning this off will hide those chats from your view of %(spaceName)s.", + "This groups your chats with members of this space. Turning this off will hide those chats from your view of %(spaceName)s.", { spaceName: space.name, }, diff --git a/src/components/views/dialogs/StorageEvictedDialog.tsx b/src/components/views/dialogs/StorageEvictedDialog.tsx index 9c81b0192c3a..9e749203a3bd 100644 --- a/src/components/views/dialogs/StorageEvictedDialog.tsx +++ b/src/components/views/dialogs/StorageEvictedDialog.tsx @@ -65,9 +65,7 @@ export default class StorageEvictedDialog extends React.Component {

    {_t( - "Some session data, including encrypted message keys, is " + - "missing. Sign out and sign in to fix this, restoring keys " + - "from backup.", + "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.", )}

    diff --git a/src/components/views/dialogs/TermsDialog.tsx b/src/components/views/dialogs/TermsDialog.tsx index 7fcb6a16b64c..1ef4c667f23c 100644 --- a/src/components/views/dialogs/TermsDialog.tsx +++ b/src/components/views/dialogs/TermsDialog.tsx @@ -213,7 +213,7 @@ export default class TermsDialog extends React.PureComponent Promise; // result of withValidation @@ -50,7 +50,7 @@ export default class TextInputDialog extends React.Component { title: "", value: "", description: "", - busyMessage: _td("Loading…"), + busyMessage: _td("common|loading"), focus: true, hasCancel: true, }; diff --git a/src/components/views/dialogs/UntrustedDeviceDialog.tsx b/src/components/views/dialogs/UntrustedDeviceDialog.tsx index 8712c5888c42..8ad0cb10c36f 100644 --- a/src/components/views/dialogs/UntrustedDeviceDialog.tsx +++ b/src/components/views/dialogs/UntrustedDeviceDialog.tsx @@ -71,7 +71,7 @@ const UntrustedDeviceDialog: React.FC = ({ device, user, onFinished }) = {_t("Interactively verify by emoji")} onFinished(false)}> - {_t("Done")} + {_t("action|done")}

    diff --git a/src/components/views/dialogs/UploadFailureDialog.tsx b/src/components/views/dialogs/UploadFailureDialog.tsx index 3e4860665d71..6d478605c744 100644 --- a/src/components/views/dialogs/UploadFailureDialog.tsx +++ b/src/components/views/dialogs/UploadFailureDialog.tsx @@ -49,8 +49,7 @@ export default class UploadFailureDialog extends React.Component { let buttons; if (this.props.totalFiles === 1 && this.props.badFiles.length === 1) { message = _t( - "This file is too large to upload. " + - "The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.", + "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.", { limit: fileSize(this.props.contentMessages.getUploadLimit()), sizeOfThisFile: fileSize(this.props.badFiles[0].size), @@ -61,7 +60,7 @@ export default class UploadFailureDialog extends React.Component { ); buttons = ( { ); } else if (this.props.totalFiles === this.props.badFiles.length) { message = _t( - "These files are too large to upload. " + "The file size limit is %(limit)s.", + "These files are too large to upload. The file size limit is %(limit)s.", { limit: fileSize(this.props.contentMessages.getUploadLimit()), }, @@ -79,7 +78,7 @@ export default class UploadFailureDialog extends React.Component { ); buttons = ( { ); } else { message = _t( - "Some files are too large to be uploaded. " + "The file size limit is %(limit)s.", + "Some files are too large to be uploaded. The file size limit is %(limit)s.", { limit: fileSize(this.props.contentMessages.getUploadLimit()), }, diff --git a/src/components/views/dialogs/UserSettingsDialog.tsx b/src/components/views/dialogs/UserSettingsDialog.tsx index c185da1f2df8..00c38cf34098 100644 --- a/src/components/views/dialogs/UserSettingsDialog.tsx +++ b/src/components/views/dialogs/UserSettingsDialog.tsx @@ -205,7 +205,7 @@ export default class UserSettingsDialog extends React.Component className="mx_UserSettingsDialog" hasCancel={true} onFinished={this.props.onFinished} - title={_t("Settings")} + title={_t("common|settings")} >
    { interface IFieldDef { id: string; - label: string; // _td + label: TranslationKey; default?: string; } @@ -161,7 +161,7 @@ export const EventViewer: React.FC = ({ mxEvent, onBack, Editor, e }; return ( - + {stringify(mxEvent.event)} ); diff --git a/src/components/views/dialogs/devtools/VerificationExplorer.tsx b/src/components/views/dialogs/devtools/VerificationExplorer.tsx index aaaf02dea4d1..171bfd017698 100644 --- a/src/components/views/dialogs/devtools/VerificationExplorer.tsx +++ b/src/components/views/dialogs/devtools/VerificationExplorer.tsx @@ -21,16 +21,16 @@ import { VerificationPhase as Phase, VerificationRequestEvent } from "matrix-js- import { CryptoEvent } from "matrix-js-sdk/src/crypto"; import { useTypedEventEmitter, useTypedEventEmitterState } from "../../../../hooks/useEventEmitter"; -import { _t, _td } from "../../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../../languageHandler"; import MatrixClientContext from "../../../../contexts/MatrixClientContext"; import BaseTool, { DevtoolsContext, IDevtoolsProps } from "./BaseTool"; import { Tool } from "../DevtoolsDialog"; -const PHASE_MAP: Record = { +const PHASE_MAP: Record = { [Phase.Unsent]: _td("Unsent"), [Phase.Requested]: _td("Requested"), [Phase.Ready]: _td("Ready"), - [Phase.Done]: _td("Done"), + [Phase.Done]: _td("action|done"), [Phase.Started]: _td("Started"), [Phase.Cancelled]: _td("Cancelled"), }; diff --git a/src/components/views/dialogs/oidc/OidcLogoutDialog.tsx b/src/components/views/dialogs/oidc/OidcLogoutDialog.tsx new file mode 100644 index 000000000000..910e7f128d90 --- /dev/null +++ b/src/components/views/dialogs/oidc/OidcLogoutDialog.tsx @@ -0,0 +1,74 @@ +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React, { useState } from "react"; + +import { _t } from "../../../../languageHandler"; +import BaseDialog from "../BaseDialog"; +import { getOidcLogoutUrl } from "../../../../utils/oidc/getOidcLogoutUrl"; +import AccessibleButton from "../../elements/AccessibleButton"; + +export interface OidcLogoutDialogProps { + delegatedAuthAccountUrl: string; + deviceId: string; + onFinished(ok?: boolean): void; +} + +/** + * Handle logout of OIDC sessions other than the current session + * - ask for user confirmation to open the delegated auth provider + * - open the auth provider in a new tab + * - wait for the user to return and close the modal, we assume the user has completed sign out of the session in auth provider UI + * and trigger a refresh of the session list + */ +export const OidcLogoutDialog: React.FC = ({ + delegatedAuthAccountUrl, + deviceId, + onFinished, +}) => { + const [hasOpenedLogoutLink, setHasOpenedLogoutLink] = useState(false); + const logoutUrl = getOidcLogoutUrl(delegatedAuthAccountUrl, deviceId); + + return ( + +
    + {_t("You will be redirected to your server's authentication provider to complete sign out.")} +
    +
    + {hasOpenedLogoutLink ? ( + onFinished(true)}> + {_t("Close")} + + ) : ( + <> + onFinished(false)}> + {_t("Cancel")} + + setHasOpenedLogoutLink(true)} + kind="primary" + href={logoutUrl} + target="_blank" + > + {_t("action|continue")} + + + )} +
    +
    + ); +}; diff --git a/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx b/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx index d8fcd2a52bee..8f651624a653 100644 --- a/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx +++ b/src/components/views/dialogs/security/AccessSecretStorageDialog.tsx @@ -305,8 +305,7 @@ export default class AccessSecretStorageDialog extends React.PureComponent{_t("Only do this if you have no other device to complete verification with.")}

    {_t( - "If you reset everything, you will restart with no trusted sessions, no trusted users, and " + - "might not be able to see past messages.", + "If you reset everything, you will restart with no trusted sessions, no trusted users, and might not be able to see past messages.", )}

    {"\uD83D\uDC4E "} {_t( - "Unable to access secret storage. " + - "Please verify that you entered the correct Security Phrase.", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.", )}
    ); @@ -368,7 +366,7 @@ export default class AccessSecretStorageDialog extends React.PureComponent {keyStatus} {recoveryKeyFeedback}

    {_t( - "Deleting cross-signing keys is permanent. " + - "Anyone you have verified with will see security alerts. " + - "You almost certainly don't want to do this, unless " + - "you've lost every device you can cross-sign from.", + "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.", )}

    diff --git a/src/components/views/dialogs/security/CreateCrossSigningDialog.tsx b/src/components/views/dialogs/security/CreateCrossSigningDialog.tsx index fdc5c86ea37d..0a55fc6de4e5 100644 --- a/src/components/views/dialogs/security/CreateCrossSigningDialog.tsx +++ b/src/components/views/dialogs/security/CreateCrossSigningDialog.tsx @@ -176,7 +176,7 @@ export default class CreateCrossSigningDialog extends React.PureComponent{_t("Unable to set up keys")}

    diff --git a/src/components/views/dialogs/security/RestoreKeyBackupDialog.tsx b/src/components/views/dialogs/security/RestoreKeyBackupDialog.tsx index fdf558e8ea8e..34399a25bbfd 100644 --- a/src/components/views/dialogs/security/RestoreKeyBackupDialog.tsx +++ b/src/components/views/dialogs/security/RestoreKeyBackupDialog.tsx @@ -338,7 +338,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent ); } else if (this.state.loadError) { - title = _t("Error"); + title = _t("common|error"); content = _t("Unable to load backup status"); } else if (this.state.restoreError) { if ( @@ -351,8 +351,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent

    {_t( - "Backup could not be decrypted with this Security Key: " + - "please verify that you entered the correct Security Key.", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.", )}

    @@ -363,19 +362,18 @@ export default class RestoreKeyBackupDialog extends React.PureComponent

    {_t( - "Backup could not be decrypted with this Security Phrase: " + - "please verify that you entered the correct Security Phrase.", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.", )}

    ); } } else { - title = _t("Error"); + title = _t("common|error"); content = _t("Unable to restore backup"); } } else if (this.state.backupInfo === null) { - title = _t("Error"); + title = _t("common|error"); content = _t("No backup found!"); } else if (this.state.recoverInfo) { title = _t("Keys restored"); @@ -398,7 +396,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent {failedToDecrypt}

    {_t( - "Access your secure message history and set up secure " + - "messaging by entering your Security Phrase.", + "Access your secure message history and set up secure messaging by entering your Security Phrase.", )}

    @@ -432,7 +429,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent {_t( - "If you've forgotten your Security Phrase you can " + - "use your Security Key or " + - "set up new recovery options", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options", {}, { button1: (s) => ( @@ -493,8 +488,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent

    {_t( - "Access your secure message history and set up secure " + - "messaging by entering your Security Key.", + "Access your secure message history and set up secure messaging by entering your Security Key.", )}

    @@ -507,7 +501,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent {keyStatus}
    {_t( - "If you've forgotten your Security Key you can " + - "", + "If you've forgotten your Security Key you can ", {}, { button: (s) => ( diff --git a/src/components/views/dialogs/spotlight/SpotlightDialog.tsx b/src/components/views/dialogs/spotlight/SpotlightDialog.tsx index 7cd6ee981214..b56cc0dd43a5 100644 --- a/src/components/views/dialogs/spotlight/SpotlightDialog.tsx +++ b/src/components/views/dialogs/spotlight/SpotlightDialog.tsx @@ -120,7 +120,7 @@ enum Section { function filterToLabel(filter: Filter): string { switch (filter) { case Filter.People: - return _t("People"); + return _t("common|people"); case Filter.PublicRooms: return _t("Public rooms"); case Filter.PublicSpaces: @@ -751,7 +751,7 @@ const SpotlightDialog: React.FC = ({ initialText = "", initialFilter = n role="group" aria-labelledby="mx_SpotlightDialog_section_suggestions" > -

    {_t("Suggestions")}

    +

    {_t("common|suggestions")}

    {results[Section.Suggestions].slice(0, SECTION_LIMIT).map(resultMapper)}
    ); @@ -807,7 +807,7 @@ const SpotlightDialog: React.FC = ({ initialText = "", initialFilter = n aria-labelledby="mx_SpotlightDialog_section_publicRooms" >
    -

    {_t("Suggestions")}

    +

    {_t("common|suggestions")}

    @@ -910,7 +910,7 @@ const SpotlightDialog: React.FC = ({ initialText = "", initialFilter = n copyPlaintext(ownInviteLink); }} onHideTooltip={() => setInviteLinkCopied(false)} - title={inviteLinkCopied ? _t("Copied!") : _t("Copy")} + title={inviteLinkCopied ? _t("Copied!") : _t("action|copy")} > {_t("Copy invite link")} @@ -923,10 +923,7 @@ const SpotlightDialog: React.FC = ({ initialText = "", initialFilter = n

    {_t("Some results may be hidden")}

    - {_t( - "If you can't find the room you're looking for, " + - "ask for an invite or create a new room.", - )} + {_t("If you can't find the room you're looking for, ask for an invite or create a new room.")}
    - {_t("Continue")} + {_t("action|continue")}
    diff --git a/src/components/views/elements/AppTile.tsx b/src/components/views/elements/AppTile.tsx index 7badebd70515..78030dc785ca 100644 --- a/src/components/views/elements/AppTile.tsx +++ b/src/components/views/elements/AppTile.tsx @@ -620,7 +620,7 @@ export default class AppTile extends React.Component { const loadingElement = (
    - +
    ); diff --git a/src/components/views/elements/CopyableText.tsx b/src/components/views/elements/CopyableText.tsx index 36da6cb4a210..31b0b3fb318e 100644 --- a/src/components/views/elements/CopyableText.tsx +++ b/src/components/views/elements/CopyableText.tsx @@ -54,7 +54,7 @@ const CopyableText: React.FC = ({ children, getTextToCopy, border = true
    {children} { + private getTab(type: TabId, label: TranslationKey): Tab { const sources = this.state.sources .filter((source) => source.id.startsWith(type)) .map((source) => { @@ -154,8 +154,8 @@ export default class DesktopCapturerSourcePicker extends React.Component> = [ - this.getTab("screen", _t("Share entire screen")), - this.getTab("window", _t("Application window")), + this.getTab("screen", _td("Share entire screen")), + this.getTab("window", _td("Application window")), ]; return ( diff --git a/src/components/views/elements/Dropdown.tsx b/src/components/views/elements/Dropdown.tsx index 305cee51967f..0a5786a1cb26 100644 --- a/src/components/views/elements/Dropdown.tsx +++ b/src/components/views/elements/Dropdown.tsx @@ -320,7 +320,7 @@ export default class Dropdown extends React.Component { if (!options?.length) { return [
  • - {_t("No results")} + {_t("common|no_results")}
  • , ]; } diff --git a/src/components/views/elements/EditableItemList.tsx b/src/components/views/elements/EditableItemList.tsx index 87576afcf89f..5539d47da6ea 100644 --- a/src/components/views/elements/EditableItemList.tsx +++ b/src/components/views/elements/EditableItemList.tsx @@ -67,14 +67,14 @@ export class EditableItem extends React.Component { kind="primary_sm" className="mx_EditableItem_confirmBtn" > - {_t("Yes")} + {_t("action|yes")} - {_t("No")} + {_t("action|no")}
    ); @@ -82,7 +82,12 @@ export class EditableItem extends React.Component { return (
    -
    +
    {this.props.value}
    ); diff --git a/src/components/views/elements/ErrorBoundary.tsx b/src/components/views/elements/ErrorBoundary.tsx index dca7d4562f67..4ecb8a17ee1c 100644 --- a/src/components/views/elements/ErrorBoundary.tsx +++ b/src/components/views/elements/ErrorBoundary.tsx @@ -85,8 +85,7 @@ export default class ErrorBoundary extends React.PureComponent {

    {_t( - "Please create a new issue " + - "on GitHub so that we can investigate this bug.", + "Please create a new issue on GitHub so that we can investigate this bug.", {}, { newIssueLink: (sub) => { @@ -101,15 +100,10 @@ export default class ErrorBoundary extends React.PureComponent {

    {_t( - "If you've submitted a bug via GitHub, debug logs can help " + - "us track down the problem. ", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. ", )} {_t( - "Debug logs contain application " + - "usage data including your username, the IDs or aliases of " + - "the rooms you have visited, which UI elements you " + - "last interacted with, and the usernames of other users. " + - "They do not contain messages.", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.", )}

    diff --git a/src/components/views/elements/ImageView.tsx b/src/components/views/elements/ImageView.tsx index ac950f1392b7..b321af996fd8 100644 --- a/src/components/views/elements/ImageView.tsx +++ b/src/components/views/elements/ImageView.tsx @@ -531,7 +531,7 @@ export default class ImageView extends React.Component { if (this.props.mxEvent?.getContent()) { title = (
    - {presentableTextForFile(this.props.mxEvent?.getContent(), _t("Image"), true)} + {presentableTextForFile(this.props.mxEvent?.getContent(), _t("common|image"), true)}
    ); } diff --git a/src/components/views/elements/InlineSpinner.tsx b/src/components/views/elements/InlineSpinner.tsx index 144463c3245c..866fc4b1d860 100644 --- a/src/components/views/elements/InlineSpinner.tsx +++ b/src/components/views/elements/InlineSpinner.tsx @@ -36,7 +36,7 @@ export default class InlineSpinner extends React.PureComponent {
    {this.props.children}
    diff --git a/src/components/views/elements/LanguageDropdown.tsx b/src/components/views/elements/LanguageDropdown.tsx index 5de1ffe78531..ff27b1128349 100644 --- a/src/components/views/elements/LanguageDropdown.tsx +++ b/src/components/views/elements/LanguageDropdown.tsx @@ -16,6 +16,7 @@ limitations under the License. */ import React, { ReactElement } from "react"; +import classNames from "classnames"; import * as languageHandler from "../../../languageHandler"; import SettingsStore from "../../../settings/SettingsStore"; @@ -24,9 +25,10 @@ import Spinner from "./Spinner"; import Dropdown from "./Dropdown"; import { NonEmptyArray } from "../../../@types/common"; -type Languages = Awaited>; +type Languages = Awaited>; function languageMatchesSearchQuery(query: string, language: Languages[0]): boolean { + if (language.labelInTargetLanguage.toUpperCase().includes(query.toUpperCase())) return true; if (language.label.toUpperCase().includes(query.toUpperCase())) return true; if (language.value.toUpperCase() === query.toUpperCase()) return true; return false; @@ -56,23 +58,30 @@ export default class LanguageDropdown extends React.Component { public componentDidMount(): void { languageHandler - .getAllLanguagesFromJson() + .getAllLanguagesWithLabels() .then((langs) => { langs.sort(function (a, b) { - if (a.label < b.label) return -1; - if (a.label > b.label) return 1; + if (a.labelInTargetLanguage < b.labelInTargetLanguage) return -1; + if (a.labelInTargetLanguage > b.labelInTargetLanguage) return 1; return 0; }); this.setState({ langs }); }) .catch(() => { - this.setState({ langs: [{ value: "en", label: "English" }] }); + this.setState({ + langs: [ + { + value: "en", + label: "English", + labelInTargetLanguage: "English", + }, + ], + }); }); if (!this.props.value) { - // If no value is given, we start with the first - // country selected, but our parent component - // doesn't know this, therefore we do this. + // If no value is given, we start with the first country selected, + // but our parent component doesn't know this, therefore we do this. const language = languageHandler.getUserLanguage(); this.props.onOptionChange(language); } @@ -89,7 +98,7 @@ export default class LanguageDropdown extends React.Component { return ; } - let displayedLanguages: Awaited>; + let displayedLanguages: Awaited>; if (this.state.searchQuery) { displayedLanguages = this.state.langs.filter((lang) => { return languageMatchesSearchQuery(this.state.searchQuery, lang); @@ -99,7 +108,7 @@ export default class LanguageDropdown extends React.Component { } const options = displayedLanguages.map((language) => { - return
    {language.label}
    ; + return
    {language.labelInTargetLanguage}
    ; }) as NonEmptyArray; // default value here too, otherwise we need to handle null / undefined @@ -116,7 +125,7 @@ export default class LanguageDropdown extends React.Component { return ( = ({ title, description, ...rest }) => return ( - {_t("Learn more")} + {_t("action|learn_more")} ); }; diff --git a/src/components/views/elements/Pill.tsx b/src/components/views/elements/Pill.tsx index 7e96a21b6f03..d5af4bcdd072 100644 --- a/src/components/views/elements/Pill.tsx +++ b/src/components/views/elements/Pill.tsx @@ -139,7 +139,7 @@ export const Pill: React.FC = ({ type: propType, url, inMessage, room }); } else { avatar = linkIcon; - pillText = _t("Message"); + pillText = _t("common|message"); } } break; diff --git a/src/components/views/elements/PollCreateDialog.tsx b/src/components/views/elements/PollCreateDialog.tsx index 725f6f8ef38a..1de444d42a06 100644 --- a/src/components/views/elements/PollCreateDialog.tsx +++ b/src/components/views/elements/PollCreateDialog.tsx @@ -79,7 +79,7 @@ function editingInitialState(editingMxEvent: MatrixEvent): IState { return { title: _t("Edit poll"), - actionLabel: _t("Done"), + actionLabel: _t("action|done"), canSubmit: true, question: poll.question.text, options: poll.answers.map((ans) => ans.text), diff --git a/src/components/views/elements/ReplyChain.tsx b/src/components/views/elements/ReplyChain.tsx index 2ef8d3bd1744..1ea25b67ccaf 100644 --- a/src/components/views/elements/ReplyChain.tsx +++ b/src/components/views/elements/ReplyChain.tsx @@ -205,8 +205,7 @@ export default class ReplyChain extends React.Component { header = (
    {_t( - "Unable to load event that was replied to, " + - "it either does not exist or you do not have permission to view it.", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.", )}
    ); diff --git a/src/components/views/elements/SSOButtons.tsx b/src/components/views/elements/SSOButtons.tsx index 2c881d2ae3ca..c3778532a53d 100644 --- a/src/components/views/elements/SSOButtons.tsx +++ b/src/components/views/elements/SSOButtons.tsx @@ -88,7 +88,7 @@ const SSOButton: React.FC = ({ if (idp) { label = _t("Continue with %(provider)s", { provider: idp.name }); } else if (DELEGATED_OIDC_COMPATIBILITY.findIn(flow)) { - label = _t("Continue"); + label = _t("action|continue"); } else { label = _t("Sign in with single sign-on"); } diff --git a/src/components/views/elements/ServerPicker.tsx b/src/components/views/elements/ServerPicker.tsx index 0269774b8183..d5bc7d39c1d3 100644 --- a/src/components/views/elements/ServerPicker.tsx +++ b/src/components/views/elements/ServerPicker.tsx @@ -47,9 +47,7 @@ const onHelpClick = (): void => { { title: _t("Server Options"), description: _t( - "You can use the custom server options to sign into other Matrix servers by specifying " + - "a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on " + - "a different homeserver.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.", { brand }, ), button: _t("action|dismiss"), @@ -74,7 +72,7 @@ const ServerPicker: React.FC = ({ title, dialogTitle, serverConfig, onSe }; editBtn = ( - {_t("Edit")} + {_t("action|edit")} ); } diff --git a/src/components/views/elements/SettingsFlag.tsx b/src/components/views/elements/SettingsFlag.tsx index 70e9fda1b59b..b565727cd6ec 100644 --- a/src/components/views/elements/SettingsFlag.tsx +++ b/src/components/views/elements/SettingsFlag.tsx @@ -29,7 +29,7 @@ interface IProps { name: string; level: SettingLevel; roomId?: string; // for per-room settings - label?: string; // untranslated + label?: string; isExplicit?: boolean; // XXX: once design replaces all toggles make this the default useCheckbox?: boolean; @@ -105,10 +105,7 @@ export default class SettingsFlag extends React.Component { if (!canChange && this.props.hideIfCannotSet) return null; - const label = - (this.props.label - ? _t(this.props.label) - : SettingsStore.getDisplayName(this.props.name, this.props.level)) ?? undefined; + const label = this.props.label ?? SettingsStore.getDisplayName(this.props.name, this.props.level); const description = SettingsStore.getDescription(this.props.name); const shouldWarn = SettingsStore.shouldHaveWarning(this.props.name); const disabled = this.state.disabled || !canChange; @@ -146,7 +143,7 @@ export default class SettingsFlag extends React.Component { onChange={this.onChange} disabled={disabled} tooltip={disabled ? SettingsStore.disabledMessage(this.props.name) : undefined} - title={label} + title={label ?? undefined} />
    ); diff --git a/src/components/views/elements/SpellCheckLanguagesDropdown.tsx b/src/components/views/elements/SpellCheckLanguagesDropdown.tsx index 3689e8b2ec74..98c598c5c2a2 100644 --- a/src/components/views/elements/SpellCheckLanguagesDropdown.tsx +++ b/src/components/views/elements/SpellCheckLanguagesDropdown.tsx @@ -19,12 +19,14 @@ import React, { ReactElement } from "react"; import Dropdown from "../../views/elements/Dropdown"; import PlatformPeg from "../../../PlatformPeg"; import SettingsStore from "../../../settings/SettingsStore"; -import { _t } from "../../../languageHandler"; +import { _t, getUserLanguage } from "../../../languageHandler"; import Spinner from "./Spinner"; -import * as languageHandler from "../../../languageHandler"; import { NonEmptyArray } from "../../../@types/common"; -type Languages = Awaited>; +type Languages = { + value: string; + label: string; // translated +}[]; function languageMatchesSearchQuery(query: string, language: Languages[0]): boolean { if (language.label.toUpperCase().includes(query.toUpperCase())) return true; if (language.value.toUpperCase() === query.toUpperCase()) return true; @@ -58,6 +60,7 @@ export default class SpellCheckLanguagesDropdown extends React.Component< public componentDidMount(): void { const plaf = PlatformPeg.get(); if (plaf) { + const languageNames = new Intl.DisplayNames([getUserLanguage()], { type: "language", style: "short" }); plaf.getAvailableSpellCheckLanguages() ?.then((languages) => { languages.sort(function (a, b) { @@ -68,7 +71,7 @@ export default class SpellCheckLanguagesDropdown extends React.Component< const langs: Languages = []; languages.forEach((language) => { langs.push({ - label: language, + label: languageNames.of(language)!, value: language, }); }); @@ -79,7 +82,7 @@ export default class SpellCheckLanguagesDropdown extends React.Component< languages: [ { value: "en", - label: "English", + label: languageNames.of("en")!, }, ], }); diff --git a/src/components/views/elements/Spinner.tsx b/src/components/views/elements/Spinner.tsx index 943bc2963183..c6e19497623d 100644 --- a/src/components/views/elements/Spinner.tsx +++ b/src/components/views/elements/Spinner.tsx @@ -43,7 +43,7 @@ export default class Spinner extends React.PureComponent {
    diff --git a/src/components/views/emojipicker/Category.tsx b/src/components/views/emojipicker/Category.tsx index cf662feea39b..ce5e5c81c30b 100644 --- a/src/components/views/emojipicker/Category.tsx +++ b/src/components/views/emojipicker/Category.tsx @@ -16,10 +16,10 @@ limitations under the License. */ import React, { RefObject } from "react"; +import { DATA_BY_CATEGORY, Emoji as IEmoji } from "@matrix-org/emojibase-bindings"; import { CATEGORY_HEADER_HEIGHT, EMOJI_HEIGHT, EMOJIS_PER_ROW } from "./EmojiPicker"; import LazyRenderList from "../elements/LazyRenderList"; -import { DATA_BY_CATEGORY, IEmoji } from "../../../emoji"; import Emoji from "./Emoji"; import { ButtonEvent } from "../elements/AccessibleButton"; diff --git a/src/components/views/emojipicker/Emoji.tsx b/src/components/views/emojipicker/Emoji.tsx index 627988730344..b210b628594b 100644 --- a/src/components/views/emojipicker/Emoji.tsx +++ b/src/components/views/emojipicker/Emoji.tsx @@ -16,8 +16,8 @@ limitations under the License. */ import React from "react"; +import { Emoji as IEmoji } from "@matrix-org/emojibase-bindings"; -import { IEmoji } from "../../../emoji"; import { ButtonEvent } from "../elements/AccessibleButton"; import { RovingAccessibleButton } from "../../../accessibility/RovingTabIndex"; diff --git a/src/components/views/emojipicker/EmojiPicker.tsx b/src/components/views/emojipicker/EmojiPicker.tsx index edb5e427a3ad..51b3b777964d 100644 --- a/src/components/views/emojipicker/EmojiPicker.tsx +++ b/src/components/views/emojipicker/EmojiPicker.tsx @@ -16,10 +16,10 @@ limitations under the License. */ import React, { Dispatch } from "react"; +import { DATA_BY_CATEGORY, getEmojiFromUnicode, Emoji as IEmoji } from "@matrix-org/emojibase-bindings"; import { _t } from "../../../languageHandler"; import * as recent from "../../../emojipicker/recent"; -import { DATA_BY_CATEGORY, getEmojiFromUnicode, IEmoji } from "../../../emoji"; import AutoHideScrollbar from "../../structures/AutoHideScrollbar"; import Header from "./Header"; import Search from "./Search"; diff --git a/src/components/views/emojipicker/Preview.tsx b/src/components/views/emojipicker/Preview.tsx index a13958efe1da..08035929278a 100644 --- a/src/components/views/emojipicker/Preview.tsx +++ b/src/components/views/emojipicker/Preview.tsx @@ -16,11 +16,10 @@ limitations under the License. */ import React from "react"; - -import { IEmoji } from "../../../emoji"; +import { Emoji } from "@matrix-org/emojibase-bindings"; interface IProps { - emoji: IEmoji; + emoji: Emoji; } class Preview extends React.PureComponent { diff --git a/src/components/views/emojipicker/QuickReactions.tsx b/src/components/views/emojipicker/QuickReactions.tsx index a58c6b875fd3..accf598503f8 100644 --- a/src/components/views/emojipicker/QuickReactions.tsx +++ b/src/components/views/emojipicker/QuickReactions.tsx @@ -16,9 +16,9 @@ limitations under the License. */ import React from "react"; +import { getEmojiFromUnicode, Emoji as IEmoji } from "@matrix-org/emojibase-bindings"; import { _t } from "../../../languageHandler"; -import { getEmojiFromUnicode, IEmoji } from "../../../emoji"; import Emoji from "./Emoji"; import { ButtonEvent } from "../elements/AccessibleButton"; import Toolbar from "../../../accessibility/Toolbar"; diff --git a/src/components/views/location/EnableLiveShare.tsx b/src/components/views/location/EnableLiveShare.tsx index 2f432ccad004..9c42b58d3551 100644 --- a/src/components/views/location/EnableLiveShare.tsx +++ b/src/components/views/location/EnableLiveShare.tsx @@ -36,10 +36,7 @@ export const EnableLiveShare: React.FC = ({ onSubmit }) => {

    {_t( - "Please note: this is a labs feature using a temporary implementation. " + - "This means you will not be able to delete your location history, " + - "and advanced users will be able to see your location history " + - "even after you stop sharing your live location with this room.", + "Please note: this is a labs feature using a temporary implementation. This means you will not be able to delete your location history, and advanced users will be able to see your location history even after you stop sharing your live location with this room.", )}

    = ({ onSubmit }) => { onClick={onSubmit} disabled={!isEnabled} > - {_t("OK")} + {_t("action|ok")}
    ); diff --git a/src/components/views/location/MapError.tsx b/src/components/views/location/MapError.tsx index 32e6bb77e188..f81d1afb9e16 100644 --- a/src/components/views/location/MapError.tsx +++ b/src/components/views/location/MapError.tsx @@ -44,7 +44,7 @@ export const MapError: React.FC = ({ error, isMinimised, classNam

    {getLocationShareErrorMessage(error)}

    {onFinished && ( - {_t("OK")} + {_t("action|ok")} )}
    diff --git a/src/components/views/location/shareLocation.ts b/src/components/views/location/shareLocation.ts index 4df325e8aee5..eeda324477bf 100644 --- a/src/components/views/location/shareLocation.ts +++ b/src/components/views/location/shareLocation.ts @@ -63,7 +63,7 @@ const getPermissionsErrorParams = ( const modalParams = { title: _t("You don't have permission to share locations"), description: _t("You need to have the right permissions in order to share locations in this room."), - button: _t("OK"), + button: _t("action|ok"), hasCancelButton: false, onFinished: () => {}, // NOOP }; diff --git a/src/components/views/messages/CallEvent.tsx b/src/components/views/messages/CallEvent.tsx index d2ea0f8ae654..19d6af1640f7 100644 --- a/src/components/views/messages/CallEvent.tsx +++ b/src/components/views/messages/CallEvent.tsx @@ -133,9 +133,9 @@ const ActiveLoadedCallEvent = forwardRef(({ mxE case ConnectionState.Connecting: return [_t("action|join"), "primary", null]; case ConnectionState.Connected: - return [_t("Leave"), "danger", disconnect]; + return [_t("action|leave"), "danger", disconnect]; case ConnectionState.Disconnecting: - return [_t("Leave"), "danger", null]; + return [_t("action|leave"), "danger", null]; } }, [connectionState, connect, disconnect]); diff --git a/src/components/views/messages/DateSeparator.tsx b/src/components/views/messages/DateSeparator.tsx index 0e6815ed36a0..4175b7d02182 100644 --- a/src/components/views/messages/DateSeparator.tsx +++ b/src/components/views/messages/DateSeparator.tsx @@ -19,8 +19,8 @@ import React from "react"; import { Direction, ConnectionError, MatrixError, HTTPError } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; -import { _t } from "../../../languageHandler"; -import { formatFullDateNoDay, formatFullDateNoTime } from "../../../DateUtils"; +import { _t, getUserLanguage } from "../../../languageHandler"; +import { formatFullDateNoDay, formatFullDateNoTime, getDaysArray } from "../../../DateUtils"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; import dispatcher from "../../../dispatcher/dispatcher"; import { Action } from "../../../dispatcher/actions"; @@ -40,10 +40,6 @@ import JumpToDatePicker from "./JumpToDatePicker"; import { ViewRoomPayload } from "../../../dispatcher/payloads/ViewRoomPayload"; import { SdkContextClass } from "../../../contexts/SDKContext"; -function getDaysArray(): string[] { - return [_t("Sunday"), _t("Monday"), _t("Tuesday"), _t("Wednesday"), _t("Thursday"), _t("Friday"), _t("Saturday")]; -} - interface IProps { roomId: string; ts: number; @@ -105,15 +101,16 @@ export default class DateSeparator extends React.Component { const today = new Date(); const yesterday = new Date(); - const days = getDaysArray(); + const days = getDaysArray("long"); yesterday.setDate(today.getDate() - 1); + const relativeTimeFormat = new Intl.RelativeTimeFormat(getUserLanguage(), { style: "long", numeric: "auto" }); if (date.toDateString() === today.toDateString()) { - return _t("Today"); + return relativeTimeFormat.format(0, "day"); // Today } else if (date.toDateString() === yesterday.toDateString()) { - return _t("Yesterday"); + return relativeTimeFormat.format(-1, "day"); // Yesterday } else if (today.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) { - return days[date.getDay()]; + return days[date.getDay()]; // Sunday-Saturday } else { return formatFullDateNoTime(date); } @@ -170,16 +167,12 @@ export default class DateSeparator extends React.Component { let submitDebugLogsContent: JSX.Element = <>; if (err instanceof ConnectionError) { friendlyErrorMessage = _t( - "A network error occurred while trying to find and jump to the given date. " + - "Your homeserver might be down or there was just a temporary problem with " + - "your internet connection. Please try again. If this continues, please " + - "contact your homeserver administrator.", + "A network error occurred while trying to find and jump to the given date. Your homeserver might be down or there was just a temporary problem with your internet connection. Please try again. If this continues, please contact your homeserver administrator.", ); } else if (err instanceof MatrixError) { if (err?.errcode === "M_NOT_FOUND") { friendlyErrorMessage = _t( - "We were unable to find an event looking forwards from %(dateString)s. " + - "Try choosing an earlier date.", + "We were unable to find an event looking forwards from %(dateString)s. Try choosing an earlier date.", { dateString: formatFullDateNoDay(new Date(unixTimestamp)) }, ); } else { @@ -195,8 +188,7 @@ export default class DateSeparator extends React.Component { submitDebugLogsContent = (

    {_t( - "Please submit debug logs to help us " + - "track down the problem.", + "Please submit debug logs to help us track down the problem.", {}, { debugLogsLink: (sub) => ( diff --git a/src/components/views/messages/DownloadActionButton.tsx b/src/components/views/messages/DownloadActionButton.tsx index 8e974c1e15ea..ca13f64e9e8c 100644 --- a/src/components/views/messages/DownloadActionButton.tsx +++ b/src/components/views/messages/DownloadActionButton.tsx @@ -22,7 +22,7 @@ import { Icon as DownloadIcon } from "../../../../res/img/download.svg"; import { MediaEventHelper } from "../../../utils/MediaEventHelper"; import { RovingAccessibleTooltipButton } from "../../../accessibility/RovingTabIndex"; import Spinner from "../elements/Spinner"; -import { _t, _td } from "../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../languageHandler"; import { FileDownloader } from "../../../utils/FileDownloader"; interface IProps { @@ -37,7 +37,7 @@ interface IProps { interface IState { loading: boolean; blob?: Blob; - tooltip: string; + tooltip: TranslationKey; } export default class DownloadActionButton extends React.PureComponent { diff --git a/src/components/views/messages/EditHistoryMessage.tsx b/src/components/views/messages/EditHistoryMessage.tsx index f49db88d7c13..49e0f1f7de40 100644 --- a/src/components/views/messages/EditHistoryMessage.tsx +++ b/src/components/views/messages/EditHistoryMessage.tsx @@ -137,13 +137,13 @@ export default class EditHistoryMessage extends React.PureComponent{_t("Remove")}; + redactButton = {_t("action|remove")}; } let viewSourceButton: JSX.Element | undefined; if (SettingsStore.getValue("developerMode")) { viewSourceButton = ( - {_t("View Source")} + {_t("action|view_source")} ); } diff --git a/src/components/views/messages/EncryptionEvent.tsx b/src/components/views/messages/EncryptionEvent.tsx index bcd6136ec90c..b9566f653067 100644 --- a/src/components/views/messages/EncryptionEvent.tsx +++ b/src/components/views/messages/EncryptionEvent.tsx @@ -53,23 +53,21 @@ const EncryptionEvent = forwardRef(({ mxEvent, timestamp } else if (dmPartner) { const displayName = room?.getMember(dmPartner)?.rawDisplayName || dmPartner; subtitle = _t( - "Messages here are end-to-end encrypted. " + - "Verify %(displayName)s in their profile - tap on their profile picture.", + "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their profile picture.", { displayName }, ); } else if (room && isLocalRoom(room)) { subtitle = _t("Messages in this chat will be end-to-end encrypted."); } else { subtitle = _t( - "Messages in this room are end-to-end encrypted. " + - "When people join, you can verify them in their profile, just tap on their profile picture.", + "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their profile picture.", ); } return ( @@ -80,7 +78,7 @@ const EncryptionEvent = forwardRef(({ mxEvent, timestamp return ( diff --git a/src/components/views/messages/LegacyCallEvent.tsx b/src/components/views/messages/LegacyCallEvent.tsx index 6d63902d2459..a79a2701b33e 100644 --- a/src/components/views/messages/LegacyCallEvent.tsx +++ b/src/components/views/messages/LegacyCallEvent.tsx @@ -137,7 +137,7 @@ export default class LegacyCallEvent extends React.PureComponent onClick={this.props.callEventGrouper.rejectCall} kind="danger" > - {_t("Decline")} + {_t("action|decline")} kind={InfoTooltipKind.Warning} /> {_t("Connection failed")} - {this.renderCallBackButton(_t("Retry"))} + {this.renderCallBackButton(_t("action|retry"))} {this.props.timestamp} ); diff --git a/src/components/views/messages/MFileBody.tsx b/src/components/views/messages/MFileBody.tsx index 1fc0004fa1c6..e69b777ae52b 100644 --- a/src/components/views/messages/MFileBody.tsx +++ b/src/components/views/messages/MFileBody.tsx @@ -173,7 +173,7 @@ export default class MFileBody extends React.Component { } catch (err) { logger.warn("Unable to decrypt attachment: ", err); Modal.createDialog(ErrorDialog, { - title: _t("Error"), + title: _t("common|error"), description: _t("Error decrypting attachment"), }); } diff --git a/src/components/views/messages/MImageBody.tsx b/src/components/views/messages/MImageBody.tsx index 6833a53018dd..888b075cdafb 100644 --- a/src/components/views/messages/MImageBody.tsx +++ b/src/components/views/messages/MImageBody.tsx @@ -395,7 +395,11 @@ export default class MImageBody extends React.Component { return null; } - return {presentableTextForFile(content, _t("Image"), true, true)}; + return ( + + {presentableTextForFile(content, _t("common|image"), true, true)} + + ); } protected messageContent( diff --git a/src/components/views/messages/MKeyVerificationRequest.tsx b/src/components/views/messages/MKeyVerificationRequest.tsx index bd41b8c228c8..3bf84f8f282c 100644 --- a/src/components/views/messages/MKeyVerificationRequest.tsx +++ b/src/components/views/messages/MKeyVerificationRequest.tsx @@ -170,7 +170,7 @@ export default class MKeyVerificationRequest extends React.Component { stateNode = (

    - {_t("Decline")} + {_t("action|decline")} {_t("action|accept")} diff --git a/src/components/views/messages/MessageActionBar.tsx b/src/components/views/messages/MessageActionBar.tsx index a9e67b9bb937..9599da399b42 100644 --- a/src/components/views/messages/MessageActionBar.tsx +++ b/src/components/views/messages/MessageActionBar.tsx @@ -173,7 +173,7 @@ const ReactButton: React.FC = ({ mxEvent, reactions, onFocusC { } return ( -
    +
    {items} {showAllButton} {addReactionButton} diff --git a/src/components/views/messages/RoomPredecessorTile.tsx b/src/components/views/messages/RoomPredecessorTile.tsx index 2275bcbccab2..61bce205f8d4 100644 --- a/src/components/views/messages/RoomPredecessorTile.tsx +++ b/src/components/views/messages/RoomPredecessorTile.tsx @@ -106,9 +106,7 @@ export const RoomPredecessorTile: React.FC = ({ mxEvent, timestamp }) => {!!guessedLink ? ( <> {_t( - "Can't find the old version of this room (room ID: %(roomId)s), and we have not been " + - "provided with 'via_servers' to look for it. It's possible that guessing the " + - "server from the room ID will work. If you want to try, click this link:", + "Can't find the old version of this room (room ID: %(roomId)s), and we have not been provided with 'via_servers' to look for it. It's possible that guessing the server from the room ID will work. If you want to try, click this link:", { roomId: predecessor.roomId, }, @@ -117,8 +115,7 @@ export const RoomPredecessorTile: React.FC = ({ mxEvent, timestamp }) => ) : ( _t( - "Can't find the old version of this room (room ID: %(roomId)s), and we have not been " + - "provided with 'via_servers' to look for it.", + "Can't find the old version of this room (room ID: %(roomId)s), and we have not been provided with 'via_servers' to look for it.", { roomId: predecessor.roomId, }, diff --git a/src/components/views/messages/TextualBody.tsx b/src/components/views/messages/TextualBody.tsx index 88ed8adcd808..7a36f8c58d38 100644 --- a/src/components/views/messages/TextualBody.tsx +++ b/src/components/views/messages/TextualBody.tsx @@ -494,14 +494,12 @@ export default class TextualBody extends React.Component { description: (
    {_t( - "You are about to be taken to a third-party site so you can " + - "authenticate your account for use with %(integrationsUrl)s. " + - "Do you wish to continue?", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?", { integrationsUrl: integrationsUrl }, )}
    ), - button: _t("Continue"), + button: _t("action|continue"), onFinished(confirmed) { if (!confirmed) { return; diff --git a/src/components/views/messages/TileErrorBoundary.tsx b/src/components/views/messages/TileErrorBoundary.tsx index 703501351caf..e9b051b65aa7 100644 --- a/src/components/views/messages/TileErrorBoundary.tsx +++ b/src/components/views/messages/TileErrorBoundary.tsx @@ -95,7 +95,7 @@ export default class TileErrorBoundary extends React.Component { <>   - {_t("View Source")} + {_t("action|view_source")} ); diff --git a/src/components/views/pips/WidgetPip.tsx b/src/components/views/pips/WidgetPip.tsx index 3001d844a4ec..1c8f067cae32 100644 --- a/src/components/views/pips/WidgetPip.tsx +++ b/src/components/views/pips/WidgetPip.tsx @@ -127,8 +127,8 @@ export const WidgetPip: FC = ({ widgetId, room, viewingRoom, onStartMovin diff --git a/src/components/views/right_panel/EncryptionInfo.tsx b/src/components/views/right_panel/EncryptionInfo.tsx index 029c969ec320..6247dd4d50ea 100644 --- a/src/components/views/right_panel/EncryptionInfo.tsx +++ b/src/components/views/right_panel/EncryptionInfo.tsx @@ -81,8 +81,7 @@ const EncryptionInfo: React.FC = ({

    {_t("Messages in this room are end-to-end encrypted.")}

    {_t( - "Your messages are secured and only you and the recipient have " + - "the unique keys to unlock them.", + "Your messages are secured and only you and the recipient have the unique keys to unlock them.", )}

    @@ -93,8 +92,7 @@ const EncryptionInfo: React.FC = ({

    {_t("Messages in this room are not end-to-end encrypted.")}

    {_t( - "In encrypted rooms, your messages are secured and only you and the recipient have " + - "the unique keys to unlock them.", + "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.", )}

    diff --git a/src/components/views/right_panel/PinnedMessagesCard.tsx b/src/components/views/right_panel/PinnedMessagesCard.tsx index 04a384a04beb..6f178be78647 100644 --- a/src/components/views/right_panel/PinnedMessagesCard.tsx +++ b/src/components/views/right_panel/PinnedMessagesCard.tsx @@ -181,8 +181,7 @@ const PinnedMessagesCard: React.FC = ({ room, onClose, permalinkCreator {_t("Nothing pinned, yet")} {_t( - "If you have permissions, open the menu on any message and select " + - "Pin to stick them here.", + "If you have permissions, open the menu on any message and select Pin to stick them here.", {}, { b: (sub) => {sub}, diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index 26592404da3c..c8f42c9d150e 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -337,9 +337,9 @@ const RoomSummaryCard: React.FC = ({ room, permalinkCreator, onClose }) return ( - + {!isVideoRoom && ( diff --git a/src/components/views/right_panel/UserInfo.tsx b/src/components/views/right_panel/UserInfo.tsx index 387a203f3872..ed2dacc32d7c 100644 --- a/src/components/views/right_panel/UserInfo.tsx +++ b/src/components/views/right_panel/UserInfo.tsx @@ -344,7 +344,7 @@ const MessageButton = ({ member }: { member: Member }): JSX.Element => { className="mx_UserInfo_field" disabled={busy} > - {_t("Message")} + {_t("common|message")}
    ); }; @@ -383,8 +383,7 @@ export const UserOptionsSection: React.FC<{ description: (
    {_t( - "All messages and invites from this user will be hidden. " + - "Are you sure you want to ignore them?", + "All messages and invites from this user will be hidden. Are you sure you want to ignore them?", )}
    ), @@ -487,7 +486,7 @@ export const UserOptionsSection: React.FC<{ inviteUserButton = ( - {_t("Invite")} + {_t("action|invite")} ); } @@ -523,14 +522,10 @@ export const warnSelfDemote = async (isSpace: boolean): Promise => {
    {isSpace ? _t( - "You will not be able to undo this change as you are demoting yourself, " + - "if you are the last privileged user in the space it will be impossible " + - "to regain privileges.", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.", ) : _t( - "You will not be able to undo this change as you are demoting yourself, " + - "if you are the last privileged user in the room it will be impossible " + - "to regain privileges.", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.", )}
    ), @@ -850,7 +845,7 @@ export const BanToggleButton = ({ function (err) { logger.error("Ban error: " + err); Modal.createDialog(ErrorDialog, { - title: _t("Error"), + title: _t("common|error"), description: _t("Failed to ban user"), }); }, @@ -932,7 +927,7 @@ const MuteToggleButton: React.FC = ({ function (err) { logger.error("Mute error: " + err); Modal.createDialog(ErrorDialog, { - title: _t("Error"), + title: _t("common|error"), description: _t("Failed to mute user"), }); }, @@ -946,7 +941,7 @@ const MuteToggleButton: React.FC = ({ mx_UserInfo_destructive: !muted, }); - const muteLabel = muted ? _t("Unmute") : _t("Mute"); + const muteLabel = muted ? _t("common|unmute") : _t("common|mute"); return ( {muteLabel} @@ -1164,7 +1159,7 @@ export const PowerLevelEditor: React.FC<{ function (err) { logger.error("Failed to change power level " + err); Modal.createDialog(ErrorDialog, { - title: _t("Error"), + title: _t("common|error"), description: _t("Failed to change power level"), }); }, @@ -1185,14 +1180,13 @@ export const PowerLevelEditor: React.FC<{ description: (
    {_t( - "You will not be able to undo this change as you are promoting the user " + - "to have the same power level as yourself.", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", )}
    {_t("Are you sure?")}
    ), - button: _t("Continue"), + button: _t("action|continue"), }); const [confirmed] = await finished; @@ -1355,9 +1349,7 @@ const BasicUserInfo: React.FC<{ description: (
    {_t( - "Deactivating this user will log them out and prevent them from logging back in. Additionally, " + - "they will leave all the rooms they are in. This action cannot be reversed. Are you sure you " + - "want to deactivate this user?", + "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?", )}
    ), @@ -1524,7 +1516,7 @@ const BasicUserInfo: React.FC<{ const securitySection = (
    -

    {_t("Security")}

    +

    {_t("common|security")}

    {text}

    {verifyButton} {cryptoEnabled && ( diff --git a/src/components/views/right_panel/VerificationPanel.tsx b/src/components/views/right_panel/VerificationPanel.tsx index 718c5cde4fd9..c9adb40ca5cf 100644 --- a/src/components/views/right_panel/VerificationPanel.tsx +++ b/src/components/views/right_panel/VerificationPanel.tsx @@ -93,9 +93,7 @@ export default class VerificationPanel extends React.PureComponent {_t( - "The device you are trying to verify doesn't support scanning a " + - "QR code or emoji verification, which is what %(brand)s supports. Try " + - "with a different client.", + "The device you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.", { brand }, )}

    @@ -125,7 +123,7 @@ export default class VerificationPanel extends React.PureComponent - {_t("Start")} + {_t("action|start")}
    ); @@ -256,14 +254,14 @@ export default class VerificationPanel extends React.PureComponent - {_t("No")} + {_t("action|no")}
    - {_t("Yes")} + {_t("action|yes")}
    @@ -355,7 +353,7 @@ export default class VerificationPanel extends React.PureComponent -

    {_t("Verification cancelled")}

    +

    {_t("common|verification_cancelled")}

    {text}

    diff --git a/src/components/views/room_settings/AliasSettings.tsx b/src/components/views/room_settings/AliasSettings.tsx index f1729b759649..9fcb0614fc55 100644 --- a/src/components/views/room_settings/AliasSettings.tsx +++ b/src/components/views/room_settings/AliasSettings.tsx @@ -182,8 +182,7 @@ export default class AliasSettings extends React.Component { Modal.createDialog(ErrorDialog, { title: _t("Error updating main address"), description: _t( - "There was an error updating the room's main address. It may not be allowed by the server " + - "or a temporary failure occurred.", + "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.", ), }); this.setState({ canonicalAlias: oldAlias }); @@ -222,8 +221,7 @@ export default class AliasSettings extends React.Component { Modal.createDialog(ErrorDialog, { title: _t("Error updating main address"), description: _t( - "There was an error updating the room's alternative addresses. " + - "It may not be allowed by the server or a temporary failure occurred.", + "There was an error updating the room's alternative addresses. It may not be allowed by the server or a temporary failure occurred.", ), }); }) @@ -258,8 +256,7 @@ export default class AliasSettings extends React.Component { Modal.createDialog(ErrorDialog, { title: _t("Error creating address"), description: _t( - "There was an error creating that address. It may not be allowed by the server " + - "or a temporary failure occurred.", + "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.", ), }); }); @@ -286,8 +283,7 @@ export default class AliasSettings extends React.Component { description = _t("You don't have permission to delete the address."); } else { description = _t( - "There was an error removing that address. It may no longer exist or a temporary " + - "error occurred.", + "There was an error removing that address. It may no longer exist or a temporary error occurred.", ); } Modal.createDialog(ErrorDialog, { @@ -450,13 +446,11 @@ export default class AliasSettings extends React.Component { description={ isSpaceRoom ? _t( - "Set addresses for this space so users can find this space " + - "through your homeserver (%(localDomain)s)", + "Set addresses for this space so users can find this space through your homeserver (%(localDomain)s)", { localDomain }, ) : _t( - "Set addresses for this room so users can find this room " + - "through your homeserver (%(localDomain)s)", + "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)", { localDomain }, ) } diff --git a/src/components/views/room_settings/RoomProfileSettings.tsx b/src/components/views/room_settings/RoomProfileSettings.tsx index 7e7e04e73b95..d0af87bbb495 100644 --- a/src/components/views/room_settings/RoomProfileSettings.tsx +++ b/src/components/views/room_settings/RoomProfileSettings.tsx @@ -229,7 +229,7 @@ export default class RoomProfileSettings extends React.Component {_t("action|cancel")} - {_t("Save")} + {_t("action|save")} ); diff --git a/src/components/views/room_settings/UrlPreviewSettings.tsx b/src/components/views/room_settings/UrlPreviewSettings.tsx index d0314320f1fa..a04d61994a62 100644 --- a/src/components/views/room_settings/UrlPreviewSettings.tsx +++ b/src/components/views/room_settings/UrlPreviewSettings.tsx @@ -95,9 +95,7 @@ export default class UrlPreviewSettings extends React.Component { } } else { previewsForAccount = _t( - "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your " + - "homeserver (where the previews are generated) cannot gather information about links you see in " + - "this room.", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.", ); } @@ -114,8 +112,7 @@ export default class UrlPreviewSettings extends React.Component { <>

    {_t( - "When someone puts a URL in their message, a URL preview can be shown to give more " + - "information about that link such as the title, description, and an image from the website.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.", )}

    {previewsForAccount}

    diff --git a/src/components/views/rooms/BasicMessageComposer.tsx b/src/components/views/rooms/BasicMessageComposer.tsx index e14aa9dc2909..c1db383dc18d 100644 --- a/src/components/views/rooms/BasicMessageComposer.tsx +++ b/src/components/views/rooms/BasicMessageComposer.tsx @@ -19,6 +19,7 @@ import React, { createRef, ClipboardEvent, SyntheticEvent } from "react"; import { Room, MatrixEvent } from "matrix-js-sdk/src/matrix"; import EMOTICON_REGEX from "emojibase-regex/emoticon"; import { logger } from "matrix-js-sdk/src/logger"; +import { EMOTICON_TO_EMOJI } from "@matrix-org/emojibase-bindings"; import EditorModel from "../../../editor/model"; import HistoryManager from "../../../editor/history"; @@ -36,7 +37,6 @@ import { parseEvent, parsePlainTextMessage } from "../../../editor/deserialize"; import { renderModel } from "../../../editor/render"; import SettingsStore from "../../../settings/SettingsStore"; import { IS_MAC, Key } from "../../../Keyboard"; -import { EMOTICON_TO_EMOJI } from "../../../emoji"; import { CommandCategories, CommandMap, parseCommandString } from "../../../SlashCommands"; import Range from "../../../editor/range"; import MessageComposerFormatBar, { Formatting } from "./MessageComposerFormatBar"; diff --git a/src/components/views/rooms/E2EIcon.tsx b/src/components/views/rooms/E2EIcon.tsx index 01a6b8a4985a..3e6e0ce91a90 100644 --- a/src/components/views/rooms/E2EIcon.tsx +++ b/src/components/views/rooms/E2EIcon.tsx @@ -18,7 +18,7 @@ limitations under the License. import React, { CSSProperties, useState } from "react"; import classNames from "classnames"; -import { _t, _td } from "../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../languageHandler"; import AccessibleButton from "../elements/AccessibleButton"; import Tooltip, { Alignment } from "../elements/Tooltip"; import { E2EStatus } from "../../../utils/ShieldUtils"; @@ -32,12 +32,12 @@ export enum E2EState { Unauthenticated = "unauthenticated", } -const crossSigningUserTitles: { [key in E2EState]?: string } = { +const crossSigningUserTitles: { [key in E2EState]?: TranslationKey } = { [E2EState.Warning]: _td("This user has not verified all of their sessions."), [E2EState.Normal]: _td("You have not verified this user."), [E2EState.Verified]: _td("You have verified this user. This user has verified all of their sessions."), }; -const crossSigningRoomTitles: { [key in E2EState]?: string } = { +const crossSigningRoomTitles: { [key in E2EState]?: TranslationKey } = { [E2EState.Warning]: _td("Someone is using an unknown session"), [E2EState.Normal]: _td("This room is end-to-end encrypted"), [E2EState.Verified]: _td("Everyone in this room is verified"), @@ -85,7 +85,7 @@ const E2EIcon: React.FC> = ({ className, ); - let e2eTitle: string | undefined; + let e2eTitle: TranslationKey | undefined; if (isUser) { e2eTitle = crossSigningUserTitles[status]; } else { diff --git a/src/components/views/rooms/EditMessageComposer.tsx b/src/components/views/rooms/EditMessageComposer.tsx index e11b69fc8483..015a9f8209c0 100644 --- a/src/components/views/rooms/EditMessageComposer.tsx +++ b/src/components/views/rooms/EditMessageComposer.tsx @@ -490,7 +490,7 @@ class EditMessageComposer extends React.Component - {_t("Save")} + {_t("action|save")} diff --git a/src/components/views/rooms/EntityTile.tsx b/src/components/views/rooms/EntityTile.tsx index 647ea82751ed..f38b4c34daa7 100644 --- a/src/components/views/rooms/EntityTile.tsx +++ b/src/components/views/rooms/EntityTile.tsx @@ -20,7 +20,7 @@ import React from "react"; import classNames from "classnames"; import AccessibleButton from "../elements/AccessibleButton"; -import { _t, _td } from "../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../languageHandler"; import E2EIcon, { E2EState } from "./E2EIcon"; import BaseAvatar from "../avatars/BaseAvatar"; import PresenceLabel from "./PresenceLabel"; @@ -30,7 +30,7 @@ export enum PowerStatus { Moderator = "moderator", } -const PowerLabel: Record = { +const PowerLabel: Record = { [PowerStatus.Admin]: _td("Admin"), [PowerStatus.Moderator]: _td("Mod"), }; @@ -162,7 +162,7 @@ export default class EntityTile extends React.PureComponent { inviteButton = (
    {_t("Invite")} { , diff --git a/src/components/views/rooms/LiveContentSummary.tsx b/src/components/views/rooms/LiveContentSummary.tsx index 57df05a21f11..6d1f0c89ab09 100644 --- a/src/components/views/rooms/LiveContentSummary.tsx +++ b/src/components/views/rooms/LiveContentSummary.tsx @@ -67,7 +67,7 @@ interface LiveContentSummaryWithCallProps { export const LiveContentSummaryWithCall: FC = ({ call }) => ( diff --git a/src/components/views/rooms/MessageComposerButtons.tsx b/src/components/views/rooms/MessageComposerButtons.tsx index ce6cd0727c25..a53cf85c643a 100644 --- a/src/components/views/rooms/MessageComposerButtons.tsx +++ b/src/components/views/rooms/MessageComposerButtons.tsx @@ -259,7 +259,7 @@ function showStickersButton(props: IProps): ReactElement | null { className="mx_MessageComposer_button" iconClassName="mx_MessageComposer_stickers" onClick={() => props.setStickerPickerOpen(!props.isStickerPickerOpen)} - title={props.isStickerPickerOpen ? _t("Hide stickers") : _t("Sticker")} + title={props.isStickerPickerOpen ? _t("Hide stickers") : _t("common|sticker")} /> ) : null; } diff --git a/src/components/views/rooms/MessageComposerFormatBar.tsx b/src/components/views/rooms/MessageComposerFormatBar.tsx index 9730806e3e68..ac62b8a2d66a 100644 --- a/src/components/views/rooms/MessageComposerFormatBar.tsx +++ b/src/components/views/rooms/MessageComposerFormatBar.tsx @@ -81,7 +81,7 @@ export default class MessageComposerFormatBar extends React.PureComponent this.props.onAction(Formatting.Quote)} icon="Quote" shortcut={this.props.shortcuts.quote} diff --git a/src/components/views/rooms/NewRoomIntro.tsx b/src/components/views/rooms/NewRoomIntro.tsx index e03576b07a0a..66fd9a1bbf6f 100644 --- a/src/components/views/rooms/NewRoomIntro.tsx +++ b/src/components/views/rooms/NewRoomIntro.tsx @@ -20,7 +20,7 @@ import { EventType, Room, User, MatrixClient } from "matrix-js-sdk/src/matrix"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; import RoomContext from "../../../contexts/RoomContext"; import DMRoomMap from "../../../utils/DMRoomMap"; -import { _t, _td } from "../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../languageHandler"; import AccessibleButton, { ButtonEvent } from "../elements/AccessibleButton"; import MiniAvatarUploader, { AVATAR_SIZE } from "../elements/MiniAvatarUploader"; import RoomAvatar from "../avatars/RoomAvatar"; @@ -44,7 +44,7 @@ function hasExpectedEncryptionSettings(matrixClient: MatrixClient, room: Room): return isPublic || !privateShouldBeEncrypted(matrixClient) || isEncrypted; } -const determineIntroMessage = (room: Room, encryptedSingle3rdPartyInvite: boolean): string => { +const determineIntroMessage = (room: Room, encryptedSingle3rdPartyInvite: boolean): TranslationKey => { if (room instanceof LocalRoom) { return _td("Send your first message to invite to chat"); } @@ -270,9 +270,7 @@ const NewRoomIntro: React.FC = () => { } const subText = _t( - "Your private messages are normally encrypted, but this room isn't. " + - "Usually this is due to an unsupported device or method being used, " + - "like email invites.", + "Your private messages are normally encrypted, but this room isn't. Usually this is due to an unsupported device or method being used, like email invites.", ); let subButton: JSX.Element | undefined; diff --git a/src/components/views/rooms/PresenceLabel.tsx b/src/components/views/rooms/PresenceLabel.tsx index 9213cf3b04cb..1101fa613e88 100644 --- a/src/components/views/rooms/PresenceLabel.tsx +++ b/src/components/views/rooms/PresenceLabel.tsx @@ -76,7 +76,7 @@ export default class PresenceLabel extends React.Component { } else { if (presence === "online") return _t("Online"); if (presence === "unavailable") return _t("Idle"); // XXX: is this actually right? - if (presence === "offline") return _t("Offline"); + if (presence === "offline") return _t("common|offline"); return _t("Unknown"); } } diff --git a/src/components/views/rooms/RoomList.tsx b/src/components/views/rooms/RoomList.tsx index 64d2c73926bc..e6c47a973d0c 100644 --- a/src/components/views/rooms/RoomList.tsx +++ b/src/components/views/rooms/RoomList.tsx @@ -26,7 +26,7 @@ import { ActionPayload } from "../../../dispatcher/payloads"; import { ViewRoomDeltaPayload } from "../../../dispatcher/payloads/ViewRoomDeltaPayload"; import { ViewRoomPayload } from "../../../dispatcher/payloads/ViewRoomPayload"; import { useEventEmitterState } from "../../../hooks/useEventEmitter"; -import { _t, _td } from "../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../languageHandler"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; import PosthogTrackers from "../../../PosthogTrackers"; import SettingsStore from "../../../settings/SettingsStore"; @@ -93,7 +93,7 @@ export const TAG_ORDER: TagID[] = [ const ALWAYS_VISIBLE_TAGS: TagID[] = [DefaultTagID.DM, DefaultTagID.Untagged]; interface ITagAesthetics { - sectionLabel: string; + sectionLabel: TranslationKey; sectionLabelRaw?: string; AuxButtonComponent?: ComponentType; isInvite: boolean; @@ -195,8 +195,8 @@ const DmAuxButton: React.FC = ({ tabIndex, dispatcher = default }} className="mx_RoomSublist_auxButton" tooltipClassName="mx_RoomSublist_addRoomTooltip" - aria-label={_t("Start chat")} - title={_t("Start chat")} + aria-label={_t("action|start_chat")} + title={_t("action|start_chat")} /> ); } @@ -387,7 +387,7 @@ const UntaggedAuxButton: React.FC = ({ tabIndex }) => { const TAG_AESTHETICS: TagAestheticsMap = { [DefaultTagID.Invite]: { - sectionLabel: _td("Invites"), + sectionLabel: _td("action|invites_list"), isInvite: true, defaultHidden: false, }, @@ -402,7 +402,7 @@ const TAG_AESTHETICS: TagAestheticsMap = { defaultHidden: false, }, [DefaultTagID.DM]: { - sectionLabel: _td("People"), + sectionLabel: _td("common|people"), isInvite: false, defaultHidden: false, AuxButtonComponent: DmAuxButton, diff --git a/src/components/views/rooms/RoomListHeader.tsx b/src/components/views/rooms/RoomListHeader.tsx index 4640fb07f396..a094211eff2a 100644 --- a/src/components/views/rooms/RoomListHeader.tsx +++ b/src/components/views/rooms/RoomListHeader.tsx @@ -185,7 +185,7 @@ const RoomListHeader: React.FC = ({ onVisibilityChange }) => { if (shouldShowSpaceInvite(activeSpace)) { inviteOption = ( { e.preventDefault(); diff --git a/src/components/views/rooms/RoomPreviewBar.tsx b/src/components/views/rooms/RoomPreviewBar.tsx index 0ada3be4f878..8aa2eca24d3c 100644 --- a/src/components/views/rooms/RoomPreviewBar.tsx +++ b/src/components/views/rooms/RoomPreviewBar.tsx @@ -333,7 +333,7 @@ export default class RoomPreviewBar extends React.Component { break; } case MessageCase.Loading: { - title = _t("Loading…"); + title = _t("common|loading"); showSpinner = true; break; } @@ -421,8 +421,7 @@ export default class RoomPreviewBar extends React.Component { } const joinRule = this.joinRule(); const errCodeMessage = _t( - "An error (%(errcode)s) was returned while trying to validate your " + - "invite. You could try to pass this information on to the person who invited you.", + "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to the person who invited you.", { errcode: this.state.threePidFetchError?.errcode || _t("unknown error code") }, ); switch (joinRule) { @@ -447,8 +446,7 @@ export default class RoomPreviewBar extends React.Component { case MessageCase.InvitedEmailNotFoundInAccount: { if (roomName) { title = _t( - "This invite to %(roomName)s was sent to %(email)s which is not " + - "associated with your account", + "This invite to %(roomName)s was sent to %(email)s which is not associated with your account", { roomName, email: this.props.invitedEmail, @@ -585,9 +583,7 @@ export default class RoomPreviewBar extends React.Component { subTitle = [ _t("Try again later, or ask a room or space admin to check if you have access."), _t( - "%(errcode)s was returned while trying to access the room or space. " + - "If you think you're seeing this message in error, please " + - "submit a bug report.", + "%(errcode)s was returned while trying to access the room or space. If you think you're seeing this message in error, please submit a bug report.", { errcode: String(this.props.error?.errcode) }, { issueLink: (label) => ( diff --git a/src/components/views/rooms/RoomPreviewCard.tsx b/src/components/views/rooms/RoomPreviewCard.tsx index 0709da5d2c16..cbb556859c19 100644 --- a/src/components/views/rooms/RoomPreviewCard.tsx +++ b/src/components/views/rooms/RoomPreviewCard.tsx @@ -84,7 +84,7 @@ const RoomPreviewCard: FC = ({ room, onJoinButtonClicked, onRejectButton }); }} > - {_t("Leave")} + {_t("action|leave")} ); } else if (myMembership === "invite") { diff --git a/src/components/views/rooms/RoomTileCallSummary.tsx b/src/components/views/rooms/RoomTileCallSummary.tsx index 4a8bac3f3074..3208790579da 100644 --- a/src/components/views/rooms/RoomTileCallSummary.tsx +++ b/src/components/views/rooms/RoomTileCallSummary.tsx @@ -32,7 +32,7 @@ export const RoomTileCallSummary: FC = ({ call }) => { switch (useConnectionState(call)) { case ConnectionState.Disconnected: - text = _t("Video"); + text = _t("common|video"); active = false; break; case ConnectionState.Connecting: diff --git a/src/components/views/rooms/RoomUpgradeWarningBar.tsx b/src/components/views/rooms/RoomUpgradeWarningBar.tsx index a63dc26f27ad..b637a57fe52c 100644 --- a/src/components/views/rooms/RoomUpgradeWarningBar.tsx +++ b/src/components/views/rooms/RoomUpgradeWarningBar.tsx @@ -73,15 +73,12 @@ export default class RoomUpgradeWarningBar extends React.PureComponent

    {_t( - "Upgrading this room will shut down the current instance of the room and create " + - "an upgraded room with the same name.", + "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.", )}

    {_t( - "Warning: upgrading a room will not automatically migrate room members " + - "to the new version of the room. We'll post a link to the new room in the old " + - "version of the room - room members will have to click this link to join the new room.", + "Warning: upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.", {}, { b: (sub) => {sub}, @@ -111,8 +108,7 @@ export default class RoomUpgradeWarningBar extends React.PureComponent

    {_t( - "This room is running room version , which this homeserver has " + - "marked as unstable.", + "This room is running room version , which this homeserver has marked as unstable.", {}, { roomVersion: () => {this.props.room.getVersion()}, diff --git a/src/components/views/rooms/SendMessageComposer.tsx b/src/components/views/rooms/SendMessageComposer.tsx index 1c401df30b46..14d09fd83dc4 100644 --- a/src/components/views/rooms/SendMessageComposer.tsx +++ b/src/components/views/rooms/SendMessageComposer.tsx @@ -496,7 +496,10 @@ export class SendMessageComposer extends React.Component { this.sendVisibilityToWidget(this.props.isStickerPickerOpen); } - private imError(errorMsg: string, e: Error): void { + private imError(errorMsg: TranslationKey, e: Error): void { logger.error(errorMsg, e); this.setState({ imError: _t(errorMsg), diff --git a/src/components/views/rooms/ThirdPartyMemberInfo.tsx b/src/components/views/rooms/ThirdPartyMemberInfo.tsx index 5656a418098d..35c0086f43ab 100644 --- a/src/components/views/rooms/ThirdPartyMemberInfo.tsx +++ b/src/components/views/rooms/ThirdPartyMemberInfo.tsx @@ -108,8 +108,7 @@ export default class ThirdPartyMemberInfo extends React.Component - {_t("Save")} + {_t("action|save")}
    ); diff --git a/src/components/views/rooms/wysiwyg_composer/components/FormattingButtons.tsx b/src/components/views/rooms/wysiwyg_composer/components/FormattingButtons.tsx index 624cfeb607a8..0045b13ab206 100644 --- a/src/components/views/rooms/wysiwyg_composer/components/FormattingButtons.tsx +++ b/src/components/views/rooms/wysiwyg_composer/components/FormattingButtons.tsx @@ -148,7 +148,7 @@ export function FormattingButtons({ composer, actionStates }: FormattingButtonsP )} )} = ({ room, de // `RoomPowerLevels` event should exist, but technically it is not guaranteed. if (powerLevelEvent === null) { Modal.createDialog(ErrorDialog, { - title: _t("Error"), + title: _t("common|error"), description: _t("Failed to change power level"), }); @@ -67,7 +67,7 @@ export const AddPrivilegedUsers: React.FC = ({ room, de setPowerLevel(defaultUserLevel); } catch (error) { Modal.createDialog(ErrorDialog, { - title: _t("Error"), + title: _t("common|error"), description: _t("Failed to change power level"), }); } finally { diff --git a/src/components/views/settings/AvatarSetting.tsx b/src/components/views/settings/AvatarSetting.tsx index c05e02231492..4aaadc2acff1 100644 --- a/src/components/views/settings/AvatarSetting.tsx +++ b/src/components/views/settings/AvatarSetting.tsx @@ -80,7 +80,7 @@ const AvatarSetting: React.FC = ({ avatarUrl, avatarAltText, avatarName, if (avatarUrl && removeAvatar) { removeAvatarBtn = ( - {_t("Remove")} + {_t("action|remove")} ); } diff --git a/src/components/views/settings/CrossSigningPanel.tsx b/src/components/views/settings/CrossSigningPanel.tsx index f1f4dc26eda9..933cfccd9b98 100644 --- a/src/components/views/settings/CrossSigningPanel.tsx +++ b/src/components/views/settings/CrossSigningPanel.tsx @@ -203,8 +203,7 @@ export default class CrossSigningPanel extends React.PureComponent<{}, IState> { summarisedStatus = ( {_t( - "Your account has a cross-signing identity in secret storage, " + - "but it is not yet trusted by this session.", + "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.", )} ); diff --git a/src/components/views/settings/EventIndexPanel.tsx b/src/components/views/settings/EventIndexPanel.tsx index f2569cf16124..29286b618e58 100644 --- a/src/components/views/settings/EventIndexPanel.tsx +++ b/src/components/views/settings/EventIndexPanel.tsx @@ -149,8 +149,7 @@ export default class EventIndexPanel extends React.Component<{}, IState> { <> {_t( - "Securely cache encrypted messages locally for them " + - "to appear in search results, using %(size)s to store messages from %(rooms)s rooms.", + "Securely cache encrypted messages locally for them to appear in search results, using %(size)s to store messages from %(rooms)s rooms.", { size: formatBytes(this.state.eventIndexSize, 0), // This drives the singular / plural string @@ -173,7 +172,7 @@ export default class EventIndexPanel extends React.Component<{}, IState> {
    - {_t("Enable")} + {_t("action|enable")} {this.state.enabling ? :
    }
    @@ -188,10 +187,7 @@ export default class EventIndexPanel extends React.Component<{}, IState> { eventIndexingSettings = ( {_t( - "%(brand)s is missing some components required for securely " + - "caching encrypted messages locally. If you'd like to " + - "experiment with this feature, build a custom %(brand)s Desktop " + - "with search components added.", + "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.", { brand, }, @@ -209,9 +205,7 @@ export default class EventIndexPanel extends React.Component<{}, IState> { eventIndexingSettings = ( {_t( - "%(brand)s can't securely cache encrypted messages locally " + - "while running in a web browser. Use %(brand)s Desktop " + - "for encrypted messages to appear in search results.", + "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.", { brand, }, diff --git a/src/components/views/settings/JoinRuleSettings.tsx b/src/components/views/settings/JoinRuleSettings.tsx index 3c29b3384240..b6a1e797f59c 100644 --- a/src/components/views/settings/JoinRuleSettings.tsx +++ b/src/components/views/settings/JoinRuleSettings.tsx @@ -323,9 +323,7 @@ const JoinRuleSettings: React.FC = ({ warning = ( {_t( - "This room is in some spaces you're not an admin of. " + - "In those spaces, the old room will still be shown, " + - "but people will be prompted to join the new one.", + "This room is in some spaces you're not an admin of. In those spaces, the old room will still be shown, but people will be prompted to join the new one.", )} ); @@ -335,8 +333,7 @@ const JoinRuleSettings: React.FC = ({ targetVersion, <> {_t( - "This upgrade will allow members of selected spaces " + - "access to this room without an invite.", + "This upgrade will allow members of selected spaces access to this room without an invite.", )} {warning} , diff --git a/src/components/views/settings/LayoutSwitcher.tsx b/src/components/views/settings/LayoutSwitcher.tsx index 60a1a6cee453..9d875f8cff60 100644 --- a/src/components/views/settings/LayoutSwitcher.tsx +++ b/src/components/views/settings/LayoutSwitcher.tsx @@ -68,7 +68,7 @@ export default class LayoutSwitcher extends React.Component { }); return ( - +
    diff --git a/src/components/views/settings/SecureBackupPanel.tsx b/src/components/views/settings/SecureBackupPanel.tsx index 135e70db6c30..a55679964fd1 100644 --- a/src/components/views/settings/SecureBackupPanel.tsx +++ b/src/components/views/settings/SecureBackupPanel.tsx @@ -259,17 +259,14 @@ export default class SecureBackupPanel extends React.PureComponent<{}, IState> { <> {_t( - "This session is not backing up your keys, " + - "but you do have an existing backup you can restore from " + - "and add to going forward.", + "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.", {}, { b: (sub) => {sub} }, )} {_t( - "Connect this session to key backup before signing out to avoid " + - "losing any keys that may only be on this session.", + "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.", )} @@ -382,9 +379,7 @@ export default class SecureBackupPanel extends React.PureComponent<{}, IState> { <> {_t( - "Back up your encryption keys with your account data in case you " + - "lose access to your sessions. Your keys will be secured with a " + - "unique Security Key.", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.", )} {statusDescription} diff --git a/src/components/views/settings/SetIdServer.tsx b/src/components/views/settings/SetIdServer.tsx index 2256556b5822..8c7df5cf185c 100644 --- a/src/components/views/settings/SetIdServer.tsx +++ b/src/components/views/settings/SetIdServer.tsx @@ -200,7 +200,7 @@ export default class SetIdServer extends React.Component { new: (sub) => {abbreviateUrl(idServer)}, }, ), - button: _t("Continue"), + button: _t("action|continue"), }); save = !!confirmed; } @@ -232,7 +232,7 @@ export default class SetIdServer extends React.Component {  {_t("Only continue if you trust the owner of the server.")}
    ), - button: _t("Continue"), + button: _t("action|continue"), }); return finished; } @@ -296,9 +296,7 @@ export default class SetIdServer extends React.Component {

    {_t( - "You should remove your personal data from identity server " + - " before disconnecting. Unfortunately, identity server " + - " is currently offline or cannot be reached.", + "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.", {}, messageElements, )} @@ -307,8 +305,7 @@ export default class SetIdServer extends React.Component {

    • {_t( - "check your browser plugins for anything that might block " + - "the identity server (such as Privacy Badger)", + "check your browser plugins for anything that might block the identity server (such as Privacy Badger)", )}
    • @@ -338,8 +335,7 @@ export default class SetIdServer extends React.Component {

      {_t( - "We recommend that you remove your email addresses and phone numbers " + - "from the identity server before disconnecting.", + "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.", )}

    @@ -388,15 +384,13 @@ export default class SetIdServer extends React.Component { if (idServerUrl) { sectionTitle = _t("Identity server (%(server)s)", { server: abbreviateUrl(idServerUrl) }); bodyText = _t( - "You are currently using to discover and be discoverable by " + - "existing contacts you know. You can change your identity server below.", + "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.", {}, { server: (sub) => {abbreviateUrl(idServerUrl)} }, ); if (this.props.missingTerms) { bodyText = _t( - "If you don't want to use to discover and be discoverable by existing " + - "contacts you know, enter another identity server below.", + "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.", {}, { server: (sub) => {abbreviateUrl(idServerUrl)} }, ); @@ -404,9 +398,7 @@ export default class SetIdServer extends React.Component { } else { sectionTitle = _t("Identity server"); bodyText = _t( - "You are not currently using an identity server. " + - "To discover and be discoverable by existing contacts you know, " + - "add one below.", + "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.", ); } @@ -414,15 +406,11 @@ export default class SetIdServer extends React.Component { if (idServerUrl) { let discoButtonContent: React.ReactNode = _t("Disconnect"); let discoBodyText = _t( - "Disconnecting from your identity server will mean you " + - "won't be discoverable by other users and you won't be " + - "able to invite others by email or phone.", + "Disconnecting from your identity server will mean you won't be discoverable by other users and you won't be able to invite others by email or phone.", ); if (this.props.missingTerms) { discoBodyText = _t( - "Using an identity server is optional. If you choose not to " + - "use an identity server, you won't be discoverable by other users " + - "and you won't be able to invite others by email or phone.", + "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.", ); discoButtonContent = _t("Do not use an identity server"); } diff --git a/src/components/views/settings/SetIntegrationManager.tsx b/src/components/views/settings/SetIntegrationManager.tsx index 0d8767befa07..0e1edb2e455a 100644 --- a/src/components/views/settings/SetIntegrationManager.tsx +++ b/src/components/views/settings/SetIntegrationManager.tsx @@ -63,7 +63,7 @@ export default class SetIntegrationManager extends React.Component(%(serverName)s) to manage bots, widgets, " + "and sticker packs.", + "Use an integration manager (%(serverName)s) to manage bots, widgets, and sticker packs.", { serverName: currentManager.name }, { b: (sub) => {sub} }, ); @@ -92,8 +92,7 @@ export default class SetIntegrationManager extends React.Component{bodyText} {_t( - "Integration managers receive configuration data, and can modify widgets, " + - "send room invites, and set power levels on your behalf.", + "Integration managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.", )} diff --git a/src/components/views/settings/SpellCheckSettings.tsx b/src/components/views/settings/SpellCheckSettings.tsx index eaa83c1e2d2c..32e50d9ad2be 100644 --- a/src/components/views/settings/SpellCheckSettings.tsx +++ b/src/components/views/settings/SpellCheckSettings.tsx @@ -47,7 +47,7 @@ export class ExistingSpellCheckLanguage extends React.Component {this.props.language} - {_t("Remove")} + {_t("action|remove")}
    ); diff --git a/src/components/views/settings/account/EmailAddresses.tsx b/src/components/views/settings/account/EmailAddresses.tsx index 8d1200a17264..cfa338438285 100644 --- a/src/components/views/settings/account/EmailAddresses.tsx +++ b/src/components/views/settings/account/EmailAddresses.tsx @@ -44,6 +44,10 @@ that is available. interface IExistingEmailAddressProps { email: ThirdPartyIdentifier; onRemoved: (emails: ThirdPartyIdentifier) => void; + /** + * Disallow removal of this email address when truthy + */ + disabled?: boolean; } interface IExistingEmailAddressState { @@ -103,7 +107,7 @@ export class ExistingEmailAddress extends React.Component - {_t("Remove")} + {_t("action|remove")} {this.props.email.address} - - {_t("Remove")} + + {_t("action|remove")} ); @@ -132,6 +136,10 @@ export class ExistingEmailAddress extends React.Component void; + /** + * Adding or removing emails is disabled when truthy + */ + disabled?: boolean; } interface IState { @@ -248,11 +256,18 @@ export default class EmailAddresses extends React.Component { public render(): React.ReactNode { const existingEmailElements = this.props.emails.map((e) => { - return ; + return ( + + ); }); let addButton = ( - + {_t("Add")} ); @@ -269,7 +284,7 @@ export default class EmailAddresses extends React.Component { kind="primary" disabled={this.state.continueDisabled} > - {_t("Continue")} + {_t("action|continue")} ); @@ -283,7 +298,7 @@ export default class EmailAddresses extends React.Component { type="text" label={_t("Email Address")} autoComplete="email" - disabled={this.state.verifying} + disabled={this.props.disabled || this.state.verifying} value={this.state.newEmailAddress} onChange={this.onChangeNewEmailAddress} /> diff --git a/src/components/views/settings/account/PhoneNumbers.tsx b/src/components/views/settings/account/PhoneNumbers.tsx index cfd7113219f1..4b027e171dfb 100644 --- a/src/components/views/settings/account/PhoneNumbers.tsx +++ b/src/components/views/settings/account/PhoneNumbers.tsx @@ -39,6 +39,10 @@ This is a copy/paste of EmailAddresses, mostly. interface IExistingPhoneNumberProps { msisdn: ThirdPartyIdentifier; onRemoved: (phoneNumber: ThirdPartyIdentifier) => void; + /** + * Disable removing phone number + */ + disabled?: boolean; } interface IExistingPhoneNumberState { @@ -98,7 +102,7 @@ export class ExistingPhoneNumber extends React.Component - {_t("Remove")} + {_t("action|remove")} +{this.props.msisdn.address} - - {_t("Remove")} + + {_t("action|remove")} ); @@ -127,6 +131,10 @@ export class ExistingPhoneNumber extends React.Component void; + /** + * Adding or removing phone numbers is disabled when truthy + */ + disabled?: boolean; } interface IState { @@ -193,7 +201,7 @@ export default class PhoneNumbers extends React.Component { logger.error("Unable to add phone number " + phoneNumber + " " + err); this.setState({ verifying: false, continueDisabled: false, addTask: null }); Modal.createDialog(ErrorDialog, { - title: _t("Error"), + title: _t("common|error"), description: extractErrorMessageFromError(err, _t("Operation failed")), }); }); @@ -251,11 +259,18 @@ export default class PhoneNumbers extends React.Component { public render(): React.ReactNode { const existingPhoneElements = this.props.msisdns.map((p) => { - return ; + return ( + + ); }); let addVerifySection = ( - + {_t("Add")} ); @@ -265,8 +280,7 @@ export default class PhoneNumbers extends React.Component {
    {_t( - "A text message has been sent to +%(msisdn)s. " + - "Please enter the verification code it contains.", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.", { msisdn: msisdn }, )}
    @@ -277,16 +291,20 @@ export default class PhoneNumbers extends React.Component { type="text" label={_t("Verification code")} autoComplete="off" - disabled={this.state.continueDisabled} + disabled={this.props.disabled || this.state.continueDisabled} value={this.state.newPhoneNumberCode} onChange={this.onChangeNewPhoneNumberCode} /> - {_t("Continue")} + {_t("action|continue")}
    @@ -313,7 +331,7 @@ export default class PhoneNumbers extends React.Component { type="text" label={_t("Phone Number")} autoComplete="tel-national" - disabled={this.state.verifying} + disabled={this.props.disabled || this.state.verifying} prefixComponent={phoneCountry} value={this.state.newPhoneNumber} onChange={this.onChangeNewPhoneNumber} diff --git a/src/components/views/settings/devices/DeviceDetailHeading.tsx b/src/components/views/settings/devices/DeviceDetailHeading.tsx index bcbd95ecfe29..8a28c85fd42c 100644 --- a/src/components/views/settings/devices/DeviceDetailHeading.tsx +++ b/src/components/views/settings/devices/DeviceDetailHeading.tsx @@ -84,14 +84,12 @@ const DeviceNameEditor: React.FC void }> = ({ devic <>

    {_t( - `Other users in direct messages and rooms that you join ` + - `are able to view a full list of your sessions.`, + "Other users in direct messages and rooms that you join are able to view a full list of your sessions.", )}

    {_t( - `This provides them with confidence that they are really speaking to you, ` + - `but it also means they can see the session name you enter here.`, + "This provides them with confidence that they are really speaking to you, but it also means they can see the session name you enter here.", )}

    @@ -111,7 +109,7 @@ const DeviceNameEditor: React.FC void }> = ({ devic data-testid="device-rename-submit-cta" disabled={isLoading} > - {_t("Save")} + {_t("action|save")}

    {_t( - `This means that you have all the keys needed to unlock your encrypted messages ` + - `and confirm to other users that you trust this session.`, + "This means that you have all the keys needed to unlock your encrypted messages and confirm to other users that you trust this session.", )}

    @@ -60,8 +59,7 @@ const securityCardContent: Record<

    {_t( - `You should make especially certain that you recognise these sessions ` + - `as they could represent an unauthorised use of your account.`, + "You should make especially certain that you recognise these sessions as they could represent an unauthorised use of your account.", )}

    @@ -98,8 +96,7 @@ const securityCardContent: Record<

    {_t( - `Removing inactive sessions improves security and performance, ` + - `and makes it easier for you to identify if a new session is suspicious.`, + "Removing inactive sessions improves security and performance, and makes it easier for you to identify if a new session is suspicious.", )}

    diff --git a/src/components/views/settings/devices/FilteredDeviceList.tsx b/src/components/views/settings/devices/FilteredDeviceList.tsx index 4e864530607a..2b74d88613ed 100644 --- a/src/components/views/settings/devices/FilteredDeviceList.tsx +++ b/src/components/views/settings/devices/FilteredDeviceList.tsx @@ -31,6 +31,7 @@ import { DevicesState } from "./useOwnDevices"; import FilteredDeviceListHeader from "./FilteredDeviceListHeader"; import Spinner from "../../elements/Spinner"; import { DeviceSecurityLearnMore } from "./DeviceSecurityLearnMore"; +import DeviceTile from "./DeviceTile"; interface Props { devices: DevicesDictionary; @@ -48,6 +49,11 @@ interface Props { setPushNotifications: (deviceId: string, enabled: boolean) => Promise; setSelectedDeviceIds: (deviceIds: ExtendedDevice["device_id"][]) => void; supportsMSC3881?: boolean | undefined; + /** + * Only allow sessions to be signed out individually + * Removes checkboxes and multi selection header + */ + disableMultipleSignout?: boolean; } const isDeviceSelected = ( @@ -82,8 +88,7 @@ const securityCardContent: Record< [DeviceSecurityVariation.Unverified]: { title: _t("Unverified sessions"), description: _t( - `Verify your sessions for enhanced secure messaging or ` + - `sign out from those you don't recognize or use anymore.`, + "Verify your sessions for enhanced secure messaging or sign out from those you don't recognize or use anymore.", ), }, [DeviceSecurityVariation.Unverifiable]: { @@ -93,7 +98,7 @@ const securityCardContent: Record< [DeviceSecurityVariation.Inactive]: { title: _t("Inactive sessions"), description: _t( - `Consider signing out from old sessions ` + `(%(inactiveAgeDays)s days or older) you don't use anymore.`, + "Consider signing out from old sessions (%(inactiveAgeDays)s days or older) you don't use anymore.", { inactiveAgeDays: INACTIVE_DEVICE_AGE_DAYS }, ), }, @@ -178,6 +183,7 @@ const DeviceListItem: React.FC<{ toggleSelected: () => void; setPushNotifications: (deviceId: string, enabled: boolean) => Promise; supportsMSC3881?: boolean | undefined; + isSelectDisabled?: boolean; }> = ({ device, pusher, @@ -192,33 +198,47 @@ const DeviceListItem: React.FC<{ setPushNotifications, toggleSelected, supportsMSC3881, -}) => ( -
  • - + isSelectDisabled, +}) => { + const tileContent = ( + <> {isSigningOut && } - - {isExpanded && ( - - )} -
  • -); + + ); + return ( +
  • + {isSelectDisabled ? ( + + {tileContent} + + ) : ( + + {tileContent} + + )} + {isExpanded && ( + + )} +
  • + ); +}; /** * Filtered list of devices @@ -242,6 +262,7 @@ export const FilteredDeviceList = forwardRef( setPushNotifications, setSelectedDeviceIds, supportsMSC3881, + disableMultipleSignout, }: Props, ref: ForwardedRef, ) => { @@ -302,6 +323,7 @@ export const FilteredDeviceList = forwardRef( selectedDeviceCount={selectedDeviceIds.length} isAllSelected={isAllSelected} toggleSelectAll={toggleSelectAll} + isSelectDisabled={disableMultipleSignout} > {selectedDeviceIds.length ? ( <> @@ -351,6 +373,7 @@ export const FilteredDeviceList = forwardRef( isExpanded={expandedDeviceIds.includes(device.device_id)} isSigningOut={signingOutDeviceIds.includes(device.device_id)} isSelected={isDeviceSelected(device.device_id, selectedDeviceIds)} + isSelectDisabled={disableMultipleSignout} onDeviceExpandToggle={() => onDeviceExpandToggle(device.device_id)} onSignOutDevice={() => onSignOutDevices([device.device_id])} saveDeviceName={(deviceName: string) => saveDeviceName(device.device_id, deviceName)} diff --git a/src/components/views/settings/devices/FilteredDeviceListHeader.tsx b/src/components/views/settings/devices/FilteredDeviceListHeader.tsx index ffbe8a2b6c00..c3e917cdd18e 100644 --- a/src/components/views/settings/devices/FilteredDeviceListHeader.tsx +++ b/src/components/views/settings/devices/FilteredDeviceListHeader.tsx @@ -24,6 +24,7 @@ import TooltipTarget from "../../elements/TooltipTarget"; interface Props extends Omit, "className"> { selectedDeviceCount: number; isAllSelected: boolean; + isSelectDisabled?: boolean; toggleSelectAll: () => void; children?: React.ReactNode; } @@ -31,6 +32,7 @@ interface Props extends Omit, "className"> { const FilteredDeviceListHeader: React.FC = ({ selectedDeviceCount, isAllSelected, + isSelectDisabled, toggleSelectAll, children, ...rest @@ -38,16 +40,18 @@ const FilteredDeviceListHeader: React.FC = ({ const checkboxLabel = isAllSelected ? _t("Deselect all") : _t("Select all"); return (
    - - - + {!isSelectDisabled && ( + + + + )} {selectedDeviceCount > 0 ? _t("%(count)s sessions selected", { count: selectedDeviceCount }) diff --git a/src/components/views/settings/devices/LoginWithQRSection.tsx b/src/components/views/settings/devices/LoginWithQRSection.tsx index 1e0ddf70c22f..eb8882bf35be 100644 --- a/src/components/views/settings/devices/LoginWithQRSection.tsx +++ b/src/components/views/settings/devices/LoginWithQRSection.tsx @@ -56,8 +56,7 @@ export default class LoginWithQRSection extends React.Component {

    {_t( - "You can use this device to sign in a new device with a QR code. You will need to " + - "scan the QR code shown on this device with your device that's signed out.", + "You can use this device to sign in a new device with a QR code. You will need to scan the QR code shown on this device with your device that's signed out.", )}

    diff --git a/src/components/views/settings/devices/OtherSessionsSectionHeading.tsx b/src/components/views/settings/devices/OtherSessionsSectionHeading.tsx index f2ab2ac32071..c8a066ce5a4c 100644 --- a/src/components/views/settings/devices/OtherSessionsSectionHeading.tsx +++ b/src/components/views/settings/devices/OtherSessionsSectionHeading.tsx @@ -20,6 +20,7 @@ import { _t } from "../../../../languageHandler"; import { KebabContextMenu } from "../../context_menus/KebabContextMenu"; import { SettingsSubsectionHeading } from "../shared/SettingsSubsectionHeading"; import { IconizedContextMenuOption } from "../../context_menus/IconizedContextMenu"; +import { filterBoolean } from "../../../../utils/arrays"; interface Props { // total count of other sessions @@ -27,7 +28,8 @@ interface Props { // not affected by filters otherSessionsCount: number; disabled?: boolean; - signOutAllOtherSessions: () => void; + // not provided when sign out all other sessions is not available + signOutAllOtherSessions?: () => void; } export const OtherSessionsSectionHeading: React.FC = ({ @@ -35,22 +37,26 @@ export const OtherSessionsSectionHeading: React.FC = ({ disabled, signOutAllOtherSessions, }) => { - const menuOptions = [ - , - ]; + const menuOptions = filterBoolean([ + signOutAllOtherSessions ? ( + + ) : null, + ]); return ( - + {!!menuOptions.length && ( + + )} ); }; diff --git a/src/components/views/settings/devices/SecurityRecommendations.tsx b/src/components/views/settings/devices/SecurityRecommendations.tsx index 2805f0e7cb1f..a9b848e3f41f 100644 --- a/src/components/views/settings/devices/SecurityRecommendations.tsx +++ b/src/components/views/settings/devices/SecurityRecommendations.tsx @@ -63,8 +63,7 @@ const SecurityRecommendations: React.FC = ({ devices, currentDeviceId, go description={ <> {_t( - `Verify your sessions for enhanced secure messaging` + - ` or sign out from those you don't recognize or use anymore.`, + "Verify your sessions for enhanced secure messaging or sign out from those you don't recognize or use anymore.", )} @@ -88,8 +87,7 @@ const SecurityRecommendations: React.FC = ({ devices, currentDeviceId, go description={ <> {_t( - `Consider signing out from old sessions ` + - `(%(inactiveAgeDays)s days or older) you don't use anymore.`, + "Consider signing out from old sessions (%(inactiveAgeDays)s days or older) you don't use anymore.", { inactiveAgeDays }, )} diff --git a/src/components/views/settings/devices/deleteDevices.tsx b/src/components/views/settings/devices/deleteDevices.tsx index b1f527187d33..7d38448bda32 100644 --- a/src/components/views/settings/devices/deleteDevices.tsx +++ b/src/components/views/settings/devices/deleteDevices.tsx @@ -40,7 +40,7 @@ export const deleteDevicesWithInteractiveAuth = async ( try { await makeDeleteRequest(matrixClient, deviceIds)(null); // no interactive auth needed - onFinished(true, undefined); + await onFinished(true, undefined); } catch (error) { if (!(error instanceof MatrixError) || error.httpStatus !== 401 || !error.data?.flows) { // doesn't look like an interactive-auth failure diff --git a/src/components/views/settings/discovery/EmailAddresses.tsx b/src/components/views/settings/discovery/EmailAddresses.tsx index 72a77ffc0606..f8b5ca83b678 100644 --- a/src/components/views/settings/discovery/EmailAddresses.tsx +++ b/src/components/views/settings/discovery/EmailAddresses.tsx @@ -46,6 +46,7 @@ TODO: Reduce all the copying between account vs. discovery components. interface IEmailAddressProps { email: ThirdPartyIdentifier; + disabled?: boolean; } interface IEmailAddressState { @@ -194,6 +195,7 @@ export class EmailAddress extends React.Component {_t("Revoke")} @@ -204,6 +206,7 @@ export class EmailAddress extends React.Component {_t("action|share")} @@ -221,6 +224,7 @@ export class EmailAddress extends React.Component { @@ -230,7 +234,7 @@ export default class EmailAddresses extends React.Component { content = ; } else if (this.props.emails.length > 0) { content = this.props.emails.map((e) => { - return ; + return ; }); } diff --git a/src/components/views/settings/discovery/PhoneNumbers.tsx b/src/components/views/settings/discovery/PhoneNumbers.tsx index f0df8c2242dd..3a67061cbf2c 100644 --- a/src/components/views/settings/discovery/PhoneNumbers.tsx +++ b/src/components/views/settings/discovery/PhoneNumbers.tsx @@ -38,6 +38,7 @@ This is a copy/paste of EmailAddresses, mostly. interface IPhoneNumberProps { msisdn: ThirdPartyIdentifier; + disabled?: boolean; } interface IPhoneNumberState { @@ -202,6 +203,7 @@ export class PhoneNumber extends React.Component {_t("Revoke")} @@ -212,6 +214,7 @@ export class PhoneNumber extends React.Component {_t("action|share")} @@ -230,6 +233,7 @@ export class PhoneNumber extends React.Component { @@ -239,7 +243,7 @@ export default class PhoneNumbers extends React.Component { content = ; } else if (this.props.msisdns.length > 0) { content = this.props.msisdns.map((e) => { - return ; + return ; }); } diff --git a/src/components/views/settings/notifications/NotificationSettings2.tsx b/src/components/views/settings/notifications/NotificationSettings2.tsx index 657783fae33a..d6fc97a3d444 100644 --- a/src/components/views/settings/notifications/NotificationSettings2.tsx +++ b/src/components/views/settings/notifications/NotificationSettings2.tsx @@ -110,11 +110,7 @@ export default function NotificationSettings2(): JSX.Element { onAction={() => reconcile(model!)} > {_t( - "Update:" + - "We’ve simplified Notifications Settings to make options easier to find. " + - "Some custom settings you’ve chosen in the past are not shown here, but they’re still active. " + - "If you proceed, some of your settings may change. " + - "Learn more", + "Update:We’ve simplified Notifications Settings to make options easier to find. Some custom settings you’ve chosen in the past are not shown here, but they’re still active. If you proceed, some of your settings may change. Learn more", {}, { strong: boldText, diff --git a/src/components/views/settings/tabs/room/AdvancedRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/AdvancedRoomSettingsTab.tsx index f45f0bb5f228..85479ca45bdf 100644 --- a/src/components/views/settings/tabs/room/AdvancedRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/AdvancedRoomSettingsTab.tsx @@ -120,9 +120,7 @@ export default class AdvancedRoomSettingsTab extends React.Component

    {_t( - "Warning: upgrading a room will not automatically migrate room members " + - "to the new version of the room. We'll post a link to the new room in the old " + - "version of the room - room members will have to click this link to join the new room.", + "Warning: upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.", {}, { b: (sub) => {sub}, diff --git a/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx b/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx index 03c67604ebd9..03d52089021a 100644 --- a/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx @@ -63,7 +63,7 @@ export default class BridgeSettingsTab extends React.Component {

    {_t( - "This room is bridging messages to the following platforms. " + "Learn more.", + "This room is bridging messages to the following platforms. Learn more.", {}, { // TODO: We don't have this link yet: this will prevent the translators @@ -85,7 +85,7 @@ export default class BridgeSettingsTab extends React.Component { content = (

    {_t( - "This room isn't bridging messages to any platforms. " + "Learn more.", + "This room isn't bridging messages to any platforms. Learn more.", {}, { // TODO: We don't have this link yet: this will prevent the translators diff --git a/src/components/views/settings/tabs/room/GeneralRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/GeneralRoomSettingsTab.tsx index a79a3fea56b8..8dc361bea704 100644 --- a/src/components/views/settings/tabs/room/GeneralRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/GeneralRoomSettingsTab.tsx @@ -75,9 +75,9 @@ export default class GeneralRoomSettingsTab extends React.Component + - {_t("Leave room")} + {_t("action|leave_room")} ); diff --git a/src/components/views/settings/tabs/room/NotificationSettingsTab.tsx b/src/components/views/settings/tabs/room/NotificationSettingsTab.tsx index 99ce88637eb2..7ac0bc64b1ca 100644 --- a/src/components/views/settings/tabs/room/NotificationSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/NotificationSettingsTab.tsx @@ -221,8 +221,7 @@ export default class NotificationsSettingsTab extends React.Component {_t( - "Get notified only with mentions and keywords " + - "as set up in your settings", + "Get notified only with mentions and keywords as set up in your settings", {}, { a: (sub) => ( @@ -305,7 +304,7 @@ export default class NotificationsSettingsTab extends React.Component - {_t("Save")} + {_t("action|save")}

    diff --git a/src/components/views/settings/tabs/room/PeopleRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/PeopleRoomSettingsTab.tsx index e861571ff1b7..d02a11082e62 100644 --- a/src/components/views/settings/tabs/room/PeopleRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/PeopleRoomSettingsTab.tsx @@ -150,7 +150,7 @@ export const PeopleRoomSettingsTab: VFC<{ room: Room }> = ({ room }) => { return ( - + {knockMembers.length ? ( knockMembers.map((knockMember) => ( diff --git a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx index 645eaf216fc0..33cfca4b76ad 100644 --- a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx @@ -20,7 +20,7 @@ import { logger } from "matrix-js-sdk/src/logger"; import { throttle, get } from "lodash"; import { compare } from "matrix-js-sdk/src/utils"; -import { _t, _td } from "../../../../../languageHandler"; +import { _t, _td, TranslationKey } from "../../../../../languageHandler"; import AccessibleButton from "../../../elements/AccessibleButton"; import Modal from "../../../../../Modal"; import ErrorDialog from "../../../dialogs/ErrorDialog"; @@ -94,7 +94,7 @@ export class BannedUser extends React.Component { this.context.unban(this.props.member.roomId, this.props.member.userId).catch((err) => { logger.error("Failed to unban: " + err); Modal.createDialog(ErrorDialog, { - title: _t("Error"), + title: _t("common|error"), description: _t("Failed to unban"), }); }); @@ -207,8 +207,7 @@ export default class RolesRoomSettingsTab extends React.Component { Modal.createDialog(ErrorDialog, { title: _t("Error changing power level requirement"), description: _t( - "An error occurred changing the room's power level requirements. Ensure you have sufficient " + - "permissions and try again.", + "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.", ), }); }); @@ -233,8 +232,7 @@ export default class RolesRoomSettingsTab extends React.Component { Modal.createDialog(ErrorDialog, { title: _t("Error changing power level"), description: _t( - "An error occurred changing the user's power level. Ensure you have sufficient " + - "permissions and try again.", + "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.", ), }); }); @@ -249,7 +247,7 @@ export default class RolesRoomSettingsTab extends React.Component { const plContent = plEvent ? plEvent.getContent() || {} : {}; const canChangeLevels = room.currentState.mayClientSendStateEvent(EventType.RoomPowerLevels, client); - const plEventsToLabels: Record = { + const plEventsToLabels: Record = { // These will be translated for us later. [EventType.RoomAvatar]: isSpaceRoom ? _td("Change space avatar") : _td("Change room avatar"), [EventType.RoomName]: isSpaceRoom ? _td("Change space name") : _td("Change room name"), @@ -458,10 +456,11 @@ export default class RolesRoomSettingsTab extends React.Component { return null; } - let label = plEventsToLabels[eventType]; - if (label) { + const translationKeyForEvent = plEventsToLabels[eventType]; + let label: string; + if (translationKeyForEvent) { const brand = SdkConfig.get("element_call").brand ?? DEFAULTS.element_call.brand; - label = _t(label, { brand }); + label = _t(translationKeyForEvent, { brand }); } else { label = _t("Send %(eventType)s events", { eventType }); } diff --git a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.tsx index 354d2abc446b..83d9094e5032 100644 --- a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.tsx @@ -122,11 +122,7 @@ export default class SecurityRoomSettingsTab extends React.Component {" "} {_t( - "It's not recommended to add encryption to public rooms. " + - "Anyone can find and join public rooms, so anyone can read messages in them. " + - "You'll get none of the benefits of encryption, and you won't be able to turn it " + - "off later. Encrypting messages in a public room will make receiving and sending " + - "messages slower.", + "It's not recommended to add encryption to public rooms. Anyone can find and join public rooms, so anyone can read messages in them. You'll get none of the benefits of encryption, and you won't be able to turn it off later. Encrypting messages in a public room will make receiving and sending messages slower.", undefined, { b: (sub) => {sub} }, )}{" "} @@ -134,8 +130,7 @@ export default class SecurityRoomSettingsTab extends React.Component {" "} {_t( - "To avoid these issues, create a new encrypted room for " + - "the conversation you plan to have.", + "To avoid these issues, create a new encrypted room for the conversation you plan to have.", undefined, { a: (sub) => ( @@ -165,9 +160,7 @@ export default class SecurityRoomSettingsTab extends React.ComponentLearn more about encryption.", + "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.", {}, { a: (sub) => {sub}, @@ -322,10 +315,7 @@ export default class SecurityRoomSettingsTab extends React.Component {" "} {_t( - "It's not recommended to make encrypted rooms public. " + - "It will mean anyone can find and join the room, so anyone can read messages. " + - "You'll get none of the benefits of encryption. Encrypting messages in a public " + - "room will make receiving and sending messages slower.", + "It's not recommended to make encrypted rooms public. It will mean anyone can find and join the room, so anyone can read messages. You'll get none of the benefits of encryption. Encrypting messages in a public room will make receiving and sending messages slower.", undefined, { b: (sub) => {sub} }, )}{" "} @@ -333,8 +323,7 @@ export default class SecurityRoomSettingsTab extends React.Component {" "} {_t( - "To avoid these issues, create a new public room for the conversation " + - "you plan to have.", + "To avoid these issues, create a new public room for the conversation you plan to have.", undefined, { a: (sub) => ( @@ -398,8 +387,7 @@ export default class SecurityRoomSettingsTab extends React.Component

    {_t( - "People with supported clients will be able to join " + - "the room without having a registered account.", + "People with supported clients will be able to join the room without having a registered account.", )}

    diff --git a/src/components/views/settings/tabs/room/VoipRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/VoipRoomSettingsTab.tsx index f1704f6fe467..212a18364fc4 100644 --- a/src/components/views/settings/tabs/room/VoipRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/VoipRoomSettingsTab.tsx @@ -82,10 +82,9 @@ const ElementCallSwitch: React.FC = ({ room }) => { void; @@ -90,6 +91,7 @@ interface IState { canChangePassword: boolean; idServerName?: string; externalAccountManagementUrl?: string; + canMake3pidChanges: boolean; } export default class GeneralUserSettingsTab extends React.Component { @@ -119,6 +121,7 @@ export default class GeneralUserSettingsTab extends React.Component(cli.getClientWellKnown()); - const externalAccountManagementUrl = delegatedAuthConfig?.account; + const externalAccountManagementUrl = getDelegatedAuthAccountUrl(cli.getClientWellKnown()); + // https://spec.matrix.org/v1.7/client-server-api/#m3pid_changes-capability + // We support as far back as v1.1 which doesn't have m.3pid_changes + // so the behaviour for when it is missing has to be assume true + const canMake3pidChanges = !capabilities["m.3pid_changes"] || capabilities["m.3pid_changes"].enabled === true; - this.setState({ canChangePassword, externalAccountManagementUrl }); + this.setState({ canChangePassword, externalAccountManagementUrl, canMake3pidChanges }); } private async getThreepidState(): Promise { @@ -303,7 +309,7 @@ export default class GeneralUserSettingsTab extends React.Component ) : ( - + ); const msisdns = this.state.loading3pids ? ( ) : ( - + ); threepidSection = ( <> @@ -441,8 +455,7 @@ export default class GeneralUserSettingsTab extends React.Component {_t( - "Agree to the identity server (%(serverName)s) Terms of Service to " + - "allow yourself to be discoverable by email address or phone number.", + "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.", { serverName: this.state.idServerName }, )} @@ -463,8 +476,16 @@ export default class GeneralUserSettingsTab extends React.Component - - + + ) : null; @@ -505,7 +526,8 @@ export default class GeneralUserSettingsTab extends React.Component
    • {_t( - "The default cover photo is © " + - "Jesús Roncero used under the terms of CC-BY-SA 4.0.", + "The default cover photo is © Jesús Roncero used under the terms of CC-BY-SA 4.0.", {}, { photo: (sub) => ( @@ -166,8 +165,7 @@ export default class HelpUserSettingsTab extends React.Component
    • {_t( - "The twemoji-colr font is © Mozilla Foundation " + - "used under the terms of Apache 2.0.", + "The twemoji-colr font is © Mozilla Foundation used under the terms of Apache 2.0.", {}, { colr: (sub) => ( @@ -194,9 +192,7 @@ export default class HelpUserSettingsTab extends React.Component
    • {_t( - "The Twemoji emoji art is © " + - "Twitter, Inc and other contributors used under the terms of " + - "CC-BY 4.0.", + "The Twemoji emoji art is © Twitter, Inc and other contributors used under the terms of CC-BY 4.0.", {}, { twemoji: (sub) => ( @@ -244,8 +240,7 @@ export default class HelpUserSettingsTab extends React.Component faqText = (
      {_t( - "For help with using %(brand)s, click here or start a chat with our " + - "bot using the button below.", + "For help with using %(brand)s, click here or start a chat with our bot using the button below.", { brand, }, @@ -284,16 +279,11 @@ export default class HelpUserSettingsTab extends React.Component <> {_t( - "If you've submitted a bug via GitHub, debug logs can help " + - "us track down the problem. ", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. ", )} {_t( - "Debug logs contain application " + - "usage data including your username, the IDs or aliases of " + - "the rooms you have visited, which UI elements you " + - "last interacted with, and the usernames of other users. " + - "They do not contain messages.", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.", )} } @@ -303,8 +293,7 @@ export default class HelpUserSettingsTab extends React.Component {_t( - "To report a Matrix-related security issue, please read the Matrix.org " + - "Security Disclosure Policy.", + "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.", {}, { a: (sub) => ( @@ -369,8 +358,7 @@ export default class HelpUserSettingsTab extends React.Component {_t("Access Token")} {_t( - "Your access token gives full access to your account." + - " Do not share it with anyone.", + "Your access token gives full access to your account. Do not share it with anyone.", )} this.context.getAccessToken()}> diff --git a/src/components/views/settings/tabs/user/LabsUserSettingsTab.tsx b/src/components/views/settings/tabs/user/LabsUserSettingsTab.tsx index da6f614780f7..d1f739301868 100644 --- a/src/components/views/settings/tabs/user/LabsUserSettingsTab.tsx +++ b/src/components/views/settings/tabs/user/LabsUserSettingsTab.tsx @@ -113,9 +113,7 @@ export default class LabsUserSettingsTab extends React.Component<{}> { {_t( - "What's next for %(brand)s? " + - "Labs are the best way to get things early, " + - "test out new features and help shape them before they actually launch.", + "What's next for %(brand)s? Labs are the best way to get things early, test out new features and help shape them before they actually launch.", { brand: SdkConfig.get("brand") }, )} @@ -126,11 +124,7 @@ export default class LabsUserSettingsTab extends React.Component<{}> { {_t( - "Feeling experimental? " + - "Try out our latest ideas in development. " + - "These features are not finalised; " + - "they may be unstable, may change, or may be dropped altogether. " + - "Learn more.", + "Feeling experimental? Try out our latest ideas in development. These features are not finalised; they may be unstable, may change, or may be dropped altogether. Learn more.", {}, { a: (sub) => { diff --git a/src/components/views/settings/tabs/user/MjolnirUserSettingsTab.tsx b/src/components/views/settings/tabs/user/MjolnirUserSettingsTab.tsx index c0cbbeebac88..2567cef4d457 100644 --- a/src/components/views/settings/tabs/user/MjolnirUserSettingsTab.tsx +++ b/src/components/views/settings/tabs/user/MjolnirUserSettingsTab.tsx @@ -185,7 +185,7 @@ export default class MjolnirUserSettingsTab extends React.Component<{}, IState> onClick={() => this.removePersonalRule(rule)} disabled={this.state.busy} > - {_t("Remove")} + {_t("action|remove")}   {rule.entity} @@ -259,28 +259,21 @@ export default class MjolnirUserSettingsTab extends React.Component<{}, IState> {_t("⚠ These settings are meant for advanced users.")}

      {_t( - "Add users and servers you want to ignore here. Use asterisks " + - "to have %(brand)s match any characters. For example, @bot:* " + - "would ignore all users that have the name 'bot' on any server.", + "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.", { brand }, { code: (s) => {s} }, )}

      {_t( - "Ignoring people is done through ban lists which contain rules for " + - "who to ban. Subscribing to a ban list means the users/servers blocked by " + - "that list will be hidden from you.", + "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.", )}

      {_t( - "Your server admin has disabled end-to-end encryption by default " + - "in private rooms & Direct Messages.", + "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.", )}
      ); @@ -313,20 +312,20 @@ export default class SecurityUserSettingsTab extends React.Component { showAnalyticsLearnMoreDialog({ - primaryButton: _t("OK"), + primaryButton: _t("action|ok"), hasCancel: false, }); }; privacySection = ( - {_t("Learn more")} + {_t("action|learn_more")} {PosthogAnalytics.instance.isEnabled() && ( diff --git a/src/components/views/settings/tabs/user/SessionManagerTab.tsx b/src/components/views/settings/tabs/user/SessionManagerTab.tsx index 14d25c14fab1..5315b4c994b7 100644 --- a/src/components/views/settings/tabs/user/SessionManagerTab.tsx +++ b/src/components/views/settings/tabs/user/SessionManagerTab.tsx @@ -39,6 +39,8 @@ import QuestionDialog from "../../../dialogs/QuestionDialog"; import { FilterVariation } from "../../devices/filter"; import { OtherSessionsSectionHeading } from "../../devices/OtherSessionsSectionHeading"; import { SettingsSection } from "../../shared/SettingsSection"; +import { getDelegatedAuthAccountUrl } from "../../../../../utils/oidc/getDelegatedAuthAccountUrl"; +import { OidcLogoutDialog } from "../../../dialogs/oidc/OidcLogoutDialog"; const confirmSignOut = async (sessionsToSignOutCount: number): Promise => { const { finished } = Modal.createDialog(QuestionDialog, { @@ -60,9 +62,20 @@ const confirmSignOut = async (sessionsToSignOutCount: number): Promise return !!confirmed; }; +const confirmDelegatedAuthSignOut = async (delegatedAuthAccountUrl: string, deviceId: string): Promise => { + const { finished } = Modal.createDialog(OidcLogoutDialog, { + deviceId, + delegatedAuthAccountUrl, + }); + const [confirmed] = await finished; + + return !!confirmed; +}; + const useSignOut = ( matrixClient: MatrixClient, onSignoutResolvedCallback: () => Promise, + delegatedAuthAccountUrl?: string, ): { onSignOutCurrentDevice: () => void; onSignOutOtherDevices: (deviceIds: ExtendedDevice["device_id"][]) => Promise; @@ -84,19 +97,44 @@ const useSignOut = ( if (!deviceIds.length) { return; } - const userConfirmedSignout = await confirmSignOut(deviceIds.length); - if (!userConfirmedSignout) { + // we can only sign out exactly one OIDC-aware device at a time + // we should not encounter this + if (delegatedAuthAccountUrl && deviceIds.length !== 1) { + logger.warn("Unexpectedly tried to sign out multiple OIDC-aware devices."); return; } + // delegated auth logout flow confirms and signs out together + // so only confirm if we are NOT doing a delegated auth sign out + if (!delegatedAuthAccountUrl) { + const userConfirmedSignout = await confirmSignOut(deviceIds.length); + if (!userConfirmedSignout) { + return; + } + } + try { setSigningOutDeviceIds([...signingOutDeviceIds, ...deviceIds]); - await deleteDevicesWithInteractiveAuth(matrixClient, deviceIds, async (success): Promise => { + + const onSignOutFinished = async (success: boolean): Promise => { if (success) { await onSignoutResolvedCallback(); } setSigningOutDeviceIds(signingOutDeviceIds.filter((deviceId) => !deviceIds.includes(deviceId))); - }); + }; + + if (delegatedAuthAccountUrl) { + const [deviceId] = deviceIds; + try { + setSigningOutDeviceIds([...signingOutDeviceIds, deviceId]); + const success = await confirmDelegatedAuthSignOut(delegatedAuthAccountUrl, deviceId); + await onSignOutFinished(success); + } catch (error) { + logger.error("Error deleting OIDC-aware sessions", error); + } + } else { + await deleteDevicesWithInteractiveAuth(matrixClient, deviceIds, onSignOutFinished); + } } catch (error) { logger.error("Error deleting sessions", error); setSigningOutDeviceIds(signingOutDeviceIds.filter((deviceId) => !deviceIds.includes(deviceId))); @@ -130,6 +168,14 @@ const SessionManagerTab: React.FC = () => { const scrollIntoViewTimeoutRef = useRef(); const matrixClient = useContext(MatrixClientContext); + /** + * If we have a delegated auth account management URL, all sessions but the current session need to be managed in the + * delegated auth provider. + * See https://github.com/matrix-org/matrix-spec-proposals/pull/3824 + */ + const delegatedAuthAccountUrl = getDelegatedAuthAccountUrl(matrixClient.getClientWellKnown()); + const disableMultipleSignout = !!delegatedAuthAccountUrl; + const userId = matrixClient?.getUserId(); const currentUserMember = (userId && matrixClient?.getUser(userId)) || undefined; const clientVersions = useAsyncMemo(() => matrixClient.getVersions(), [matrixClient]); @@ -191,6 +237,7 @@ const SessionManagerTab: React.FC = () => { const { onSignOutCurrentDevice, onSignOutOtherDevices, signingOutDeviceIds } = useSignOut( matrixClient, onSignoutResolvedCallback, + delegatedAuthAccountUrl, ); useEffect( @@ -205,11 +252,12 @@ const SessionManagerTab: React.FC = () => { setSelectedDeviceIds([]); }, [filter, setSelectedDeviceIds]); - const signOutAllOtherSessions = shouldShowOtherSessions - ? () => { - onSignOutOtherDevices(Object.keys(otherDevices)); - } - : undefined; + const signOutAllOtherSessions = + shouldShowOtherSessions && !disableMultipleSignout + ? () => { + onSignOutOtherDevices(Object.keys(otherDevices)); + } + : undefined; const [signInWithQrMode, setSignInWithQrMode] = useState(); @@ -250,13 +298,12 @@ const SessionManagerTab: React.FC = () => { heading={ } description={_t( - `For best security, verify your sessions and sign out ` + - `from any session that you don't recognize or use anymore.`, + "For best security, verify your sessions and sign out from any session that you don't recognize or use anymore.", )} data-testid="other-sessions-section" stretchContent @@ -280,6 +327,7 @@ const SessionManagerTab: React.FC = () => { setPushNotifications={setPushNotifications} ref={filteredDeviceListRef} supportsMSC3881={supportsMSC3881} + disableMultipleSignout={disableMultipleSignout} /> )} diff --git a/src/components/views/settings/tabs/user/SidebarUserSettingsTab.tsx b/src/components/views/settings/tabs/user/SidebarUserSettingsTab.tsx index 3c9aaffe55fc..17e7b28365db 100644 --- a/src/components/views/settings/tabs/user/SidebarUserSettingsTab.tsx +++ b/src/components/views/settings/tabs/user/SidebarUserSettingsTab.tsx @@ -68,8 +68,7 @@ const SidebarUserSettingsTab: React.FC = () => { { > - {_t("People")} + {_t("common|people")} {_t("Group all your people in one place.")} diff --git a/src/components/views/spaces/QuickSettingsButton.tsx b/src/components/views/spaces/QuickSettingsButton.tsx index 3966b04c7d01..b3333af70b96 100644 --- a/src/components/views/spaces/QuickSettingsButton.tsx +++ b/src/components/views/spaces/QuickSettingsButton.tsx @@ -107,7 +107,7 @@ const QuickSettingsButton: React.FC<{ onChange={onMetaSpaceChangeFactory(MetaSpace.People, "WebQuickSettingsPinToSidebarCheckbox")} > - {_t("People")} + {_t("common|people")} - {!isPanelCollapsed ? _t("Settings") : null} + {!isPanelCollapsed ? _t("common|settings") : null} {contextMenu} diff --git a/src/components/views/spaces/SpaceChildrenPicker.tsx b/src/components/views/spaces/SpaceChildrenPicker.tsx index 0870dd1fe63e..4634855986fa 100644 --- a/src/components/views/spaces/SpaceChildrenPicker.tsx +++ b/src/components/views/spaces/SpaceChildrenPicker.tsx @@ -83,7 +83,7 @@ const SpecificChildrenPicker: React.FC = ({ ); })} {filteredRooms.length < 1 ? ( - {_t("No results")} + {_t("common|no_results")} ) : undefined}
    diff --git a/src/components/views/spaces/SpaceCreateMenu.tsx b/src/components/views/spaces/SpaceCreateMenu.tsx index 83e50858b597..6662018c9415 100644 --- a/src/components/views/spaces/SpaceCreateMenu.tsx +++ b/src/components/views/spaces/SpaceCreateMenu.tsx @@ -287,8 +287,7 @@ const SpaceCreateMenu: React.FC<{

    {_t("Create a space")}

    {_t( - "Spaces are a new way to group rooms and people. What kind of Space do you want to create? " + - "You can change this later.", + "Spaces are a new way to group rooms and people. What kind of Space do you want to create? You can change this later.", )}

    @@ -342,7 +341,7 @@ const SpaceCreateMenu: React.FC<{ /> - {busy ? _t("Creating…") : _t("Create")} + {busy ? _t("Creating…") : _t("action|create")} ); diff --git a/src/components/views/terms/InlineTermsAgreement.tsx b/src/components/views/terms/InlineTermsAgreement.tsx index 37e75c6ca72b..6460ba444890 100644 --- a/src/components/views/terms/InlineTermsAgreement.tsx +++ b/src/components/views/terms/InlineTermsAgreement.tsx @@ -126,7 +126,7 @@ export default class InlineTermsAgreement extends React.Component - {_t("Continue")} + {_t("action|continue")}
    ); diff --git a/src/components/views/user-onboarding/UserOnboardingHeader.tsx b/src/components/views/user-onboarding/UserOnboardingHeader.tsx index 977674c5b86c..008020224526 100644 --- a/src/components/views/user-onboarding/UserOnboardingHeader.tsx +++ b/src/components/views/user-onboarding/UserOnboardingHeader.tsx @@ -43,8 +43,7 @@ export function UserOnboardingHeader({ useCase }: Props): JSX.Element { case UseCase.PersonalMessaging: title = _t("Secure messaging for friends and family"); description = _t( - "With free end-to-end encrypted messaging, and unlimited voice and video calls, " + - "%(brand)s is a great way to stay in touch.", + "With free end-to-end encrypted messaging, and unlimited voice and video calls, %(brand)s is a great way to stay in touch.", { brand: SdkConfig.get("brand"), }, @@ -55,8 +54,7 @@ export function UserOnboardingHeader({ useCase }: Props): JSX.Element { case UseCase.WorkMessaging: title = _t("Secure messaging for work"); description = _t( - "With free end-to-end encrypted messaging, and unlimited voice and video calls," + - " %(brand)s is a great way to stay in touch.", + "With free end-to-end encrypted messaging, and unlimited voice and video calls, %(brand)s is a great way to stay in touch.", { brand: SdkConfig.get("brand"), }, @@ -67,8 +65,7 @@ export function UserOnboardingHeader({ useCase }: Props): JSX.Element { case UseCase.CommunityMessaging: title = _t("Community ownership"); description = _t( - "Keep ownership and control of community discussion.\n" + - "Scale to support millions, with powerful moderation and interoperability.", + "Keep ownership and control of community discussion.\nScale to support millions, with powerful moderation and interoperability.", ); image = require("../../../../res/img/user-onboarding/CommunityMessaging.png"); actionLabel = _t("Find your people"); @@ -78,8 +75,7 @@ export function UserOnboardingHeader({ useCase }: Props): JSX.Element { brand: SdkConfig.get("brand"), }); description = _t( - "With free end-to-end encrypted messaging, and unlimited voice and video calls," + - " %(brand)s is a great way to stay in touch.", + "With free end-to-end encrypted messaging, and unlimited voice and video calls, %(brand)s is a great way to stay in touch.", { brand: SdkConfig.get("brand"), }, diff --git a/src/components/views/verification/VerificationCancelled.tsx b/src/components/views/verification/VerificationCancelled.tsx index 13238f2de91a..d7c85dbfeaa4 100644 --- a/src/components/views/verification/VerificationCancelled.tsx +++ b/src/components/views/verification/VerificationCancelled.tsx @@ -28,7 +28,11 @@ export default class VerificationCancelled extends React.Component { return (

    {_t("The other party cancelled the verification.")}

    - +
    ); } diff --git a/src/components/views/verification/VerificationComplete.tsx b/src/components/views/verification/VerificationComplete.tsx index 1f034b4741ab..6e203e9900f2 100644 --- a/src/components/views/verification/VerificationComplete.tsx +++ b/src/components/views/verification/VerificationComplete.tsx @@ -31,8 +31,7 @@ export default class VerificationComplete extends React.Component {

    {_t("You've successfully verified this user.")}

    {_t( - "Secure messages with this user are end-to-end encrypted and not able to be " + - "read by third parties.", + "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.", )}

    {

    {_t("Unrecognised command: %(commandText)s", { commandText })}

    {_t( - "You can use /help to list available commands. " + - "Did you mean to send this as a message?", + "You can use /help to list available commands. Did you mean to send this as a message?", {}, { code: (t) => {t}, diff --git a/src/effects/effect.ts b/src/effects/effect.ts index fe194bbde3ec..5bddafe902ce 100644 --- a/src/effects/effect.ts +++ b/src/effects/effect.ts @@ -15,6 +15,8 @@ limitations under the License. */ +import { TranslationKey } from "../languageHandler"; + export type Effect = { /** * one or more emojis that will trigger this effect @@ -29,9 +31,9 @@ export type Effect = { */ command: string; /** - * a function that returns the translated description of the effect + * a function that returns the translatable description of the effect */ - description: () => string; + description: () => TranslationKey; /** * a function that returns the translated fallback message. this message will be shown if the user did not provide a custom message */ diff --git a/src/emoji.ts b/src/emoji.ts deleted file mode 100644 index faebd299e59e..000000000000 --- a/src/emoji.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright 2019 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import EMOJIBASE from "emojibase-data/en/compact.json"; -import SHORTCODES from "emojibase-data/en/shortcodes/iamcal.json"; -import { CompactEmoji } from "emojibase"; - -export interface IEmoji extends Omit { - // We generate a shortcode based on the label if none exist in the dataset - shortcodes: string[]; -} - -// The unicode is stored without the variant selector -const UNICODE_TO_EMOJI = new Map(); // not exported as gets for it are handled by getEmojiFromUnicode -export const EMOTICON_TO_EMOJI = new Map(); - -export const getEmojiFromUnicode = (unicode: string): IEmoji | undefined => - UNICODE_TO_EMOJI.get(stripVariation(unicode)); - -const isRegionalIndicator = (x: string): boolean => { - // First verify that the string is a single character. We use Array.from - // to make sure we count by characters, not UTF-8 code units. - return ( - Array.from(x).length === 1 && - // Next verify that the character is within the code point range for - // regional indicators. - // http://unicode.org/charts/PDF/Unicode-6.0/U60-1F100.pdf - x >= "\u{1f1e6}" && - x <= "\u{1f1ff}" - ); -}; - -const EMOJIBASE_GROUP_ID_TO_CATEGORY = [ - "people", // smileys - "people", // actually people - "control", // modifiers and such, not displayed in picker - "nature", - "foods", - "places", - "activity", - "objects", - "symbols", - "flags", -]; - -export const DATA_BY_CATEGORY: Record = { - people: [], - nature: [], - foods: [], - places: [], - activity: [], - objects: [], - symbols: [], - flags: [], -}; - -// Store various mappings from unicode/emoticon/shortcode to the Emoji objects -export const EMOJI: IEmoji[] = EMOJIBASE.map((emojiData) => { - // If there's ever a gap in shortcode coverage, we fudge it by - // filling it in with the emoji's CLDR annotation - const shortcodeData = SHORTCODES[emojiData.hexcode] ?? [emojiData.label.toLowerCase().replace(/\W+/g, "_")]; - - const emoji: IEmoji = { - ...emojiData, - // Homogenize shortcodes by ensuring that everything is an array - shortcodes: typeof shortcodeData === "string" ? [shortcodeData] : shortcodeData, - }; - - // We manually include regional indicators in the symbols group, since - // Emojibase intentionally leaves them uncategorized - const categoryId = - EMOJIBASE_GROUP_ID_TO_CATEGORY[emoji.group!] ?? (isRegionalIndicator(emoji.unicode) ? "symbols" : null); - - if (DATA_BY_CATEGORY.hasOwnProperty(categoryId)) { - DATA_BY_CATEGORY[categoryId].push(emoji); - } - - // Add mapping from unicode to Emoji object - // The 'unicode' field that we use in emojibase has either - // VS15 or VS16 appended to any characters that can take - // variation selectors. Which one it appends depends - // on whether emojibase considers their type to be 'text' or - // 'emoji'. We therefore strip any variation chars from strings - // both when building the map and when looking up. - UNICODE_TO_EMOJI.set(stripVariation(emoji.unicode), emoji); - - if (emoji.emoticon) { - // Add mapping from emoticon to Emoji object - Array.isArray(emoji.emoticon) - ? emoji.emoticon.forEach((x) => EMOTICON_TO_EMOJI.set(x, emoji)) - : EMOTICON_TO_EMOJI.set(emoji.emoticon, emoji); - } - - return emoji; -}); - -/** - * Strips variation selectors from the end of given string - * NB. Skin tone modifiers are not variation selectors: - * this function does not touch them. (Should it?) - * - * @param {string} str string to strip - * @returns {string} stripped string - */ -function stripVariation(str: string): string { - return str.replace(/[\uFE00-\uFE0F]$/, ""); -} diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json index 1988176a8643..c0d11f4bd98e 100644 --- a/src/i18n/strings/ar.json +++ b/src/i18n/strings/ar.json @@ -1,17 +1,12 @@ { - "Continue": "واصِل", "Something went wrong!": "هناك خطأ ما!", "Create new room": "إنشاء غرفة جديدة", "Failed to change password. Is your password correct?": "فشلت عملية تعديل الكلمة السرية. هل كلمتك السرية صحيحة ؟", "Warning": "تنبيه", - "Error": "عُطل", - "Remove": "حذف", "Send": "إرسال", - "Edit": "تعديل", "This email address is already in use": "عنوان البريد هذا مستعمل", "This phone number is already in use": "رقم الهاتف هذا مستخدم بالفعل", "Failed to verify email address: make sure you clicked the link in the email": "فشل التثبّت من عنوان البريد الإلكتروني: تأكّد من نقر الرابط في البريد المُرسل", - "Analytics": "التحاليل", "Unavailable": "غير متوفر", "All Rooms": "كل الغُرف", "All messages": "كل الرسائل", @@ -43,7 +38,6 @@ "Unable to load! Check your network connectivity and try again.": "تعذر التحميل! افحص اتصالك بالشبكة وأعِد المحاولة.", "Call failed due to misconfigured server": "فشل الاتصال بسبب سوء ضبط الخادوم", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "من فضلك اطلب من مسؤول الخادوم المنزل الذي تستعمله (%(homeserverDomain)s) أن يضبط خادوم TURN كي تعمل الاتصالات بنحوٍ يكون محط ثقة.", - "OK": "حسنًا", "Call Failed": "فشل الاتصال", "Permission Required": "التصريح مطلوب", "You do not have permission to start a conference call in this room": "ينقصك تصريح بدء مكالمة جماعية في هذه الغرفة", @@ -138,7 +132,6 @@ "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "استخدم سيرفر للهوية للدعوة عبر البريد الالكتروني. انقر على استمرار لاستخدام سيرفر الهوية الافتراضي (%(defaultIdentityServerName)s) او قم بضبط الاعدادات.", "Use an identity server to invite by email. Manage in Settings.": "استخدم سيرفر الهوية للدعوة عبر البريد الالكتروني. ضبط الاعدادات.", "Joins room with given address": "الانضمام الى الغرفة بحسب العنوان المعطى", - "Leave room": "اترك الغرفة", "Bans user with given id": "يحظر المستخدم حسب المعرّف المعطى", "Unbans user with given ID": "يُلغي الحظر عن المستخدم حسب المعرّف المعطى", "Ignores a user, hiding their messages from you": "يتجاهل المستخدم، ويخفي رسائله عنك", @@ -236,7 +229,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s%(userId)s تم تسجيل الدخول لجلسة جديدة من غير التحقق منها:", "Ask this user to verify their session, or manually verify it below.": "اطلب من هذا المستخدم التحقُّق من جلسته أو تحقَّق منها يدويًّا أدناه.", "Not Trusted": "غير موثوقة", - "Done": "تم", "%(displayName)s is typing …": "%(displayName)s يكتب…", "%(names)s and %(count)s others are typing …": { "other": "%(names)s و %(count)s آخرون يكتبون…", @@ -257,7 +249,6 @@ "expand": "توسيع", "collapse": "تضييق", "Please create a new issue on GitHub so that we can investigate this bug.": "الرجاء إنشاء إشكال جديد على GitHub حتى نتمكن من التحقيق في هذا الخطأ.", - "No results": "لا نتائج", "This version of %(brand)s does not support searching encrypted messages": "لا يدعم هذا الإصدار من %(brand)s البحث في الرسائل المشفرة", "This version of %(brand)s does not support viewing some encrypted files": "لا يدعم هذا الإصدار من %(brand)s s عرض بعض الملفات المشفرة", "Use the Desktop app to search encrypted messages": "استخدم تطبيق سطح المكتب للبحث في الرسائل المشفرة", @@ -305,7 +296,6 @@ "Message deleted by %(name)s": "حذف الرسالة %(name)s", "Message deleted": "حُذفت الرسالة", "reacted with %(shortName)s": "تفاعلو ب%(shortName)s", - "Reactions": "التفاعلات", "Show all": "أظهر الكل", "Error decrypting video": "تعذر فك تشفير الفيديو", "You sent a verification request": "أنت أرسلت طلب تحقق", @@ -333,13 +323,9 @@ "Error decrypting attachment": "تعذر فك تشفير المرفق", "Attachment": "المرفق", "Message Actions": "إجراءات الرسائل", - "Reply": "رد", - "React": "تفاعل", "The encryption used by this room isn't supported.": "التشفير الذي تستخدمه هذه الغرفة غير مدعوم.", "Encryption not enabled": "التشفير غير مفعل", "Ignored attempt to disable encryption": "تم تجاهل محاولة تعطيل التشفير", - "Encryption enabled": "التشفير مفعل", - "View Source": "انظر المصدر", "Yesterday": "أمس", "Today": "اليوم", "Saturday": "السبت", @@ -349,7 +335,6 @@ "Tuesday": "الثلاثاء", "Monday": "الاثنين", "Sunday": "الأحد", - "Verification cancelled": "أُلغي التحقق", "You cancelled verification.": "لقد ألغيتَ التحقق.", "%(displayName)s cancelled verification.": "%(displayName)s ألغى التحقق.", "Verification timed out.": "انتهت مهلة التحقق.", @@ -410,7 +395,6 @@ "other": "%(count)s من الرسائل والإشارات غير المقروءة." }, "Room options": "خيارات الغرفة", - "Settings": "الإعدادات", "Low Priority": "أولوية منخفضة", "Favourite": "تفضيل", "Favourited": "فُضلت", @@ -461,10 +445,7 @@ "Explore public rooms": "استكشف الغرف العامة", "Add room": "أضف غرفة", "Rooms": "الغرف", - "Start chat": "ابدأ محادثة", - "People": "الأشخاص", "Favourites": "مفضلات", - "Invites": "دعوات", "Search": "بحث", "Show Widgets": "إظهار عناصر الواجهة", "Hide Widgets": "إخفاء عناصر الواجهة", @@ -479,7 +460,6 @@ "Room %(name)s": "الغرفة %(name)s", "Replying": "الرد", "Unknown": "غير معروف", - "Offline": "منفصل", "Idle": "جامد", "Online": "متصل", "Unknown for %(duration)s": "غير معروف منذ %(duration)s", @@ -499,7 +479,6 @@ "Topic: %(topic)s (edit)": "الموضوع: %(topic)s (عدل)", "This is the beginning of your direct message history with .": "هذه هي بداية محفوظات رسائلك المباشرة باسم .", "Only the two of you are in this conversation, unless either of you invites anyone to join.": "أنتما فقط في هذه المحادثة ، إلا إذا دعا أي منكما أي شخص للانضمام.", - "Quote": "اقتباس", "Code block": "كتلة برمجية", "Strikethrough": "مشطوب", "Italics": "مائل", @@ -574,12 +553,9 @@ "Account": "الحساب", "Phone numbers": "أرقام الهواتف", "Email addresses": "عنوان البريد الإلكتروني", - "Success": "نجاح", "Appearance Settings only affect this %(brand)s session.": "إنما تؤثر إعدادات المظهر في %(brand)s وعلى هذا الاتصال فقط.", "Customise your appearance": "تخصيص مظهرك", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "قم بتعيين اسم الخط المثبت على نظامك وسيحاول %(brand)s استخدامه.", - "Modern": "حديث", - "Message layout": "مظهر الرسائل", "Theme": "المظهر", "Add theme": "إضافة مظهر", "Custom theme URL": "رابط المظهر المخصص", @@ -642,7 +618,6 @@ "Unable to load key backup status": "تعذر حمل حالة النسخ الاحتياطي للمفتاح", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "هل أنت واثق؟ ستفقد رسائلك المشفرة إذا لم يتم نسخ المفاتيح احتياطيًا بشكل صحيح.", "Delete Backup": "حذف الحتياطي", - "Save": "حفظ", "Profile picture": "الصورة الشخصية", "Display Name": "الاسم الظاهر", "Profile": "الملف الشخصي", @@ -657,14 +632,12 @@ "Notification targets": "أهداف الإشعار", "You've successfully verified your device!": "لقد نجحت في التحقق من جهازك!", "Verify all users in a room to ensure it's secure.": "تحقق من جميع المستخدمين في الغرفة للتأكد من أنها آمنة.", - "Yes": "نعم", "Almost there! Is %(displayName)s showing the same shield?": "أوشكت على الوصول! هل يظهر %(displayName)s نفس الدرع؟", "Verify by emoji": "تحقق بالرموز التعبيرية", "Verify by comparing unique emoji.": "تحقق بمقارنة الرموز التعبيرية الفريدة.", "If you can't scan the code above, verify by comparing unique emoji.": "إذا لم تتمكن من مسح الرمز أعلاه ، فتحقق بمقارنة الرموز التعبيرية الفريدة.", "Ask %(displayName)s to scan your code:": "اطلب من %(displayName)s مسح رمزك:", "Verify by scanning": "تحقق بالمسح", - "Security": "الأمان", "This client does not support end-to-end encryption.": "لا يدعم هذا العميل التشفير من طرف إلى طرف.", "Failed to deactivate user": "تعذر إلغاء نشاط المستخدم", "Deactivate user": "إلغاء نشاط المستخدم", @@ -673,8 +646,6 @@ "Are you sure?": "هل متأكد أنت؟", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "لن تكون قادرًا على التراجع عن هذا التغيير لأنك ترقي المستخدم ليكون له نفس مستوى الطاقة لديك.", "Failed to change power level": "تعذر تغيير مستوى القوة", - "Mute": "كتم", - "Unmute": "رفع الكتم", "Failed to mute user": "تعذر كتم المستخدم", "Failed to ban user": "تعذر حذف المستخدم", "Remove recent messages": "احذف الرسائل الحديثة", @@ -691,7 +662,6 @@ "Demote yourself?": "خفض مرتبة نفسك؟", "Share Link to User": "مشاركة رابط للمستخدم", "Mention": "إشارة", - "Invite": "دعوة", "Jump to read receipt": "انتقل لإيصال قراءة", "Hide sessions": "اخف الاتصالات", "%(count)s sessions": { @@ -707,7 +677,6 @@ "Trusted": "موثوق", "Room settings": "إعدادات الغرفة", "Share room": "شارك الغرفة", - "About": "حول", "Not encrypted": "غير مشفر", "Add widgets, bridges & bots": "إضافة عناصر الواجهة والجسور والروبوتات", "Edit widgets, bridges & bots": "تعديل عناصر الواجهة والجسور والروبوتات", @@ -790,7 +759,6 @@ "Unable to find a supported verification method.": "تعذر العثور على أحد طرق التحقق الممكنة.", "Verify this user by confirming the following number appears on their screen.": "تحقق من هذا المستخدم من خلال التأكد من ظهور الرقم التالي على شاشته.", "Verify this user by confirming the following emoji appear on their screen.": "تحقق من هذا المستخدم من خلال التأكيد من ظهور الرموز التعبيرية التالية على شاشته.", - "Start": "بداية", "Compare a unique set of emoji if you don't have a camera on either device": "قارن مجموعة فريدة من الرموز التعبيرية إذا لم يكن لديك كاميرا على أي من الجهازين", "Compare unique emoji": "قارن رمزاً تعبيريًّا فريداً", "Scan this unique code": "امسح هذا الرمز الفريد", @@ -799,7 +767,6 @@ "You've successfully verified this user.": "لقد نجحت في التحقق من هذا المستخدم.", "Verified!": "تم التحقق!", "The other party cancelled the verification.": "ألغى الطرف الآخر التحقق.", - "Decline": "رفض", "Unknown caller": "متصل غير معروف", "This is your list of users/servers you have blocked - don't leave the room!": "هذه قائمتك للمستخدمين / الخوادم التي حظرت - لا تغادر الغرفة!", "My Ban List": "قائمة الحظر", @@ -1011,13 +978,11 @@ "Contact your server admin.": "تواصل مع مدير الخادم الخاص بك.", "Your homeserver has exceeded one of its resource limits.": "لقد تجاوز خادمك أحد حدود موارده.", "Your homeserver has exceeded its user limit.": "لقد تجاوز خادمك حد عدد المستخدمين.", - "Enable": "ممكن", "Enable desktop notifications": "تمكين إشعارات سطح المكتب", "Notifications": "الإشعارات", "Don't miss a reply": "لا تفوت أي رد", "Later": "لاحقاً", "Review": "مراجعة", - "No": "لا", "Unknown App": "تطبيق غير معروف", "Short keyboard patterns are easy to guess": "من السهل تخمين أنماط قصيرة من لوحة المفاتيح", "Straight rows of keys are easy to guess": "سهلٌ تخمين صفوف من المفاتيح", @@ -1323,6 +1288,24 @@ "Calls are unsupported": "المكالمات غير مدعومة", "%(user1)s and %(user2)s": "%(user1)s و %(user2)s", "Empty room": "غرفة فارغة", + "common": { + "about": "حول", + "analytics": "التحاليل", + "encryption_enabled": "التشفير مفعل", + "error": "عُطل", + "message_layout": "مظهر الرسائل", + "modern": "حديث", + "mute": "كتم", + "no_results": "لا نتائج", + "offline": "منفصل", + "people": "الأشخاص", + "reactions": "التفاعلات", + "security": "الأمان", + "settings": "الإعدادات", + "success": "نجاح", + "unmute": "رفع الكتم", + "verification_cancelled": "أُلغي التحقق" + }, "action": { "reject": "رفض", "confirm": "أكّد", @@ -1339,4 +1322,4 @@ "reset": "إعادة تعيين", "share": "مشاركة" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/az.json b/src/i18n/strings/az.json index 9567469d2b56..7c19338cb9f1 100644 --- a/src/i18n/strings/az.json +++ b/src/i18n/strings/az.json @@ -8,7 +8,6 @@ "When I'm invited to a room": "Nə vaxt ki, məni otağa dəvət edirlər", "Call invitation": "Dəvət zəngi", "Messages sent by bot": "Botla göndərilmiş mesajlar", - "OK": "OK", "Operation failed": "Əməliyyatın nasazlığı", "Failed to verify email address: make sure you clicked the link in the email": "Email-i yoxlamağı bacarmadı: əmin olun ki, siz məktubda istinaddakı ünvana keçdiniz", "You cannot place a call with yourself.": "Siz özünə zəng vura bilmirsiniz.", @@ -50,7 +49,6 @@ "Usage": "İstifadə", "Changes your display nickname": "Sizin təxəllüsünüz dəyişdirir", "Invites user with given id to current room": "Verilmiş ID-lə istifadəçini cari otağa dəvət edir", - "Leave room": "Otağı tərk etmək", "Bans user with given id": "Verilmiş ID-lə istifadəçini bloklayır", "Ignores a user, hiding their messages from you": "Sizdən mesajları gizlədərək istifadəçini bloklayır", "Ignored user": "İstifadəçi blokun siyahısına əlavə edilmişdir", @@ -71,15 +69,12 @@ "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s üçün %(fromPowerLevel)s-dan %(toPowerLevel)s-lə", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s hüquqların səviyyələrini dəyişdirdi %(powerLevelDiffText)s.", "Always show message timestamps": "Həmişə mesajların göndərilməsi vaxtını göstərmək", - "Error": "Səhv", "Incorrect verification code": "Təsdiq etmənin səhv kodu", "Phone": "Telefon", "New passwords don't match": "Yeni şifrlər uyğun gəlmir", "Passwords can't be empty": "Şifrələr boş ola bilməz", - "Continue": "Davam etmək", "Export E2E room keys": "Şifrləmənin açarlarının ixracı", "Current password": "Cari şifrə", - "Password": "Şifrə", "New Password": "Yeni şifrə", "Confirm password": "Yeni şifrə təsdiq edin", "Change Password": "Şifrəni dəyişdirin", @@ -105,9 +100,7 @@ "Command error": "Komandanın səhvi", "Join Room": "Otağa girmək", "Upload avatar": "Avatar-ı yükləmək", - "Settings": "Qurmalar", "Forget room": "Otağı unutmaq", - "Invites": "Dəvətlər", "Favourites": "Seçilmişlər", "Low priority": "Əhəmiyyətsizlər", "Historical": "Arxiv", @@ -128,13 +121,10 @@ "Download %(text)s": "Yükləmək %(text)s", "Sign in with": "Seçmək", "Register": "Qeydiyyatdan keçmək", - "Remove": "Silmək", "What's New": "Nə dəyişdi", "Create new room": "Otağı yaratmaq", - "No results": "Nəticə yoxdur", "Home": "Başlanğıc", "%(items)s and %(lastItem)s": "%(items)s və %(lastItem)s", - "Start chat": "Çata başlamaq", "Deactivate Account": "Hesabı bağlamaq", "An error has occurred.": "Səhv oldu.", "Invalid Email Address": "Yanlış email", @@ -172,7 +162,6 @@ "Confirm passphrase": "Şifrəni təsdiqləyin", "This email address is already in use": "Bu e-mail ünvanı istifadə olunur", "This phone number is already in use": "Bu telefon nömrəsi artıq istifadə olunur", - "Analytics": "Analitik", "Call Failed": "Uğursuz zəng", "Permission Required": "İzn tələb olunur", "You do not have permission to start a conference call in this room": "Bu otaqda konfrans başlamaq üçün icazə yoxdur", @@ -246,6 +235,13 @@ "Explore rooms": "Otaqları kəşf edin", "Sign In": "Daxil ol", "Identity server": "Eyniləşdirmənin serveri", + "common": { + "analytics": "Analitik", + "error": "Səhv", + "no_results": "Nəticə yoxdur", + "password": "Şifrə", + "settings": "Qurmalar" + }, "action": { "dismiss": "Nəzərə almayın", "trust": "Etibar", @@ -254,4 +250,4 @@ "update": "Yeniləmək", "logout": "Çıxmaq" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/be.json b/src/i18n/strings/be.json index 7e3e78ed8915..afcc88439e41 100644 --- a/src/i18n/strings/be.json +++ b/src/i18n/strings/be.json @@ -3,7 +3,6 @@ "All messages": "Усе паведамленні", "Notification targets": "Мэты апавяшчэння", "Favourite": "Улюбёнае", - "Quote": "Цытата", "Failed to add tag %(tagName)s to room": "Не атрымалася дадаць %(tagName)s ў пакоі", "Notifications": "Апавяшчэнні", "Low Priority": "Нізкі прыярытэт", @@ -12,17 +11,17 @@ "On": "Уключыць", "Off": "Выключыць", "Invite to this room": "Запрасіць у гэты пакой", - "Remove": "Выдалiць", "Failed to remove tag %(tagName)s from room": "Не ўдалося выдаліць %(tagName)s з пакоя", - "Leave": "Пакінуць", - "Error": "Памылка", "Operation failed": "Не атрымалася выканаць аперацыю", - "Mute": "Без гуку", "powered by Matrix": "працуе на Matrix", "Source URL": "URL-адрас крыніцы", + "common": { + "error": "Памылка", + "mute": "Без гуку" + }, "action": { "reject": "Адхіліць", "dismiss": "Aдхіліць", "close": "Зачыніць" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index d5f8ba7746fc..f124dd5409c2 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -1,14 +1,9 @@ { - "OK": "ОК", "Operation failed": "Операцията е неуспешна", "Search": "Търсене", "powered by Matrix": "базирано на Matrix", "Warning": "Предупреждение", - "Error": "Грешка", - "Remove": "Премахни", "Send": "Изпрати", - "Edit": "Редактирай", - "Continue": "Продължи", "Failed to change password. Is your password correct?": "Неуспешна промяна. Правилно ли сте въвели Вашата парола?", "Sun": "нд.", "Mon": "пн.", @@ -37,8 +32,6 @@ "Failed to remove tag %(tagName)s from room": "Неуспешно премахване на %(tagName)s етикет от стаята", "unknown error code": "неизвестен код за грешка", "Failed to forget room %(errCode)s": "Неуспешно забравяне на стаята %(errCode)s", - "Mute": "Заглуши", - "Leave": "Напусни", "Favourite": "Любим", "Register": "Регистрация", "Notifications": "Известия", @@ -48,7 +41,6 @@ "This email address is already in use": "Този имейл адрес е вече зает", "This phone number is already in use": "Този телефонен номер е вече зает", "Failed to verify email address: make sure you clicked the link in the email": "Неуспешно потвърждаване на имейл адреса: уверете се, че сте кликнали върху връзката в имейла", - "Analytics": "Статистика", "Call Failed": "Неуспешно повикване", "You cannot place a call with yourself.": "Не може да осъществите разговор със себе си.", "Warning!": "Внимание!", @@ -113,7 +105,6 @@ "Enable inline URL previews by default": "Включване по подразбиране на URL прегледи", "Enable URL previews for this room (only affects you)": "Включване на URL прегледи за тази стая (засяга само Вас)", "Enable URL previews by default for participants in this room": "Включване по подразбиране на URL прегледи за участници в тази стая", - "Decline": "Откажи", "Incorrect verification code": "Неправилен код за потвърждение", "Submit": "Изпрати", "Phone": "Телефон", @@ -124,7 +115,6 @@ "Export E2E room keys": "Експортирай E2E ключове", "Do you want to set an email address?": "Искате ли да зададете имейл адрес?", "Current password": "Текуща парола", - "Password": "Парола", "New Password": "Нова парола", "Confirm password": "Потвърждаване на парола", "Change Password": "Смяна на парола", @@ -142,8 +132,6 @@ "Unignore": "Премахни игнорирането", "Ignore": "Игнорирай", "Mention": "Спомени", - "Invite": "Покани", - "Unmute": "Премахни заглушаването", "Admin Tools": "Инструменти на администратора", "and %(count)s others...": { "other": "и %(count)s други...", @@ -171,19 +159,15 @@ "Offline for %(duration)s": "Офлайн от %(duration)s", "Unknown for %(duration)s": "Неизвестен от %(duration)s", "Idle": "Неактивен", - "Offline": "Офлайн", "Unknown": "Неизвестен", "Replying": "Отговаря", - "Save": "Запази", "(~%(count)s results)": { "other": "(~%(count)s резултати)", "one": "(~%(count)s резултат)" }, "Join Room": "Присъединяване към стаята", "Upload avatar": "Качи профилна снимка", - "Settings": "Настройки", "Forget room": "Забрави стаята", - "Invites": "Покани", "Favourites": "Любими", "Low priority": "Нисък приоритет", "Historical": "Архив", @@ -195,7 +179,6 @@ "No users have specific privileges in this room": "Никой няма специфични привилегии в тази стая", "Banned users": "Блокирани потребители", "This room is not accessible by remote Matrix servers": "Тази стая не е достъпна за отдалечени Matrix сървъри", - "Leave room": "Напусни стаята", "Publish this room to the public in %(domain)s's room directory?": "Публично публикуване на тази стая в директорията на %(domain)s?", "Who can read history?": "Кой може да чете историята?", "Anyone": "Всеки", @@ -238,7 +221,6 @@ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Изтриването на приспособление го премахва за всички потребители в тази стая. Сигурни ли сте, че искате да изтриете това приспособление?", "Delete widget": "Изтрий приспособлението", "Create new room": "Създай нова стая", - "No results": "Няма резултати", "Home": "Начална страница", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(severalUsers)sjoined %(count)s times": { @@ -330,12 +312,10 @@ "expand": "разшири", "Custom level": "Персонализирано ниво", "In reply to ": "В отговор на ", - "Start chat": "Започни чат", "And %(count)s more...": { "other": "И %(count)s други..." }, "Confirm Removal": "Потвърдете премахването", - "Create": "Създай", "Unknown error": "Неизвестна грешка", "Incorrect password": "Неправилна парола", "Deactivate Account": "Затвори акаунта", @@ -380,7 +360,6 @@ "one": "Качване на %(filename)s и %(count)s друг" }, "Uploading %(filename)s": "Качване на %(filename)s", - "Success": "Успешно", "": "<не се поддържа>", "Import E2E room keys": "Импортирай E2E ключове", "Cryptography": "Криптография", @@ -469,7 +448,6 @@ "Collecting logs": "Събиране на логове", "All Rooms": "Във всички стаи", "Wednesday": "Сряда", - "Quote": "Цитат", "Send logs": "Изпращане на логове", "All messages": "Всички съобщения", "Call invitation": "Покана за разговор", @@ -482,7 +460,6 @@ "Thursday": "Четвъртък", "Logs sent": "Логовете са изпратени", "Back": "Назад", - "Reply": "Отговори", "Show message in desktop notification": "Показване на съдържание в известията на работния плот", "Messages in group chats": "Съобщения в групови чатове", "Yesterday": "Вчера", @@ -492,7 +469,6 @@ "What's New": "Какво ново", "Off": "Изкл.", "Event sent!": "Събитието е изпратено!", - "View Source": "Прегледай източника", "Event Content": "Съдържание на събитието", "Thank you!": "Благодарим!", "Missing roomId.": "Липсва идентификатор на стая.", @@ -603,7 +579,6 @@ "Unable to restore backup": "Неуспешно възстановяване на резервно копие", "No backup found!": "Не е открито резервно копие!", "Failed to decrypt %(failedCount)s sessions!": "Неуспешно разшифроване на %(failedCount)s сесии!", - "Next": "Напред", "Invalid homeserver discovery response": "Невалиден отговор по време на откриването на конфигурацията за сървъра", "Invalid identity server discovery response": "Невалиден отговор по време на откриването на конфигурацията за сървъра за самоличност", "General failure": "Обща грешка", @@ -614,7 +589,6 @@ "Go back to set it again.": "Върнете се за да настройте нова.", "Download": "Свали", "Unable to create key backup": "Неуспешно създаване на резервно копие на ключа", - "Retry": "Опитай пак", "Straight rows of keys are easy to guess": "Клавиши от прави редици са лесни за отгатване", "Short keyboard patterns are easy to guess": "Къси клавиатурни последователности са лесни за отгатване", "Unable to load commit detail: %(msg)s": "Неуспешно зареждане на информация за commit: %(msg)s", @@ -650,8 +624,6 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Защитените съобщения с този потребител са шифровани от край-до-край и не могат да бъдат прочетени от други.", "Got It": "Разбрах", "Verify this user by confirming the following number appears on their screen.": "Потвърдете този потребител като се уверите, че следното число се вижда на екрана му.", - "Yes": "Да", - "No": "Не", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Изпратихме Ви имейл за да потвърдим адреса Ви. Последвайте инструкциите в имейла и след това кликнете на бутона по-долу.", "Email Address": "Имейл адрес", "All keys backed up": "Всички ключове са в резервното копие", @@ -700,7 +672,6 @@ "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Потвърди потребителя и го маркирай като доверен. Доверяването на потребители Ви дава допълнително спокойствие при използване на съобщения шифровани от край-до-край.", "Incoming Verification Request": "Входяща заявка за потвърждение", "Go back": "Върни се", - "Username": "Потребителско име", "Email (optional)": "Имейл (незадължително)", "Phone (optional)": "Телефон (незадължително)", "Join millions for free on the largest public server": "Присъединете се безплатно към милиони други на най-големия публичен сървър", @@ -1047,7 +1018,6 @@ "Report Content to Your Homeserver Administrator": "Докладвай съдържание до администратора на сървъра", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Докладването на съобщението ще изпрати уникалният номер на събитието (event ID) до администратора на сървъра. Ако съобщенията в стаята са шифровани, администратора няма да може да прочете текста им или да види снимките или файловете.", "Send report": "Изпрати доклад", - "Report Content": "Докладвай съдържание", "View": "Виж", "Explore rooms": "Открий стаи", "Verify the link in your inbox": "Потвърдете линка във вашата пощенска кутия", @@ -1088,7 +1058,6 @@ "Failed to deactivate user": "Неуспешно деактивиране на потребител", "This client does not support end-to-end encryption.": "Този клиент не поддържа шифроване от край до край.", "Messages in this room are not end-to-end encrypted.": "Съобщенията в тази стая не са шифровани от край до край.", - "React": "Реагирай", "Message Actions": "Действия със съобщението", "Show image": "Покажи снимката", "Frequently Used": "Често използвани", @@ -1202,9 +1171,7 @@ "one": "1 потвърдена сесия" }, "Messages in this room are end-to-end encrypted.": "Съобщенията в тази стая са шифровани от край-до-край.", - "Security": "Сигурност", "You have ignored this user, so their message is hidden. Show anyways.": "Игнорирали сте този потребител, така че съобщението им е скрито. Покажи така или иначе.", - "Reactions": "Реакции", "Any of the following data may be shared:": "Следните данни може да бъдат споделени:", "Your display name": "Вашето име", "Your user ID": "Потребителския ви идентификатор", @@ -1232,7 +1199,6 @@ "Show info about bridges in room settings": "Показвай информация за връзки с други мрежи в настройките на стаята", "This bridge is managed by .": "Тази връзка с друга мрежа се управлява от .", "Recent Conversations": "Скорошни разговори", - "Suggestions": "Предложения", "Show more": "Покажи повече", "Direct Messages": "Директни съобщения", "Go": "Давай", @@ -1274,7 +1240,6 @@ "Not Trusted": "Недоверено", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) влезе в нова сесия без да я потвърди:", "Ask this user to verify their session, or manually verify it below.": "Поискайте от този потребител да потвърди сесията си, или я потвърдете ръчно по-долу.", - "Done": "Готово", "a few seconds ago": "преди няколко секунди", "about a minute ago": "преди около минута", "%(num)s minutes ago": "преди %(num)s минути", @@ -1305,7 +1270,6 @@ "Scan this unique code": "Сканирайте този уникален код", "Compare unique emoji": "Сравнете уникални емоджи", "Compare a unique set of emoji if you don't have a camera on either device": "Сравнете уникални емоджи, ако нямате камера на някое от устройствата", - "Start": "Започни", "Waiting for %(displayName)s to verify…": "Изчакване на %(displayName)s да потвърди…", "Cancelling…": "Отказване…", "They match": "Съвпадат", @@ -1331,7 +1295,6 @@ "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Потвърждавай индивидуално всяка сесия на потребителите, маркирайки я като доверена и недоверявайки се на кръстосано-подписваните устройства.", "Manage": "Управление", "Securely cache encrypted messages locally for them to appear in search results.": "Кеширай шифровани съобщения локално по сигурен начин за да се появяват в резултати от търсения.", - "Enable": "Включи", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "Липсват задължителни компоненти в %(brand)s, за да могат да бъдат складирани локално и по сигурен начин шифровани съобщения. Ако искате да експериментирате с тази функция, \"компилирайте\" версия на %(brand)s Desktop с добавени компоненти за търсене.", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Тази сесия не прави резервни копия на ключовете, но имате съществуващо резервно копие, което да възстановите и към което да добавяте от тук нататък.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Свържете тази сесия с резервно копие на ключове преди да се отпишете от нея, за да не загубите ключове, които може би съществуват единствено в тази сесия.", @@ -1408,8 +1371,6 @@ "Verification timed out.": "Изтече времето за верификация.", "%(displayName)s cancelled verification.": "%(displayName)s отказа верификацията.", "You cancelled verification.": "Отказахте верификацията.", - "Verification cancelled": "Верификацията беше отказана", - "Encryption enabled": "Шифроването е включено", "Encryption not enabled": "Шифроването не е включено", "The encryption used by this room isn't supported.": "Шифроването използвано от тази стая не се поддържа.", "You declined": "Отказахте", @@ -1507,7 +1468,6 @@ "Explore Public Rooms": "Разгледай публичните стаи", "Create a Group Chat": "Създай групов чат", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Администраторът на сървъра е изключил шифроване от край-до-край по подразбиране за лични стаи и за директни съобщения.", - "People": "Хора", "Switch to light mode": "Смени на светъл режим", "Switch to dark mode": "Смени на тъмен режим", "Switch theme": "Смени темата", @@ -1523,14 +1483,12 @@ "You'll need to authenticate with the server to confirm the upgrade.": "Ще трябва да се автентикирате пред сървъра за да потвърдите обновяването.", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Обновете тази сесия, за да може да потвърждава други сесии, давайки им достъп до шифрованите съобщения и маркирайки ги като доверени за другите потребители.", "Use a different passphrase?": "Използвай друга парола?", - "Copy": "Копирай", "Unable to query secret storage status": "Неуспешно допитване за състоянието на секретното складиране", "Upgrade your encryption": "Обновете шифроването", "Create key backup": "Създай резервно копие на ключовете", "This session is encrypting history using the new recovery method.": "Тази сесия шифрова историята използвайки новия метод за възстановяване.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Ако сте направили това без да искате, може да настройте защитени съобщения за тази сесия, което ще зашифрова наново историята на съобщенията използвайки новия метод за възстановяване.", "If disabled, messages from encrypted rooms won't appear in search results.": "Ако е изключено, съобщения от шифровани стаи няма да се показват в резултатите от търсения.", - "Disable": "Изключи", "Not currently indexing messages for any room.": "В момента не се индексират съобщения в нито една стая.", "Currently indexing: %(currentRoom)s": "В момента се индексира: %(currentRoom)s", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s кешира шифровани съобщения локално по сигурен начин, за да може те да се появяват в резултати от търсения:", @@ -1584,8 +1542,6 @@ "Use a system font": "Използвай системния шрифт", "System font name": "Име на системния шрифт", "Hey you. You're the best!": "Хей, ти. Върхът си!", - "Message layout": "Изглед на съобщенията", - "Modern": "Модерен", "Customise your appearance": "Настройте изгледа", "Appearance Settings only affect this %(brand)s session.": "Настройките на изгледа влияят само на тази %(brand)s сесия.", "The authenticity of this encrypted message can't be guaranteed on this device.": "Автентичността на това шифровано съобщение не може да бъде гарантирана на това устройство.", @@ -1654,7 +1610,6 @@ "Send feedback": "Изпрати обратна връзка", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "ПРОФЕСИОНАЛЕН СЪВЕТ: Ако ще съобщавате за проблем, изпратете и логове за разработчици за да ни помогнете да открием проблема.", "Please view existing bugs on Github first. No match? Start a new one.": "Първо прегледайте съществуващите проблеми в Github. Няма подобни? Създайте нов.", - "Report a bug": "Съобщете за проблем", "Comment": "Коментар", "Feedback sent": "Обратната връзка беше изпратена", "Block anyone not part of %(serverName)s from ever joining this room.": "Блокирай всеки, който не е част от %(serverName)s от присъединяване в тази стая.", @@ -1678,7 +1633,6 @@ "Join the conference at the top of this room": "Присъединете се към конференцията в горната част на стаята", "Ignored attempt to disable encryption": "Опитът за изключване на шифроването беше игнориран", "Room settings": "Настройки на стаята", - "About": "Относно", "Not encrypted": "Не е шифровано", "Add widgets, bridges & bots": "Добави приспособления, мостове и ботове", "Edit widgets, bridges & bots": "Промени приспособления, мостове и ботове", @@ -1720,7 +1674,6 @@ "Update %(brand)s": "Обнови %(brand)s", "Enable desktop notifications": "Включете уведомления на работния плот", "Don't miss a reply": "Не пропускайте отговор", - "User menu": "Потребителско меню", "Save your Security Key": "Запази ключа за сигурност", "Confirm Security Phrase": "Потвърди фразата за сигурност", "Set a Security Phrase": "Настрой фраза за сигурност", @@ -1737,7 +1690,6 @@ "Attach files from chat or just drag and drop them anywhere in a room.": "Прикачете файлове от чата или ги издърпайте и пуснете в стаята.", "No files visible in this room": "Няма видими файлове в тази стая", "Away": "Отсъства", - "Forgot password?": "Забравена парола?", "Search (must be enabled)": "Търсене (трябва да е включено)", "Go to Home View": "Отиване на начален изглед", "%(creator)s created this DM.": "%(creator)s създаде този директен чат.", @@ -2103,6 +2055,28 @@ }, "%(user1)s and %(user2)s": "%(user1)s и %(user2)s", "Empty room": "Празна стая", + "common": { + "about": "Относно", + "analytics": "Статистика", + "encryption_enabled": "Шифроването е включено", + "error": "Грешка", + "message_layout": "Изглед на съобщенията", + "modern": "Модерен", + "mute": "Заглуши", + "no_results": "Няма резултати", + "offline": "Офлайн", + "password": "Парола", + "people": "Хора", + "reactions": "Реакции", + "report_a_bug": "Съобщете за проблем", + "security": "Сигурност", + "settings": "Настройки", + "success": "Успешно", + "suggestions": "Предложения", + "unmute": "Премахни заглушаването", + "username": "Потребителско име", + "verification_cancelled": "Верификацията беше отказана" + }, "action": { "reject": "Отхвърли", "confirm": "Потвърди", @@ -2121,5 +2095,8 @@ "share": "Сподели", "skip": "Пропусни", "logout": "Излез" + }, + "a11y": { + "user_menu": "Потребителско меню" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json index 52222e0a003e..4031dfcece89 100644 --- a/src/i18n/strings/ca.json +++ b/src/i18n/strings/ca.json @@ -7,22 +7,14 @@ "Advanced": "Avançat", "Always show message timestamps": "Mostra sempre la marca de temps del missatge", "Create new room": "Crea una sala nova", - "Error": "Error", "Failed to forget room %(errCode)s": "No s'ha pogut oblidar la sala %(errCode)s", "Favourite": "Favorit", - "Mute": "Silencia", - "Settings": "Configuració", - "Start chat": "Inicia un xat", "Failed to change password. Is your password correct?": "S'ha produït un error en canviar la contrasenya. És correcta la teva contrasenya?", - "Continue": "Continua", "Notifications": "Notificacions", - "Remove": "Elimina", "unknown error code": "codi d'error desconegut", - "OK": "D'acord", "Operation failed": "No s'ha pogut realitzar l'operació", "Search": "Cerca", "powered by Matrix": "amb tecnologia de Matrix", - "Edit": "Edita", "Register": "Registre", "Rooms": "Sales", "This email address is already in use": "Aquesta adreça de correu electrònic ja està en ús", @@ -115,7 +107,6 @@ "Enable inline URL previews by default": "Activa per defecte la vista prèvia d'URL en línia", "Enable URL previews for this room (only affects you)": "Activa la vista prèvia d'URL d'aquesta sala (no afecta altres usuaris)", "Enable URL previews by default for participants in this room": "Activa per defecte la vista prèvia d'URL per als participants d'aquesta sala", - "Decline": "Declina", "Incorrect verification code": "El codi de verificació és incorrecte", "Submit": "Envia", "Phone": "Telèfon", @@ -126,7 +117,6 @@ "Export E2E room keys": "Exporta les claus E2E de la sala", "Do you want to set an email address?": "Voleu establir una adreça de correu electrònic?", "Current password": "Contrasenya actual", - "Password": "Contrasenya", "New Password": "Nova contrasenya", "Confirm password": "Confirma la contrasenya", "Change Password": "Canvia la contrasenya", @@ -146,8 +136,6 @@ "Ignore": "Ignora", "Jump to read receipt": "Vés a l'últim missatge llegit", "Mention": "Menciona", - "Invite": "Convida", - "Unmute": "No silenciïs", "Admin Tools": "Eines d'administració", "and %(count)s others...": { "other": "i %(count)s altres...", @@ -177,11 +165,9 @@ "Unknown for %(duration)s": "Desconegut durant %(duration)s", "Online": "En línia", "Idle": "Inactiu", - "Offline": "Fora de línia", "Unknown": "Desconegut", "Replying": "S'està contestant", "Unnamed room": "Sala sense nom", - "Save": "Desa", "(~%(count)s results)": { "other": "(~%(count)s resultats)", "one": "(~%(count)s resultat)" @@ -189,7 +175,6 @@ "Join Room": "Entra a la sala", "Upload avatar": "Puja l'avatar", "Forget room": "Oblida la sala", - "Invites": "Invitacions", "Favourites": "Preferits", "Low priority": "Baixa prioritat", "Historical": "Històric", @@ -201,7 +186,6 @@ "No users have specific privileges in this room": "Cap usuari té privilegis específics en aquesta sala", "Banned users": "Usuaris expulsats", "This room is not accessible by remote Matrix servers": "Aquesta sala no és accessible per a servidors de Matrix remots", - "Leave room": "Surt de la sala", "Publish this room to the public in %(domain)s's room directory?": "Vols publicar aquesta sala al directori de sales públiques de %(domain)s?", "Who can read history?": "Qui pot llegir l'historial?", "Anyone": "Qualsevol", @@ -241,7 +225,6 @@ "Delete Widget": "Suprimeix el giny", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "La supressió d'un giny l'elimina per a tots els usuaris d'aquesta sala. Esteu segur que voleu eliminar aquest giny?", "Delete widget": "Suprimeix el giny", - "No results": "Sense resultats", "Home": "Inici", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(severalUsers)sjoined %(count)s times": { @@ -336,7 +319,6 @@ "other": "I %(count)s més..." }, "Confirm Removal": "Confirmeu l'eliminació", - "Create": "Crea", "Unknown error": "Error desconegut", "Incorrect password": "Contrasenya incorrecta", "Deactivate Account": "Desactivar el compte", @@ -353,7 +335,6 @@ "Name": "Nom", "You must register to use this functionality": "Per poder utilitzar aquesta funcionalitat has de registrar-te", "You must join the room to see its files": "Per poder veure els fitxers de la sala t'hi has d'unir", - "Leave": "Surt", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Estàs a punt de ser redirigit a una web de tercers per autenticar el teu compte i poder ser utilitzat amb %(integrationsUrl)s. Vols continuar?", "Description": "Descripció", "Reject invitation": "Rebutja la invitació", @@ -394,7 +375,6 @@ "Import room keys": "Importa les claus de la sala", "Import": "Importa", "Email": "Correu electrònic", - "Analytics": "Analítiques", "Submit debug logs": "Enviar logs de depuració", "Sunday": "Diumenge", "Failed to add tag %(tagName)s to room": "No s'ha pogut afegir l'etiqueta %(tagName)s a la sala", @@ -433,15 +413,12 @@ "All messages": "Tots els missatges", "Call invitation": "Invitació de trucada", "What's new?": "Què hi ha de nou?", - "View Source": "Mostra el codi", "Invite to this room": "Convida a aquesta sala", "You cannot delete this message. (%(code)s)": "No podeu eliminar aquest missatge. (%(code)s)", "Thursday": "Dijous", "Logs sent": "Logs enviats", "Back": "Enrere", - "Reply": "Respon", "Show message in desktop notification": "Mostra els missatges amb notificacions d'escriptori", - "Quote": "Cita", "Messages in group chats": "Missatges en xats de grup", "Yesterday": "Ahir", "Error encountered (%(errorDetail)s).": "S'ha trobat un error (%(errorDetail)s).", @@ -643,6 +620,16 @@ "Integration managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Els gestors d'integracions reben dades de configuració i poden modificar ginys, enviar invitacions a sales i establir nivells d'autoritat en nom teu.", "Identity server": "Servidor d'identitat", "Could not connect to identity server": "No s'ha pogut connectar amb el servidor d'identitat", + "common": { + "analytics": "Analítiques", + "error": "Error", + "mute": "Silencia", + "no_results": "Sense resultats", + "offline": "Fora de línia", + "password": "Contrasenya", + "settings": "Configuració", + "unmute": "No silenciïs" + }, "action": { "reject": "Rebutja", "confirm": "Confirma", @@ -656,4 +643,4 @@ "skip": "Omet", "logout": "Surt" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index d3138891aec2..243645806211 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -8,7 +8,6 @@ "Notifications": "Oznámení", "Rooms": "Místnosti", "Search": "Hledání", - "Settings": "Nastavení", "Video call": "Videohovor", "Voice call": "Hlasový hovor", "Sun": "Ne", @@ -31,18 +30,12 @@ "Nov": "Lis", "Dec": "Pro", "Create new room": "Vytvořit novou místnost", - "Start chat": "Zahájit konverzaci", "Options": "Volby", "Register": "Zaregistrovat", - "Error": "Chyba", "Favourite": "Oblíbené", - "Mute": "Ztlumit", - "Continue": "Pokračovat", "Failed to change password. Is your password correct?": "Nepodařilo se změnit heslo. Zadáváte své heslo správně?", "Operation failed": "Operace se nezdařila", - "Remove": "Smazat", "unknown error code": "neznámý kód chyby", - "OK": "OK", "Failed to forget room %(errCode)s": "Nepodařilo se zapomenout místnost %(errCode)s", "powered by Matrix": "používá protokol Matrix", "Account": "Účet", @@ -78,12 +71,10 @@ "Current password": "Současné heslo", "Custom level": "Vlastní úroveň", "Deactivate Account": "Deaktivovat účet", - "Decline": "Odmítnout", "Decrypt %(text)s": "Dešifrovat %(text)s", "Delete widget": "Vymazat widget", "Default": "Výchozí", "Download %(text)s": "Stáhnout %(text)s", - "Edit": "Upravit", "Email": "E-mail", "Email address": "E-mailová adresa", "Emoji": "Emoji", @@ -116,10 +107,8 @@ "Incorrect username and/or password.": "Nesprávné uživatelské jméno nebo heslo.", "Incorrect verification code": "Nesprávný ověřovací kód", "Invalid Email Address": "Neplatná e-mailová adresa", - "Invites": "Pozvánky", "Invites user with given id to current room": "Pozve do aktuální místnosti uživatele s daným id", "Join Room": "Vstoupit do místnosti", - "Leave room": "Opustit místnost", "Moderator": "Moderátor", "Name": "Název", "New passwords don't match": "Nová hesla se neshodují", @@ -130,8 +119,6 @@ "PM": "odp.", "No display name": "Žádné zobrazované jméno", "No more results": "Žádné další výsledky", - "No results": "Žádné výsledky", - "Password": "Heslo", "Passwords can't be empty": "Hesla nemohou být prázdná", "Permissions": "Oprávnění", "Phone": "Telefon", @@ -148,7 +135,6 @@ "Room %(roomId)s not visible": "Místnost %(roomId)s není viditelná", "%(roomName)s does not exist.": "%(roomName)s neexistuje.", "%(roomName)s is not accessible at this time.": "Místnost %(roomName)s není v tuto chvíli dostupná.", - "Save": "Uložit", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s poslal(a) obrázek.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s pozval(a) uživatele %(targetDisplayName)s ke vstupu do místnosti.", "Server error": "Chyba serveru", @@ -162,7 +148,6 @@ "Someone": "Někdo", "Start authentication": "Zahájit autentizaci", "Submit": "Odeslat", - "Success": "Úspěch", "This email address is already in use": "Tato e-mailová adresa je již používána", "This email address was not found": "Tato e-mailová adresa nebyla nalezena", "This room has no local addresses": "Tato místnost nemá žádné místní adresy", @@ -174,7 +159,6 @@ "You cannot place a call with yourself.": "Nemůžete volat sami sobě.", "You do not have permission to post to this room": "Nemáte oprávnění zveřejňovat příspěvky v této místnosti", "Online": "Online", - "Offline": "Offline", "Check for update": "Zkontrolovat aktualizace", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nelze se připojit k domovskému serveru přes HTTP, pokud je v adresním řádku HTTPS. Buď použijte HTTPS, nebo povolte nezabezpečené skripty.", "Displays action": "Zobrazí akci", @@ -190,7 +174,6 @@ "Unable to verify email address.": "Nepodařilo se ověřit e-mailovou adresu.", "Unban": "Zrušit vykázání", "Unable to enable Notifications": "Nepodařilo se povolit oznámení", - "Unmute": "Povolit", "Unnamed Room": "Nepojmenovaná místnost", "Uploading %(filename)s and %(count)s others": { "zero": "Nahrávání souboru %(filename)s", @@ -235,9 +218,7 @@ "Failed to copy": "Nepodařilo se zkopírovat", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Smazáním widgetu ho odstraníte všem uživatelům v této místnosti. Opravdu chcete tento widget smazat?", "Drop file here to upload": "Přetažením sem nahrajete", - "Create": "Vytvořit", "Jump to read receipt": "Přejít na poslední potvrzení o přečtení", - "Invite": "Pozvat", "Hangup": "Zavěsit", "You seem to be uploading files, are you sure you want to quit?": "Zřejmě právě nahráváte soubory. Chcete přesto odejít?", "You seem to be in a call, are you sure you want to quit?": "Zřejmě máte probíhající hovor. Chcete přesto odejít?", @@ -251,7 +232,6 @@ "Upload avatar": "Nahrát avatar", "Mention": "Zmínit", "Invited": "Pozvaní", - "Leave": "Opustit", "Search failed": "Vyhledávání selhalo", "Banned by %(displayName)s": "Vykázán(a) uživatelem %(displayName)s", "Privileged Users": "Privilegovaní uživatelé", @@ -403,7 +383,6 @@ "Sent messages will be stored until your connection has returned.": "Odeslané zprávy zůstanou uložené, dokud se spojení znovu neobnoví.", "Room": "Místnost", "Failed to load timeline position": "Nepodařilo se načíst pozici na časové ose", - "Analytics": "Analytické údaje", "Labs": "Experimentální funkce", "Reject all %(invitedRooms)s invites": "Odmítnutí všech %(invitedRooms)s pozvání", "Start automatically after system login": "Zahájit automaticky po přihlášení do systému", @@ -445,7 +424,6 @@ "No update available.": "Není dostupná žádná aktualizace.", "Resend": "Poslat znovu", "Collecting app version information": "Sbírání informací o verzi aplikace", - "View Source": "Zobrazit zdroj", "Tuesday": "Úterý", "Developer Tools": "Nástroje pro vývojáře", "Saturday": "Sobota", @@ -465,7 +443,6 @@ "Thursday": "Čtvrtek", "Search…": "Hledat…", "Back": "Zpět", - "Reply": "Odpovědět", "Show message in desktop notification": "Zobrazit text zprávy v oznámení na ploše", "Messages in group chats": "Zprávy ve skupinách", "Yesterday": "Včera", @@ -478,7 +455,6 @@ "Thank you!": "Děkujeme vám!", "Event sent!": "Událost odeslána!", "Event Content": "Obsah události", - "Quote": "Citovat", "Permission Required": "Vyžaduje oprávnění", "You do not have permission to start a conference call in this room": "V této místnosti nemáte oprávnění zahájit konferenční hovor", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", @@ -733,8 +709,6 @@ "Headphones": "Sluchátka", "Folder": "Desky", "Pin": "Připnout", - "Yes": "Ano", - "No": "Ne", "Add some now": "Přidat nějaké", "Main address": "Hlavní adresa", "This room is a continuation of another conversation.": "Tato místost je pokračováním jiné konverzace.", @@ -757,7 +731,6 @@ "No backup found!": "Nenalezli jsme žádnou zálohu!", "Failed to decrypt %(failedCount)s sessions!": "Nepovedlo se rozšifrovat %(failedCount)s sezení!", "Warning: you should only set up key backup from a trusted computer.": "Uporoznění: záloha by měla být prováděna na důvěryhodném počítači.", - "Next": "Další", "Recovery Method Removed": "Záloha klíčů byla odstraněna", "Go to Settings": "Přejít do nastavení", "That matches!": "To odpovídá!", @@ -767,7 +740,6 @@ "Your keys are being backed up (the first backup could take a few minutes).": "Klíče se zálohují (první záloha může trvat pár minut).", "Success!": "Úspěch!", "Unable to create key backup": "Nepovedlo se vyrobit zálohů klíčů", - "Retry": "Zkusit znovu", "Set up Secure Messages": "Nastavit bezpečné obnovení zpráv", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Pokud jste způsob obnovy neodstranili vy, mohou se pokoušet k vašemu účtu dostat útočníci. Změňte si raději ihned heslo a nastavte nový způsob obnovy v Nastavení.", "Set up": "Nastavit", @@ -787,7 +759,6 @@ "Failed to perform homeserver discovery": "Nepovedlo se zjisit adresu domovského serveru", "Registration has been disabled on this homeserver.": "Tento domovský server nepovoluje registraci.", "Invalid identity server discovery response": "Neplatná odpověď při hledání serveru identity", - "Username": "Uživatelské jméno", "Change": "Změnit", "Email (optional)": "E-mail (nepovinné)", "Phone (optional)": "Telefonní číslo (nepovinné)", @@ -1054,7 +1025,6 @@ "Failed to deactivate user": "Deaktivace uživatele se nezdařila", "This client does not support end-to-end encryption.": "Tento klient nepodporuje koncové šifrování.", "Messages in this room are not end-to-end encrypted.": "Zprávy nejsou koncově šifrované.", - "React": "Reagovat", "Message Actions": "Akce zprávy", "Show image": "Zobrazit obrázek", "You verified %(name)s": "Ověřili jste %(name)s", @@ -1097,7 +1067,6 @@ "Document": "Dokument", "Upload all": "Nahrát vše", "Resend %(unsentCount)s reaction(s)": "Poslat %(unsentCount)s reakcí znovu", - "Report Content": "Nahlásit obsah", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Na domovském serveru chybí veřejný klíč pro captcha. Nahlaste to prosím správci serveru.", "%(creator)s created and configured the room.": "%(creator)s vytvořil(a) a nakonfiguroval(a) místnost.", "View": "Zobrazit", @@ -1183,9 +1152,7 @@ "Trusted": "Důvěryhodné", "Not trusted": "Nedůvěryhodné", "Messages in this room are end-to-end encrypted.": "Zprávy jsou v této místnosti koncově šifrované.", - "Security": "Zabezpečení", "You have ignored this user, so their message is hidden. Show anyways.": "Tohoto uživatele ignorujete, takže jsou jeho zprávy skryté. Přesto zobrazit.", - "Reactions": "Reakce", "Any of the following data may be shared:": "Následující data můžou být sdílena:", "Your display name": "Vaše zobrazované jméno", "Your user ID": "Vaše ID", @@ -1263,7 +1230,6 @@ "in account data": "v datech účtu", "Manage": "Spravovat", "Securely cache encrypted messages locally for them to appear in search results.": "Bezpečně uchovávat zprávy na tomto zařízení aby se v nich dalo vyhledávat.", - "Enable": "Povolit", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Tato relace nezálohuje vaše klíče, ale už máte zálohu ze které je můžete obnovit.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Než se odhlásíte, připojte tuto relaci k záloze klíčů, abyste nepřišli o klíče, které mohou být jen v této relaci.", "Connect this session to Key Backup": "Připojit k zálohování klíčů", @@ -1315,7 +1281,6 @@ "If you can't scan the code above, verify by comparing unique emoji.": "Pokud vám skenování kódů nefunguje, ověřte se porovnáním emoji.", "You've successfully verified %(displayName)s!": "Úspěšně jste ověřili uživatele %(displayName)s!", "Got it": "Rozumím", - "Encryption enabled": "Šifrování je zapnuté", "Encryption not enabled": "Šifrování je vypnuté", "The encryption used by this room isn't supported.": "Šifrování používané v této místnosti není podporované.", "Clear all data in this session?": "Smazat všechna data v této relaci?", @@ -1331,12 +1296,9 @@ "Failed to find the following users": "Nepovedlo se najít následující uživatele", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Následující uživatelé asi neexistují nebo jsou neplatní a nelze je pozvat: %(csvNames)s", "Recent Conversations": "Nedávné konverzace", - "Suggestions": "Návrhy", "Recently Direct Messaged": "Nedávno kontaktovaní", "Go": "Ok", "Confirm your identity by entering your account password below.": "Potvrďte svou identitu zadáním hesla ke svému účtu.", - "Start": "Začít", - "Done": "Hotovo", "Go Back": "Zpět", "Cancel entering passphrase?": "Zrušit zadávání přístupové fráze?", "Setting up keys": "Příprava klíčů", @@ -1361,13 +1323,11 @@ "Verify by scanning": "Ověřte naskenováním", "You declined": "Odmítli jste", "%(name)s declined": "%(name)s odmítl(a)", - "Copy": "Zkopírovat", "Upgrade your encryption": "Aktualizovat šifrování", "Create key backup": "Vytvořit zálohu klíčů", "This session is encrypting history using the new recovery method.": "Tato relace šifruje historii zpráv s podporou nového způsobu obnovení.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Pokud se vám to stalo neúmyslně, můžete znovu nastavit zálohu zpráv pro tuto relaci. To znovu zašifruje historii zpráv novým způsobem.", "If disabled, messages from encrypted rooms won't appear in search results.": "Když je to zakázané, zprávy v šifrovaných místnostech se nebudou objevovat ve výsledcích vyhledávání.", - "Disable": "Zakázat", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s si bezpečně uchovává šifrované zprávy lokálně, aby v nich mohl vyhledávat:", "Space used:": "Použité místo:", "Indexed messages:": "Indexované zprávy:", @@ -1419,7 +1379,6 @@ "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "Nastavit adresy pro tuto místnost, aby uživatelé mohli místnost najít zkrze váš domovský server (%(localDomain)s)", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "V šifrovaných místnostech jsou vaše zprávy bezpečné a pouze vy a příjemce má klíče k jejich rozšifrování.", "Verify all users in a room to ensure it's secure.": "Ověřit všechny uživatele v místnosti, abyste se přesvědčili o bezpečnosti.", - "Verification cancelled": "Oveření bylo zrušeno", "Enter a server name": "Zadejte jméno serveru", "Use Single Sign On to continue": "Pokračovat pomocí Jednotného přihlášení", "Confirm adding this email address by using Single Sign On to prove your identity.": "Potvrďte přidání této adresy pomocí Jednotného přihlášení.", @@ -1522,8 +1481,6 @@ "Click the button below to confirm your identity.": "Klikněte na tlačítko níže pro potvrzení vaší identity.", "a new master key signature": "nový podpis hlavního klíče", "New version available. Update now.": "Je dostupná nová verze. Aktualizovat nyní.", - "Message layout": "Zobrazení zpráv", - "Modern": "Moderní", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Zadejte jméno písma, které máte naistalované v systému, a %(brand)s se jej pokusí použít.", "Customise your appearance": "Přizpůsobte si vzhled aplikace", "Appearance Settings only affect this %(brand)s session.": "Nastavení vzhledu působí jen v této relaci programu %(brand)s.", @@ -1554,7 +1511,6 @@ "To link to this room, please add an address.": "Přidejte prosím místnosti adresu aby na ní šlo odkazovat.", "The authenticity of this encrypted message can't be guaranteed on this device.": "Pravost této šifrované zprávy nelze na tomto zařízení ověřit.", "No recently visited rooms": "Žádné nedávno navštívené místnosti", - "People": "Lidé", "Explore public rooms": "Prozkoumat veřejné místnosti", "Preparing to download logs": "Příprava na stažení záznamů", "Download logs": "Stáhnout záznamy", @@ -1616,7 +1572,6 @@ "The call could not be established": "Hovor se nepovedlo navázat", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "TIP pro profíky: Pokud nahlásíte chybu, odešlete prosím ladicí protokoly, které nám pomohou problém vypátrat.", "Please view existing bugs on Github first. No match? Start a new one.": "Nejříve si prosím prohlédněte existující chyby na Githubu. Žádná shoda? Nahlašte novou chybu.", - "Report a bug": "Nahlásit chybu", "Add widgets, bridges & bots": "Přidat widgety, propojení a boty", "Widgets": "Widgety", "Show Widgets": "Zobrazit widgety", @@ -1625,7 +1580,6 @@ "Use the Desktop app to see all encrypted files": "Pro zobrazení všech šifrovaných souborů použijte desktopovou aplikaci", "Attach files from chat or just drag and drop them anywhere in a room.": "Připojte soubory z chatu nebo je jednoduše přetáhněte kamkoli do místnosti.", "No files visible in this room": "V této místnosti nejsou viditelné žádné soubory", - "About": "O", "Hey you. You're the best!": "Hej ty. Jsi nejlepší!", "Secret storage:": "Bezpečné úložiště:", "Backup key cached:": "Klíč zálohy cachován:", @@ -1645,7 +1599,6 @@ "Upload a file": "Nahrát soubor", "You've reached the maximum number of simultaneous calls.": "Dosáhli jste maximálního počtu souběžných hovorů.", "Too Many Calls": "Přiliš mnoho hovorů", - "User menu": "Uživatelská nabídka", "Switch theme": "Přepnout téma", "Switch to dark mode": "Přepnout do tmavého režimu", "Switch to light mode": "Přepnout do světlého režimu", @@ -1700,7 +1653,6 @@ "Sign in with SSO": "Přihlásit pomocí SSO", "Add an email to be able to reset your password.": "Přidejte email, abyste mohli obnovit své heslo.", "That phone number doesn't look quite right, please check and try again": "Toto telefonní číslo nevypadá úplně správně, zkontrolujte ho a zkuste to znovu", - "Forgot password?": "Zapomenuté heslo?", "Enter phone number": "Zadejte telefonní číslo", "Enter email address": "Zadejte emailovou adresu", "Take a picture": "Vyfotit", @@ -1876,7 +1828,6 @@ "Unable to set up keys": "Nepovedlo se nastavit klíče", "Save your Security Key": "Uložte svůj bezpečnostní klíč", "About homeservers": "O domovských serverech", - "Learn more": "Zjistit více", "Use your preferred Matrix homeserver if you have one, or host your own.": "Použijte svůj preferovaný domovský server Matrix, pokud ho máte, nebo hostujte svůj vlastní.", "Other homeserver": "Jiný domovský server", "Sign into your homeserver": "Přihlaste se do svého domovského serveru", @@ -2248,7 +2199,6 @@ "Save Changes": "Uložit změny", "Welcome to ": "Vítejte v ", "Support": "Podpora", - "Room name": "Název místnosti", "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "Toto obvykle ovlivňuje pouze to, jak je místnost zpracována na serveru. Pokud máte problémy s %(brand)s, nahlaste prosím chybu.", "Make sure the right people have access. You can invite more later.": "Zajistěte přístup pro správné lidi. Další můžete pozvat později.", "A private space to organise your rooms": "Soukromý prostor pro uspořádání vašich místností", @@ -2372,7 +2322,6 @@ "Some suggestions may be hidden for privacy.": "Některé návrhy mohou být z důvodu ochrany soukromí skryty.", "Search for rooms or people": "Hledat místnosti nebo osoby", "Message preview": "Náhled zprávy", - "Forward message": "Přeposlat zprávu", "Sent": "Odesláno", "You don't have permission to do this": "K tomu nemáte povolení", "Error - Mixed content": "Chyba - Smíšený obsah", @@ -2386,7 +2335,6 @@ "Collapse reply thread": "Sbalit vlákno odpovědi", "Show preview": "Zobrazit náhled", "View source": "Zobrazit zdroj", - "Forward": "Přeposlat", "Settings - %(spaceName)s": "Nastavení - %(spaceName)s", "Report the entire room": "Nahlásit celou místnost", "Spam or propaganda": "Spam nebo propaganda", @@ -2508,13 +2456,10 @@ "Visible to space members": "Viditelné pro členy prostoru", "Public room": "Veřejná místnost", "Private room (invite only)": "Soukromá místnost (pouze pro pozvané)", - "Create a room": "Vytvořit místnost", "Only people invited will be able to find and join this room.": "Tuto místnost budou moci najít a připojit se k ní pouze pozvaní lidé.", "Anyone will be able to find and join this room, not just members of .": "Tuto místnost bude moci najít a připojit se k ní kdokoli, nejen členové .", "You can change this at any time from room settings.": "Tuto hodnotu můžete kdykoli změnit v nastavení místnosti.", "Everyone in will be able to find and join this room.": "Všichni v budou moci tuto místnost najít a připojit se k ní.", - "Image": "Obrázek", - "Sticker": "Nálepka", "The call is in an unknown state!": "Hovor je v neznámém stavu!", "Call back": "Zavolat zpět", "Show %(count)s other previews": { @@ -2620,7 +2565,6 @@ "Change space avatar": "Změnit avatar prostoru", "Anyone in can find and join. You can select other spaces too.": "Kdokoli v může prostor najít a připojit se. Můžete vybrat i další prostory.", "Message didn't send. Click for info.": "Zpráva se neodeslala. Klikněte pro informace.", - "Message": "Zpráva", "To join a space you'll need an invite.": "Pro připojení k prostoru potřebujete pozvánku.", "%(reactors)s reacted with %(content)s": "%(reactors)s reagoval(a) na %(content)s", "Would you like to leave the rooms in this space?": "Chcete odejít z místností v tomto prostoru?", @@ -2770,7 +2714,6 @@ "Show all your rooms in Home, even if they're in a space.": "Zobrazit všechny místnosti v Domovu, i když jsou v prostoru.", "Rooms outside of a space": "Místnosti mimo prostor", "Manage rooms in this space": "Spravovat místnosti v tomto prostoru", - "Copy link": "Kopírovat odkaz", "Mentions only": "Pouze zmínky", "Forget": "Zapomenout", "Files": "Soubory", @@ -3111,7 +3054,6 @@ "Share for %(duration)s": "Sdílet na %(duration)s", "%(timeRemaining)s left": "%(timeRemaining)s zbývá", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Ladící protokoly obsahují údaje o používání aplikace včetně vašeho uživatelského jména, ID nebo aliasů místností, které jste navštívili, s kterými prvky uživatelského rozhraní jste naposledy interagovali a uživatelských jmen ostatních uživatelů. Neobsahují zprávy.", - "Video": "Video", "Next recently visited room or space": "Další nedávno navštívená místnost nebo prostor", "Previous recently visited room or space": "Předchozí nedávno navštívená místnost nebo prostor", "Event ID: %(eventId)s": "ID události: %(eventId)s", @@ -3737,7 +3679,6 @@ "Adding…": "Přidání…", "Write something…": "Napište něco…", "Rejecting invite…": "Odmítání pozvánky…", - "Loading…": "Načítání…", "Encrypting your message…": "Šifrování zprávy…", "Sending your message…": "Odeslání zprávy…", "Set a new account password…": "Nastavení nového hesla k účtu…", @@ -3952,6 +3893,35 @@ "Deny": "Odmítnout", "Asking to join": "Žádá se o vstup", "No requests": "Žádné žádosti", + "common": { + "about": "O", + "analytics": "Analytické údaje", + "encryption_enabled": "Šifrování je zapnuté", + "error": "Chyba", + "forward_message": "Přeposlat zprávu", + "image": "Obrázek", + "loading": "Načítání…", + "message": "Zpráva", + "message_layout": "Zobrazení zpráv", + "modern": "Moderní", + "mute": "Ztlumit", + "no_results": "Žádné výsledky", + "offline": "Offline", + "password": "Heslo", + "people": "Lidé", + "reactions": "Reakce", + "report_a_bug": "Nahlásit chybu", + "room_name": "Název místnosti", + "security": "Zabezpečení", + "settings": "Nastavení", + "sticker": "Nálepka", + "success": "Úspěch", + "suggestions": "Návrhy", + "unmute": "Povolit", + "username": "Uživatelské jméno", + "verification_cancelled": "Oveření bylo zrušeno", + "video": "Video" + }, "action": { "reject": "Odmítnout", "confirm": "Potvrdit", @@ -3976,5 +3946,8 @@ "share": "Sdílet", "skip": "Přeskočit", "logout": "Odhlásit se" + }, + "a11y": { + "user_menu": "Uživatelská nabídka" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json index 528b84f4bf65..5698b77dea49 100644 --- a/src/i18n/strings/da.json +++ b/src/i18n/strings/da.json @@ -1,6 +1,5 @@ { "Filter room members": "Filter medlemmer", - "Invites": "Invitationer", "Favourites": "Favoritter", "Rooms": "Rum", "Low priority": "Lav prioritet", @@ -24,27 +23,19 @@ "Advanced": "Avanceret", "Are you sure you want to reject the invitation?": "Er du sikker på du vil afvise invitationen?", "Banned users": "Bortviste brugere", - "Continue": "Fortsæt", "Cryptography": "Kryptografi", "Deactivate Account": "Deaktiver brugerkonto", "Default": "Standard", - "Error": "Fejl", "Export E2E room keys": "Eksporter E2E rum nøgler", "Failed to change password. Is your password correct?": "Kunne ikke ændre adgangskoden. Er din adgangskode rigtig?", "Failed to reject invitation": "Kunne ikke afvise invitationen", "Failed to unban": "Var ikke i stand til at ophæve forbuddet", "Favourite": "Favorit", "Notifications": "Notifikationer", - "Remove": "Fjern", - "Settings": "Indstillinger", "unknown error code": "Ukendt fejlkode", - "OK": "OK", "Search": "Søg", "powered by Matrix": "Drevet af Matrix", - "Edit": "Rediger", "Failed to forget room %(errCode)s": "Kunne ikke glemme rummet %(errCode)s", - "Mute": "Sæt på lydløs", - "Leave": "Forlad", "Register": "Registrér", "Unnamed room": "Unavngivet rum", "This email address is already in use": "Denne email adresse er allerede i brug", @@ -146,13 +137,11 @@ "All messages": "Alle beskeder", "Call invitation": "Opkalds invitation", "What's new?": "Hvad er nyt?", - "View Source": "Se Kilde", "All Rooms": "Alle rum", "You cannot delete this message. (%(code)s)": "Du kan ikke slette denne besked. (%(code)s)", "Thursday": "Torsdag", "Back": "Tilbage", "Show message in desktop notification": "Vis besked i skrivebordsnotifikation", - "Quote": "Citat", "Messages in group chats": "Beskeder i gruppechats", "Yesterday": "I går", "Error encountered (%(errorDetail)s).": "En fejl er opstået (%(errorDetail)s).", @@ -165,10 +154,8 @@ "Event Content": "Begivenhedsindhold", "Thank you!": "Tak!", "Logs sent": "Logfiler sendt", - "Reply": "Besvar", "Failed to send logs: ": "Kunne ikke sende logfiler: ", "Preparing to send logs": "Forbereder afsendelse af logfiler", - "Analytics": "Analyse data", "Call Failed": "Opkald mislykkedes", "Call failed due to misconfigured server": "Opkaldet mislykkedes pga. fejlkonfigureret server", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Bed administratoren af din homeserver (%(homeserverDomain)s) om at konfigurere en TURN server for at opkald virker pålideligt.", @@ -198,7 +185,6 @@ "Use an identity server": "Brug en identitetsserver", "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Brug en identitetsserver for at invitere pr. mail. Tryk på Fortsæt for at bruge den almindelige identitetsserver (%(defaultIdentityServerName)s) eller indtast en anden under Indstillinger.", "Use an identity server to invite by email. Manage in Settings.": "Brug en identitetsserver for at invitere pr. mail. Administrer dette under Indstillinger.", - "Leave room": "Forlad rummet", "Unbans user with given ID": "Fjerner ban fra brugeren med det oplyste ID", "Ignores a user, hiding their messages from you": "Ignorerer en bruger og skjuler dennes beskeder fra dig", "Stops ignoring a user, showing their messages going forward": "Stopper med at ignorere en bruger og viser deres beskeder igen fra nu af", @@ -371,7 +357,6 @@ "Show less": "Vis mindre", "Passwords don't match": "Adgangskoderne matcher ikke", "Confirm password": "Bekræft adgangskode", - "No": "Nej", "Enter password": "Indtast adgangskode", "Add a new server": "Tilføj en ny server", "Matrix": "Matrix", @@ -384,8 +369,6 @@ "%(senderName)s started a call": "%(senderName)s startede et opkald", "You started a call": "Du startede et opkald", "Verified!": "Bekræftet!", - "Decline": "Afvis", - "Save": "Gem", "Profile picture": "Profil billede", "Categories": "Kategorier", "Checking server": "Tjekker server", @@ -396,8 +379,6 @@ "Comment": "Kommentar", "Privacy": "Privatliv", "Please enter a name for the room": "Indtast et navn for rummet", - "No results": "Ingen resultater", - "Disable": "Deaktiver", "Profile": "Profil", "Local address": "Lokal adresse", "This room has no local addresses": "Dette rum har ingen lokal adresse", @@ -703,12 +684,18 @@ "Incorrect password": "Forkert adgangskode", "Incorrect username and/or password.": "Forkert brugernavn og/eller adgangskode.", "Your password has been reset.": "Din adgangskode er blevet nulstillet.", - "Forgot password?": "Glemt adgangskode?", - "Password": "Adgangskode", "Your password was successfully changed.": "Din adgangskode blev ændret.", "New Password": "Ny adgangskode", "Set a new custom sound": "Sæt en ny brugerdefineret lyd", "Empty room": "Tomt rum", + "common": { + "analytics": "Analyse data", + "error": "Fejl", + "mute": "Sæt på lydløs", + "no_results": "Ingen resultater", + "password": "Adgangskode", + "settings": "Indstillinger" + }, "action": { "reject": "Afvis", "confirm": "Bekræft", @@ -720,4 +707,4 @@ "update": "Opdater", "reset": "Nulstil" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 714c4eed8f7c..3b4c34a00595 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1,6 +1,5 @@ { "Filter room members": "Raummitglieder filtern", - "Invites": "Einladungen", "Favourites": "Favoriten", "Rooms": "Räume", "Low priority": "Niedrige Priorität", @@ -20,11 +19,9 @@ "Emoji": "Emojis", "Sign in": "Anmelden", "Warning!": "Warnung!", - "Error": "Fehler", "Advanced": "Erweitert", "Are you sure you want to reject the invitation?": "Bist du sicher, dass du die Einladung ablehnen willst?", "Banned users": "Verbannte Benutzer", - "Continue": "Fortfahren", "Cryptography": "Verschlüsselung", "Deactivate Account": "Benutzerkonto deaktivieren", "Account": "Benutzerkonto", @@ -40,25 +37,20 @@ "Import E2E room keys": "E2E-Raumschlüssel importieren", "Invalid Email Address": "Ungültige E-Mail-Adresse", "Sign in with": "Anmelden mit", - "Leave room": "Raum verlassen", "Moderator": "Moderator", "Notifications": "Benachrichtigungen", "": "", "No users have specific privileges in this room": "Keine Nutzer haben in diesem Raum privilegierte Berechtigungen", - "Password": "Passwort", "Permissions": "Berechtigungen", "Phone": "Telefon", "Please check your email and click on the link it contains. Once this is done, click continue.": "Bitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Anschließend auf \"Fortsetzen\" klicken.", "Privileged Users": "Privilegierte Benutzer", "Profile": "Profil", "Reject invitation": "Einladung ablehnen", - "Remove": "Entfernen", "Return to login screen": "Zur Anmeldemaske zurückkehren", - "Settings": "Einstellungen", "Signed Out": "Abgemeldet", "Sign out": "Abmelden", "Someone": "Jemand", - "Success": "Erfolg", "This doesn't appear to be a valid email address": "Dies scheint keine gültige E-Mail-Adresse zu sein", "This room is not accessible by remote Matrix servers": "Dieser Raum ist von Personen auf anderen Matrix-Servern nicht betretbar", "Admin": "Admin", @@ -151,8 +143,6 @@ "Join Room": "Raum betreten", "not specified": "nicht angegeben", "No more results": "Keine weiteren Ergebnisse", - "No results": "Keine Ergebnisse", - "OK": "Ok", "Search": "Suchen", "Search failed": "Suche ist fehlgeschlagen", "Server error": "Server-Fehler", @@ -181,9 +171,7 @@ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Uhrzeiten im 12-Stundenformat (z. B. 2:30 p. m.)", "Email address": "E-Mail-Adresse", "Error decrypting attachment": "Fehler beim Entschlüsseln des Anhangs", - "Mute": "Stummschalten", "Operation failed": "Aktion fehlgeschlagen", - "Unmute": "Stummschalten aufheben", "Invalid file%(extra)s": "Ungültige Datei%(extra)s", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s hat den Raumnamen entfernt.", "Passphrases must match": "Passphrases müssen übereinstimmen", @@ -207,10 +195,8 @@ "Import room keys": "Raum-Schlüssel importieren", "File to import": "Zu importierende Datei", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dieser Prozess erlaubt es dir, die Schlüssel für die in verschlüsselten Räumen empfangenen Nachrichten in eine lokale Datei zu exportieren. In Zukunft wird es möglich sein, diese Datei in eine andere Matrix-Anwendung zu importieren, sodass diese die Nachrichten ebenfalls entschlüsseln kann.", - "Analytics": "Analysedaten", "Add an Integration": "Eine Integration hinzufügen", "URL Previews": "URL-Vorschau", - "Offline": "Offline", "Online": "Online", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dieser Prozess erlaubt es dir, die zuvor von einer anderen Matrix-Anwendung exportierten Verschlüsselungs-Schlüssel zu importieren. Danach kannst du alle Nachrichten entschlüsseln, die auch bereits auf der anderen Anwendung entschlüsselt werden konnten.", "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Wenn du zuvor eine aktuellere Version von %(brand)s verwendet hast, ist deine Sitzung eventuell inkompatibel mit dieser Version. Bitte schließe dieses Fenster und kehre zur aktuelleren Version zurück.", @@ -237,7 +223,6 @@ "Custom level": "Selbstdefiniertes Berechtigungslevel", "Publish this room to the public in %(domain)s's room directory?": "Diesen Raum im Raumverzeichnis von %(domain)s veröffentlichen?", "Register": "Registrieren", - "Save": "Speichern", "Verified key": "Verifizierter Schlüssel", "You have disabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig deaktiviert.", "You have enabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig aktiviert.", @@ -251,13 +236,11 @@ }, "You must register to use this functionality": "Du musst dich registrieren, um diese Funktionalität nutzen zu können", "Create new room": "Neuer Raum", - "Start chat": "Unterhaltung beginnen", "New Password": "Neues Passwort", "Something went wrong!": "Etwas ist schiefgelaufen!", "Home": "Startseite", "Admin Tools": "Administrationswerkzeuge", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Verbindung zum Heim-Server fehlgeschlagen – bitte überprüfe die Internetverbindung und stelle sicher, dass dem SSL-Zertifikat deines Heimservers vertraut wird und dass Anfragen nicht durch eine Browser-Erweiterung blockiert werden.", - "Decline": "Ablehnen", "No display name": "Kein Anzeigename", "%(roomName)s does not exist.": "%(roomName)s existiert nicht.", "%(roomName)s is not accessible at this time.": "Auf %(roomName)s kann momentan nicht zugegriffen werden.", @@ -276,12 +259,10 @@ "Check for update": "Nach Aktualisierung suchen", "Delete widget": "Widget entfernen", "Define the power level of a user": "Berechtigungsstufe einers Benutzers setzen", - "Edit": "Bearbeiten", "Enable automatic language detection for syntax highlighting": "Automatische Spracherkennung für die Syntaxhervorhebung", "Unable to create widget.": "Widget kann nicht erstellt werden.", "You are not in this room.": "Du bist nicht in diesem Raum.", "You do not have permission to do that in this room.": "Du hast dafür keine Berechtigung.", - "Create": "Erstellen", "Automatically replace plain text Emoji": "Klartext-Emoji automatisch ersetzen", "AM": "a. m.", "PM": "p. m.", @@ -293,7 +274,6 @@ "Ignore": "Blockieren", "You are now ignoring %(userId)s": "%(userId)s ist jetzt blockiert", "You are no longer ignoring %(userId)s": "%(userId)s wird nicht mehr blockiert", - "Leave": "Verlassen", "Unignore": "Nicht mehr blockieren", "Unignored user": "Benutzer nicht mehr blockiert", "Ignored user": "Benutzer blockiert", @@ -311,7 +291,6 @@ }, "Delete Widget": "Widget löschen", "Mention": "Erwähnen", - "Invite": "Einladen", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Das Löschen des Widgets entfernt es für alle in diesem Raum. Wirklich löschen?", "Mirror local video feed": "Lokalen Video-Feed spiegeln", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", @@ -471,7 +450,6 @@ "Invite to this room": "In diesen Raum einladen", "Wednesday": "Mittwoch", "You cannot delete this message. (%(code)s)": "Diese Nachricht kann nicht gelöscht werden. (%(code)s)", - "Quote": "Zitieren", "Send logs": "Protokolldateien übermitteln", "All messages": "Alle Nachrichten", "Call invitation": "Anrufe", @@ -483,7 +461,6 @@ "Search…": "Suchen…", "Logs sent": "Protokolldateien gesendet", "Back": "Zurück", - "Reply": "Antworten", "Show message in desktop notification": "Nachrichteninhalt in der Desktopbenachrichtigung anzeigen", "Messages in group chats": "Gruppenunterhaltungen", "Yesterday": "Gestern", @@ -492,7 +469,6 @@ "Off": "Aus", "Event Type": "Eventtyp", "Event sent!": "Ereignis gesendet!", - "View Source": "Rohdaten anzeigen", "Event Content": "Ereignisinhalt", "Thank you!": "Danke!", "Missing roomId.": "Fehlende Raum-ID.", @@ -566,13 +542,11 @@ "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "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": "Inkompatible Datenbanken", "Continue With Encryption Disabled": "Mit deaktivierter Verschlüsselung fortfahren", - "Next": "Weiter", "That matches!": "Das passt!", "That doesn't match.": "Das passt nicht.", "Go back to set it again.": "Gehe zurück und setze es erneut.", "Download": "Herunterladen", "Unable to create key backup": "Konnte Schlüsselsicherung nicht erstellen", - "Retry": "Wiederholen", "Unable to restore backup": "Konnte Schlüsselsicherung nicht wiederherstellen", "No backup found!": "Keine Schlüsselsicherung gefunden!", "Use a few words, avoid common phrases": "Benutze einige Worte und vermeide gängige Phrasen", @@ -650,8 +624,6 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Sichere Nachrichten mit diesem Benutzer sind Ende-zu-Ende-verschlüsselt und können nicht von Dritten gelesen werden.", "Got It": "Verstanden", "Verify this user by confirming the following number appears on their screen.": "Verifiziere diesen Nutzer, indem du bestätigst, dass die folgende Nummer auf dessen Bildschirm erscheint.", - "Yes": "Ja", - "No": "Nein", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Wir haben dir eine E-Mail geschickt, um deine Adresse zu überprüfen. Bitte folge den Anweisungen dort und klicke dann auf die Schaltfläche unten.", "Email Address": "E-Mail-Adresse", "All keys backed up": "Alle Schlüssel gesichert", @@ -785,7 +757,6 @@ "I don't want my encrypted messages": "Ich möchte meine verschlüsselten Nachrichten nicht", "You'll lose access to your encrypted messages": "Du wirst den Zugang zu deinen verschlüsselten Nachrichten verlieren", "This homeserver would like to make sure you are not a robot.": "Dieser Heim-Server möchte sicherstellen, dass du kein Roboter bist.", - "Username": "Benutzername", "Change": "Ändern", "Email (optional)": "E-Mail-Adresse (optional)", "Phone (optional)": "Telefon (optional)", @@ -940,7 +911,6 @@ "not found": "nicht gefunden", "Manage": "Verwalten", "Securely cache encrypted messages locally for them to appear in search results.": "Speichere verschlüsselte Nachrichten lokal, sodass sie deinen Suchergebnissen erscheinen können.", - "Enable": "Aktivieren", "Cannot connect to integration manager": "Verbindung zum Integrationsassistenten fehlgeschlagen", "The integration manager is offline or it cannot reach your homeserver.": "Der Integrationsassistent ist außer Betrieb oder kann deinen Heim-Server nicht erreichen.", "not stored": "nicht gespeichert", @@ -983,7 +953,6 @@ "Browse": "Durchsuchen", "Direct Messages": "Direktnachrichten", "You can use /help to list available commands. Did you mean to send this as a message?": "Du kannst /help benutzen, um alle verfügbaren Befehle aufzulisten. Willst du es stattdessen als Nachricht senden?", - "Suggestions": "Vorschläge", "Recently Direct Messaged": "Zuletzt kontaktiert", "Go": "Los", "Command Help": "Befehl Hilfe", @@ -1010,7 +979,6 @@ "one": "%(count)s Sitzung" }, "Hide sessions": "Sitzungen ausblenden", - "Encryption enabled": "Verschlüsselung aktiviert", "Encryption not enabled": "Verschlüsselung nicht aktiviert", "You verified %(name)s": "Du hast %(name)s verifiziert", "You cancelled verifying %(name)s": "Du hast die Verifizierung von %(name)s abgebrochen", @@ -1038,13 +1006,10 @@ "When rooms are upgraded": "Raumaktualisierungen", "Scan this unique code": "Lese diesen eindeutigen Code ein", "Compare unique emoji": "Vergleiche einzigartige Emojis", - "Start": "Starte", "Discovery": "Kontakte", - "Done": "Fertig", "Trusted": "Vertrauenswürdig", "Not trusted": "Nicht vertrauenswürdig", "Messages in this room are not end-to-end encrypted.": "Nachrichten in diesem Raum sind nicht Ende-zu-Ende verschlüsselt.", - "Security": "Sicherheit", "Ask %(displayName)s to scan your code:": "Bitte %(displayName)s, deinen Code zu scannen:", "Verify by emoji": "Mit Emojis verifizieren", "Verify by comparing unique emoji.": "Durch den Vergleich einzigartiger Emojis verifizieren.", @@ -1123,7 +1088,6 @@ "Unencrypted": "Unverschlüsselt", "Encrypted by a deleted session": "Von einer gelöschten Sitzung verschlüsselt", "The encryption used by this room isn't supported.": "Die von diesem Raum verwendete Verschlüsselung wird nicht unterstützt.", - "React": "Reagieren", "e.g. my-room": "z. B. mein-raum", "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Verwende einen Identitäts-Server, um per E-Mail einzuladen. Nutze den Standardidentitäts-Server (%(defaultIdentityServerName)s) oder konfiguriere einen in den Einstellungen.", "Use an identity server to invite by email. Manage in Settings.": "Verwende einen Identitäts-Server, um per E-Mail-Adresse einladen zu können. Lege einen in den Einstellungen fest.", @@ -1135,9 +1099,7 @@ "Report Content to Your Homeserver Administrator": "Inhalte an die Administration deines Heim-Servers melden", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Wenn du diese Nachricht meldest, wird die eindeutige Ereignis-ID an die Administration deines Heim-Servers übermittelt. Wenn die Nachrichten in diesem Raum verschlüsselt sind, wird deine Heim-Server-Administration nicht in der Lage sein, Nachrichten zu lesen oder Medien einzusehen.", "Send report": "Bericht senden", - "Report Content": "Inhalt melden", "%(creator)s created and configured the room.": "%(creator)s hat den Raum erstellt und konfiguriert.", - "Copy": "Kopieren", "Sends a message as html, without interpreting it as markdown": "Sendet eine Nachricht als HTML, ohne sie als Markdown darzustellen", "Show shortcuts to recently viewed rooms above the room list": "Kürzlich besuchte Räume anzeigen", "Use Single Sign On to continue": "Einmalanmeldung zum Fortfahren nutzen", @@ -1312,7 +1274,6 @@ "Verification timed out.": "Verifikationsanfrage abgelaufen.", "%(displayName)s cancelled verification.": "%(displayName)s hat die Verifikationsanfrage abgelehnt.", "You cancelled verification.": "Du hast die Verifikation abgebrochen.", - "Verification cancelled": "Verifikation abgebrochen", "Message Actions": "Nachrichtenaktionen", "Show image": "Bild anzeigen", "You have ignored this user, so their message is hidden. Show anyways.": "Du blockierst diesen Benutzer, deshalb werden seine Nachrichten nicht angezeigt. Trotzdem anzeigen.", @@ -1321,7 +1282,6 @@ "You cancelled": "Du brachst ab", "You sent a verification request": "Du hast eine Verifizierungsanfrage gesendet", "Show all": "Alles zeigen", - "Reactions": "Reaktionen", "reacted with %(shortName)s": "hat mit %(shortName)s reagiert", "Message deleted": "Nachricht gelöscht", "Message deleted by %(name)s": "Nachricht von %(name)s gelöscht", @@ -1506,7 +1466,6 @@ "Close dialog or context menu": "Dialog oder Kontextmenü schließen", "Cancel autocomplete": "Autovervollständigung deaktivieren", "Unable to revoke sharing for email address": "Dem Teilen der E-Mail-Adresse kann nicht widerrufen werden", - "Disable": "Deaktivieren", "Not currently indexing messages for any room.": "Derzeit werden keine Nachrichten für Räume indiziert.", "Space used:": "Speicherplatzbedarf:", "Indexed messages:": "Indizierte Nachrichten:", @@ -1560,7 +1519,6 @@ "This address is already in use": "Diese Adresse wird bereits verwendet", "Use a different passphrase?": "Eine andere Passphrase verwenden?", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Deine Server-Administration hat die Ende-zu-Ende-Verschlüsselung für private Räume und Direktnachrichten standardmäßig deaktiviert.", - "People": "Personen", "There was an error removing that address. It may no longer exist or a temporary error occurred.": "Beim Entfernen dieser Adresse ist ein Fehler aufgetreten. Vielleicht existiert sie nicht mehr oder es kam zu einem temporären Fehler.", "You've previously used a newer version of %(brand)s with this session. To use this version again with end to end encryption, you will need to sign out and back in again.": "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.", "Switch to light mode": "Zum hellen Thema wechseln", @@ -1585,8 +1543,6 @@ "Dark": "Dunkel", "Use custom size": "Andere Schriftgröße verwenden", "Hey you. You're the best!": "Hey du. Du bist großartig!", - "Message layout": "Nachrichtenlayout", - "Modern": "Modern", "Use a system font": "Systemschriftart verwenden", "System font name": "Systemschriftart", "Customise your appearance": "Verändere das Erscheinungsbild", @@ -1608,7 +1564,6 @@ "Unknown caller": "Unbekannter Anrufer", "Are you sure you want to cancel entering passphrase?": "Bist du sicher, dass du die Eingabe der Passphrase abbrechen möchtest?", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", - "User menu": "Benutzermenü", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "Das Durchsuchen von verschlüsselten Nachrichten wird aus Sicherheitsgründen nur von %(brand)s Desktop unterstützt. Hier gehts zum Download.", "Show rooms with unread messages first": "Räume mit ungelesenen Nachrichten zuerst zeigen", "Show previews of messages": "Nachrichtenvorschau anzeigen", @@ -1666,7 +1621,6 @@ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Stellt ( ͡° ͜ʖ ͡°) einer Klartextnachricht voran", "Unknown App": "Unbekannte App", "Not encrypted": "Nicht verschlüsselt", - "About": "Über", "Room settings": "Raumeinstellungen", "Take a picture": "Bildschirmfoto", "Unpin": "Nicht mehr anheften", @@ -1720,7 +1674,6 @@ "Modal Widget": "Modales Widget", "Offline encrypted messaging using dehydrated devices": "Offline verschlüsselte Kommunikation mit Hilfe von dehydrierten Geräten", "Send feedback": "Rückmeldung senden", - "Report a bug": "Einen Fehler melden", "Feedback sent": "Rückmeldung gesendet", "Takes the call in the current room off hold": "Beendet das Halten des Anrufs", "Places the call in the current room on hold": "Den aktuellen Anruf halten", @@ -2082,10 +2035,8 @@ "Use email to optionally be discoverable by existing contacts.": "Nutze optional eine E-Mail-Adresse, um von Nutzern gefunden werden zu können.", "Use email or phone to optionally be discoverable by existing contacts.": "Nutze optional eine E-Mail-Adresse oder Telefonnummer, um von Nutzern gefunden werden zu können.", "Add an email to be able to reset your password.": "Füge eine E-Mail-Adresse hinzu, um dein Passwort zurücksetzen zu können.", - "Forgot password?": "Passwort vergessen?", "That phone number doesn't look quite right, please check and try again": "Diese Telefonummer sieht nicht ganz richtig aus. Bitte überprüfe deine Eingabe und versuche es erneut", "About homeservers": "Über Heim-Server", - "Learn more": "Mehr erfahren", "Use your preferred Matrix homeserver if you have one, or host your own.": "Verwende einen Matrix-Heim-Server deiner Wahl oder betreibe deinen eigenen.", "Other homeserver": "Anderer Heim-Server", "Sign into your homeserver": "Melde dich bei deinem Heim-Server an", @@ -2187,7 +2138,6 @@ "Value in this room": "Wert in diesem Raum", "Values at explicit levels": "Werte für explizite Stufen", "Settable at room": "Für den Raum einstellbar", - "Room name": "Raumname", "%(count)s members": { "other": "%(count)s Mitglieder", "one": "%(count)s Mitglied" @@ -2373,7 +2323,6 @@ "Or send invite link": "Oder versende einen Einladungslink", "If you have permissions, open the menu on any message and select Pin to stick them here.": "Sofern du die Berechtigung hast, öffne das Menü einer Nachricht und wähle Anheften, ⁣ um sie hier aufzubewahren.", "Search for rooms or people": "Räume oder Leute suchen", - "Forward message": "Nachricht weiterleiten", "Sent": "Gesendet", "You don't have permission to do this": "Du bist dazu nicht berechtigt", "Error loading Widget": "Fehler beim Laden des Widgets", @@ -2388,7 +2337,6 @@ "Report": "Melden", "Collapse reply thread": "Antworten verbergen", "Show preview": "Vorschau zeigen", - "Forward": "Weiterleiten", "Settings - %(spaceName)s": "Einstellungen - %(spaceName)s", "Report the entire room": "Den ganzen Raum melden", "Spam or propaganda": "Spam oder Propaganda", @@ -2492,8 +2440,6 @@ "Connection failed": "Verbindung fehlgeschlagen", "Silence call": "Anruf stummschalten", "Error downloading audio": "Fehler beim Herunterladen der Audiodatei", - "Image": "Bild", - "Sticker": "Sticker", "An unknown error occurred": "Ein unbekannter Fehler ist aufgetreten", "Message bubbles": "Nachrichtenblasen", "More": "Mehr", @@ -2554,7 +2500,6 @@ "Public room": "Öffentlicher Raum", "Private room (invite only)": "Privater Raum (Einladung erforderlich)", "Room visibility": "Raumsichtbarkeit", - "Create a room": "Raum erstellen", "Add space": "Space hinzufügen", "Automatically invite members from this room to the new one": "Mitglieder automatisch in den neuen Raum einladen", "Search spaces": "Spaces durchsuchen", @@ -2615,7 +2560,6 @@ "Don't leave any rooms": "Keine Räume und Subspaces verlassen", "%(reactors)s reacted with %(content)s": "%(reactors)s hat mit %(content)s reagiert", "Some encryption parameters have been changed.": "Einige Verschlüsselungsoptionen wurden geändert.", - "Message": "Nachricht", "Message didn't send. Click for info.": "Nachricht nicht gesendet. Klicke für Details.", "To avoid these issues, create a new public room for the conversation you plan to have.": "Erstelle einen neuen Raum für deine Konversation, um diese Probleme zu umgehen.", "It's not recommended to make encrypted rooms public. It will mean anyone can find and join the room, so anyone can read messages. You'll get none of the benefits of encryption. Encrypting messages in a public room will make receiving and sending messages slower.": "Es ist nicht sinnvoll, verschlüsselte Räume öffentlich zu machen. Das würde bedeuten, dass alle den Raum finden und betreten, also auch Nachrichten lesen könnten. Du erhältst also keinen Vorteil der Verschlüsselung, während sie das Senden und Empfangen von Nachrichten langsamer macht.", @@ -2768,7 +2712,6 @@ "Home is useful for getting an overview of everything.": "Die Startseite bietet dir einen Überblick über deine Unterhaltungen.", "Get notifications as set up in your settings": "Du erhältst Benachrichtigungen, wie du sie in den Einstellungen konfiguriert hast", "Spaces to show": "Anzuzeigende Spaces", - "Copy link": "Link kopieren", "Mentions only": "Nur Erwähnungen", "Forget": "Vergessen", "Files": "Dateien", @@ -3140,7 +3083,6 @@ "one": "1 Teilnehmer", "other": "%(count)s Teilnehmer" }, - "Video": "Video", "Try again later, or ask a room or space admin to check if you have access.": "Versuche es später erneut oder bitte einen Raum- oder Space-Admin um eine Zutrittserlaubnis.", "This room or space is not accessible at this time.": "Dieser Raum oder Space ist im Moment nicht zugänglich.", "Are you sure you're at the right place?": "Bist du sicher am richtigen Ort?", @@ -3734,7 +3676,6 @@ "Adding…": "Füge hinzu …", "Write something…": "Schreibe etwas …", "Rejecting invite…": "Lehne Einladung ab …", - "Loading…": "Lade …", "Joining room…": "Betrete Raum …", "Joining space…": "Betrete Space …", "Encrypting your message…": "Verschlüssele deine Nachricht …", @@ -3952,6 +3893,35 @@ "Asking to join": "Beitrittsanfragen", "See less": "Weniger", "See more": "Mehr", + "common": { + "about": "Über", + "analytics": "Analysedaten", + "encryption_enabled": "Verschlüsselung aktiviert", + "error": "Fehler", + "forward_message": "Nachricht weiterleiten", + "image": "Bild", + "loading": "Lade …", + "message": "Nachricht", + "message_layout": "Nachrichtenlayout", + "modern": "Modern", + "mute": "Stummschalten", + "no_results": "Keine Ergebnisse", + "offline": "Offline", + "password": "Passwort", + "people": "Personen", + "reactions": "Reaktionen", + "report_a_bug": "Einen Fehler melden", + "room_name": "Raumname", + "security": "Sicherheit", + "settings": "Einstellungen", + "sticker": "Sticker", + "success": "Erfolg", + "suggestions": "Vorschläge", + "unmute": "Stummschalten aufheben", + "username": "Benutzername", + "verification_cancelled": "Verifikation abgebrochen", + "video": "Video" + }, "action": { "reject": "Ablehnen", "confirm": "Bestätigen", @@ -3976,5 +3946,8 @@ "share": "Teilen", "skip": "Überspringen", "logout": "Abmelden" + }, + "a11y": { + "user_menu": "Benutzermenü" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index f4a2374361e6..4b027236cd28 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -1,12 +1,8 @@ { - "Error": "Σφάλμα", "Failed to forget room %(errCode)s": "Δεν ήταν δυνατή η διαγραφή του δωματίου (%(errCode)s)", - "Mute": "Σίγαση", "Notifications": "Ειδοποιήσεις", "Operation failed": "Η λειτουργία απέτυχε", - "Remove": "Αφαίρεση", "Search": "Αναζήτηση", - "Settings": "Ρυθμίσεις", "unknown error code": "άγνωστος κωδικός σφάλματος", "Account": "Λογαριασμός", "Admin": "Διαχειριστής", @@ -38,7 +34,6 @@ "Changes your display nickname": "Αλλάζει το ψευδώνυμο χρήστη", "powered by Matrix": "λειτουργεί με το Matrix", "Confirm password": "Επιβεβαίωση κωδικού πρόσβασης", - "Continue": "Συνέχεια", "Cryptography": "Κρυπτογραφία", "Current password": "Τωρινός κωδικός πρόσβασης", "Custom level": "Προσαρμοσμένο επίπεδο", @@ -70,11 +65,9 @@ "Incorrect verification code": "Λανθασμένος κωδικός επαλήθευσης", "Invalid Email Address": "Μη έγκυρη διεύθυνση ηλεκτρονικής αλληλογραφίας", "Invited": "Προσκλήθηκε", - "Invites": "Προσκλήσεις", "Sign in with": "Συνδεθείτε με", "Jump to first unread message.": "Πηγαίνετε στο πρώτο μη αναγνωσμένο μήνυμα.", "Labs": "Πειραματικά", - "Leave room": "Αποχώρηση από το δωμάτιο", "Low priority": "Χαμηλής προτεραιότητας", "Command error": "Σφάλμα εντολής", "Commands": "Εντολές", @@ -87,15 +80,11 @@ "New passwords must match each other.": "Οι νέοι κωδικοί πρόσβασης πρέπει να ταιριάζουν.", "": "<δεν υποστηρίζεται>", "No more results": "Δεν υπάρχουν άλλα αποτελέσματα", - "No results": "Κανένα αποτέλεσμα", - "OK": "Εντάξει", - "Password": "Κωδικός πρόσβασης", "Passwords can't be empty": "Οι κωδικοί πρόσβασης δεν γίνετε να είναι κενοί", "Phone": "Τηλέφωνο", "Register": "Εγγραφή", "%(brand)s version:": "Έκδοση %(brand)s:", "Rooms": "Δωμάτια", - "Save": "Αποθήκευση", "Search failed": "Η αναζήτηση απέτυχε", "Server error": "Σφάλμα διακομιστή", "Signed Out": "Αποσυνδέθηκε", @@ -104,14 +93,11 @@ "Someone": "Κάποιος", "This email address is already in use": "Η διεύθυνση ηλ. αλληλογραφίας χρησιμοποιείται ήδη", "This email address was not found": "Δεν βρέθηκε η διεύθυνση ηλ. αλληλογραφίας", - "Success": "Επιτυχία", "Create new room": "Δημιουργία νέου δωματίου", - "Start chat": "Έναρξη συνομιλίας", "Add": "Προσθήκη", "Admin Tools": "Εργαλεία διαχειριστή", "No media permissions": "Χωρίς δικαιώματα πολυμέσων", "Banned users": "Αποκλεισμένοι χρήστες", - "Decline": "Απόρριψη", "Enter passphrase": "Εισαγωγή συνθηματικού", "Failed to set display name": "Δεν ήταν δυνατό ο ορισμός του ονόματος εμφάνισης", "Home": "Αρχική", @@ -137,7 +123,6 @@ "Unable to verify email address.": "Αδυναμία επιβεβαίωσης διεύθυνσης ηλεκτρονικής αλληλογραφίας.", "Unban": "Άρση αποκλεισμού", "Unable to enable Notifications": "Αδυναμία ενεργοποίησης των ειδοποιήσεων", - "Unmute": "Άρση σίγασης", "Unnamed Room": "Ανώνυμο δωμάτιο", "Upload avatar": "Αποστολή προσωπικής εικόνας", "Upload Failed": "Απέτυχε η αποστολή", @@ -197,7 +182,6 @@ "Drop file here to upload": "Αποθέστε εδώ για αποστολή", "Online": "Σε σύνδεση", "Idle": "Αδρανής", - "Offline": "Εκτός σύνδεσης", "%(senderDisplayName)s removed the room avatar.": "Ο %(senderDisplayName)s διέγραψε την προσωπική εικόνα του δωματίου.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "Ο %(senderDisplayName)s άλλαξε την προσωπική εικόνα του %(roomName)s", "Something went wrong!": "Κάτι πήγε στραβά!", @@ -238,7 +222,6 @@ "You seem to be in a call, are you sure you want to quit?": "Φαίνεται ότι είστε σε μια κλήση, είστε βέβαιοι ότι θέλετε να αποχωρήσετε;", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", "Connectivity to the server has been lost.": "Χάθηκε η συνδεσιμότητα στον διακομιστή.", - "Analytics": "Αναλυτικά δεδομένα", "Failed to invite": "Δεν ήταν δυνατή η πρόσκληση", "%(senderDisplayName)s changed the room avatar to ": "Ο %(senderDisplayName)s άλλαξε την εικόνα του δωματίου σε ", "You may need to manually permit %(brand)s to access your microphone/webcam": "Μπορεί να χρειαστεί να ορίσετε χειροκίνητα την πρόσβαση του %(brand)s στο μικρόφωνο/κάμερα", @@ -281,7 +264,6 @@ "On": "Ενεργό", "Changelog": "Αλλαγές", "Waiting for response from server": "Αναμονή απάντησης από τον διακομιστή", - "Leave": "Αποχώρηση", "Warning": "Προειδοποίηση", "This Room": "Στο δωμάτιο", "Resend": "Αποστολή ξανά", @@ -317,8 +299,6 @@ "What's New": "Τι νέο υπάρχει", "Off": "Ανενεργό", "Failed to remove tag %(tagName)s from room": "Δεν ήταν δυνατή η διαγραφή της ετικέτας %(tagName)s από το δωμάτιο", - "View Source": "Προβολή κώδικα", - "Quote": "Παράθεση", "Call Failed": "Η κλήση απέτυχε", "AM": "ΠΜ", "PM": "ΜΜ", @@ -336,7 +316,6 @@ "Message Pinning": "Καρφίτσωμα Μηνυμάτων", "Enable URL previews for this room (only affects you)": "Ενεργοποίηση προεπισκόπισης URL για αυτό το δωμάτιο (επηρεάζει μόνο εσάς)", "Mention": "Αναφορά", - "Invite": "Πρόσκληση", "Send an encrypted reply…": "Αποστολή κρυπτογραφημένης απάντησης…", "Send an encrypted message…": "Αποστολή κρυπτογραφημένου μηνύματος…", "%(duration)ss": "%(duration)sδ", @@ -393,9 +372,6 @@ "Your homeserver has exceeded its user limit.": "Ο διακομιστής σας ξεπέρασε το όριο χρηστών.", "Use app": "Χρησιμοποιήστε την εφαρμογή", "Use app for a better experience": "Χρησιμοποιήστε την εφαρμογή για καλύτερη εμπειρία", - "Enable": "Ενεργοποίηση", - "No": "Όχι", - "Yes": "Ναι", "No need for symbols, digits, or uppercase letters": "Δεν χρειάζονται σύμβολα, ψηφία, ή κεφαλαία γράμματα", "Use a few words, avoid common phrases": "Χρησιμοποιήστε αρκετές λέξεις, αποφύγετε συνηθισμένες φράσεις", "Unknown server error": "Άγνωστο σφάλμα διακομιστή", @@ -681,7 +657,6 @@ "Confirm adding phone number": "Επιβεβαιώστε την προσθήκη του τηλεφωνικού αριθμού", "Click the button below to confirm adding this email address.": "Πιέστε το κουμπί από κάτω για να επιβεβαιώσετε την προσθήκη της διεύθυνσης ηλ. ταχυδρομείου.", "Confirm adding email": "Επιβεβαιώστε την προσθήκη διεύθυνσης ηλ. ταχυδρομείου", - "Done": "Τέλος", "Not Trusted": "Μη Έμπιστο", "You're already in a call with this person.": "Είστε ήδη σε κλήση με αυτόν τον χρήστη.", "Already in call": "Ήδη σε κλήση", @@ -854,7 +829,6 @@ "Poll": "Ψηφοφορία", "You do not have permission to start polls in this room.": "Δεν έχετε άδεια να ξεκινήσετε ψηφοφορίες σε αυτήν την αίθουσα.", "Voice Message": "Φωνητικό μήνυμα", - "Sticker": "Αυτοκόλλητο", "Hide stickers": "Απόκρυψη αυτοκόλλητων", "Send voice message": "Στείλτε φωνητικό μήνυμα", "This room has been replaced and is no longer active.": "Αυτό το δωμάτιο έχει αντικατασταθεί και δεν είναι πλέον ενεργό.", @@ -910,8 +884,6 @@ "Error saving notification preferences": "Σφάλμα κατά την αποθήκευση των προτιμήσεων ειδοποιήσεων", "Messages containing keywords": "Μηνύματα που περιέχουν λέξεις-κλειδιά", "Message bubbles": "Συννεφάκια μηνυμάτων", - "Modern": "Μοντέρνο", - "Message layout": "Διάταξη μηνύματος", "Updating spaces... (%(progress)s out of %(count)s)": { "one": "Ενημέρωση χώρου...", "other": "Ενημέρωση χώρων... (%(progress)s out of %(count)s)" @@ -982,7 +954,6 @@ "Invite people": "Προσκαλέστε άτομα", "Add some details to help people recognise it.": "Προσθέστε ορισμένες λεπτομέρειες για να βοηθήσετε τους άλλους να το αναγνωρίσουν.", "Spaces are a new way to group rooms and people. What kind of Space do you want to create? You can change this later.": "Οι Χώροι είναι ένας νέος τρόπος ομαδοποίησης δωματίων και ατόμων. Τι είδους Χώρο θέλετε να δημιουργήσετε; Μπορείτε αυτό να το αλλάξετε αργότερα.", - "People": "Άτομα", "Generating a ZIP": "Δημιουργία ZIP", "Are you sure you want to exit during this export?": "Είστε βέβαιοι ότι θέλετε να αποχωρήσετε κατά τη διάρκεια αυτής της εξαγωγής;", "Unknown App": "Άγνωστη εφαρμογή", @@ -1201,7 +1172,6 @@ "Review": "Ανασκόπηση", "Review to ensure your account is safe": "Ελέγξτε για να βεβαιωθείτε ότι ο λογαριασμός σας είναι ασφαλής", "Share anonymous data to help us identify issues. Nothing personal. No third parties. Learn More": "Μοιραστείτε ανώνυμα δεδομένα για να μας βοηθήσετε να εντοπίσουμε προβλήματα. Τίποτα προσωπικό. Χωρίς τρίτους. Μάθετε περισσότερα", - "Learn more": "Μάθετε περισσότερα", "You previously consented to share anonymous usage data with us. We're updating how that works.": "Έχετε συμφωνήσει να μοιραστείτε ανώνυμα δεδομένα χρήσης μαζί μας. Ενημερώνουμε τον τρόπο που λειτουργεί.", "Help improve %(analyticsOwner)s": "Βοηθήστε στη βελτίωση του %(analyticsOwner)s", "That's fine": "Είναι εντάξει", @@ -1390,7 +1360,6 @@ "This bridge was provisioned by .": "Αυτή η γέφυρα παρέχεται από τον .", "Jump to first invite.": "Μετάβαση στην πρώτη πρόσκληση.", "Jump to first unread room.": "Μετάβαση στο πρώτο μη αναγνωσμένο δωμάτιο.", - "Create": "Δημιουργία", "You can change these anytime.": "Μπορείτε να τα αλλάξετε ανά πάσα στιγμή.", "Your private space": "Ο ιδιωτικός σας χώρος", "Your public space": "Ο δημόσιος χώρος σας", @@ -1604,7 +1573,6 @@ "Share content": "Κοινή χρήση περιεχομένου", "Application window": "Παράθυρο εφαρμογής", "Share entire screen": "Κοινή χρήση ολόκληρης της οθόνης", - "Copy": "Αντιγραφή", "Sorry, you can't edit a poll after votes have been cast.": "Λυπούμαστε, δεν μπορείτε να επεξεργαστείτε μια δημοσκόπηση μετά την ψηφοφορία.", "Can't edit poll": "Αδυναμία επεξεργασίας δημοσκόπησης", "Zoom out": "Σμίκρυνση", @@ -1758,7 +1726,6 @@ "Preferences": "Προτιμήσεις", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Τα αρχεία καταγραφής εντοπισμού σφαλμάτων περιέχουν δεδομένα χρήσης εφαρμογών, συμπεριλαμβανομένου του ονόματος χρήστη σας, των αναγνωριστικών ή των ψευδωνύμων των δωματίων που έχετε επισκεφτεί, των στοιχείων διεπαφής χρήστη με τα οποία αλληλεπιδράσατε τελευταία και των ονομάτων χρήστη άλλων χρηστών. Δεν περιέχουν μηνύματα.", "Legal": "Νομικό", - "Video": "Βίντεο", "User signing private key:": "Ιδιωτικό κλειδί για υπογραφή χρήστη:", "Your homeserver doesn't seem to support this feature.": "Ο διακομιστής σας δε φαίνεται να υποστηρίζει αυτήν τη δυνατότητα.", "Verify session": "Επαλήθευση συνεδρίας", @@ -1815,7 +1782,6 @@ "Illegal Content": "Παράνομο Περιεχόμενο", "Toxic Behaviour": "Τοξική Συμπεριφορά", "Disagree": "Διαφωνώ", - "Report Content": "Αναφορά Περιεχομένου", "Email (optional)": "Email (προαιρετικό)", "You were banned from %(roomName)s by %(memberName)s": "Έχετε αποκλειστεί από το %(roomName)s από τον %(memberName)s", "Re-join": "Επανασύνδεση", @@ -1860,7 +1826,6 @@ "A text message has been sent to %(msisdn)s": "Ένα μήνυμα κειμένου έχει σταλεί στη διεύθυνση %(msisdn)s", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Η διαγραφή μιας μικροεφαρμογής την καταργεί για όλους τους χρήστες σε αυτό το δωμάτιο. Είστε βέβαιοι ότι θέλετε να τη διαγράψετε;", "Delete Widget": "Διαγραφή Μικροεφαρμογής", - "Edit": "Επεξεργασία", "Delete widget": "Διαγραφή μικροεφαρμογής", "Unable to copy a link to the room to the clipboard.": "Αδυναμία αντιγραφής στο πρόχειρο του συνδέσμου δωματίου.", "Unable to copy room link": "Αδυναμία αντιγραφής του συνδέσμου δωματίου", @@ -1891,8 +1856,6 @@ "Unable to check if username has been taken. Try again later.": "Δεν είναι δυνατός ο έλεγχος εάν το όνομα χρήστη είναι διαθέσιμο. Δοκιμάστε ξανά αργότερα.", "Use lowercase letters, numbers, dashes and underscores only": "Χρησιμοποιήστε μόνο πεζά γράμματα, αριθμούς, παύλες και κάτω παύλες", "Use an email address to recover your account": "Χρησιμοποιήστε μια διεύθυνση email για να ανακτήσετε τον λογαριασμό σας", - "Forgot password?": "Ξεχάσατε τον κωδικό;", - "Username": "Όνομα χρήστη", "That phone number doesn't look quite right, please check and try again": "Αυτός ο αριθμός τηλεφώνου δε φαίνεται σωστός, ελέγξτε και δοκιμάστε ξανά", "Enter phone number": "Εισάγετε αριθμό τηλεφώνου", "Enter username": "Εισάγετε όνομα χρήστη", @@ -1918,7 +1881,6 @@ "Collapse reply thread": "Σύμπτυξη νήματος απάντησης", "Show preview": "Εμφάνιση προεπισκόπησης", "View source": "Προβολή πηγής", - "Forward": "Προώθηση", "Open in OpenStreetMap": "Άνοιγμα στο OpenStreetMap", "Not a valid Security Key": "Μη έγκυρο Κλειδί Ασφαλείας", "This looks like a valid Security Key!": "Αυτό φαίνεται να είναι ένα έγκυρο Κλειδί Ασφαλείας!", @@ -1967,7 +1929,6 @@ "Upload all": "Μεταφόρτωση όλων", "Upload files": "Μεταφόρτωση αρχείων", "Upload files (%(current)s of %(total)s)": "Μεταφόρτωση αρχείων %(current)s από %(total)s", - "Next": "Επόμενο", "Document": "Έγγραφο", "Summary": "Περίληψη", "Service": "Υπηρεσία", @@ -2068,15 +2029,12 @@ "Video conference ended by %(senderName)s": "Η τηλεδιάσκεψη τερματίστηκε από %(senderName)s", "Join the conference at the top of this room": "Συμμετάσχετε στην τηλεδιάσκεψη από την κορυφή του δωματίου αυτού", "Join the conference from the room information card on the right": "Συμμετάσχετε στην τηλεδιάσκεψη από την κάρτα πληροφοριών στα δεξιά", - "Image": "Εικόνα", "Show image": "Εμφάνιση εικόνας", "Click": "Κλικ", "Expand quotes": "Ανάπτυξη εισαγωγικών", "Collapse quotes": "Σύμπτυξη εισαγωγικών", - "Reply": "Απάντηση", "Can't create a thread from an event with an existing relation": "Δεν είναι δυνατή η δημιουργία νήματος από ένα συμβάν με μια υπάρχουσα σχέση", "Reply in thread": "Απάντηση στο νήμα", - "React": "Αντίδραση", "Error processing audio message": "Σφάλμα επεξεργασίας του ηχητικού μηνύματος", "Go": "Μετάβαση", "Pick a date to jump to": "Επιλέξτε μια ημερομηνία για να μεταβείτε", @@ -2085,7 +2043,6 @@ "The encryption used by this room isn't supported.": "Η κρυπτογράφηση που χρησιμοποιείται από αυτό το δωμάτιο δεν υποστηρίζεται.", "Encryption not enabled": "Η κρυπτογράφηση δεν ενεργοποιήθηκε", "Ignored attempt to disable encryption": "Αγνοήθηκε προσπάθεια απενεργοποίησης κρυπτογράφησης", - "Encryption enabled": "Η κρυπτογράφηση ενεργοποιήθηκε", "Some encryption parameters have been changed.": "Ορισμένες παράμετροι κρυπτογράφησης έχουν αλλάξει.", "with state key %(stateKey)s": "με κλειδί κατάστασης %(stateKey)s", "with an empty state key": "με ένα κενό κλειδί κατάστασης", @@ -2168,7 +2125,6 @@ "Click here to see older messages.": "Κάντε κλικ εδώ για να δείτε παλαιότερα μηνύματα.", "Message deleted on %(date)s": "Το μήνυμα διαγράφηκε στις %(date)s", "%(reactors)s reacted with %(content)s": "%(reactors)s αντέδρασαν με %(content)s", - "Reactions": "Αντιδράσεις", "Show all": "Εμφάνιση όλων", "Add reaction": "Προσθέστε αντίδραση", "Error processing voice message": "Σφάλμα επεξεργασίας του φωνητικού μηνύματος", @@ -2202,7 +2158,6 @@ "Last week": "Προηγούμενη εβδομάδα", "The call is in an unknown state!": "Η κλήση βρίσκεται σε άγνωστη κατάσταση!", "Missed call": "Αναπάντητη κλήση", - "Retry": "Προσπάθεια ξανά", "Unknown failure: %(reason)s": "Άγνωστο σφάλμα: %(reason)s", "An unknown error occurred": "Συνέβη ένα άγνωστο σφάλμα", "Their device couldn't start the camera or microphone": "Η συσκευή τους δεν μπόρεσε να ξεκινήσει την κάμερα ή το μικρόφωνο", @@ -2210,7 +2165,6 @@ "No answer": "Καμία απάντηση", "Call back": "Καλέστε πίσω", "Call declined": "Η κλήση απορρίφθηκε", - "Verification cancelled": "Η επαλήθευση ακυρώθηκε", "You cancelled verification.": "Ακυρώσατε την επαλήθευση.", "%(displayName)s cancelled verification.": "%(displayName)s ακύρωσε την επαλύθευση.", "You cancelled verification on your other device.": "Ακυρώσατε την επαλήθευση στην άλλη συσκευή σας.", @@ -2231,12 +2185,10 @@ "Ask %(displayName)s to scan your code:": "Ζητήστε από τον χρήστη %(displayName)s να σαρώσει τον κωδικό σας:", "Verify by scanning": "Επαλήθευση με σάρωση", "Verify this device by completing one of the following:": "Επαληθεύστε αυτήν τη συσκευή συμπληρώνοντας ένα από τα παρακάτω:", - "Start": "Έναρξη", "Compare a unique set of emoji if you don't have a camera on either device": "Συγκρίνετε ένα μοναδικό σύνολο emoji εάν δεν έχετε κάμερα σε καμία από τις δύο συσκευές", "Compare unique emoji": "Συγκρίνετε μοναδικά emoji", "Scan this unique code": "Σαρώστε αυτόν τον μοναδικό κωδικό", "The device you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "Η συσκευή που προσπαθείτε να επαληθεύσετε δεν υποστηρίζει τη σάρωση κωδικού QR ή επαλήθευσης emoji, κάτι που υποστηρίζει το %(brand)s. Δοκιμάστε με διαφορετικό πρόγραμμα-πελάτη.", - "Security": "Ασφάλεια", "Edit devices": "Επεξεργασία συσκευών", "This client does not support end-to-end encryption.": "Αυτό το πρόγραμμα-πελάτης δεν υποστηρίζει κρυπτογράφηση από άκρο σε άκρο.", "Role in ": "Ρόλος στο ", @@ -2253,7 +2205,6 @@ "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.": "Δε θα μπορείτε να αναιρέσετε αυτήν την ενέργεια καθώς υποβιβάζετε τον εαυτό σας, εάν είστε ο τελευταίος προνομιούχος χρήστης στο δωμάτιο, θα είναι αδύνατο να ανακτήσετε τα προνόμια.", "Share Link to User": "Κοινή χρήση Συνδέσμου με Χρήστη", "Jump to read receipt": "Μετάβαση στο αποδεικτικό ανάγνωσης", - "Message": "Μήνυμα", "Hide sessions": "Απόκρυψη συνεδριών", "%(count)s sessions": { "one": "%(count)s συνεδρία", @@ -2270,7 +2221,6 @@ "Export chat": "Εξαγωγή συνομιλίας", "Pinned": "Καρφιτσωμένο", "Files": "Αρχεία", - "About": "Σχετικά με", "Not encrypted": "Μη κρυπτογραφημένο", "Add widgets, bridges & bots": "Προσθήκη μικροεφαρμογών, γεφυρών & bots", "Edit widgets, bridges & bots": "Επεξεργασία μικροεφαρμογών, γεφυρών & bots", @@ -2321,11 +2271,9 @@ "Everyone in will be able to find and join this room.": "Όλοι στο θα μπορούν να βρουν και να συμμετάσχουν σε αυτό το δωμάτιο.", "Please enter a name for the room": "Εισάγετε ένα όνομα για το δωμάτιο", "Message preview": "Προεπισκόπηση μηνύματος", - "Forward message": "Προώθηση μηνύματος", "You don't have permission to do this": "Δεν έχετε άδεια να το κάνετε αυτό", "Send feedback": "Στείλετε τα σχόλιά σας", "Please view existing bugs on Github first. No match? Start a new one.": "Δείτε πρώτα τα υπάρχοντα ζητήματα (issues) στο Github. Δε βρήκατε κάτι; Ξεκινήστε ένα νέο.", - "Report a bug": "Αναφορά σφάλματος", "You may contact me if you want to follow up or to let me test out upcoming ideas": "Μπορείτε να επικοινωνήσετε μαζί μου εάν θέλετε να έρθετε σε επαφή ή να με αφήσετε να δοκιμάσω επερχόμενες ιδέες", "Your platform and username will be noted to help us use your feedback as much as we can.": "Η πλατφόρμα και το όνομα χρήστη σας θα καταγραφούν για να μας βοηθήσουν να χρησιμοποιήσουμε τα σχόλιά σας όσο μπορούμε περισσότερο.", "Feedback sent": "Τα σχόλια στάλθηκαν", @@ -2349,7 +2297,6 @@ "Topic (optional)": "Θέμα (προαιρετικό)", "Create a private room": "Δημιουργήστε ένα ιδιωτικό δωμάτιο", "Create a public room": "Δημιουργήστε ένα δημόσιο δωμάτιο", - "Create a room": "Δημιουργήστε ένα δωμάτιο", "Enable end-to-end encryption": "Ενεργοποίηση κρυπτογράφησης από άκρο-σε-άκρο", "Only people invited will be able to find and join this room.": "Μόνο τα άτομα που έχουν προσκληθεί θα μπορούν να βρουν και να εγγραφούν σε αυτό τον δωμάτιο.", "Anyone will be able to find and join this room.": "Οποιοσδήποτε θα μπορεί να βρει και να εγγραφεί σε αυτό το δωμάτιο.", @@ -2551,7 +2498,6 @@ "%(doneRooms)s out of %(totalRooms)s": "%(doneRooms)s από %(totalRooms)s", "Indexed rooms:": "Ευρετηριασμένα δωμάτια:", "Indexed messages:": "Ευρετηριασμένα μηνύματα:", - "Disable": "Απενεργοποίηση", "Go to Settings": "Μετάβαση στις Ρυθμίσεις", "New Recovery Method": "Νέα Μέθοδος Ανάκτησης", "Save your Security Key": "Αποθηκεύστε το κλειδί ασφαλείας σας", @@ -2616,7 +2562,6 @@ "Original event source": "Αρχική πηγή συμβάντος", "Decrypted event source": "Αποκρυπτογραφημένη πηγή συμβάντος", "Could not load user profile": "Αδυναμία φόρτωσης του προφίλ χρήστη", - "User menu": "Μενού χρήστη", "Switch theme": "Αλλαγή θέματος", "Switch to dark mode": "Αλλαγή σε σκοτεινό", "Switch to light mode": "Αλλαγή σε φωτεινό", @@ -2651,7 +2596,6 @@ "Pick rooms or conversations to add. This is just a space for you, no one will be informed. You can add more later.": "Επιλέξτε δωμάτια ή συνομιλίες για προσθήκη. Αυτός είναι απλά ένας χώρος για εσάς, κανείς δε θα ενημερωθεί. Μπορείτε να προσθέσετε περισσότερα αργότερα.", "What do you want to organise?": "Τι θέλετε να οργανώσετε;", "Skip for now": "Παράλειψη προς το παρόν", - "Room name": "Όνομα δωματίου", "Support": "Υποστήριξη", "Random": "Τυχαία", "Welcome to ": "Καλώς ήρθατε στο ", @@ -2706,7 +2650,6 @@ "Search spaces": "Αναζήτηση χώρων", "Updating %(brand)s": "Ενημέρωση %(brand)s", "Unable to upload": "Αδυναμία μεταφόρτωσης", - "Suggestions": "Προτάσεις", "Recent Conversations": "Πρόσφατες Συνομιλίες", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Οι ακόλουθοι χρήστες ενδέχεται να μην υπάρχουν ή να μην είναι έγκυροι και δεν μπορούν να προσκληθούν: %(csvNames)s", "Failed to find the following users": "Αποτυχία εύρεσης των παρακάτω χρηστών", @@ -3188,7 +3131,6 @@ "Close sidebar": "Κλείσιμο πλαϊνής γραμμής", "View List": "Προβολή Λίστας", "View list": "Προβολή λίστας", - "Copy link": "Αντιγραφή συνδέσμου", "Cameras": "Κάμερες", "Output devices": "Συσκευές εξόδου", "Input devices": "Συσκευές εισόδου", @@ -3265,6 +3207,34 @@ "You were disconnected from the call. (Error: %(message)s)": "Αποσυνδεθήκατε από την κλήση. (Σφάλμα: %(message)s)", "Connection lost": "Η σύνδεση χάθηκε", "Jump to the given date in the timeline": "Μεταβείτε στη δεδομένη ημερομηνία στη γραμμή χρόνου", + "common": { + "about": "Σχετικά με", + "analytics": "Αναλυτικά δεδομένα", + "encryption_enabled": "Η κρυπτογράφηση ενεργοποιήθηκε", + "error": "Σφάλμα", + "forward_message": "Προώθηση μηνύματος", + "image": "Εικόνα", + "message": "Μήνυμα", + "message_layout": "Διάταξη μηνύματος", + "modern": "Μοντέρνο", + "mute": "Σίγαση", + "no_results": "Κανένα αποτέλεσμα", + "offline": "Εκτός σύνδεσης", + "password": "Κωδικός πρόσβασης", + "people": "Άτομα", + "reactions": "Αντιδράσεις", + "report_a_bug": "Αναφορά σφάλματος", + "room_name": "Όνομα δωματίου", + "security": "Ασφάλεια", + "settings": "Ρυθμίσεις", + "sticker": "Αυτοκόλλητο", + "success": "Επιτυχία", + "suggestions": "Προτάσεις", + "unmute": "Άρση σίγασης", + "username": "Όνομα χρήστη", + "verification_cancelled": "Η επαλήθευση ακυρώθηκε", + "video": "Βίντεο" + }, "action": { "reject": "Απόρριψη", "confirm": "Επιβεβαίωση", @@ -3287,5 +3257,8 @@ "share": "Διαμοιρασμός", "skip": "Παράβλεψη", "logout": "Αποσύνδεση" + }, + "a11y": { + "user_menu": "Μενού χρήστη" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index abef02a8e1b1..3e7ffa23f5b4 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -8,31 +8,6 @@ "Single Sign On": "Single Sign On", "Confirm adding email": "Confirm adding email", "Click the button below to confirm adding this email address.": "Click the button below to confirm adding this email address.", - "action": { - "confirm": "Confirm", - "dismiss": "Dismiss", - "trust": "Trust", - "reload": "Reload", - "cancel": "Cancel", - "stop": "Stop", - "join": "Join", - "close": "Close", - "accept": "Accept", - "upgrade": "Upgrade", - "verify": "Verify", - "update": "Update", - "call": "Call", - "delete": "Delete", - "upload": "Upload", - "expand": "Expand", - "collapse": "Collapse", - "apply": "Apply", - "reset": "Reset", - "share": "Share", - "reject": "Reject", - "skip": "Skip", - "logout": "Logout" - }, "Add Email Address": "Add Email Address", "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email", "The add / bind with MSISDN flow is misconfigured": "The add / bind with MSISDN flow is misconfigured", @@ -40,7 +15,6 @@ "Confirm adding phone number": "Confirm adding phone number", "Click the button below to confirm adding this phone number.": "Click the button below to confirm adding this phone number.", "Add Phone Number": "Add Phone Number", - "Error": "Error", "Unable to load! Check your network connectivity and try again.": "Unable to load! Check your network connectivity and try again.", "Attachment": "Attachment", "The file '%(fileName)s' failed to upload.": "The file '%(fileName)s' failed to upload.", @@ -50,31 +24,6 @@ "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", "The server does not support the room version specified.": "The server does not support the room version specified.", "Failure to create room": "Failure to create room", - "Sun": "Sun", - "Mon": "Mon", - "Tue": "Tue", - "Wed": "Wed", - "Thu": "Thu", - "Fri": "Fri", - "Sat": "Sat", - "Jan": "Jan", - "Feb": "Feb", - "Mar": "Mar", - "Apr": "Apr", - "May": "May", - "Jun": "Jun", - "Jul": "Jul", - "Aug": "Aug", - "Sep": "Sep", - "Oct": "Oct", - "Nov": "Nov", - "Dec": "Dec", - "PM": "PM", - "AM": "AM", - "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", - "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", - "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", - "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", "%(hours)sh %(minutes)sm %(seconds)ss left": "%(hours)sh %(minutes)sm %(seconds)ss left", "%(minutes)sm %(seconds)ss left": "%(minutes)sm %(seconds)ss left", "%(seconds)ss left": "%(seconds)ss left", @@ -99,7 +48,6 @@ "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.", "Alternatively, you can try to use the public server at , but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternatively, you can try to use the public server at , but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.", "Try using %(server)s": "Try using %(server)s", - "OK": "OK", "Unable to access microphone": "Unable to access microphone", "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.", "Unable to access webcam / microphone": "Unable to access webcam / microphone", @@ -152,255 +100,6 @@ "Unable to enable Notifications": "Unable to enable Notifications", "This email address was not found": "This email address was not found", "Your email address does not appear to be associated with a Matrix ID on this homeserver.": "Your email address does not appear to be associated with a Matrix ID on this homeserver.", - "United Kingdom": "United Kingdom", - "United States": "United States", - "Afghanistan": "Afghanistan", - "Åland Islands": "Åland Islands", - "Albania": "Albania", - "Algeria": "Algeria", - "American Samoa": "American Samoa", - "Andorra": "Andorra", - "Angola": "Angola", - "Anguilla": "Anguilla", - "Antarctica": "Antarctica", - "Antigua & Barbuda": "Antigua & Barbuda", - "Argentina": "Argentina", - "Armenia": "Armenia", - "Aruba": "Aruba", - "Australia": "Australia", - "Austria": "Austria", - "Azerbaijan": "Azerbaijan", - "Bahamas": "Bahamas", - "Bahrain": "Bahrain", - "Bangladesh": "Bangladesh", - "Barbados": "Barbados", - "Belarus": "Belarus", - "Belgium": "Belgium", - "Belize": "Belize", - "Benin": "Benin", - "Bermuda": "Bermuda", - "Bhutan": "Bhutan", - "Bolivia": "Bolivia", - "Bosnia": "Bosnia", - "Botswana": "Botswana", - "Bouvet Island": "Bouvet Island", - "Brazil": "Brazil", - "British Indian Ocean Territory": "British Indian Ocean Territory", - "British Virgin Islands": "British Virgin Islands", - "Brunei": "Brunei", - "Bulgaria": "Bulgaria", - "Burkina Faso": "Burkina Faso", - "Burundi": "Burundi", - "Cambodia": "Cambodia", - "Cameroon": "Cameroon", - "Canada": "Canada", - "Cape Verde": "Cape Verde", - "Caribbean Netherlands": "Caribbean Netherlands", - "Cayman Islands": "Cayman Islands", - "Central African Republic": "Central African Republic", - "Chad": "Chad", - "Chile": "Chile", - "China": "China", - "Christmas Island": "Christmas Island", - "Cocos (Keeling) Islands": "Cocos (Keeling) Islands", - "Colombia": "Colombia", - "Comoros": "Comoros", - "Congo - Brazzaville": "Congo - Brazzaville", - "Congo - Kinshasa": "Congo - Kinshasa", - "Cook Islands": "Cook Islands", - "Costa Rica": "Costa Rica", - "Croatia": "Croatia", - "Cuba": "Cuba", - "Curaçao": "Curaçao", - "Cyprus": "Cyprus", - "Czech Republic": "Czech Republic", - "Côte d’Ivoire": "Côte d’Ivoire", - "Denmark": "Denmark", - "Djibouti": "Djibouti", - "Dominica": "Dominica", - "Dominican Republic": "Dominican Republic", - "Ecuador": "Ecuador", - "Egypt": "Egypt", - "El Salvador": "El Salvador", - "Equatorial Guinea": "Equatorial Guinea", - "Eritrea": "Eritrea", - "Estonia": "Estonia", - "Ethiopia": "Ethiopia", - "Falkland Islands": "Falkland Islands", - "Faroe Islands": "Faroe Islands", - "Fiji": "Fiji", - "Finland": "Finland", - "France": "France", - "French Guiana": "French Guiana", - "French Polynesia": "French Polynesia", - "French Southern Territories": "French Southern Territories", - "Gabon": "Gabon", - "Gambia": "Gambia", - "Georgia": "Georgia", - "Germany": "Germany", - "Ghana": "Ghana", - "Gibraltar": "Gibraltar", - "Greece": "Greece", - "Greenland": "Greenland", - "Grenada": "Grenada", - "Guadeloupe": "Guadeloupe", - "Guam": "Guam", - "Guatemala": "Guatemala", - "Guernsey": "Guernsey", - "Guinea": "Guinea", - "Guinea-Bissau": "Guinea-Bissau", - "Guyana": "Guyana", - "Haiti": "Haiti", - "Heard & McDonald Islands": "Heard & McDonald Islands", - "Honduras": "Honduras", - "Hong Kong": "Hong Kong", - "Hungary": "Hungary", - "Iceland": "Iceland", - "India": "India", - "Indonesia": "Indonesia", - "Iran": "Iran", - "Iraq": "Iraq", - "Ireland": "Ireland", - "Isle of Man": "Isle of Man", - "Israel": "Israel", - "Italy": "Italy", - "Jamaica": "Jamaica", - "Japan": "Japan", - "Jersey": "Jersey", - "Jordan": "Jordan", - "Kazakhstan": "Kazakhstan", - "Kenya": "Kenya", - "Kiribati": "Kiribati", - "Kosovo": "Kosovo", - "Kuwait": "Kuwait", - "Kyrgyzstan": "Kyrgyzstan", - "Laos": "Laos", - "Latvia": "Latvia", - "Lebanon": "Lebanon", - "Lesotho": "Lesotho", - "Liberia": "Liberia", - "Libya": "Libya", - "Liechtenstein": "Liechtenstein", - "Lithuania": "Lithuania", - "Luxembourg": "Luxembourg", - "Macau": "Macau", - "Macedonia": "Macedonia", - "Madagascar": "Madagascar", - "Malawi": "Malawi", - "Malaysia": "Malaysia", - "Maldives": "Maldives", - "Mali": "Mali", - "Malta": "Malta", - "Marshall Islands": "Marshall Islands", - "Martinique": "Martinique", - "Mauritania": "Mauritania", - "Mauritius": "Mauritius", - "Mayotte": "Mayotte", - "Mexico": "Mexico", - "Micronesia": "Micronesia", - "Moldova": "Moldova", - "Monaco": "Monaco", - "Mongolia": "Mongolia", - "Montenegro": "Montenegro", - "Montserrat": "Montserrat", - "Morocco": "Morocco", - "Mozambique": "Mozambique", - "Myanmar": "Myanmar", - "Namibia": "Namibia", - "Nauru": "Nauru", - "Nepal": "Nepal", - "Netherlands": "Netherlands", - "New Caledonia": "New Caledonia", - "New Zealand": "New Zealand", - "Nicaragua": "Nicaragua", - "Niger": "Niger", - "Nigeria": "Nigeria", - "Niue": "Niue", - "Norfolk Island": "Norfolk Island", - "North Korea": "North Korea", - "Northern Mariana Islands": "Northern Mariana Islands", - "Norway": "Norway", - "Oman": "Oman", - "Pakistan": "Pakistan", - "Palau": "Palau", - "Palestine": "Palestine", - "Panama": "Panama", - "Papua New Guinea": "Papua New Guinea", - "Paraguay": "Paraguay", - "Peru": "Peru", - "Philippines": "Philippines", - "Pitcairn Islands": "Pitcairn Islands", - "Poland": "Poland", - "Portugal": "Portugal", - "Puerto Rico": "Puerto Rico", - "Qatar": "Qatar", - "Romania": "Romania", - "Russia": "Russia", - "Rwanda": "Rwanda", - "Réunion": "Réunion", - "Samoa": "Samoa", - "San Marino": "San Marino", - "Saudi Arabia": "Saudi Arabia", - "Senegal": "Senegal", - "Serbia": "Serbia", - "Seychelles": "Seychelles", - "Sierra Leone": "Sierra Leone", - "Singapore": "Singapore", - "Sint Maarten": "Sint Maarten", - "Slovakia": "Slovakia", - "Slovenia": "Slovenia", - "Solomon Islands": "Solomon Islands", - "Somalia": "Somalia", - "South Africa": "South Africa", - "South Georgia & South Sandwich Islands": "South Georgia & South Sandwich Islands", - "South Korea": "South Korea", - "South Sudan": "South Sudan", - "Spain": "Spain", - "Sri Lanka": "Sri Lanka", - "St. Barthélemy": "St. Barthélemy", - "St. Helena": "St. Helena", - "St. Kitts & Nevis": "St. Kitts & Nevis", - "St. Lucia": "St. Lucia", - "St. Martin": "St. Martin", - "St. Pierre & Miquelon": "St. Pierre & Miquelon", - "St. Vincent & Grenadines": "St. Vincent & Grenadines", - "Sudan": "Sudan", - "Suriname": "Suriname", - "Svalbard & Jan Mayen": "Svalbard & Jan Mayen", - "Swaziland": "Swaziland", - "Sweden": "Sweden", - "Switzerland": "Switzerland", - "Syria": "Syria", - "São Tomé & Príncipe": "São Tomé & Príncipe", - "Taiwan": "Taiwan", - "Tajikistan": "Tajikistan", - "Tanzania": "Tanzania", - "Thailand": "Thailand", - "Timor-Leste": "Timor-Leste", - "Togo": "Togo", - "Tokelau": "Tokelau", - "Tonga": "Tonga", - "Trinidad & Tobago": "Trinidad & Tobago", - "Tunisia": "Tunisia", - "Turkey": "Turkey", - "Turkmenistan": "Turkmenistan", - "Turks & Caicos Islands": "Turks & Caicos Islands", - "Tuvalu": "Tuvalu", - "U.S. Virgin Islands": "U.S. Virgin Islands", - "Uganda": "Uganda", - "Ukraine": "Ukraine", - "United Arab Emirates": "United Arab Emirates", - "Uruguay": "Uruguay", - "Uzbekistan": "Uzbekistan", - "Vanuatu": "Vanuatu", - "Vatican City": "Vatican City", - "Venezuela": "Venezuela", - "Vietnam": "Vietnam", - "Wallis & Futuna": "Wallis & Futuna", - "Western Sahara": "Western Sahara", - "Yemen": "Yemen", - "Zambia": "Zambia", - "Zimbabwe": "Zimbabwe", "Sign In or Create Account": "Sign In or Create Account", "Sign In": "Sign In", "Use your account or create a new one to continue.": "Use your account or create a new one to continue.", @@ -458,10 +157,8 @@ "Invites user with given id to current room": "Invites user with given id to current room", "Use an identity server": "Use an identity server", "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.", - "Continue": "Continue", "Use an identity server to invite by email. Manage in Settings.": "Use an identity server to invite by email. Manage in Settings.", "User (%(user)s) did not end up as invited to %(roomId)s but no error was given from the inviter utility": "User (%(user)s) did not end up as invited to %(roomId)s but no error was given from the inviter utility", - "Leave room": "Leave room", "Unrecognised room address: %(roomAlias)s": "Unrecognised room address: %(roomAlias)s", "Removes user with given id from this room": "Removes user with given id from this room", "Bans user with given id": "Bans user with given id", @@ -699,7 +396,6 @@ "Listen to live broadcast?": "Listen to live broadcast?", "If you start listening to this live broadcast, your current live broadcast recording will be ended.": "If you start listening to this live broadcast, your current live broadcast recording will be ended.", "Yes, end my recording": "Yes, end my recording", - "No": "No", "30s backward": "30s backward", "30s forward": "30s forward", "Go live": "Go live", @@ -880,12 +576,9 @@ "Starting export process…": "Starting export process…", "Fetching events…": "Fetching events…", "Creating output…": "Creating output…", - "Enable": "Enable", "That's fine": "That's fine", "You previously consented to share anonymous usage data with us. We're updating how that works.": "You previously consented to share anonymous usage data with us. We're updating how that works.", - "Learn more": "Learn more", "Share anonymous data to help us identify issues. Nothing personal. No third parties. Learn More": "Share anonymous data to help us identify issues. Nothing personal. No third parties. Learn More", - "Yes": "Yes", "Help improve %(analyticsOwner)s": "Help improve %(analyticsOwner)s", "You have unverified sessions": "You have unverified sessions", "Review to ensure your account is safe": "Review to ensure your account is safe", @@ -896,14 +589,12 @@ "Enable desktop notifications": "Enable desktop notifications", "Unknown room": "Unknown room", "Video call started": "Video call started", - "Video": "Video", "Sound on": "Sound on", "Silence call": "Silence call", "Notifications silenced": "Notifications silenced", "Unknown caller": "Unknown caller", "Voice call": "Voice call", "Video call": "Video call", - "Decline": "Decline", "Use app for a better experience": "Use app for a better experience", "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.": "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.", "Use app": "Use app", @@ -939,7 +630,6 @@ "All rooms": "All rooms", "Home": "Home", "Favourites": "Favourites", - "People": "People", "Other rooms": "Other rooms", "You joined the call": "You joined the call", "%(senderName)s joined the call": "%(senderName)s joined the call", @@ -989,7 +679,6 @@ "Rooms": "Rooms", "Voice & Video": "Voice & Video", "Moderation": "Moderation", - "Analytics": "Analytics", "Themes": "Themes", "Encryption": "Encryption", "Experimental": "Experimental", @@ -1258,7 +947,6 @@ "Developer tools": "Developer tools", "Pin to sidebar": "Pin to sidebar", "More options": "More options", - "Settings": "Settings", "Match system": "Match system", "Theme": "Theme", "Space selection": "Space selection", @@ -1266,7 +954,6 @@ "Upload avatar": "Upload avatar", "Name": "Name", "Description": "Description", - "No results": "No results", "Search %(spaceName)s": "Search %(spaceName)s", "Please enter a name for the space": "Please enter a name for the space", "e.g. my-space": "e.g. my-space", @@ -1284,7 +971,6 @@ "Add some details to help people recognise it.": "Add some details to help people recognise it.", "You can change these anytime.": "You can change these anytime.", "Creating…": "Creating…", - "Create": "Create", "Show all rooms": "Show all rooms", "Options": "Options", "Click to copy": "Click to copy", @@ -1320,7 +1006,6 @@ "Add privileged users": "Add privileged users", "Give one or multiple users in this room more privileges": "Give one or multiple users in this room more privileges", "Search users in this room…": "Search users in this room…", - "Remove": "Remove", "This bridge was provisioned by .": "This bridge was provisioned by .", "This bridge is managed by .": "This bridge is managed by .", "Workspace: ": "Workspace: ", @@ -1411,9 +1096,7 @@ "People cannot join unless access is granted.": "People cannot join unless access is granted.", "This room is in some spaces you're not an admin of. In those spaces, the old room will still be shown, but people will be prompted to join the new one.": "This room is in some spaces you're not an admin of. In those spaces, the old room will still be shown, but people will be prompted to join the new one.", "This upgrade will allow members of selected spaces access to this room without an invite.": "This upgrade will allow members of selected spaces access to this room without an invite.", - "Message layout": "Message layout", "IRC (Experimental)": "IRC (Experimental)", - "Modern": "Modern", "Message bubbles": "Message bubbles", "Messages containing keywords": "Messages containing keywords", "Error saving notification preferences": "Error saving notification preferences", @@ -1440,7 +1123,6 @@ "The operation could not be completed": "The operation could not be completed", "Display Name": "Display Name", "Profile picture": "Profile picture", - "Save": "Save", "Delete Backup": "Delete Backup", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.", "Unable to load key backup status": "Unable to load key backup status", @@ -1522,7 +1204,6 @@ "%(errorMessage)s (HTTP status %(httpStatus)s)": "%(errorMessage)s (HTTP status %(httpStatus)s)", "Error changing password": "Error changing password", "Your password was successfully changed.": "Your password was successfully changed.", - "Success": "Success", "Email addresses": "Email addresses", "Phone numbers": "Phone numbers", "Set a new account password…": "Set a new account password…", @@ -1920,7 +1601,6 @@ "Edit message": "Edit message", "Emoji": "Emoji", "Mod": "Mod", - "Invite": "Invite", "From a thread": "From a thread", "This event could not be displayed": "This event could not be displayed", " in %(room)s": " in %(room)s", @@ -1990,7 +1670,6 @@ "You do not have permission to post to this room": "You do not have permission to post to this room", "Send voice message": "Send voice message", "Hide stickers": "Hide stickers", - "Sticker": "Sticker", "Voice Message": "Voice Message", "You do not have permission to start polls in this room.": "You do not have permission to start polls in this room.", "Poll": "Poll", @@ -2000,7 +1679,6 @@ "Italics": "Italics", "Strikethrough": "Strikethrough", "Code block": "Code block", - "Quote": "Quote", "Insert link": "Insert link", "Send your first message to invite to chat": "Send your first message to invite to chat", "Once everyone has joined, you’ll be able to chat": "Once everyone has joined, you’ll be able to chat", @@ -2031,7 +1709,6 @@ "Unknown for %(duration)s": "Unknown for %(duration)s", "Online": "Online", "Idle": "Idle", - "Offline": "Offline", "Unknown": "Unknown", "%(members)s and more": "%(members)s and more", "%(members)s and %(last)s": "%(members)s and %(last)s", @@ -2057,7 +1734,6 @@ "Invite to space": "Invite to space", "You do not have permissions to invite people to this space": "You do not have permissions to invite people to this space", "Add people": "Add people", - "Start chat": "Start chat", "Explore rooms": "Explore rooms", "New room": "New room", "You do not have permissions to create new rooms in this space": "You do not have permissions to create new rooms in this space", @@ -2066,7 +1742,6 @@ "You do not have permissions to add rooms to this space": "You do not have permissions to add rooms to this space", "Explore public rooms": "Explore public rooms", "Add room": "Add room", - "Invites": "Invites", "Saved Items": "Saved Items", "Low priority": "Low priority", "System Alerts": "System Alerts", @@ -2089,7 +1764,6 @@ "Joining space…": "Joining space…", "Joining room…": "Joining room…", "Joining…": "Joining…", - "Loading…": "Loading…", "Rejecting invite…": "Rejecting invite…", "Join the room to participate": "Join the room to participate", "Join the conversation with an account": "Join the conversation with an account", @@ -2142,7 +1816,6 @@ "Request to join sent": "Request to join sent", "Your request to join is pending.": "Your request to join is pending.", "Cancel request": "Cancel request", - "Leave": "Leave", " invites you": " invites you", "To view %(roomName)s, you need an invite": "To view %(roomName)s, you need an invite", "To view, please enable video rooms in Labs first": "To view, please enable video rooms in Labs first", @@ -2284,7 +1957,6 @@ "Edit widgets, bridges & bots": "Edit widgets, bridges & bots", "Add widgets, bridges & bots": "Add widgets, bridges & bots", "Not encrypted": "Not encrypted", - "About": "About", "Files": "Files", "Poll history": "Poll history", "Pinned": "Pinned", @@ -2303,7 +1975,6 @@ "one": "%(count)s session" }, "Hide sessions": "Hide sessions", - "Message": "Message", "Ignore %(user)s": "Ignore %(user)s", "All messages and invites from this user will be hidden. Are you sure you want to ignore them?": "All messages and invites from this user will be hidden. Are you sure you want to ignore them?", "Jump to read receipt": "Jump to read receipt", @@ -2337,8 +2008,6 @@ "They won't be able to access whatever you're not an admin of.": "They won't be able to access whatever you're not an admin of.", "Failed to ban user": "Failed to ban user", "Failed to mute user": "Failed to mute user", - "Unmute": "Unmute", - "Mute": "Mute", "Warning!": "Warning!", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", "Are you sure?": "Are you sure?", @@ -2349,12 +2018,10 @@ "Role in ": "Role in ", "This client does not support end-to-end encryption.": "This client does not support end-to-end encryption.", "Edit devices": "Edit devices", - "Security": "Security", "The device you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "The device you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.", "Scan this unique code": "Scan this unique code", "Compare unique emoji": "Compare unique emoji", "Compare a unique set of emoji if you don't have a camera on either device": "Compare a unique set of emoji if you don't have a camera on either device", - "Start": "Start", "%(qrCode)s or %(emojiCompare)s": "%(qrCode)s or %(emojiCompare)s", "Verify this device by completing one of the following:": "Verify this device by completing one of the following:", "Verify by scanning": "Verify by scanning", @@ -2376,7 +2043,6 @@ "You cancelled verification on your other device.": "You cancelled verification on your other device.", "%(displayName)s cancelled verification.": "%(displayName)s cancelled verification.", "You cancelled verification.": "You cancelled verification.", - "Verification cancelled": "Verification cancelled", "%(count)s votes": { "other": "%(count)s votes", "one": "%(count)s vote" @@ -2405,15 +2071,6 @@ }, "%(name)s started a video call": "%(name)s started a video call", "Video call ended": "Video call ended", - "Sunday": "Sunday", - "Monday": "Monday", - "Tuesday": "Tuesday", - "Wednesday": "Wednesday", - "Thursday": "Thursday", - "Friday": "Friday", - "Saturday": "Saturday", - "Today": "Today", - "Yesterday": "Yesterday", "A network error occurred while trying to find and jump to the given date. Your homeserver might be down or there was just a temporary problem with your internet connection. Please try again. If this continues, please contact your homeserver administrator.": "A network error occurred while trying to find and jump to the given date. Your homeserver might be down or there was just a temporary problem with your internet connection. Please try again. If this continues, please contact your homeserver administrator.", "We were unable to find an event looking forwards from %(dateString)s. Try choosing an earlier date.": "We were unable to find an event looking forwards from %(dateString)s. Try choosing an earlier date.", "Server returned %(statusCode)s with error code %(errorCode)s": "Server returned %(statusCode)s with error code %(errorCode)s", @@ -2431,12 +2088,10 @@ "Downloading": "Downloading", "Decrypting": "Decrypting", "Download": "Download", - "View Source": "View Source", "Some encryption parameters have been changed.": "Some encryption parameters have been changed.", "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their profile picture.": "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their profile picture.", "Messages in this chat will be end-to-end encrypted.": "Messages in this chat will be end-to-end encrypted.", "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their profile picture.": "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their profile picture.", - "Encryption enabled": "Encryption enabled", "Ignored attempt to disable encryption": "Ignored attempt to disable encryption", "Encryption not enabled": "Encryption not enabled", "The encryption used by this room isn't supported.": "The encryption used by this room isn't supported.", @@ -2454,15 +2109,11 @@ "Their device couldn't start the camera or microphone": "Their device couldn't start the camera or microphone", "An unknown error occurred": "An unknown error occurred", "Unknown failure: %(reason)s": "Unknown failure: %(reason)s", - "Retry": "Retry", "The call is in an unknown state!": "The call is in an unknown state!", "Error processing audio message": "Error processing audio message", "View live location": "View live location", - "React": "React", "Reply in thread": "Reply in thread", "Can't create a thread from an event with an existing relation": "Can't create a thread from an event with an existing relation", - "Edit": "Edit", - "Reply": "Reply", "Collapse quotes": "Collapse quotes", "Expand quotes": "Expand quotes", "Click": "Click", @@ -2470,7 +2121,6 @@ "Error decrypting attachment": "Error decrypting attachment", "Decrypt %(text)s": "Decrypt %(text)s", "Invalid file%(extra)s": "Invalid file%(extra)s", - "Image": "Image", "Unable to show image due to error": "Unable to show image due to error", "Error decrypting image": "Error decrypting image", "Error downloading image": "Error downloading image", @@ -2517,7 +2167,6 @@ "Error decrypting video": "Error decrypting video", "Error processing voice message": "Error processing voice message", "Add reaction": "Add reaction", - "Reactions": "Reactions", "%(reactors)s reacted with %(content)s": "%(reactors)s reacted with %(content)s", "reacted with %(shortName)s": "reacted with %(shortName)s", "Message deleted on %(date)s": "Message deleted on %(date)s", @@ -2586,7 +2235,6 @@ "Un-maximise": "Un-maximise", "Minimise": "Minimise", "Popout widget": "Popout widget", - "Copy": "Copy", "Share entire screen": "Share entire screen", "Application window": "Application window", "Share content": "Share content", @@ -2740,7 +2388,6 @@ "Create poll": "Create poll", "Create Poll": "Create Poll", "Edit poll": "Edit poll", - "Done": "Done", "Failed to post poll": "Failed to post poll", "Sorry, the poll you tried to create was not posted.": "Sorry, the poll you tried to create was not posted.", "Poll type": "Poll type", @@ -2912,7 +2559,6 @@ "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.": "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.", "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.": "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.", "Create a video room": "Create a video room", - "Create a room": "Create a room", "Create a public room": "Create a public room", "Create a private room": "Create a private room", "Topic (optional)": "Topic (optional)", @@ -2994,7 +2640,6 @@ "Feedback": "Feedback", "You may contact me if you want to follow up or to let me test out upcoming ideas": "You may contact me if you want to follow up or to let me test out upcoming ideas", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.", - "Report a bug": "Report a bug", "Please view existing bugs on Github first. No match? Start a new one.": "Please view existing bugs on Github first. No match? Start a new one.", "Send feedback": "Send feedback", "You don't have permission to do this": "You don't have permission to do this", @@ -3002,7 +2647,6 @@ "Sent": "Sent", "Open room": "Open room", "Send": "Send", - "Forward message": "Forward message", "Message preview": "Message preview", "Search for rooms or people": "Search for rooms or people", "Feedback sent! Thanks, we appreciate it!": "Feedback sent! Thanks, we appreciate it!", @@ -3031,7 +2675,6 @@ "Failed to find the following users": "Failed to find the following users", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s", "Recent Conversations": "Recent Conversations", - "Suggestions": "Suggestions", "Recently Direct Messaged": "Recently Direct Messaged", "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.", "Use an identity server to invite by email. Manage in Settings.": "Use an identity server to invite by email. Manage in Settings.", @@ -3121,7 +2764,6 @@ "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s.": "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s.", "Any other reason. Please describe the problem.\nThis will be reported to the room moderators.": "Any other reason. Please describe the problem.\nThis will be reported to the room moderators.", "Please pick a nature and describe what makes this message abusive.": "Please pick a nature and describe what makes this message abusive.", - "Report Content": "Report Content", "Disagree": "Disagree", "Toxic Behaviour": "Toxic Behaviour", "Illegal Content": "Illegal Content", @@ -3217,7 +2859,6 @@ "Service": "Service", "Summary": "Summary", "Document": "Document", - "Next": "Next", "You signed in to a new session without verifying it:": "You signed in to a new session without verifying it:", "Verify your other session using one of the options below.": "Verify your other session using one of the options below.", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) signed in to a new session without verifying it:", @@ -3405,14 +3046,12 @@ "Hold": "Hold", "Resend %(unsentCount)s reaction(s)": "Resend %(unsentCount)s reaction(s)", "Open in OpenStreetMap": "Open in OpenStreetMap", - "Forward": "Forward", "View source": "View source", "Show preview": "Show preview", "Source URL": "Source URL", "Collapse reply thread": "Collapse reply thread", "View related event": "View related event", "Report": "Report", - "Copy link": "Copy link", "Forget": "Forget", "Favourited": "Favourited", "Favourite": "Favourite", @@ -3473,7 +3112,6 @@ "Enter email address": "Enter email address", "Doesn't look like a valid email address": "Doesn't look like a valid email address", "Confirm your identity by entering your account password below.": "Confirm your identity by entering your account password below.", - "Password": "Password", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.", "Please review and accept all of the homeserver's policies": "Please review and accept all of the homeserver's policies", "Please review and accept the policies of this homeserver:": "Please review and accept the policies of this homeserver:", @@ -3518,7 +3156,6 @@ "Enter username": "Enter username", "Enter phone number": "Enter phone number", "That phone number doesn't look quite right, please check and try again": "That phone number doesn't look quite right, please check and try again", - "Username": "Username", "Phone": "Phone", "Forgot password?": "Forgot password?", "Sign in with": "Sign in with", @@ -3620,7 +3257,6 @@ "Welcome to ": "Welcome to ", "Random": "Random", "Support": "Support", - "Room name": "Room name", "Failed to create initial space rooms": "Failed to create initial space rooms", "Skip for now": "Skip for now", "Creating rooms…": "Creating rooms…", @@ -3670,7 +3306,6 @@ "Switch to light mode": "Switch to light mode", "Switch to dark mode": "Switch to dark mode", "Switch theme": "Switch theme", - "User menu": "User menu", "Could not load user profile": "Could not load user profile", "Decrypted event source": "Decrypted event source", "Decrypted source unavailable": "Decrypted source unavailable", @@ -3831,7 +3466,6 @@ "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.", "If disabled, messages from encrypted rooms won't appear in search results.": "If disabled, messages from encrypted rooms won't appear in search results.", - "Disable": "Disable", "Not currently indexing messages for any room.": "Not currently indexing messages for any room.", "Currently indexing: %(currentRoom)s": "Currently indexing: %(currentRoom)s", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s is securely caching encrypted messages locally for them to appear in search results:", @@ -3908,5 +3542,63 @@ "Activate selected button": "Activate selected button", "New line": "New line", "Force complete": "Force complete", - "Search (must be enabled)": "Search (must be enabled)" -} + "Search (must be enabled)": "Search (must be enabled)", + "common": { + "error": "Error", + "video": "Video", + "people": "People", + "analytics": "Analytics", + "settings": "Settings", + "no_results": "No results", + "message_layout": "Message layout", + "modern": "Modern", + "success": "Success", + "sticker": "Sticker", + "offline": "Offline", + "loading": "Loading…", + "about": "About", + "message": "Message", + "unmute": "Unmute", + "mute": "Mute", + "security": "Security", + "verification_cancelled": "Verification cancelled", + "encryption_enabled": "Encryption enabled", + "image": "Image", + "reactions": "Reactions", + "report_a_bug": "Report a bug", + "forward_message": "Forward message", + "suggestions": "Suggestions", + "password": "Password", + "username": "Username", + "room_name": "Room name" + }, + "action": { + "confirm": "Confirm", + "dismiss": "Dismiss", + "trust": "Trust", + "reload": "Reload", + "cancel": "Cancel", + "stop": "Stop", + "join": "Join", + "close": "Close", + "accept": "Accept", + "upgrade": "Upgrade", + "verify": "Verify", + "update": "Update", + "call": "Call", + "delete": "Delete", + "upload": "Upload", + "expand": "Expand", + "collapse": "Collapse", + "apply": "Apply", + "reset": "Reset", + "share": "Share", + "reject": "Reject", + "skip": "Skip", + "logout": "Logout" + }, + "a11y": { + "user_menu": "User menu" + }, + "You will be redirected to your server's authentication provider to complete sign out.": "You will be redirected to your server's authentication provider to complete sign out." +} \ No newline at end of file diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index db8603644b87..bdd7c51bd851 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -37,7 +37,6 @@ "Command error": "Command error", "Commands": "Commands", "Confirm password": "Confirm password", - "Continue": "Continue", "Cryptography": "Cryptography", "Current password": "Current password", "Custom level": "Custom level", @@ -48,11 +47,9 @@ "Delete widget": "Delete widget", "Displays action": "Displays action", "Download %(text)s": "Download %(text)s", - "Edit": "Edit", "Email": "Email", "Email address": "Email address", "Emoji": "Emoji", - "Error": "Error", "Error decrypting attachment": "Error decrypting attachment", "Export": "Export", "Export E2E room keys": "Export E2E room keys", @@ -84,7 +81,6 @@ "Invalid Email Address": "Invalid Email Address", "Invalid file%(extra)s": "Invalid file%(extra)s", "Invited": "Invited", - "Invites": "Invites", "Invites user with given id to current room": "Invites user with given id to current room", "Sign in with": "Sign in with", "Join Room": "Join Room", @@ -98,7 +94,6 @@ "Ignored user": "Ignored user", "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward", "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you", - "Leave room": "Leave room", "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?", "Low priority": "Low priority", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.", @@ -109,7 +104,6 @@ "Missing room_id in request": "Missing room_id in request", "Missing user_id in request": "Missing user_id in request", "Moderator": "Moderator", - "Mute": "Mute", "Name": "Name", "New passwords don't match": "New passwords don't match", "New passwords must match each other.": "New passwords must match each other.", @@ -117,11 +111,8 @@ "Notifications": "Notifications", "": "", "No more results": "No more results", - "No results": "No results", "No users have specific privileges in this room": "No users have specific privileges in this room", - "OK": "OK", "Operation failed": "Operation failed", - "Password": "Password", "Passwords can't be empty": "Passwords can't be empty", "Permissions": "Permissions", "Phone": "Phone", @@ -133,14 +124,12 @@ "Reason": "Reason", "Register": "Register", "Reject invitation": "Reject invitation", - "Remove": "Remove", "Return to login screen": "Return to login screen", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s does not have permission to send you notifications - please check your browser settings", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s was not given permission to send notifications - please try again", "%(brand)s version:": "%(brand)s version:", "Room %(roomId)s not visible": "Room %(roomId)s not visible", "Rooms": "Rooms", - "Save": "Save", "Search": "Search", "Search failed": "Search failed", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", @@ -150,14 +139,12 @@ "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.", "Session ID": "Session ID", - "Settings": "Settings", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", "Signed Out": "Signed Out", "Sign in": "Sign in", "Sign out": "Sign out", "Someone": "Someone", "Submit": "Submit", - "Success": "Success", "This email address is already in use": "This email address is already in use", "This email address was not found": "This email address was not found", "The email address linked to your account must be entered.": "The email address linked to your account must be entered.", @@ -174,7 +161,6 @@ "Unban": "Unban", "Unable to enable Notifications": "Unable to enable Notifications", "unknown error code": "unknown error code", - "Unmute": "Unmute", "Upload avatar": "Upload avatar", "Upload Failed": "Upload Failed", "Usage": "Usage", @@ -221,7 +207,6 @@ "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", "Start automatically after system login": "Start automatically after system login", - "Analytics": "Analytics", "Banned by %(displayName)s": "Banned by %(displayName)s", "Options": "Options", "Passphrases must match": "Passphrases must match", @@ -253,16 +238,13 @@ "Drop file here to upload": "Drop file here to upload", "Online": "Online", "Idle": "Idle", - "Offline": "Offline", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", "Add": "Add", "Admin Tools": "Admin Tools", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.", - "Decline": "Decline", "Create new room": "Create new room", - "Start chat": "Start chat", "Home": "Home", "No display name": "No display name", "%(roomName)s does not exist.": "%(roomName)s does not exist.", @@ -294,7 +276,6 @@ "Unable to create widget.": "Unable to create widget.", "You are not in this room.": "You are not in this room.", "You do not have permission to do that in this room.": "You do not have permission to do that in this room.", - "Create": "Create", "Automatically replace plain text Emoji": "Automatically replace plain text Emoji", "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s", "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s", @@ -308,7 +289,6 @@ "On": "On", "Changelog": "Changelog", "Waiting for response from server": "Waiting for response from server", - "Leave": "Leave", "Warning": "Warning", "This Room": "This Room", "Noisy": "Noisy", @@ -328,7 +308,6 @@ "Collecting logs": "Collecting logs", "All Rooms": "All Rooms", "Wednesday": "Wednesday", - "Quote": "Quote", "Send": "Send", "Send logs": "Send logs", "All messages": "All messages", @@ -344,7 +323,6 @@ "Low Priority": "Low Priority", "Off": "Off", "Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room", - "View Source": "View Source", "Call Failed": "Call Failed", "Permission Required": "Permission Required", "You do not have permission to start a conference call in this room": "You do not have permission to start a conference call in this room", @@ -442,6 +420,17 @@ "%(seconds)ss left": "%(seconds)ss left", "%(minutes)sm %(seconds)ss left": "%(minutes)sm %(seconds)ss left", "%(hours)sh %(minutes)sm %(seconds)ss left": "%(hours)sh %(minutes)sm %(seconds)ss left", + "common": { + "analytics": "Analytics", + "error": "Error", + "mute": "Mute", + "no_results": "No results", + "offline": "Offline", + "password": "Password", + "settings": "Settings", + "success": "Success", + "unmute": "Unmute" + }, "action": { "reject": "Reject", "confirm": "Confirm", @@ -454,4 +443,4 @@ "skip": "Skip", "logout": "Logout" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index aef0d29dbc65..3f80a31c9a29 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -94,8 +94,6 @@ "Enable inline URL previews by default": "Ŝalti entekstan antaŭrigardon al retadresoj", "Enable URL previews for this room (only affects you)": "Ŝalti URL-antaŭrigardon en ĉi tiu ĉambro (nur por vi)", "Enable URL previews by default for participants in this room": "Ŝalti URL-antaŭrigardon por anoj de ĉi tiu ĉambro", - "Decline": "Rifuzi", - "Error": "Eraro", "Incorrect verification code": "Malĝusta kontrola kodo", "Submit": "Sendi", "Phone": "Telefono", @@ -103,11 +101,9 @@ "No display name": "Sen vidiga nomo", "New passwords don't match": "Novaj pasvortoj ne akordas", "Passwords can't be empty": "Pasvortoj ne povas esti malplenaj", - "Continue": "Daŭrigi", "Export E2E room keys": "Elporti tutvoje ĉifrajn ŝlosilojn de la ĉambro", "Do you want to set an email address?": "Ĉu vi volas agordi retpoŝtadreson?", "Current password": "Nuna pasvorto", - "Password": "Pasvorto", "New Password": "Nova pasvorto", "Confirm password": "Konfirmu pasvorton", "Change Password": "Ŝanĝi pasvorton", @@ -127,9 +123,6 @@ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Vi estas direktota al ekstera retejo por aŭtentikigi vian konton por uzo kun %(integrationsUrl)s. Ĉu vi volas daŭrigi tion?", "Jump to read receipt": "Salti al legokonfirmo", "Mention": "Mencio", - "Invite": "Inviti", - "Unmute": "Malsilentigi", - "Mute": "Silentigi", "Admin Tools": "Estriloj", "and %(count)s others...": { "other": "kaj %(count)s aliaj…", @@ -156,20 +149,16 @@ "Unknown for %(duration)s": "Nekonata jam je %(duration)s", "Online": "Enreta", "Idle": "Senfara", - "Offline": "Eksterreta", "Unknown": "Nekonata", "Unnamed room": "Sennoma ĉambro", - "Save": "Konservi", "(~%(count)s results)": { "other": "(~%(count)s rezultoj)", "one": "(~%(count)s rezulto)" }, "Join Room": "Aliĝi al ĉambro", "Upload avatar": "Alŝuti profilbildon", - "Settings": "Agordoj", "Forget room": "Forgesi ĉambron", "Search": "Serĉi", - "Invites": "Invitoj", "Favourites": "Elstarigitaj", "Rooms": "Ĉambroj", "Low priority": "Malpli gravaj", @@ -184,7 +173,6 @@ "No users have specific privileges in this room": "Neniuj uzantoj havas specialajn privilegiojn en tiu ĉi ĉambro", "Banned users": "Forbaritaj uzantoj", "This room is not accessible by remote Matrix servers": "Ĉi tiu ĉambro ne atingeblas por foraj serviloj de Matrix", - "Leave room": "Eliri ĉambron", "Favourite": "Elstarigi", "Publish this room to the public in %(domain)s's room directory?": "Ĉu publikigi ĉi tiun ĉambron per la katalogo de ĉambroj de %(domain)s?", "Who can read history?": "Kiu povas legi la historion?", @@ -215,10 +203,7 @@ "Add an Integration": "Aldoni kunigon", "powered by Matrix": "funkciigata de Matrix", "Warning": "Averto", - "Remove": "Forigi", - "Edit": "Redakti", "Failed to change password. Is your password correct?": "Malsukcesis ŝanĝi la pasvorton. Ĉu via pasvorto estas ĝusta?", - "Leave": "Foriri", "Register": "Registri", "Token incorrect": "Malĝusta peco", "A text message has been sent to %(msisdn)s": "Tekstmesaĝo sendiĝîs al %(msisdn)s", @@ -229,7 +214,6 @@ "Delete Widget": "Forigi fenestraĵon", "Delete widget": "Forigi fenestraĵon", "Create new room": "Krei novan ĉambron", - "No results": "Neniuj rezultoj", "Home": "Hejmo", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(severalUsers)sjoined %(count)s times": { @@ -321,17 +305,14 @@ "expand": "etendi", "Custom level": "Propra nivelo", "Incorrect username and/or password.": "Malĝusta uzantnomo kaj/aŭ pasvorto.", - "Start chat": "Komenci babilon", "And %(count)s more...": { "other": "Kaj %(count)s pliaj…" }, "Confirm Removal": "Konfirmi forigon", - "Create": "Krei", "Unknown error": "Nekonata eraro", "Incorrect password": "Malĝusta pasvorto", "Deactivate Account": "Malaktivigi konton", "An error has occurred.": "Okazis eraro.", - "OK": "Bone", "Unable to restore session": "Salutaĵo ne rehaveblas", "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se vi antaŭe uzis pli novan version de %(brand)s, via salutaĵo eble ne akordos kun ĉi tiu versio. Fermu ĉi tiun fenestron kaj revenu al la pli nova versio.", "Invalid Email Address": "Malvalida retpoŝtadreso", @@ -370,12 +351,10 @@ }, "Uploading %(filename)s": "Alŝutante dosieron %(filename)s", "Sign out": "Adiaŭi", - "Success": "Sukceso", "Unable to remove contact information": "Ne povas forigi kontaktajn informojn", "": "", "Import E2E room keys": "Enporti tutvoje ĉifrajn ĉambrajn ŝlosilojn", "Cryptography": "Ĉifroteĥnikaro", - "Analytics": "Analizo", "Labs": "Eksperimentaj funkcioj", "Check for update": "Kontroli ĝisdatigojn", "Reject all %(invitedRooms)s invites": "Rifuzi ĉiujn %(invitedRooms)s invitojn", @@ -462,7 +441,6 @@ "Invite to this room": "Inviti al ĉi tiu ĉambro", "Wednesday": "Merkredo", "You cannot delete this message. (%(code)s)": "Vi ne povas forigi tiun ĉi mesaĝon. (%(code)s)", - "Quote": "Citaĵo", "Send logs": "Sendi protokolojn", "All messages": "Ĉiuj mesaĝoj", "Call invitation": "Invito al voko", @@ -472,7 +450,6 @@ "All Rooms": "Ĉiuj ĉambroj", "Thursday": "Ĵaŭdo", "Back": "Reen", - "Reply": "Respondi", "Show message in desktop notification": "Montradi mesaĝojn en labortablaj sciigoj", "Messages in group chats": "Mesaĝoj en grupaj babiloj", "Yesterday": "Hieraŭ", @@ -483,7 +460,6 @@ "Event Type": "Tipo de okazo", "Thank you!": "Dankon!", "Developer Tools": "Evoluigiloj", - "View Source": "Vidi fonton", "Event Content": "Enhavo de okazo", "Logs sent": "Protokolo sendiĝis", "Failed to send logs: ": "Malsukcesis sendi protokolon: ", @@ -595,8 +571,6 @@ "Anchor": "Ankro", "Headphones": "Kapaŭdilo", "Folder": "Dosierujo", - "Yes": "Jes", - "No": "Ne", "Email Address": "Retpoŝtadreso", "Phone Number": "Telefonnumero", "Profile picture": "Profilbildo", @@ -654,9 +628,7 @@ "Share Room": "Kunhavigi ĉambron", "Share User": "Kunhavigi uzanton", "Share Room Message": "Kunhavigi ĉambran mesaĝon", - "Next": "Sekva", "Code": "Kodo", - "Username": "Uzantonomo", "Change": "Ŝanĝi", "Email (optional)": "Retpoŝto (malnepra)", "Phone (optional)": "Telefono (malnepra)", @@ -671,7 +643,6 @@ "That doesn't match.": "Tio ne akordas.", "Download": "Elŝuti", "Success!": "Sukceso!", - "Retry": "Reprovi", "Set up": "Agordi", "The file '%(fileName)s' failed to upload.": "Malsukcesis alŝuti dosieron « %(fileName)s ».", "The server does not support the room version specified.": "La servilo ne subtenas la donitan ĉambran version.", @@ -1073,7 +1044,6 @@ "Failed to deactivate user": "Malsukcesis malaktivigi uzanton", "This client does not support end-to-end encryption.": "Ĉi tiu kliento ne subtenas tutvojan ĉifradon.", "Messages in this room are not end-to-end encrypted.": "Mesaĝoj en ĉi tiu ĉambro ne estas tutvoje ĉifrataj.", - "React": "Reagi", "Message Actions": "Mesaĝaj agoj", "Show image": "Montri bildon", "You verified %(name)s": "Vi kontrolis %(name)s", @@ -1114,7 +1084,6 @@ "Command Help": "Helpo pri komando", "To continue you need to accept the terms of this service.": "Por pluigi, vi devas akcepti la uzokondiĉojn de ĉi tiu servo.", "Document": "Dokumento", - "Report Content": "Raporti enhavon", "%(creator)s created and configured the room.": "%(creator)s kreis kaj agordis la ĉambron.", "Jump to first unread room.": "Salti al unua nelegita ĉambro.", "Jump to first invite.": "Salti al unua invito.", @@ -1188,16 +1157,11 @@ "Start Verification": "Komenci kontrolon", "Trusted": "Fidata", "Not trusted": "Nefidata", - "Security": "Sekureco", - "Reactions": "Reagoj", "More options": "Pliaj elektebloj", "Integrations are disabled": "Kunigoj estas malŝaltitaj", "Integrations not allowed": "Kunigoj ne estas permesitaj", - "Suggestions": "Rekomendoj", "Upgrade private room": "Gradaltigi privatan ĉambron", "Upgrade public room": "Gradaltigi publikan ĉambron", - "Start": "Komenci", - "Done": "Fini", "Go Back": "Reiri", "Upgrade your encryption": "Gradaltigi vian ĉifradon", "Cancel entering passphrase?": "Ĉu nuligi enigon de pasfrazo?", @@ -1230,7 +1194,6 @@ "To be secure, do this in person or use a trusted way to communicate.": "Por plia sekureco, faru tion persone, aŭ uzu alian fidatan komunikilon.", "Show less": "Montri malpli", "Show more": "Montri pli", - "Copy": "Kopii", "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s ŝanĝis nomon de la ĉambro de %(oldRoomName)s al %(newRoomName)s.", "%(senderName)s added the alternative addresses %(addresses)s for this room.": { "other": "%(senderName)s aldonis la alternativajn adresojn %(addresses)s por ĉi tiu ĉambro.", @@ -1281,7 +1244,6 @@ "exists": "ekzistas", "Manage": "Administri", "Securely cache encrypted messages locally for them to appear in search results.": "Sekure kaŝmemori ĉifritajn mesaĝojn loke, por aperigi ilin en serĉrezultoj.", - "Enable": "Ŝalti", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s malhavas kelkajn partojn bezonajn por sekura loka kaŝmemorado de ĉirfitaj mesaĝoj. Se vi volas eksperimenti pri ĉi tiu kapablo, kunmetu propran klienton «%(brand)s Dekstop» kun aldonitaj serĉopartoj.", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Ĉi tiu salutaĵo ne savkopias viajn ŝlosilojn, sed vi jam havas savkopion, el kiu vi povas rehavi datumojn, kaj ilin kreskigi plue.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Konektu ĉi tiun salutaĵon al savkopiado de ŝlosiloj antaŭ ol vi adiaŭos, por ne perdi ŝlosilojn, kiuj povus troviĝi nur en ĉi tiu salutaĵo.", @@ -1353,7 +1315,6 @@ "Verify by comparing unique emoji.": "Kontrolu per komparo de unikaj bildsignoj.", "You've successfully verified %(displayName)s!": "Vi sukcese kontrolis uzanton %(displayName)s!", "Got it": "Komprenite", - "Encryption enabled": "Ĉifrado estas ŝaltita", "Encryption not enabled": "Ĉifrado ne estas ŝaltita", "The encryption used by this room isn't supported.": "La ĉifro uzata de ĉi tiu ĉambro ne estas subtenata.", "You have ignored this user, so their message is hidden. Show anyways.": "Vi malatentis ĉi tiun uzanton, ĝia mesaĝo estas do kaŝita. Tamen montri.", @@ -1398,7 +1359,6 @@ "This session is encrypting history using the new recovery method.": "Ĉi tiu salutaĵo nun ĉifras historion kun la nova rehava metodo.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Se vi faris tion akcidente, vi povas agordi Sekurajn mesaĝojn en ĉi tiu salutaĵo, kio reĉifros la historion de mesaj de ĉi tiu salutaĵo kun nova rehava metodo.", "If disabled, messages from encrypted rooms won't appear in search results.": "Post malŝalto, mesaĝoj el ĉifritaj ĉambroj ne aperos en serĉorezultoj.", - "Disable": "Malŝalti", "Not currently indexing messages for any room.": "Mesaĝoj estas indeksataj en neniu ĉambro.", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s sekure loke kaŝmemoras ĉifritajn mesaĝojn por aperigi ilin en serĉorezultoj:", "Space used:": "Spaco uzita:", @@ -1472,7 +1432,6 @@ "Mod": "Reguligisto", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "En ĉifritaj ĉambroj, viaj mesaĝoj estas sekurigitaj, kaj nur vi kaj la ricevanto havas la unikajn malĉifrajn ŝlosilojn.", "Verify all users in a room to ensure it's secure.": "Kontrolu ĉiujn uzantojn en ĉambro por certigi, ke ĝi sekuras.", - "Verification cancelled": "Kontrolo nuliĝis", "Use Single Sign On to continue": "Daŭrigi per ununura saluto", "Confirm adding this email address by using Single Sign On to prove your identity.": "Konfirmi aldonon de ĉi tiu retpoŝtadreso, uzante ununuran saluton por pruvi vian identecon.", "Single Sign On": "Ununura saluto", @@ -1581,8 +1540,6 @@ "Unknown caller": "Nekonata vokanto", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s ne povas sekure kaŝkopii ĉifritajn mesaĝojn loke, funkciante per foliumilo. Uzu %(brand)s Desktop por aperigi ĉifritajn mesaĝojn en serĉrezultoj.", "Hey you. You're the best!": "He, vi. Vi bonegas!", - "Message layout": "Aranĝo de mesaĝoj", - "Modern": "Moderna", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Agordu la nomon de tiparo instalita en via sistemo kaj %(brand)s provos ĝin uzi.", "Customise your appearance": "Adaptu vian aspekton", "Appearance Settings only affect this %(brand)s session.": "Agordoj de aspekto nur efikos sur ĉi tiun salutaĵon de %(brand)s.", @@ -1590,7 +1547,6 @@ "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "La administranto de via servilo malŝaltis implicitan tutvojan ĉifradon en privataj kaj individuaj ĉambroj.", "The authenticity of this encrypted message can't be guaranteed on this device.": "La aŭtentikeco de ĉi tiu ĉifrita mesaĝo ne povas esti garantiita sur ĉi tiu aparato.", "No recently visited rooms": "Neniuj freŝdate vizititaj ĉambroj", - "People": "Personoj", "Message preview": "Antaŭrigardo al mesaĝo", "Sort by": "Ordigi laŭ", "Activity": "Aktiveco", @@ -1614,7 +1570,6 @@ "Switch to dark mode": "Ŝalti malhelan reĝimon", "Switch theme": "Ŝalti haŭton", "All settings": "Ĉiuj agordoj", - "User menu": "Menuo de uzanto", "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Malhelpu perdon de aliro al ĉifritaj mesaĝoj kaj datumoj per savkopiado de ĉifraj ŝlosiloj al via servilo.", "Generate a Security Key": "Generi sekurecan ŝlosilon", "Enter a Security Phrase": "Enigiu sekurecan frazon", @@ -1674,7 +1629,6 @@ "Join the conference at the top of this room": "Aliĝu al la grupa voko supre je la ĉambro", "Ignored attempt to disable encryption": "Malatentis provon malŝalti ĉifradon", "Room settings": "Agordoj de ĉambro", - "About": "Prio", "Not encrypted": "Neĉifrita", "Add widgets, bridges & bots": "Aldonu fenestraĵojn, pontojn, kaj robotojn", "Edit widgets, bridges & bots": "Redakti fenestraĵojn, pontojn, kaj robotojn", @@ -1719,7 +1673,6 @@ "Send feedback": "Prikomenti", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "KONSILO: Kiam vi raportas eraron, bonvolu kunsendi erarserĉan protokolon, por ke ni povu pli facile trovi la problemon.", "Please view existing bugs on Github first. No match? Start a new one.": "Bonvolu unue vidi jamajn erarojn en GitHub. Ĉu neniu akordas la vian? Raportu novan.", - "Report a bug": "Raporti eraron", "Comment": "Komento", "Uzbekistan": "Uzbekujo", "United Arab Emirates": "Unuiĝinaj Arabaj Emirlandoj", @@ -2076,7 +2029,6 @@ "Use email to optionally be discoverable by existing contacts.": "Uzu retpoŝtadreson por laŭplaĉe esti trovebla de jamaj kontaktoj.", "Use email or phone to optionally be discoverable by existing contacts.": "Uzu retpoŝtadreson aŭ telefonnumeron por laŭplaĉe esti trovebla de jamaj kontaktoj.", "Add an email to be able to reset your password.": "Aldonu retpoŝtadreson por ebligi rehavon de via pasvorto.", - "Forgot password?": "Ĉu forgesis pasvorton?", "That phone number doesn't look quite right, please check and try again": "Tiu telefonnumero ne ŝajnas ĝusta, bonvolu kontroli kaj reprovi", "Enter phone number": "Enigu telefonnumeron", "Enter email address": "Enigu retpoŝtadreson", @@ -2106,7 +2058,6 @@ "This widget would like to:": "Ĉi tiu fenestraĵo volas:", "Approve widget permissions": "Aprobi rajtojn de fenestraĵo", "About homeservers": "Pri hejmserviloj", - "Learn more": "Ekscii plion", "Use your preferred Matrix homeserver if you have one, or host your own.": "Uzu vian preferatan hejmservilon de Matrix se vi havas iun, aŭ gastigu vian propran.", "Other homeserver": "Alia hejmservilo", "Sign into your homeserver": "Salutu vian hejmservilon", @@ -2191,7 +2142,6 @@ "This room is suggested as a good one to join": "Ĉi tiu ĉambro estas rekomendata kiel aliĝinda", "Suggested Rooms": "Rekomendataj ĉambroj", "Failed to create initial space rooms": "Malsukcesis krei komencajn ĉambrojn de aro", - "Room name": "Nomo de ĉambro", "Support": "Subteno", "Random": "Hazarda", "Welcome to ": "Bonvenu al ", @@ -2517,7 +2467,6 @@ "Or send invite link": "Aŭ sendu invitan ligilon", "Some suggestions may be hidden for privacy.": "Iuj proponoj povas esti kaŝitaj pro privateco.", "Search for rooms or people": "Serĉi ĉambrojn aŭ personojn", - "Forward message": "Plusendi mesaĝon", "Sent": "Sendite", "You don't have permission to do this": "Vi ne rajtas fari tion", "Want to add an existing space instead?": "Ĉu vi volas aldoni jaman aron anstataŭe?", @@ -2531,7 +2480,6 @@ "Public room": "Publika ĉambro", "Private room (invite only)": "Privata ĉambro (nur por invititoj)", "Room visibility": "Videbleco de ĉambro", - "Create a room": "Krei ĉambron", "Only people invited will be able to find and join this room.": "Nur invititoj povos trovi kaj aliĝi ĉi tiun ĉambron.", "Anyone will be able to find and join this room.": "Ĉiu povos trovi kaj aliĝi ĉi tiun ĉambron.", "Anyone will be able to find and join this room, not just members of .": "Ĉiu povos trovi kaj aliĝi ĉi tiun ĉambron, ne nur anoj de .", @@ -2558,8 +2506,6 @@ "Message search initialisation failed, check your settings for more information": "Malsukcesis komencigo de serĉado de mesaĝoj, kontrolu viajn agordojn por pliaj informoj", "Error - Mixed content": "Eraris – Miksita enhavo", "Error loading Widget": "Eraris enlegado de fenestraĵo", - "Image": "Bildo", - "Sticker": "Glumarko", "Error processing audio message": "Eraris traktado de sonmesaĝo", "Decrypting": "Malĉifrante", "The call is in an unknown state!": "La voko estas en nekonata stato!", @@ -2602,7 +2548,6 @@ "%(senderName)s pinned a message to this room. See all pinned messages.": "%(senderName)s fiksis mesaĝon al ĉi tiu ĉambro. Vidu ĉiujn fiksitajn mesaĝojn.", "Rooms and spaces": "Ĉambroj kaj aroj", "Results": "Rezultoj", - "Forward": "Plusendi", "Would you like to leave the rooms in this space?": "Ĉu vi volus foriri de la ĉambroj en ĉi tiu aro?", "You are about to leave .": "Vi foriros de .", "Leave some rooms": "Foriri de iuj ĉambroj", @@ -2612,7 +2557,6 @@ "Thread": "Fadeno", "Some encryption parameters have been changed.": "Ŝanĝiĝis iuj parametroj de ĉifrado.", "Role in ": "Rolo en ", - "Message": "Mesaĝo", "Message didn't send. Click for info.": "Mesaĝo ne sendiĝis. Klaku por akiri informojn.", "Send a sticker": "Sendi glumarkon", "Reply to thread…": "Respondi al fadeno…", @@ -2920,7 +2864,6 @@ "Yes, it was me": "Jes, estis mi", "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.": "%(brand)s estas eksperimenta en poŝtelefona retumilo. Por pli bona sperto kaj freŝaj funkcioj, uzu nian senpagan malfremdan aplikaĵon.", "Notifications silenced": "Sciigoj silentigitaj", - "Video": "Video", "Video call started": "Videovoko komenciĝis", "Unknown room": "Nekonata ĉambro", "Creating output…": "Kreante eligon…", @@ -2933,6 +2876,34 @@ "WARNING: session already verified, but keys do NOT MATCH!": "AVERTO: Salutaĵo jam estas kontrolita, sed la ŝlosiloj NE AKORDAS!", "Your email address does not appear to be associated with a Matrix ID on this homeserver.": "Via retpoŝtareso ŝajne ne ligiĝas al Matrix-identigilo sur tiu ĉi hejmservilo.", "%(senderName)s started a voice broadcast": "%(senderName)s komencis voĉan elsendon", + "common": { + "about": "Prio", + "analytics": "Analizo", + "encryption_enabled": "Ĉifrado estas ŝaltita", + "error": "Eraro", + "forward_message": "Plusendi mesaĝon", + "image": "Bildo", + "message": "Mesaĝo", + "message_layout": "Aranĝo de mesaĝoj", + "modern": "Moderna", + "mute": "Silentigi", + "no_results": "Neniuj rezultoj", + "offline": "Eksterreta", + "password": "Pasvorto", + "people": "Personoj", + "reactions": "Reagoj", + "report_a_bug": "Raporti eraron", + "room_name": "Nomo de ĉambro", + "security": "Sekureco", + "settings": "Agordoj", + "sticker": "Glumarko", + "success": "Sukceso", + "suggestions": "Rekomendoj", + "unmute": "Malsilentigi", + "username": "Uzantonomo", + "verification_cancelled": "Kontrolo nuliĝis", + "video": "Video" + }, "action": { "reject": "Rifuzi", "confirm": "Konfirmi", @@ -2954,5 +2925,8 @@ "share": "Havigi", "skip": "Preterpasi", "logout": "Adiaŭi" + }, + "a11y": { + "user_menu": "Menuo de uzanto" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 621022e0e090..95e6d891799a 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -25,7 +25,6 @@ "Command error": "Error de comando", "Commands": "Comandos", "Confirm password": "Confirmar contraseña", - "Continue": "Continuar", "Cryptography": "Criptografía", "Current password": "Contraseña actual", "Deactivate Account": "Desactivar cuenta", @@ -37,7 +36,6 @@ "Email": "Correo electrónico", "Email address": "Dirección de correo electrónico", "Emoji": "Emoji", - "Error": "Error", "Error decrypting attachment": "Error al descifrar adjunto", "Export E2E room keys": "Exportar claves de salas con cifrado de extremo a extremo", "Failed to ban user": "Bloqueo del usuario falló", @@ -65,12 +63,10 @@ "Incorrect verification code": "Verificación de código incorrecta", "Invalid Email Address": "Dirección de Correo Electrónico Inválida", "Invalid file%(extra)s": "Archivo inválido %(extra)s", - "Invites": "Invitaciones", "Invites user with given id to current room": "Invita al usuario con la ID dada a la sala actual", "Sign in with": "Iniciar sesión con", "Join Room": "Unirme a la sala", "Labs": "Experimentos", - "Leave room": "Salir de la sala", "Low priority": "Prioridad baja", "Add": "Añadir", "Admin Tools": "Herramientas de administración", @@ -81,7 +77,6 @@ "Camera": "Cámara", "Anyone": "Todos", "Custom level": "Nivel personalizado", - "Decline": "Rechazar", "Enter passphrase": "Introducir frase de contraseña", "Export": "Exportar", "Home": "Inicio", @@ -96,9 +91,7 @@ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hizo visible el historial futuro de la sala para desconocido (%(visibility)s).", "Something went wrong!": "¡Algo ha fallado!", "Create new room": "Crear una nueva sala", - "Start chat": "Empezar una conversación", "New Password": "Contraseña nueva", - "Analytics": "Analítica de datos", "Options": "Opciones", "Passphrases must match": "Las contraseñas deben coincidir", "Passphrase must not be empty": "La contraseña no puede estar en blanco", @@ -115,7 +108,6 @@ "%(roomName)s does not exist.": "%(roomName)s no existe.", "%(roomName)s is not accessible at this time.": "%(roomName)s no es accesible en este momento.", "Rooms": "Salas", - "Save": "Guardar", "Search": "Buscar", "Search failed": "Falló la búsqueda", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s envió una imagen.", @@ -125,14 +117,12 @@ "Server may be unavailable, overloaded, or you hit a bug.": "El servidor podría estar saturado o desconectado, o has encontrado un fallo.", "Server unavailable, overloaded, or something else went wrong.": "Servidor saturado, desconectado, o alguien ha roto algo.", "Session ID": "ID de Sesión", - "Settings": "Ajustes", "Signed Out": "Desconectado", "Sign in": "Iniciar sesión", "Sign out": "Cerrar sesión", "Someone": "Alguien", "Start authentication": "Iniciar autenticación", "Submit": "Enviar", - "Success": "Éxito", "No media permissions": "Sin permisos para el medio", "You may need to manually permit %(brand)s to access your microphone/webcam": "Probablemente necesites dar permisos manualmente a %(brand)s para tu micrófono/cámara", "Are you sure you want to leave the room '%(roomName)s'?": "¿Salir de la sala «%(roomName)s»?", @@ -141,7 +131,6 @@ "Missing room_id in request": "Falta el room_id en la solicitud", "Missing user_id in request": "Falta el user_id en la solicitud", "Moderator": "Moderador", - "Mute": "Silenciar", "Name": "Nombre", "New passwords don't match": "Las contraseñas nuevas no coinciden", "New passwords must match each other.": "Las contraseñas nuevas deben coincidir.", @@ -150,11 +139,8 @@ "": "", "No display name": "Sin nombre público", "No more results": "No hay más resultados", - "No results": "No hay resultados", "No users have specific privileges in this room": "Ningún usuario tiene permisos específicos en esta sala", - "OK": "Vale", "Operation failed": "Falló la operación", - "Password": "Contraseña", "Passwords can't be empty": "Las contraseñas no pueden estar en blanco", "Permissions": "Permisos", "Phone": "Teléfono", @@ -165,7 +151,6 @@ "Reason": "Motivo", "Register": "Crear cuenta", "Reject invitation": "Rechazar invitación", - "Remove": "Eliminar", "Return to login screen": "Regresar a la pantalla de inicio de sesión", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s no tiene permiso para enviarte notificaciones - por favor, comprueba los ajustes de tu navegador", "%(brand)s was not given permission to send notifications - please try again": "No le has dado permiso a %(brand)s para enviar notificaciones. Por favor, inténtalo de nuevo", @@ -187,7 +172,6 @@ "Authentication check failed: incorrect password?": "La verificación de autenticación falló: ¿contraseña incorrecta?", "Delete widget": "Eliminar accesorio", "Define the power level of a user": "Define el nivel de autoridad de un usuario", - "Edit": "Editar", "Enable automatic language detection for syntax highlighting": "Activar la detección automática del lenguajes de programación para resaltar su sintaxis", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no tiene permiso para ver el mensaje solicitado.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no se ha podido encontrarlo.", @@ -219,7 +203,6 @@ "Publish this room to the public in %(domain)s's room directory?": "¿Quieres incluir esta sala en la lista pública de salas de %(domain)s?", "AM": "AM", "PM": "PM", - "Unmute": "Dejar de silenciar", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivel de permisos %(powerLevelNumber)s)", "You do not have permission to post to this room": "No tienes permiso para publicar en esta sala", "You have disabled URL previews by default.": "Has desactivado la vista previa de URLs por defecto.", @@ -262,7 +245,6 @@ "On": "Encendido", "Changelog": "Registro de cambios", "Waiting for response from server": "Esperando una respuesta del servidor", - "Leave": "Salir", "Failed to send logs: ": "Error al enviar registros: ", "This Room": "Esta sala", "Resend": "Reenviar", @@ -298,7 +280,6 @@ "Thursday": "Jueves", "Logs sent": "Registros enviados", "Back": "Volver", - "Reply": "Responder", "Show message in desktop notification": "Mostrar mensaje en las notificaciones de escritorio", "Messages in group chats": "Mensajes en conversaciones grupales", "Yesterday": "Ayer", @@ -309,9 +290,7 @@ "Wednesday": "Miércoles", "Event Type": "Tipo de Evento", "Developer Tools": "Herramientas de desarrollo", - "View Source": "Ver fuente", "Event Content": "Contenido del Evento", - "Quote": "Citar", "Permission Required": "Se necesita permiso", "You do not have permission to start a conference call in this room": "No tienes permiso para iniciar una llamada de conferencia en esta sala", "%(weekDayName)s %(time)s": "%(weekDayName)s a las %(time)s", @@ -350,7 +329,6 @@ "Ignore": "Ignorar", "Jump to read receipt": "Saltar al último mensaje sin leer", "Mention": "Mencionar", - "Invite": "Invitar", "Share Link to User": "Compartir enlace al usuario", "Send an encrypted reply…": "Enviar una respuesta cifrada…", "Send an encrypted message…": "Enviar un mensaje cifrado…", @@ -363,7 +341,6 @@ "Offline for %(duration)s": "Desconectado durante %(duration)s", "Unknown for %(duration)s": "Desconocido durante %(duration)s", "Idle": "En reposo", - "Offline": "Desconectado", "Unknown": "Desconocido", "Replying": "Respondiendo", "(~%(count)s results)": { @@ -492,7 +469,6 @@ "other": "Y %(count)s más…" }, "Confirm Removal": "Confirmar eliminación", - "Create": "Crear", "Clear Storage and Sign Out": "Borrar almacenamiento y cerrar sesión", "Send Logs": "Enviar Registros", "Refresh": "Refrescar", @@ -688,8 +664,6 @@ "Headphones": "Auriculares", "Folder": "Carpeta", "Pin": "Pin", - "Yes": "Sí", - "No": "No", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Te hemos enviado un mensaje para verificar tu dirección de correo. Por favor, sigue las instrucciones y después haz clic el botón de abajo.", "Email Address": "Dirección de correo", "Delete Backup": "Borrar copia de seguridad", @@ -860,7 +834,6 @@ "Failed to find the following users": "No se encontró a los siguientes usuarios", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Puede que los siguientes usuarios no existan o sean inválidos, y no pueden ser invitados: %(csvNames)s", "Recent Conversations": "Conversaciones recientes", - "Suggestions": "Sugerencias", "Recently Direct Messaged": "Mensajes directos recientes", "Go": "Ir", "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.": "Has usado %(brand)s anteriormente en %(host)s con carga diferida de usuarios activada. En esta versión la carga diferida está desactivada. Como el caché local no es compatible entre estas dos configuraciones, %(brand)s tiene que resincronizar tu cuenta.", @@ -895,7 +868,6 @@ "Service": "Servicio", "Summary": "Resumen", "Document": "Documento", - "Next": "Siguiente", "Upload files (%(current)s of %(total)s)": "Enviar archivos (%(current)s de %(total)s)", "Upload files": "Enviar archivos", "Upload all": "Enviar todo", @@ -965,14 +937,12 @@ "Scan this unique code": "Escanea este código", "Compare unique emoji": "Compara los emojis", "Compare a unique set of emoji if you don't have a camera on either device": "Compara un conjunto de emojis si no tienes cámara en ninguno de los dispositivos", - "Start": "Empezar", "Waiting for %(displayName)s to verify…": "Esperando la verificación de %(displayName)s…", "Review": "Revisar", "in secret storage": "en almacén secreto", "Secret storage public key:": "Clave pública del almacén secreto:", "in account data": "en datos de cuenta", "Manage": "Gestionar", - "Enable": "Activar", "not stored": "no almacenado", "Message search": "Búsqueda de mensajes", "Upgrade this room to the recommended room version": "Actualizar esta sala a la versión de sala recomendada", @@ -1056,7 +1026,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) inició una nueva sesión sin verificarla:", "Ask this user to verify their session, or manually verify it below.": "Pídele al usuario que verifique su sesión, o verifícala manualmente a continuación.", "Not Trusted": "No es de confianza", - "Done": "Listo", "Support adding custom themes": "Soporta la adición de temas personalizados", "Show info about bridges in room settings": "Incluir información sobre puentes en la configuración de las salas", "Show shortcuts to recently viewed rooms above the room list": "Incluir encima de la lista de salas unos atajos a las últimas salas que hayas visto", @@ -1301,7 +1270,6 @@ }, "Hide sessions": "Ocultar sesiones", "This client does not support end-to-end encryption.": "Este cliente no es compatible con el cifrado de extremo a extremo.", - "Security": "Seguridad", "Verify by scanning": "Verificar mediante escaneo", "Ask %(displayName)s to scan your code:": "Pídele a %(displayName)s que escanee tu código:", "If you can't scan the code above, verify by comparing unique emoji.": "Si no puedes escanear el código de arriba, verifica comparando emoji únicos.", @@ -1317,11 +1285,8 @@ "Verification timed out.": "El tiempo máximo para la verificación se ha agotado.", "%(displayName)s cancelled verification.": "%(displayName)s canceló la verificación.", "You cancelled verification.": "Has cancelado la verificación.", - "Verification cancelled": "Verificación cancelada", - "Encryption enabled": "El cifrado está activado", "Encryption not enabled": "El cifrado no está activado", "The encryption used by this room isn't supported.": "El cifrado usado por esta sala no es compatible.", - "React": "Reaccionar", "Message Actions": "Acciones de mensaje", "Show image": "Ver imagen", "You have ignored this user, so their message is hidden. Show anyways.": "Ha ignorado a esta cuenta, así que su mensaje está oculto. Ver de todos modos.", @@ -1337,7 +1302,6 @@ "%(name)s wants to verify": "%(name)s quiere verificar", "You sent a verification request": "Has enviado solicitud de verificación", "Show all": "Ver todo", - "Reactions": "Reacciones", "reacted with %(shortName)s": " reaccionó con %(shortName)s", "Message deleted": "Mensaje eliminado", "Message deleted by %(name)s": "Mensaje eliminado por %(name)s", @@ -1392,7 +1356,6 @@ "Successfully restored %(sessionCount)s keys": "%(sessionCount)s claves restauradas con éxito", "Warning: you should only set up key backup from a trusted computer.": "Advertencia: deberías configurar la copia de seguridad de claves solamente usando un ordenador de confianza.", "Resend %(unsentCount)s reaction(s)": "Reenviar %(unsentCount)s reacción(es)", - "Report Content": "Denunciar contenido", "Remove for everyone": "Eliminar para todos", "This homeserver would like to make sure you are not a robot.": "A este servidor le gustaría asegurarse de que no eres un robot.", "Country Dropdown": "Seleccione país", @@ -1400,7 +1363,6 @@ "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Falta la clave pública del captcha en la configuración del servidor base. Por favor, informa de esto al administrador de tu servidor base.", "Please review and accept all of the homeserver's policies": "Por favor, revisa y acepta todas las políticas del servidor base", "Please review and accept the policies of this homeserver:": "Por favor, revisa y acepta las políticas de este servidor base:", - "Username": "Nombre de usuario", "Use an email address to recover your account": "Utilice una dirección de correo electrónico para recuperar su cuenta", "Enter email address (required on this homeserver)": "Introduce una dirección de correo electrónico (obligatorio en este servidor)", "Doesn't look like a valid email address": "No parece una dirección de correo electrónico válida", @@ -1477,8 +1439,6 @@ "Size must be a number": "El tamaño debe ser un dígito", "Custom font size can only be between %(min)s pt and %(max)s pt": "El tamaño de la fuente solo puede estar entre los valores %(min)s y %(max)s", "Use between %(min)s pt and %(max)s pt": "Utiliza un valor entre %(min)s y %(max)s", - "Message layout": "Diseño del mensaje", - "Modern": "Moderno", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Escribe el nombre de la fuente instalada en tu sistema y %(brand)s intentará usarla.", "Customise your appearance": "Personaliza la apariencia", "Appearance Settings only affect this %(brand)s session.": "Cambiar las opciones de apariencia solo afecta a esta sesión de %(brand)s.", @@ -1487,7 +1447,6 @@ "To link to this room, please add an address.": "Para obtener un enlace a esta sala, añade una dirección.", "The authenticity of this encrypted message can't be guaranteed on this device.": "La autenticidad de este mensaje cifrado no puede ser garantizada en este dispositivo.", "No recently visited rooms": "No hay salas visitadas recientemente", - "People": "Gente", "Explore public rooms": "Buscar salas públicas", "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Antepone ( ͡° ͜ʖ ͡°) a un mensaje de texto", "Unknown App": "Aplicación desconocida", @@ -1528,7 +1487,6 @@ "There was an error removing that address. It may no longer exist or a temporary error occurred.": "Se produjo un error al eliminar esa dirección. Puede que ya no exista o se haya producido un error temporal.", "Error removing address": "Error al eliminar la dirección", "Not encrypted": "Sin cifrar", - "About": "Acerca de", "Room settings": "Configuración de la sala", "You've successfully verified your device!": "¡Ha verificado correctamente su dispositivo!", "Take a picture": "Toma una foto", @@ -1562,7 +1520,6 @@ "A connection error occurred while trying to contact the server.": "Se produjo un error de conexión al intentar contactar con el servidor.", "The server is not configured to indicate what the problem is (CORS).": "El servidor no está configurado para indicar cuál es el problema (CORS).", "Recent changes that have not yet been received": "Cambios recientes que aún no se han recibido", - "Copy": "Copiar", "Wrong file type": "Tipo de archivo incorrecto", "Looks good!": "¡Se ve bien!", "Security Phrase": "Frase de seguridad", @@ -1578,7 +1535,6 @@ "Switch to light mode": "Cambiar al tema claro", "Switch to dark mode": "Cambiar al tema oscuro", "Switch theme": "Cambiar tema", - "User menu": "Menú del Usuario", "Failed to perform homeserver discovery": "No se ha podido realizar el descubrimiento del servidor base", "If you've joined lots of rooms, this might take a while": "Si te has unido a muchas salas, esto puede tardar un poco", "Create account": "Crear una cuenta", @@ -1618,7 +1574,6 @@ "Go back to set it again.": "Volver y ponerlo de nuevo.", "Download": "Descargar", "Unable to query secret storage status": "No se puede consultar el estado del almacenamiento secreto", - "Retry": "Reintentar", "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "Si cancela ahora, puede perder mensajes y datos cifrados si pierde el acceso a sus inicios de sesión.", "You can also set up Secure Backup & manage your keys in Settings.": "También puedes configurar la copia de seguridad segura y gestionar sus claves en configuración.", "Set up Secure Backup": "Configurar copia de seguridad segura", @@ -1639,7 +1594,6 @@ "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Si hizo esto accidentalmente, puede configurar Mensajes seguros en esta sesión que volverá a cifrar el historial de mensajes de esta sesión con un nuevo método de recuperación.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Si no eliminó el método de recuperación, es posible que un atacante esté intentando acceder a su cuenta. Cambie la contraseña de su cuenta y configure un nuevo método de recuperación inmediatamente en Configuración.", "If disabled, messages from encrypted rooms won't appear in search results.": "Si está desactivado, los mensajes de las salas cifradas no aparecerán en los resultados de búsqueda.", - "Disable": "Desactivar", "Not currently indexing messages for any room.": "Actualmente no indexa mensajes para ninguna sala.", "Currently indexing: %(currentRoom)s": "Actualmente indexando: %(currentRoom)s", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s está almacenando en caché de forma segura los mensajes cifrados localmente para que aparezcan en los resultados de búsqueda:", @@ -1911,7 +1865,6 @@ "Now, let's help you get started": "Vamos a empezar", "Welcome %(name)s": "Te damos la bienvenida, %(name)s", "Add a photo so people know it's you.": "Añade una imagen para que la gente sepa que eres tú.", - "Forgot password?": "¿Has olvidado tu contraseña?", "Enter phone number": "Escribe tu teléfono móvil", "Enter email address": "Escribe tu dirección de correo electrónico", "Something went wrong in confirming your identity. Cancel and try again.": "Ha ocurrido un error al confirmar tu identidad. Cancela e inténtalo de nuevo.", @@ -1933,7 +1886,6 @@ "This widget would like to:": "A este accesorios le gustaría:", "Approve widget permissions": "Aprobar permisos de widget", "About homeservers": "Sobre los servidores base", - "Learn more": "Más información", "Use your preferred Matrix homeserver if you have one, or host your own.": "Usa tu servidor base de Matrix de confianza o aloja el tuyo propio.", "Other homeserver": "Otro servidor base", "Sign into your homeserver": "Inicia sesión en tu servidor base", @@ -1948,7 +1900,6 @@ "A call can only be transferred to a single user.": "Una llamada solo puede transferirse a un usuario.", "Invite by email": "Invitar a través de correo electrónico", "Send feedback": "Enviar comentarios", - "Report a bug": "Avísanos de un fallo", "Comment": "Comentario", "Feedback sent": "Comentarios enviados", "There was an error finding this widget.": "Ha ocurrido un error al buscar este accesorio.", @@ -2202,7 +2153,6 @@ "Who are you working with?": "¿Con quién estás trabajando?", "Skip for now": "Omitir por ahora", "Failed to create initial space rooms": "No se han podido crear las salas iniciales del espacio", - "Room name": "Nombre de la sala", "Support": "Ayuda", "Random": "Al azar", "%(count)s members": { @@ -2373,7 +2323,6 @@ "Some suggestions may be hidden for privacy.": "Puede que algunas sugerencias no se muestren por motivos de privacidad.", "Search for rooms or people": "Busca salas o gente", "Message preview": "Vista previa del mensaje", - "Forward message": "Reenviar mensaje", "Sent": "Enviado", "You don't have permission to do this": "No tienes permisos para hacer eso", "Error - Mixed content": "Error - Contenido mezclado", @@ -2390,7 +2339,6 @@ "Collapse reply thread": "Ocultar respuestas", "Show preview": "Mostrar vista previa", "View source": "Ver código fuente", - "Forward": "Reenviar", "Settings - %(spaceName)s": "Ajustes - %(spaceName)s", "Report the entire room": "Denunciar la sala entera", "Spam or propaganda": "Publicidad no deseada o propaganda", @@ -2488,8 +2436,6 @@ "Could not connect media": "No se ha podido conectar con los dispositivos multimedia", "Their device couldn't start the camera or microphone": "El dispositivo de la otra persona no ha podido iniciar la cámara o micrófono", "Error downloading audio": "Error al descargar el audio", - "Image": "Imagen", - "Sticker": "Pegatina", "The call is in an unknown state!": "¡La llamada está en un estado desconocido!", "Call back": "Devolver llamada", "No answer": "Sin respuesta", @@ -2550,7 +2496,6 @@ "Public room": "Sala pública", "Private room (invite only)": "Sala privada (solo por invitación)", "Room visibility": "Visibilidad de la sala", - "Create a room": "Crear una sala", "Only people invited will be able to find and join this room.": "Solo aquellas personas invitadas podrán encontrar y unirse a esta sala.", "Anyone will be able to find and join this room.": "Todo el mundo podrá encontrar y unirse a esta sala.", "Anyone will be able to find and join this room, not just members of .": "Cualquiera podrá encontrar y unirse a esta sala, incluso gente que no sea miembro de .", @@ -2617,7 +2562,6 @@ "Change space name": "Cambiar el nombre del espacio", "Change main address for the space": "Cambiar la dirección principal del espacio", "Change description": "Cambiar la descripción", - "Message": "Mensaje", "Message didn't send. Click for info.": "Mensaje no enviado. Haz clic para más info.", "To join a space you'll need an invite.": "Para unirte a un espacio, necesitas que te inviten a él.", "Don't leave any rooms": "No salir de ninguna sala", @@ -2761,7 +2705,6 @@ "Rooms outside of a space": "Salas fuera de un espacio", "Sidebar": "Barra lateral", "Other rooms": "Otras salas", - "Copy link": "Copiar enlace", "Mentions only": "Solo menciones", "You won't get any notifications": "No recibirás ninguna notificación", "@mentions & keywords": "@menciones y palabras clave", @@ -3146,7 +3089,6 @@ "Verification explorer": "Explorador de verificación", "View servers in room": "Ver servidores en la sala", "Developer tools": "Herramientas de desarrollo", - "Video": "Vídeo", "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.": "%(brand)s en navegadores para móviles está en prueba. Para una mejor experiencia y para poder usar las últimas funcionalidades, usa nuestra aplicación nativa gratuita.", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Los registros de depuración contienen datos sobre cómo usas la aplicación, incluyendo tu nombre de usuario, identificadores o alias de las salas que hayas visitado, una lista de los últimos elementos de la interfaz con los que has interactuado, así como los nombres de usuarios de otras personas. No contienen mensajes.", "%(brand)s was denied permission to fetch your location. Please allow location access in your browser settings.": "Se le han denegado a %(brand)s los permisos para acceder a tu ubicación. Por favor, permite acceso a tu ubicación en los ajustes de tu navegador.", @@ -3664,7 +3606,6 @@ "Search all rooms": "Buscar en todas las salas", "Search this room": "Buscar en esta sala", "Rejecting invite…": "Rechazar invitación…", - "Loading…": "Cargando…", "Joining room…": "Uniéndose a la sala…", "Joining space…": "Uniéndose al espacio…", "Formatting": "Formato", @@ -3753,6 +3694,35 @@ "Requires your server to support MSC3030": "Requiere que tu servidor sea compatible con MSC3030", "Enable MSC3946 (to support late-arriving room archives)": "", "Try using %(server)s": "Probar a usar %(server)s", + "common": { + "about": "Acerca de", + "analytics": "Analítica de datos", + "encryption_enabled": "El cifrado está activado", + "error": "Error", + "forward_message": "Reenviar mensaje", + "image": "Imagen", + "loading": "Cargando…", + "message": "Mensaje", + "message_layout": "Diseño del mensaje", + "modern": "Moderno", + "mute": "Silenciar", + "no_results": "No hay resultados", + "offline": "Desconectado", + "password": "Contraseña", + "people": "Gente", + "reactions": "Reacciones", + "report_a_bug": "Avísanos de un fallo", + "room_name": "Nombre de la sala", + "security": "Seguridad", + "settings": "Ajustes", + "sticker": "Pegatina", + "success": "Éxito", + "suggestions": "Sugerencias", + "unmute": "Dejar de silenciar", + "username": "Nombre de usuario", + "verification_cancelled": "Verificación cancelada", + "video": "Vídeo" + }, "action": { "reject": "Rechazar", "confirm": "Confirmar", @@ -3777,5 +3747,8 @@ "share": "Compartir", "skip": "Omitir", "logout": "Cerrar sesión" + }, + "a11y": { + "user_menu": "Menú del Usuario" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index e621eae5f3fd..fd6343884a68 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -3,8 +3,6 @@ "This phone number is already in use": "See telefoninumber on juba kasutusel", "Add Email Address": "Lisa e-posti aadress", "Failed to verify email address: make sure you clicked the link in the email": "E-posti aadressi kontrollimine ei õnnestunud: palun vaata, et sa kindlasti klõpsisid saabunud kirjas olnud viidet", - "Analytics": "Analüütika", - "Error": "Viga", "Unable to load! Check your network connectivity and try again.": "Laadimine ei õnnestunud! Kontrolli oma võrguühendust ja proovi uuesti.", "Call Failed": "Kõne ebaõnnestus", "Call failed due to misconfigured server": "Kõne ebaõnnestus valesti seadistatud serveri tõttu", @@ -43,7 +41,6 @@ "Send a message…": "Saada sõnum…", "The conversation continues here.": "Vestlus jätkub siin.", "Direct Messages": "Isiklikud sõnumid", - "Start chat": "Alusta vestlust", "Rooms": "Jututoad", "Do you want to chat with %(user)s?": "Kas sa soovid vestelda %(user)s'ga?", " wants to chat": " soovib vestelda", @@ -53,7 +50,6 @@ "Verification timed out.": "Verifitseerimine aegus.", "%(displayName)s cancelled verification.": "%(displayName)s tühistas verifitseerimise.", "You cancelled verification.": "Sina tühistasid verifitseerimise.", - "Verification cancelled": "Verifitseerimine tühistatud", "Sunday": "Pühapäev", "Monday": "Esmaspäev", "Tuesday": "Teisipäev", @@ -63,10 +59,7 @@ "Saturday": "Laupäev", "Today": "Täna", "Yesterday": "Eile", - "View Source": "Vaata lähtekoodi", - "Encryption enabled": "Krüptimine on kasutusel", "Create new room": "Loo uus jututuba", - "No results": "Tulemusi pole", "Please create a new issue on GitHub so that we can investigate this bug.": "Selle vea uurimiseks palun loo uus veateade meie GitHub'is.", "collapse": "ahenda", "expand": "laienda", @@ -80,7 +73,6 @@ "If you've joined lots of rooms, this might take a while": "Kui oled liitunud paljude jututubadega, siis see võib natuke aega võtta", "If disabled, messages from encrypted rooms won't appear in search results.": "Kui see seadistus pole kasutusel, siis krüptitud jututubade sõnumeid otsing ei vaata.", "Indexed rooms:": "Indekseeritud jututoad:", - "Remove": "Eemalda", "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "Sa peaksid enne ühenduse katkestamisst eemaldama isiklikud andmed id-serverist . Kahjuks id-server ei ole hetkel võrgus või pole kättesaadav.", "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "Me soovitame, et eemaldad enne ühenduse katkestamist oma e-posti aadressi ja telefoninumbrid isikutuvastusserverist.", "Unable to remove contact information": "Kontaktiinfo eemaldamine ebaõnnestus", @@ -109,7 +101,6 @@ "Resend %(unsentCount)s reaction(s)": "Saada uuesti %(unsentCount)s reaktsioon(i)", "Source URL": "Lähteaadress", "All messages": "Kõik sõnumid", - "Leave": "Lahku", "Favourite": "Lemmik", "Low Priority": "Vähetähtis", "Home": "Avaleht", @@ -170,13 +161,8 @@ "Service": "Teenus", "Summary": "Kokkuvõte", "Document": "Dokument", - "Next": "Järgmine", - "Report Content": "Teata sisust haldurile", "powered by Matrix": "põhineb Matrix'il", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Robotilõksu avalik võti on puudu koduserveri seadistustes. Palun teata sellest oma koduserveri haldurile.", - "Copy": "Kopeeri", - "Mute": "Summuta", - "Settings": "Seadistused", "Never send encrypted messages to unverified sessions from this session": "Ära iialgi saada sellest sessioonist krüptitud sõnumeid verifitseerimata sessioonidesse", "Never send encrypted messages to unverified sessions in this room from this session": "Ära iialgi saada sellest sessioonist krüptitud sõnumeid verifitseerimata sessioonidesse selles jututoas", "Sign In or Create Account": "Logi sisse või loo uus konto", @@ -189,9 +175,6 @@ "Encrypted by an unverified session": "Krüptitud verifitseerimata sessiooni poolt", "Encryption not enabled": "Krüptimine ei ole kasutusel", "The encryption used by this room isn't supported.": "Selles jututoas kasutatud krüptimine ei ole toetatud.", - "React": "Reageeri", - "Reply": "Vasta", - "Edit": "Muuda", "Message Actions": "Tegevused sõnumitega", "Attachment": "Manus", "Error decrypting attachment": "Viga manuse dekrüptimisel", @@ -214,7 +197,6 @@ "You sent a verification request": "Sa saatsid verifitseerimispalve", "Error decrypting video": "Viga videovoo dekrüptimisel", "Show all": "Näita kõiki", - "Reactions": "Reageerimised", "reacted with %(shortName)s": "reageeris(id) %(shortName)s", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s muutis %(roomName)s jututoa avatari", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s eemaldas jututoa avatari.", @@ -246,7 +228,6 @@ "Offline for %(duration)s": "Võrgust väljas %(duration)s", "Unknown for %(duration)s": "Teadmata olek viimased %(duration)s", "Idle": "Jõude", - "Offline": "Võrgust väljas", "Unknown": "Teadmata olek", "Replying": "Vastan", "Room %(name)s": "Jututuba %(name)s", @@ -259,7 +240,6 @@ "Forget room": "Unusta jututuba", "Search": "Otsing", "Share room": "Jaga jututuba", - "Invites": "Kutsed", "Favourites": "Lemmikud", "Low priority": "Vähetähtis", "Historical": "Ammune", @@ -271,7 +251,6 @@ "Can't find this server or its room list": "Ei leia seda serverit ega tema jututubade loendit", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Üritasin laadida teatud hetke selle jututoa ajajoonelt, kuid ei suutnud seda leida.", "Options": "Valikud", - "Quote": "Tsiteeri", "This Room": "See jututuba", "Sun": "Pühapäev", "Mon": "Esmaspäev", @@ -316,8 +295,6 @@ "%(num)s days from now": "%(num)s päeva pärast", "Are you sure?": "Kas sa oled kindel?", "Jump to read receipt": "Hüppa lugemisteatise juurde", - "Invite": "Kutsu", - "Unmute": "Eemalda summutamine", "Create a public room": "Loo avalik jututuba", "Create a private room": "Loo omavaheline jututuba", "Name": "Nimi", @@ -326,7 +303,6 @@ "Show advanced": "Näita lisaseadistusi", "Server did not require any authentication": "Server ei nõudnud mitte mingisugust autentimist", "Recent Conversations": "Hiljutised vestlused", - "Suggestions": "Soovitused", "Go": "Mine", "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Sinu sõnumit ei saadetud, kuna see koduserver on saavutanud igakuise aktiivsete kasutajate piiri. Teenuse kasutamiseks palun võta ühendust serveri haldajaga.", "Add room": "Lisa jututuba", @@ -386,7 +362,6 @@ "Someone is using an unknown session": "Keegi kasutab tundmatut sessiooni", "This event could not be displayed": "Seda sündmust ei õnnestunud kuvada", "Download": "Laadi alla", - "Disable": "Lülita välja", "Not currently indexing messages for any room.": "Mitte ainsamagi jututoa sõnumeid hetkel ei indekseerita.", "Currently indexing: %(currentRoom)s": "Parasjagu indekseerin: %(currentRoom)s", "Space used:": "Kasutatud andmeruum:", @@ -412,7 +387,6 @@ "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s muutis jututoa vana nime %(oldRoomName)s uueks nimeks %(newRoomName)s.", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s muutis jututoa nimeks %(roomName)s.", "Show info about bridges in room settings": "Näita jututoa seadistustes teavet sõnumisildade kohta", - "Save": "Salvesta", "General": "Üldist", "Notifications": "Teavitused", "Security & Privacy": "Turvalisus ja privaatsus", @@ -477,7 +451,6 @@ "New passwords don't match": "Uued salasõnad ei klapi", "Passwords can't be empty": "Salasõna ei saa olla tühi", "Current password": "Praegune salasõna", - "Password": "Salasõna", "New Password": "Uus salasõna", "Confirm password": "Korda uut salasõna", "Change Password": "Muuda salasõna", @@ -533,7 +506,6 @@ "Always show message timestamps": "Alati näita sõnumite ajatempleid", "Manually verify all remote sessions": "Verifitseeri käsitsi kõik välised sessioonid", "Collecting app version information": "Kogun teavet rakenduse versiooni kohta", - "Decline": "Keeldu", "The other party cancelled the verification.": "Teine osapool tühistas verifitseerimise.", "Verified!": "Verifitseeritud!", "You've successfully verified this user.": "Sa oled edukalt verifitseerinud selle kasutaja.", @@ -542,7 +514,6 @@ "Scan this unique code": "Skaneeri seda unikaalset koodi", "Compare unique emoji": "Võrdle unikaalseid emoji'sid", "Compare a unique set of emoji if you don't have a camera on either device": "Kui sul mõlemas seadmes pole kaamerat, siis võrdle unikaalset emoji'de komplekti", - "Start": "Alusta", "Verify this user by confirming the following number appears on their screen.": "Verifitseeri see kasutaja tehes kindlaks, et järgnev number kuvatakse tema ekraanil.", "Unable to find a supported verification method.": "Ei suuda leida toetatud verifitseerimismeetodit.", "Waiting for %(displayName)s to verify…": "Ootan kasutaja %(displayName)s verifitseerimist…", @@ -629,7 +600,6 @@ "Forgotten your password?": "Kas sa unustasid oma salasõna?", "Sign in and regain access to your account.": "Logi sisse ja pääse tagasi oma kasutajakonto juurde.", "You cannot sign in to your account. Please contact your homeserver admin for more information.": "Sa ei saa oma kasutajakontole sisse logida. Lisateabe saamiseks palun võta ühendust oma koduserveri halduriga.", - "Retry": "Proovi uuesti", "Upgrade your encryption": "Uuenda oma krüptimist", "Go to Settings": "Ava seadistused", "Set up Secure Messages": "Võta kasutusele krüptitud sõnumid", @@ -844,7 +814,6 @@ "Nice, strong password!": "Vahva, see on korralik salasõna!", "Password is allowed, but unsafe": "Selline salasõna on küll lubatud, kuid üsna ebaturvaline", "Email": "E-posti aadress", - "Username": "Kasutajanimi", "Phone": "Telefon", "Sign in with": "Logi sisse oma kasutajaga", "Use an email address to recover your account": "Kasuta e-posti aadressi ligipääsu taastamiseks oma kontole", @@ -899,9 +868,7 @@ "You cannot place a call with yourself.": "Sa ei saa iseendale helistada.", "You do not have permission to start a conference call in this room": "Sul ei ole piisavalt õigusi, et selles jututoas alustada konverentsikõnet", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Palu oma koduserveri haldajat (%(homeserverDomain)s), et ta seadistaks kõnede kindlamaks toimimiseks TURN serveri.", - "OK": "Sobib", "Permission Required": "Vaja on täiendavaid õigusi", - "Continue": "Jätka", "The file '%(fileName)s' failed to upload.": "Faili '%(fileName)s' üleslaadimine ei õnnestunud.", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Faili '%(fileName)s' suurus ületab serveris seadistatud üleslaadimise piiri", "Upload Failed": "Üleslaadimine ei õnnestunud", @@ -933,7 +900,6 @@ "Verify your other session using one of the options below.": "Verifitseeri oma teine sessioon kasutades üht alljärgnevatest võimalustest.", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) logis sisse uude sessiooni ilma seda verifitseerimata:", "Not Trusted": "Ei ole usaldusväärne", - "Done": "Valmis", "%(displayName)s is typing …": "%(displayName)s kirjutab midagi…", "%(names)s and %(count)s others are typing …": { "other": "%(names)s ja %(count)s muud kasutajat kirjutavad midagi…", @@ -994,7 +960,6 @@ "Names and surnames by themselves are easy to guess": "Nimesid ja perenimesid on lihtne ära arvata", "Common names and surnames are easy to guess": "Üldisi nimesid ja perenimesid on lihtne ära arvata", "Straight rows of keys are easy to guess": "Klaviatuuril järjest paiknevaid klahvikombinatsioone on lihtne ära arvata", - "No": "Ei", "Please contact your homeserver administrator.": "Palun võta ühendust koduserveri haldajaga.", "Font size": "Fontide suurus", "Enable automatic language detection for syntax highlighting": "Kasuta süntaksi esiletõstmisel automaatset keeletuvastust", @@ -1153,7 +1118,6 @@ "in memory": "on mälus", "not found": "pole leitavad", "Manage": "Halda", - "Enable": "Võta kasutusele", "Failed to change power level": "Õiguste muutmine ei õnnestunud", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Sa ei saa seda muudatust hiljem tagasi pöörata, sest annad teisele kasutajale samad õigused, mis sinul on.", "Deactivate user?": "Kas deaktiveerime kasutajakonto?", @@ -1161,7 +1125,6 @@ "Deactivate user": "Deaktiveeri kasutaja", "Failed to deactivate user": "Kasutaja deaktiveerimine ei õnnestunud", "This client does not support end-to-end encryption.": "See klient ei toeta läbivat krüptimist.", - "Security": "Turvalisus", "Using this widget may share data with %(widgetDomain)s.": "Selle vidina kasutamisel võidakse jagada andmeid saitidega %(widgetDomain)s.", "Widgets do not use message encryption.": "Erinevalt sõnumitest vidinad ei kasuta krüptimist.", "Widget added by": "Vidina lisaja", @@ -1262,8 +1225,6 @@ "Size must be a number": "Suurus peab olema number", "Custom font size can only be between %(min)s pt and %(max)s pt": "Kohandatud fondisuurus peab olema vahemikus %(min)s pt ja %(max)s pt", "Use between %(min)s pt and %(max)s pt": "Kasuta suurust vahemikus %(min)s pt ja %(max)s pt", - "Message layout": "Sõnumite paigutus", - "Modern": "Moodne", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Vali sinu seadmes leiduv fondi nimi ning %(brand)s proovib seda kasutada.", "Customise your appearance": "Kohenda välimust", "Appearance Settings only affect this %(brand)s session.": "Välimuse kohendused kehtivad vaid selles %(brand)s'i sessioonis.", @@ -1319,7 +1280,6 @@ "Invited": "Kutsutud", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (õigused %(powerLevelNumber)s)", "No recently visited rooms": "Hiljuti külastatud jututubasid ei leidu", - "People": "Osalejad", "Error creating address": "Viga aadressi loomisel", "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "Aadressi loomisel tekkis viga. See kas on serveri poolt keelatud või tekkis ajutine tõrge.", "You don't have permission to delete the address.": "Sinul pole õigusi selle aadressi kustutamiseks.", @@ -1337,7 +1297,6 @@ "Demote": "Vähenda enda õigusi", "Failed to ban user": "Kasutaja ligipääsu keelamine ei õnnestunud", "Almost there! Is %(displayName)s showing the same shield?": "Peaaegu valmis! Kas %(displayName)s kuvab sama kilpi?", - "Yes": "Jah", "Verify all users in a room to ensure it's secure.": "Tagamaks, et jututuba on turvaline, verifitseeri kõik selle kasutajad.", "You've successfully verified your device!": "Sinu seadme verifitseerimine oli edukas!", "You've successfully verified %(deviceName)s (%(deviceId)s)!": "Sa oled edukalt verifitseerinud seadme %(deviceName)s (%(deviceId)s)!", @@ -1417,7 +1376,6 @@ "Clear all data in this session?": "Kas eemaldame kõik selle sessiooni andmed?", "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Sessiooni kõikide andmete kustutamine on tegevus, mida ei saa tagasi pöörata. Kui sa pole varundanud krüptovõtmeid, siis sa kaotad ligipääsu krüptitud sõnumitele.", "Clear all data": "Eemalda kõik andmed", - "Create": "Loo", "Please enter a name for the room": "Palun sisesta jututoa nimi", "Enable end-to-end encryption": "Võta läbiv krüptimine kasutusele", "Confirm your account deactivation by using Single Sign On to prove your identity.": "Kinnitamaks seda, et soovid oma konto kasutusest eemaldada, kasuta oma isiku tuvastamiseks ühekordset sisselogimist.", @@ -1451,7 +1409,6 @@ "Verify User": "Verifitseeri kasutaja", "For extra security, verify this user by checking a one-time code on both of your devices.": "Lisaturvalisus mõttes verifitseeri see kasutaja võrreldes selleks üheks korraks loodud koodi mõlemas seadmes.", "Your messages are not secure": "Sinu sõnumid ei ole turvatud", - "User menu": "Kasutajamenüü", "Return to login screen": "Mine tagasi sisselogimisvaatele", "Invalid homeserver discovery response": "Vigane vastus koduserveri tuvastamise päringule", "Failed to get autodiscovery configuration from server": "Serveri automaattuvastuse seadistuste laadimine ei õnnestunud", @@ -1529,7 +1486,6 @@ "Unable to load key backup status": "Võtmete varunduse oleku laadimine ei õnnestunud", "Restore from Backup": "Taasta varukoopiast", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "See sessioon ei varunda sinu krüptovõtmeid, aga sul on olemas varundus, millest saad taastada ning millele saad võtmeid lisada.", - "Success": "Õnnestus", "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "Selleks, et sind võiks leida e-posti aadressi või telefoninumbri alusel, nõustu isikutuvastusserveri (%(serverName)s) kasutustingimustega.", "Account management": "Kontohaldus", "Deactivate Account": "Deaktiveeri konto", @@ -1599,7 +1555,6 @@ "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "E-posti teel kutse saatmiseks kasuta isikutuvastusserverit. Võid kasutada vaikimisi serverit (%(defaultIdentityServerName)s) või määrata muu serveri seadistustes.", "Use an identity server to invite by email. Manage in Settings.": "Kasutajatele e-posti teel kutse saatmiseks pruugi isikutuvastusserverit. Täpsemalt saad seda hallata seadistustes.", "Joins room with given address": "Liitu antud aadressiga jututoaga", - "Leave room": "Lahku jututoast", "Stops ignoring a user, showing their messages going forward": "Lõpeta kasutaja eiramine ja näita edaspidi tema sõnumeid", "Unignored user": "Kasutaja, kelle eiramine on lõppenud", "You are no longer ignoring %(userId)s": "Sa edaspidi ei eira kasutajat %(userId)s", @@ -1666,7 +1621,6 @@ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Lisa ( ͡° ͜ʖ ͡°) smaili vormindamata sõnumi algusesse", "Unknown App": "Tundmatu rakendus", "Not encrypted": "Krüptimata", - "About": "Rakenduse teave", "Room settings": "Jututoa seadistused", "Take a picture": "Tee foto", "Unpin": "Eemalda klammerdus", @@ -1722,7 +1676,6 @@ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "SOOVITUS: Kui sa koostad uut veateadet, siis meil on lihtsam vea põhjuseni leida, kui sa lisad juurde ka silumislogid.", "Send feedback": "Saada tagasiside", "Please view existing bugs on Github first. No match? Start a new one.": "Palun esmalt vaata, kas Githubis on selline viga juba kirjeldatud. Sa ei leidnud midagi? Siis saada uus veateade.", - "Report a bug": "Teata veast", "Comment": "Kommentaar", "Feedback sent": "Tagasiside on saadetud", "%(senderName)s ended the call": "%(senderName)s lõpetas kõne", @@ -2091,10 +2044,8 @@ "Use email to optionally be discoverable by existing contacts.": "Kui soovid, et teised kasutajad saaksid sind leida, siis palun lisa oma e-posti aadress.", "Use email or phone to optionally be discoverable by existing contacts.": "Kui soovid, et teised kasutajad saaksid sind leida, siis palun lisa oma e-posti aadress või telefoninumber.", "Add an email to be able to reset your password.": "Selleks et saaksid vajadusel oma salasõna muuta, palun lisa oma e-posti aadress.", - "Forgot password?": "Kas unustasid oma salasõna?", "That phone number doesn't look quite right, please check and try again": "See telefoninumber ei tundu õige olema, palun kontrolli ta üle ja proovi uuesti", "About homeservers": "Teave koduserverite kohta", - "Learn more": "Loe lisateavet", "Use your preferred Matrix homeserver if you have one, or host your own.": "Kui sul on oma koduserveri eelistus olemas, siis kasuta seda. Samuti võid soovi korral oma enda koduserveri püsti panna.", "Other homeserver": "Muu koduserver", "Sign into your homeserver": "Logi sisse oma koduserverisse", @@ -2253,7 +2204,6 @@ "Welcome to ": "Tete tulemast liikmeks", "Random": "Juhuslik", "Support": "Toeta", - "Room name": "Jututoa nimi", "Failed to create initial space rooms": "Algsete jututubade loomine ei õnnestunud", "Skip for now": "Hetkel jäta vahele", "Who are you working with?": "Kellega sa koos töötad?", @@ -2374,7 +2324,6 @@ "End-to-end encryption isn't enabled": "Läbiv krüptimine pole kasutusel", "Some suggestions may be hidden for privacy.": "Mõned soovitused võivad privaatsusseadistuste tõttu olla peidetud.", "Search for rooms or people": "Otsi jututubasid või inimesi", - "Forward message": "Edasta sõnum", "Sent": "Saadetud", "You don't have permission to do this": "Sul puuduvad selleks toiminguks õigused", "Error - Mixed content": "Viga - erinev sisu", @@ -2434,7 +2383,6 @@ "Collapse reply thread": "Ahenda vastuste jutulõnga", "Show preview": "Näita eelvaadet", "View source": "Vaata lähtekoodi", - "Forward": "Edasta", "Settings - %(spaceName)s": "Seadistused - %(spaceName)s", "Toxic Behaviour": "Ebasobilik käitumine", "Report the entire room": "Teata tervest jututoast", @@ -2496,7 +2444,6 @@ "Automatically invite members from this room to the new one": "Kutsu jututoa senised liikmed automaatselt uude jututuppa", "Please note upgrading will make a new version of the room. All current messages will stay in this archived room.": "Palun arvesta, et uuendusega tehakse jututoast uus variant. Kõik senised sõnumid jäävad sellesse jututuppa arhiveeritud olekus.", "Only people invited will be able to find and join this room.": "See jututuba on leitav vaid kutse olemasolul ning liitumine on võimalik vaid kutse alusel.", - "Create a room": "Loo jututuba", "Private room (invite only)": "Privaatne jututuba (kutse alusel)", "Public room": "Avalik jututuba", "Visible to space members": "Nähtav kogukonnakeskuse liikmetele", @@ -2571,8 +2518,6 @@ "one": "ja veel %(count)s" }, "Add existing space": "Lisa olemasolev kogukonnakeskus", - "Image": "Pilt", - "Sticker": "Kleeps", "An unknown error occurred": "Tekkis teadmata viga", "Their device couldn't start the camera or microphone": "Teise osapoole seadmes ei õnnestunud sisse lülitada kaamerat või mikrofoni", "Connection failed": "Ühendus ebaõnnestus", @@ -2619,7 +2564,6 @@ "Displaying time": "Aegade kuvamine", "Message didn't send. Click for info.": "Sõnum jäi saatmata. Lisateabe saamiseks klõpsi.", "[number]": "[number]", - "Message": "Sõnum", "To join a space you'll need an invite.": "Kogukonnakeskusega liitumiseks vajad kutset.", "%(reactors)s reacted with %(content)s": "%(reactors)s kasutajat reageeris järgnevalt: %(content)s", "Would you like to leave the rooms in this space?": "Kas sa soovid lahkuda ka selle kogukonna jututubadest?", @@ -2770,7 +2714,6 @@ "Reply in thread": "Vasta jutulõngas", "Manage rooms in this space": "Halda selle kogukonnakeskuse jututube", "Rooms outside of a space": "Jututoad väljaspool seda kogukonda", - "Copy link": "Kopeeri link", "Mentions only": "Ainult mainimised", "Forget": "Unusta", "Files": "Failid", @@ -3109,7 +3052,6 @@ "%(value)sd": "%(value)s p", "%(timeRemaining)s left": "jäänud %(timeRemaining)s", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Vigadega seotud logid sisaldavad rakenduse teavet, sealhulgas sinu kasutajanime, külastatud jututubade tunnuseid või nimesid, viimatikasutatud liidese funktsionaalsusi ning teiste kasutajate kasutajanimesid. Logides ei ole saadetud sõnumite sisu.", - "Video": "Video", "Next recently visited room or space": "Järgmine viimati külastatud jututuba või kogukond", "Previous recently visited room or space": "Eelmine viimati külastatud jututuba või kogukond", "Event ID: %(eventId)s": "Sündmuse tunnus: %(eventId)s", @@ -3737,7 +3679,6 @@ "Adding…": "Lisan…", "Write something…": "Kirjuta midagi…", "Rejecting invite…": "Hülgan kutset…", - "Loading…": "Laadime…", "Joining room…": "Liitun jututoaga…", "Joining space…": "Liitun kogukonnaga…", "Encrypting your message…": "Krüptin sinu sõnumit…", @@ -3947,6 +3888,35 @@ "This server is using an older version of Matrix. Upgrade to Matrix %(version)s to use %(brand)s without errors.": "See server kasutab Matrixi vanemat versiooni. Selleks, et %(brand)s'i kasutamisel vigu ei tekiks palun uuenda serverit nii, et kasutusel oleks Matrixi %(version)s.", "Your server is unsupported": "Sinu server ei ole toetatud", "Your homeserver is too old and does not support the minimum API version required. Please contact your server owner, or upgrade your server.": "Sinu koduserver on liiga vana ega toeta vähimat nõutavat API versiooni. Lisateavet saad oma serveri haldajalt või kui ise oled haldaja, siis palun uuenda serverit.", + "common": { + "about": "Rakenduse teave", + "analytics": "Analüütika", + "encryption_enabled": "Krüptimine on kasutusel", + "error": "Viga", + "forward_message": "Edasta sõnum", + "image": "Pilt", + "loading": "Laadime…", + "message": "Sõnum", + "message_layout": "Sõnumite paigutus", + "modern": "Moodne", + "mute": "Summuta", + "no_results": "Tulemusi pole", + "offline": "Võrgust väljas", + "password": "Salasõna", + "people": "Osalejad", + "reactions": "Reageerimised", + "report_a_bug": "Teata veast", + "room_name": "Jututoa nimi", + "security": "Turvalisus", + "settings": "Seadistused", + "sticker": "Kleeps", + "success": "Õnnestus", + "suggestions": "Soovitused", + "unmute": "Eemalda summutamine", + "username": "Kasutajanimi", + "verification_cancelled": "Verifitseerimine tühistatud", + "video": "Video" + }, "action": { "reject": "Hülga", "confirm": "Kinnita", @@ -3971,5 +3941,8 @@ "share": "Jaga", "skip": "Jäta vahele", "logout": "Logi välja" + }, + "a11y": { + "user_menu": "Kasutajamenüü" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index bddf0a7dde90..28fafcb51c70 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -1,44 +1,31 @@ { "Create new room": "Sortu gela berria", - "Continue": "Jarraitu", - "Error": "Errorea", "Failed to change password. Is your password correct?": "Pasahitza aldatzean huts egin du. Zuzena da pasahitza?", "Failed to forget room %(errCode)s": "Huts egin du %(errCode)s gela ahaztean", "Favourite": "Gogokoa", - "Mute": "Mututu", "Notifications": "Jakinarazpenak", - "OK": "Ados", "Operation failed": "Eragiketak huts egin du", - "Remove": "Kendu", "Search": "Bilatu", - "Settings": "Ezarpenak", "unknown error code": "errore kode ezezaguna", - "Start chat": "Hasi txata", "powered by Matrix": "Matrix-ekin egina", "Room": "Gela", "Historical": "Historiala", - "Save": "Gorde", "Sign out": "Amaitu saioa", "Home": "Hasiera", "Favourites": "Gogokoak", "Rooms": "Gelak", - "Invites": "Gonbidapenak", "Low priority": "Lehentasun baxua", - "No results": "Emaitzarik ez", "Join Room": "Elkartu gelara", "Register": "Eman izena", "Submit": "Bidali", "Return to login screen": "Itzuli saio hasierarako pantailara", - "Password": "Pasahitza", "Email address": "E-mail helbidea", "The email address linked to your account must be entered.": "Zure kontura gehitutako e-mail helbidea sartu behar da.", "A new password must be entered.": "Pasahitz berri bat sartu behar da.", "Failed to verify email address: make sure you clicked the link in the email": "Huts egin du e-mail helbidearen egiaztaketak, egin klik e-mailean zetorren estekan", "Jump to first unread message.": "Jauzi irakurri gabeko lehen mezura.", "Warning!": "Abisua!", - "Leave room": "Atera gelatik", "Online": "Konektatuta", - "Offline": "Deskonektatuta", "Idle": "Inaktibo", "Unban": "Debekua kendu", "Connectivity to the server has been lost.": "Zerbitzariarekin konexioa galdu da.", @@ -71,7 +58,6 @@ "Import": "Inportatu", "Someone": "Norbait", "Start authentication": "Hasi autentifikazioa", - "Success": "Arrakasta", "For security, this session has been signed out. Please sign in again.": "Segurtasunagatik saio hau amaitu da. Hasi saioa berriro.", "Hangup": "Eseki", "Moderator": "Moderatzailea", @@ -100,7 +86,6 @@ "Current password": "Oraingo pasahitza", "Custom level": "Maila pertsonalizatua", "Deactivate Account": "Itxi kontua", - "Decline": "Ukatu", "Decrypt %(text)s": "Deszifratu %(text)s", "Default": "Lehenetsia", "Displays action": "Ekintza bistaratzen du", @@ -181,7 +166,6 @@ "Unable to remove contact information": "Ezin izan da kontaktuaren informazioa kendu", "Unable to verify email address.": "Ezin izan da e-mail helbidea egiaztatu.", "Unable to enable Notifications": "Ezin izan dira jakinarazpenak gaitu", - "Unmute": "Audioa aktibatu", "Unnamed Room": "Izen gabeko gela", "Uploading %(filename)s": "%(filename)s igotzen", "Uploading %(filename)s and %(count)s others": { @@ -235,7 +219,6 @@ }, "New Password": "Pasahitz berria", "Start automatically after system login": "Hasi automatikoki sisteman saioa hasi eta gero", - "Analytics": "Estatistikak", "Options": "Aukerak", "Passphrases must match": "Pasaesaldiak bat etorri behar dira", "Passphrase must not be empty": "Pasaesaldia ezin da hutsik egon", @@ -275,7 +258,6 @@ }, "Delete widget": "Ezabatu trepeta", "Define the power level of a user": "Zehaztu erabiltzaile baten botere maila", - "Edit": "Editatu", "Enable automatic language detection for syntax highlighting": "Antzeman programazio lengoaia automatikoki eta nabarmendu sintaxia", "Publish this room to the public in %(domain)s's room directory?": "Argitaratu gela hau publikora %(domain)s domeinuko gelen direktorioan?", "AM": "AM", @@ -283,7 +265,6 @@ "Unable to create widget.": "Ezin izan da trepeta sortu.", "You are not in this room.": "Ez zaude gela honetan.", "You do not have permission to do that in this room.": "Ez duzu gela honetan hori egiteko baimenik.", - "Create": "Sortu", "Automatically replace plain text Emoji": "Automatikoki ordezkatu Emoji testu soila", "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s trepeta gehitu du %(senderName)s erabiltzaileak", "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s trepeta kendu du %(senderName)s erabiltzaileak", @@ -309,7 +290,6 @@ "Enable URL previews for this room (only affects you)": "Gaitu URLen aurrebista gela honetan (zuretzat bakarrik aldatuko duzu)", "Enable URL previews by default for participants in this room": "Gaitu URLen aurrebista lehenetsita gela honetako partaideentzat", "Mention": "Aipatu", - "Invite": "Gonbidatu", "%(duration)ss": "%(duration)s s", "%(duration)sm": "%(duration)s m", "%(duration)sh": "%(duration)s h", @@ -322,7 +302,6 @@ "Members only (since the point in time of selecting this option)": "Kideek besterik ez (aukera hau hautatzen den unetik)", "Members only (since they were invited)": "Kideek besterik ez (gonbidatu zaienetik)", "Members only (since they joined)": "Kideek besterik ez (elkartu zirenetik)", - "Leave": "Atera", "Description": "Deskripzioa", "Old cryptography data detected": "Kriptografia datu zaharrak atzeman dira", "Warning": "Abisua", @@ -471,7 +450,6 @@ "All Rooms": "Gela guztiak", "Wednesday": "Asteazkena", "You cannot delete this message. (%(code)s)": "Ezin duzu mezu hau ezabatu. (%(code)s)", - "Quote": "Aipatu", "Send logs": "Bidali egunkariak", "All messages": "Mezu guztiak", "Call invitation": "Dei gonbidapena", @@ -483,7 +461,6 @@ "Search…": "Bilatu…", "Logs sent": "Egunkariak bidalita", "Back": "Atzera", - "Reply": "Erantzun", "Show message in desktop notification": "Erakutsi mezua mahaigaineko jakinarazpenean", "Messages in group chats": "Talde txatetako mezuak", "Yesterday": "Atzo", @@ -492,7 +469,6 @@ "Off": "Ez", "Event Type": "Gertaera mota", "Developer Tools": "Garatzaile-tresnak", - "View Source": "Ikusi iturria", "Event Content": "Gertaeraren edukia", "Thank you!": "Eskerrik asko!", "Missing roomId.": "Gelaren ID-a falta da.", @@ -567,13 +543,11 @@ "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "Zure txaten historiala ez galtzeko, zure gelako gakoak esportatu behar dituzu saioa amaitu aurretik. %(brand)s-en bertsio berriagora bueltatu behar zara hau egiteko", "Incompatible Database": "Datu-base bateraezina", "Continue With Encryption Disabled": "Jarraitu zifratzerik gabe", - "Next": "Hurrengoa", "That matches!": "Bat dator!", "That doesn't match.": "Ez dator bat.", "Go back to set it again.": "Joan atzera eta berriro ezarri.", "Download": "Deskargatu", "Unable to create key backup": "Ezin izan da gakoaren babes-kopia sortu", - "Retry": "Berriro saiatu", "Unable to load backup status": "Ezin izan da babes-kopiaren egoera kargatu", "Unable to restore backup": "Ezin izan da babes-kopia berrezarri", "No backup found!": "Ez da babes-kopiarik aurkitu!", @@ -702,7 +676,6 @@ "Room Topic": "Gelaren mintzagaia", "Go back": "Joan atzera", "This homeserver would like to make sure you are not a robot.": "Hasiera-zerbitzari honek robota ez zarela egiaztatu nahi du.", - "Username": "Erabiltzaile-izena", "Change": "Aldatu", "Email (optional)": "E-mail (aukerakoa)", "Phone (optional)": "Telefonoa (aukerakoa)", @@ -771,8 +744,6 @@ "Hourglass": "Harea-erlojua", "Paperclip": "Klipa", "Pin": "Txintxeta", - "Yes": "Bai", - "No": "Ez", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "E-mail bat bidali dizugu zure helbidea egiaztatzeko. Jarraitu hango argibideak eta gero sakatu beheko botoia.", "Email Address": "E-mail helbidea", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Ziur al zaude? Zure zifratutako mezuak galduko dituzu zure gakoen babes-kopia egoki bat egiten ez bada.", @@ -1076,7 +1047,6 @@ "Send report": "Bidali salaketa", "To continue you need to accept the terms of this service.": "Jarraitzeko erabilera baldintzak onartu behar dituzu.", "Document": "Dokumentua", - "Report Content": "Salatu edukia", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Captcha-ren gako publikoa falta da hasiera-zerbitzariaren konfigurazioan. Eman honen berri hasiera-zerbitzariaren administratzaileari.", "%(creator)s created and configured the room.": "%(creator)s erabiltzaileak gela sortu eta konfiguratu du.", "View": "Ikusi", @@ -1095,7 +1065,6 @@ "Failed to deactivate user": "Huts egin du erabiltzailea desaktibatzeak", "This client does not support end-to-end encryption.": "Bezero honek ez du muturretik muturrerako zifratzea onartzen.", "Messages in this room are not end-to-end encrypted.": "Gela honetako mezuak ez daude muturretik muturrera zifratuta.", - "React": "Erreakzioa", "Frequently Used": "Maiz erabilia", "Smileys & People": "Irribartxoak eta jendea", "Animals & Nature": "Animaliak eta natura", @@ -1163,7 +1132,6 @@ "Trusted": "Konfiantzazkoa", "Not trusted": "Ez konfiantzazkoa", "Messages in this room are end-to-end encrypted.": "Gela honetako mezuak muturretik muturrera zifratuta daude.", - "Security": "Segurtasuna", "You have ignored this user, so their message is hidden. Show anyways.": "Erabiltzaile hau ezikusi duzu, beraz bere mezua ezkutatuta dago. Erakutsi hala ere.", "Any of the following data may be shared:": "Datu hauetako edozein partekatu daiteke:", "Your display name": "Zure pantaila-izena", @@ -1217,7 +1185,6 @@ "other": "%(count)s egiaztatutako saio", "one": "Egiaztatutako saio 1" }, - "Reactions": "Erreakzioak", "Upgrade private room": "Eguneratu gela pribatua", "Upgrade public room": "Eguneratu gela publikoa", "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "Gela eguneratzea ekintza aurreratu bat da eta akatsen, falta diren ezaugarrien, edo segurtasun arazoen erruz gela ezegonkorra denean aholkatzen da.", @@ -1231,7 +1198,6 @@ "Recent Conversations": "Azken elkarrizketak", "Direct Messages": "Mezu zuzenak", "Go": "Joan", - "Suggestions": "Proposamenak", "Failed to find the following users": "Ezin izan dira honako erabiltzaile hauek aurkitu", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Honako erabiltzaile hauek agian ez dira existitzen edo baliogabeak dira, eta ezin dira gonbidatu: %(csvNames)s", "Lock": "Blokeatu", @@ -1255,8 +1221,6 @@ "Something went wrong trying to invite the users.": "Okerren bat egon da erabiltzaileak gonbidatzen saiatzean.", "We couldn't invite those users. Please check the users you want to invite and try again.": "Ezin izan ditugu erabiltzaile horiek gonbidatu. Egiaztatu gonbidatu nahi dituzun erabiltzaileak eta saiatu berriro.", "Recently Direct Messaged": "Berriki mezu zuzena bidalita", - "Start": "Hasi", - "Done": "Egina", "Go Back": "Joan atzera", "This room is end-to-end encrypted": "Gela hau muturretik muturrera zifratuta dago", "Everyone in this room is verified": "Gelako guztiak egiaztatuta daude", @@ -1295,7 +1259,6 @@ "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Zure kontuak zeharkako sinatze identitate bat du biltegi sekretuan, baina saio honek ez du oraindik fidagarritzat.", "in memory": "memorian", "Manage": "Kudeatu", - "Enable": "Gaitu", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Saio honek ez du zure gakoen babes-kopia egiten, baina badago berreskuratu eta gehitu deakezun aurreko babes-kopia bat.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Konektatu saio hau gakoen babes-kopiara saioa amaitu aurretik saio honetan bakarrik dauden gakoak ez galtzeko.", "Connect this session to Key Backup": "Konektatu saio hau gakoen babes-kopiara", @@ -1326,7 +1289,6 @@ "If you can't scan the code above, verify by comparing unique emoji.": "Ezin baduzu goiko kodea eskaneatu, egiaztatu emoji bakanak konparatuz.", "You've successfully verified %(displayName)s!": "Ongi egiaztatu duzu %(displayName)s!", "Got it": "Ulertuta", - "Encryption enabled": "Zifratzea gaituta", "Encryption not enabled": "Zifratzea gaitu gabe", "The encryption used by this room isn't supported.": "Gela honetan erabilitako zifratzea ez da onartzen.", "Clear all data in this session?": "Garbitu saio honetako datu guztiak?", @@ -1336,7 +1298,6 @@ "Session key": "Saioaren gakoa", "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Erabiltzaile hau egiaztatzean bere saioa fidagarritzat joko da, eta zure saioak beretzat fidagarritzat ere.", "Confirm your identity by entering your account password below.": "Baieztatu zure identitatea zure kontuaren pasahitza azpian idatziz.", - "Copy": "Kopiatu", "Cancel entering passphrase?": "Ezeztatu pasa-esaldiaren sarrera?", "Securely cache encrypted messages locally for them to appear in search results.": "Gorde zifratutako mezuak cachean modu seguruan bilaketen emaitzetan agertu daitezen.", "You have verified this user. This user has verified all of their sessions.": "Erabiltzaile hau egiaztatu duzu. Erabiltzaile honek bere saio guztiak egiaztatu ditu.", @@ -1375,7 +1336,6 @@ "This session is encrypting history using the new recovery method.": "Saio honek historiala zifratzen du berreskuratze metodo berria erabiliz.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Nahi gabe egin baduzu hau, Mezu seguruak ezarri ditzakezu saio honetan eta saioaren mezuen historiala berriro zifratuko da berreskuratze metodo berriarekin.", "If disabled, messages from encrypted rooms won't appear in search results.": "Desgaituz gero, zifratutako geletako mezuak ez dira bilaketen emaitzetan agertuko.", - "Disable": "Desgaitu", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s-ek zifratutako mezuak cache lokalean gordetzen ditu modu seguruan bilaketen emaitzen ager daitezen:", "Space used:": "Erabilitako espazioa:", "Indexed messages:": "Indexatutako mezuak:", @@ -1469,7 +1429,6 @@ "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Egiaztatu erabiltzaile baten saio bakoitza hau fidagarri gisa markatzeko, ez dira zeharka sinatutako gailuak fidagarritzat jotzen.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Gela zifratuetan, zuon mezuak babestuta daude, zuk zeuk eta hartzaileak bakarrik duzue hauek deszifratzeko gako bakanak.", "Verify all users in a room to ensure it's secure.": "Egiaztatu gela bateko erabiltzaile guztiak segurua dela baieztatzeko.", - "Verification cancelled": "Egiaztaketa ezeztatuta", "Sends a message as html, without interpreting it as markdown": "Bidali mezua html gisa, markdown balitz aztertu gabe", "Sign in with SSO": "Hasi saioa SSO-rekin", "Cancel replying to a message": "Utzi mezua erantzuteari", @@ -1550,7 +1509,6 @@ "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Zure zerbitzariko administratzaileak muturretik muturrerako zifratzea desgaitu du lehenetsita gela probatuetan eta mezu zuzenetan.", "To link to this room, please add an address.": "Gela hau estekatzeko, gehitu helbide bat.", "No recently visited rooms": "Ez dago azkenaldian bisitatutako gelarik", - "People": "Jendea", "Sort by": "Ordenatu honela", "Activity": "Jarduera", "A-Z": "A-Z", @@ -1590,8 +1548,6 @@ "System font name": "Sistemaren letra-tipoaren izena", "Unknown caller": "Dei-egile ezezaguna", "Hey you. You're the best!": "Aupa txo. Onena zara!", - "Message layout": "Mezuen antolaketa", - "Modern": "Modernoa", "Notification options": "Jakinarazpen ezarpenak", "Forget Room": "Ahaztu gela", "This room is public": "Gela hau publikoa da", @@ -1601,7 +1557,6 @@ "The server has denied your request.": "Zerbitzariak zure eskariari uko egin dio.", "Wrong file type": "Okerreko fitxategi-mota", "Looks good!": "Itxura ona du!", - "User menu": "Erabiltzailea-menua", "Integration manager": "Integrazio-kudeatzailea", "Your %(brand)s doesn't allow you to use an integration manager to do this. Please contact an admin.": "Zure %(brand)s aplikazioak ez dizu hau egiteko integrazio kudeatzaile bat erabiltzen uzten. Kontaktatu administratzaileren batekin.", "Using this widget may share data with %(widgetDomain)s & your integration manager.": "Trepeta hau erabiltzean %(widgetDomain)s domeinuarekin eta zure integrazio kudeatzailearekin datuak partekatu daitezke.", @@ -1613,6 +1568,26 @@ "Could not connect to identity server": "Ezin izan da identitate-zerbitzarira konektatu", "Not a valid identity server (status code %(code)s)": "Ez da identitate zerbitzari baliogarria (egoera-mezua %(code)s)", "Identity server URL must be HTTPS": "Identitate zerbitzariaren URL-a HTTPS motakoa izan behar du", + "common": { + "analytics": "Estatistikak", + "encryption_enabled": "Zifratzea gaituta", + "error": "Errorea", + "message_layout": "Mezuen antolaketa", + "modern": "Modernoa", + "mute": "Mututu", + "no_results": "Emaitzarik ez", + "offline": "Deskonektatuta", + "password": "Pasahitza", + "people": "Jendea", + "reactions": "Erreakzioak", + "security": "Segurtasuna", + "settings": "Ezarpenak", + "success": "Arrakasta", + "suggestions": "Proposamenak", + "unmute": "Audioa aktibatu", + "username": "Erabiltzaile-izena", + "verification_cancelled": "Egiaztaketa ezeztatuta" + }, "action": { "reject": "Baztertu", "confirm": "Berretsi", @@ -1630,5 +1605,8 @@ "share": "Partekatu", "skip": "Saltatu", "logout": "Amaitu saioa" + }, + "a11y": { + "user_menu": "Erabiltzailea-menua" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/fa.json b/src/i18n/strings/fa.json index cfac27e359c1..c63dcc3acf7a 100644 --- a/src/i18n/strings/fa.json +++ b/src/i18n/strings/fa.json @@ -10,10 +10,7 @@ "On": "روشن", "Changelog": "تغییراتِ به‌وجودآمده", "Waiting for response from server": "در انتظار پاسخی از سمت سرور", - "Leave": "خروج", - "OK": "باشه", "Operation failed": "عملیات انجام نشد", - "Mute": "سکوت", "Warning": "هشدار", "This Room": "این گپ", "Resend": "بازفرست", @@ -34,9 +31,7 @@ "Search": "جستجو", "Failed to forget room %(errCode)s": "فراموش کردن اتاق با خطا مواجه شد %(errCode)s", "Wednesday": "چهارشنبه", - "Quote": "نقل قول", "Send": "ارسال", - "Error": "خطا", "Send logs": "ارسال گزارش‌ها", "All messages": "همه‌ی پیام‌ها", "unknown error code": "کد خطای ناشناخته", @@ -54,10 +49,7 @@ "Low Priority": "کم اهمیت", "Off": "خاموش", "Failed to remove tag %(tagName)s from room": "خطا در حذف کلیدواژه‌ی %(tagName)s از گپ", - "Remove": "حذف کن", - "Continue": "ادامه", "Failed to change password. Is your password correct?": "خطا در تغییر گذرواژه. آیا از درستی گذرواژه‌تان اطمینان دارید؟", - "View Source": "دیدن منبع", "This email address is already in use": "این آدرس ایمیل در حال حاضر در حال استفاده است", "This phone number is already in use": "این شماره تلفن در حال استفاده است", "Use Single Sign On to continue": "برای ادامه، از ورود یکپارچه استفاده کنید", @@ -66,7 +58,6 @@ "Add Email Address": "افزودن نشانی رایانامه", "Confirm adding phone number": "تأیید افزودن شماره تلفن", "Add Phone Number": "افزودن شماره تلفن", - "No": "خیر", "Review": "بازبینی", "Later": "بعداً", "Contact your server admin.": "تماس با مدیر کارسازتان.", @@ -183,7 +174,6 @@ "The call could not be established": "امکان برقراری تماس وجود ندارد", "Call Failed": "تماس موفقیت‌آمیز نبود", "Unable to load! Check your network connectivity and try again.": "امکان بارگیری محتوا وجود ندارد! لطفا وضعیت اتصال خود به اینترنت را بررسی کرده و مجددا اقدام نمائید.", - "Analytics": "تجزیه و تحلیل", "Explore rooms": "جستجو در اتاق ها", "Sign In": "ورود", "Create Account": "ایجاد حساب کاربری", @@ -509,7 +499,6 @@ "Ignores a user, hiding their messages from you": "نادیده گرفتن یک کاربر، باعث می‌شود پیام‌های او به شما نمایش داده نشود", "Unbans user with given ID": "رفع تحریم کاربر با شناسه‌ی مذکور", "Bans user with given id": "تحریم کاربر با شناسه‌ی مذکور", - "Leave room": "ترک اتاق", "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "کلید امضای ارائه شده با کلید امضای دریافت شده از جلسه %(deviceId)s کاربر %(userId)s مطابقت دارد. نشست به عنوان تأیید شده علامت گذاری شد.", "Verified key": "کلید تأیید شده", "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "هشدار: تایید کلید ناموفق بود! کلید امضا کننده %(userId)s در نشست %(deviceId)s برابر %(fprint)s است که با کلید %(fingerprint)s تطابق ندارد. این می تواند به معنی رهگیری ارتباطات شما باشد!", @@ -739,7 +728,6 @@ "Remember this": "این را به یاد داشته باش", "Invalid URL": "آدرس URL نامعتبر", "About homeservers": "درباره سرورها", - "Learn more": "بیشتر بدانید", "Other homeserver": "سرور دیگر", "Decline All": "رد کردن همه", "Modal Widget": "ابزارک کمکی", @@ -767,7 +755,6 @@ "Share User": "به اشتراک‌گذاری کاربر", "Share Room": "به اشتراک‌گذاری اتاق", "Send Logs": "ارسال گزارش ها", - "Suggestions": "پیشنهادات", "Recent Conversations": "گفتگوهای اخیر", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "این کاربران ممکن است وجود نداشته یا نامعتبر باشند و نمی‌توان آنها را دعوت کرد: %(csvNames)s", "Failed to find the following users": "این کاربران یافت نشدند", @@ -789,7 +776,6 @@ "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "این کاربر را تأیید کنید تا به عنوان کاربر مورد اعتماد علامت‌گذاری شود. اعتماد به کاربران آرامش و اطمینان بیشتری به شما در استفاده از رمزنگاری سرتاسر می‌دهد.", "Terms of Service": "شرایط استفاده از خدمات", "Please view existing bugs on Github first. No match? Start a new one.": "لطفاً ابتدا اشکالات موجود را در گیتهاب برنامه را مشاهده کنید. با اشکال شما مطابقتی وجود ندارد؟ مورد جدیدی را ثبت کنید.", - "Report a bug": "گزارش اشکال", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "نکته‌ای برای کاربران حرفه‌ای: اگر به مشکل نرم‌افزاری در برنامه برخورد کردید، لطفاً لاگ‌های مشکل را ارسال کنید تا به ما در ردیابی و رفع آن کمک کند.", "Comment": "نظر", "Feedback sent": "بازخورد ارسال شد", @@ -874,7 +860,6 @@ "Feedback": "بازخورد", "To leave the beta, visit your settings.": "برای خروج از بتا به بخش تنظیمات مراجعه کنید.", "Your platform and username will be noted to help us use your feedback as much as we can.": "سیستم‌عامل و نام کاربری شما ثبت خواهد شد تا به ما کمک کند تا جایی که می توانیم از نظرات شما استفاده کنیم.", - "Done": "انجام شد", "Close dialog": "بستن گفتگو", "Invite anyway": "به هر حال دعوت کن", "Invite anyway and never warn me again": "به هر حال دعوت کن و دیگر هرگز به من هشدار نده", @@ -1079,15 +1064,9 @@ "Error decrypting image": "خطا در رمزگشایی تصویر", "Invalid file%(extra)s": "پرونده نامعتبر%(extra)s", "Message Actions": "اقدامات پیام", - "Reply": "پاسخ", - "Retry": "تلاش مجدد", - "Edit": "ویرایش", - "React": "واکنش", "The encryption used by this room isn't supported.": "رمزگذاری استفاده شده توسط این اتاق پشتیبانی نمی شود.", "Encryption not enabled": "رمزگذاری فعال نیست", "Ignored attempt to disable encryption": "تلاش برای غیرفعال کردن رمزگذاری نادیده گرفته شد", - "Encryption enabled": "رمزگذاری فعال است", - "Verification cancelled": "تأیید هویت لغو شد", "You cancelled verification.": "شما تأیید هویت را لغو کردید.", "%(displayName)s cancelled verification.": "%(displayName)s تایید هویت را لغو کرد.", "Verification timed out.": "مهلت تأیید تمام شد.", @@ -1104,7 +1083,6 @@ "If you can't scan the code above, verify by comparing unique emoji.": "اگر نمی توانید کد بالا را اسکن کنید ، با مقایسه شکلک منحصر به فرد، او را تأیید کنید.", "Ask %(displayName)s to scan your code:": "از %(displayName)s بخواهید که کد شما را اسکن کند:", "Verify by scanning": "با اسکن تأیید کنید", - "Security": "امنیت", "Edit devices": "ویرایش دستگاه‌ها", "This client does not support end-to-end encryption.": "این کلاینت از رمزگذاری سرتاسر پشتیبانی نمی کند.", "Failed to deactivate user": "غیرفعال کردن کاربر انجام نشد", @@ -1113,7 +1091,6 @@ "Deactivate user?": "کاربر غیرفعال شود؟", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "شما نمی توانید این تغییر را باطل کنید زیرا در حال ارتقا سطح قدرت یک کاربر به سطح قدرت خود هستید.", "Failed to change power level": "تغییر سطح قدرت انجام نشد", - "Unmute": "صدادار", "Failed to mute user": "کاربر بی صدا نشد", "Remove recent messages": "حذف پیام‌های اخیر", "Remove %(count)s messages": { @@ -1129,7 +1106,6 @@ "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.": "شما نمی توانید این تغییر را لغو کنید زیرا در حال تنزل خود هستید، اگر آخرین کاربر ممتاز در فضای کاری باشید، بازپس گیری امتیازات غیرممکن است.", "Demote yourself?": "خودتان را تنزل می‌دهید؟", "Share Link to User": "اشتراک لینک برای کاربر", - "Invite": "دعوت", "Mention": "اشاره", "Jump to read receipt": "پرش به آخرین پیام خوانده شده", "Hide sessions": "مخفی کردن نشست‌ها", @@ -1146,7 +1122,6 @@ "Trusted": "قابل اعتماد", "Room settings": "تنظیمات اتاق", "Share room": "به اشتراک گذاری اتاق", - "About": "درباره", "Not encrypted": "رمزگذاری نشده", "Add widgets, bridges & bots": "افزودن ابزارک‌ها، پل‌ها و ربات‌ها", "Edit widgets, bridges & bots": "ویرایش ابزارک ها ، پل ها و ربات ها", @@ -1229,10 +1204,7 @@ "You do not have permissions to create new rooms in this space": "شما اجازه ایجاد اتاق جدید در این فضای کاری را ندارید", "Add room": "افزودن اتاق", "Rooms": "اتاق‌ها", - "Start chat": "شروع چت", - "People": "افراد", "Favourites": "موردعلاقه‌ها", - "Invites": "دعوت‌ها", "Open dial pad": "باز کردن صفحه شماره‌گیری", "Video call": "تماس تصویری", "Voice call": "تماس صوتی", @@ -1248,7 +1220,6 @@ "Room %(name)s": "اتاق %(name)s", "Replying": "پاسخ دادن", "Unknown": "ناشناخته", - "Offline": "آفلاین", "Idle": "بلااستفاده", "Online": "آنلاین", "Unknown for %(duration)s": "ناشناخته به مدت %(duration)s", @@ -1320,7 +1291,6 @@ "expand": "گشودن", "collapse": "بستن", "Please create a new issue on GitHub so that we can investigate this bug.": "لطفا در GitHub یک مسئله جدید ایجاد کنید تا بتوانیم این اشکال را بررسی کنیم.", - "No results": "بدون نتیجه", "Enter passphrase": "عبارت امنیتی را وارد کنید", "Confirm passphrase": "عبارت امنیتی را تائید کنید", "This version of %(brand)s does not support searching encrypted messages": "این نسخه از %(brand)s از جستجوی پیام های رمزگذاری شده پشتیبانی نمی کند", @@ -1396,7 +1366,6 @@ "Message deleted by %(name)s": "پیام توسط %(name)s حذف شد", "Message deleted": "پیغام پاک شد", "reacted with %(shortName)s": " واکنش نشان داد با %(shortName)s", - "Reactions": "واکنش ها", "Show all": "نمایش همه", "Add reaction": "افزودن واکنش", "Error processing voice message": "خطا در پردازش پیام صوتی", @@ -1416,7 +1385,6 @@ "sends space invaders": "ارسال مهاجمان فضایی", "Sends the given message with a space themed effect": "پیام داده شده را به صورت مضمون فضای کاری ارسال می کند", "If disabled, messages from encrypted rooms won't appear in search results.": "اگر غیر فعال شود، پیام‌های اتاق‌های رمزشده در نتایج جستجوها نمایش داده نمی‌شوند.", - "Disable": "غیرفعال‌کردن", "Currently indexing: %(currentRoom)s": "هم‌اکنون ایندکس می‌شوند: %(currentRoom)s", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s پیام‌های رمزشده را به صورت امن و محلی ذخیره کرده تا در نتایج جستجو نمایش دهد:", "Short keyboard patterns are easy to guess": "الگوهای کوتاه صفحه کلید به راحتی قابل حدس هستند", @@ -1537,7 +1505,6 @@ "Unable to load key backup status": "امکان بارگیری و نمایش وضعیت کلید پشتیبان وجود ندارد", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "آیا اطمینان دارید؟ در صورتی که از کلیدهای شما به درستی پشتیبان‌گیری نشده باشد، تمام پیام‌های رمزشده‌ی خود را از دست خواهید داد.", "Delete Backup": "پاک‌کردن نسخه پشتیبان (Backup)", - "Save": "ذخیره", "Profile picture": "تصویر پروفایل", "Display Name": "نام نمایشی", "Profile": "پروفایل", @@ -1756,7 +1723,6 @@ "Unable to find a supported verification method.": "روش پشتیبانی‌شده‌ای برای تائید پیدا نشد.", "Verify this user by confirming the following number appears on their screen.": "در صورتی که عدد بعدی بر روی صفحه‌ی کاربر نمایش داده می‌شود، او را تائید نمائید.", "Verify this user by confirming the following emoji appear on their screen.": "در صورتی که همه‌ی شکلک‌های موجود بر روی صفحه‌ی دستگاه کاربر ظاهر شده‌اند، او را تائید نمائید.", - "Start": "شروع", "Compare a unique set of emoji if you don't have a camera on either device": "اگر بر روی دستگاه خود دوربین ندارید، از تطابق شکلک‌های منحصر به فرد استفاده نمائید", "Compare unique emoji": "شکلک‌های منحصر به فرد را مقایسه کنید", "Scan this unique code": "این QR-code منحصر به فرد را اسکن کنید", @@ -1767,7 +1733,6 @@ "The other party cancelled the verification.": "طرف مقابل فرآیند تائید را لغو کرد.", "Play": "اجرا کردن", "Pause": "متوقف‌کردن", - "Decline": "رد کردن", "Unknown caller": "تماس‌گیرنده‌ی ناشناس", "Dial pad": "صفحه شماره‌گیری", "There was an error looking up the phone number": "هنگام یافتن شماره تلفن خطایی رخ داد", @@ -1955,13 +1920,11 @@ "Original event source": "منبع اصلی رخداد", "Decrypted event source": "رمزگشایی منبع رخداد", "Could not load user profile": "امکان نمایش پروفایل کاربر میسر نیست", - "User menu": "منوی کاربر", "Switch theme": "تعویض پوسته", "Switch to dark mode": "انتخاب حالت تاریک", "Switch to light mode": "انتخاب حالت روشن", "All settings": "همه تنظیمات", "Skip for now": "فعلا بیخیال", - "Room name": "نام اتاق", "Support": "پشتیبانی", "Random": "تصادفی", "Welcome to ": "به خوش‌آمدید", @@ -2019,10 +1982,8 @@ "Space options": "گزینه‌های انتخابی محیط", "Manage & explore rooms": "مدیریت و جستجوی اتاق‌ها", "Add existing room": "اضافه‌کردن اتاق موجود", - "Create": "ایجاد‌کردن", "Create new room": "ایجاد اتاق جدید", "Leave space": "ترک محیط", - "Settings": "تنظیمات", "Invite with email or username": "دعوت با ایمیل یا نام‌کاربری", "Invite people": "دعوت کاربران", "Share invite link": "به اشتراک‌گذاری لینک دعوت", @@ -2044,9 +2005,7 @@ "Register": "ایجاد حساب کاربری", "Sign in": "ورود به حساب کاربری", "Sign in with": "نحوه ورود", - "Forgot password?": "فراموشی گذرواژه", "Phone": "شماره تلفن", - "Username": "نام کاربری", "That phone number doesn't look quite right, please check and try again": "به نظر شماره تلفن صحیح نمی‌باشد، لطفا بررسی کرده و مجددا تلاش فرمائید", "Enter phone number": "شماره تلفن را وارد کنید", "Enter email address": "آدرس ایمیل را وارد کنید", @@ -2057,7 +2016,6 @@ "Something went wrong in confirming your identity. Cancel and try again.": "تائید هویت شما با مشکل مواجه شد. لطفا فرآیند را لغو کرده و مجددا اقدام نمائید.", "Submit": "ارسال", "Code": "کد", - "Password": "گذرواژه", "This room is public": "این اتاق عمومی است", "Avatar": "نمایه", "Join the beta": "اضافه‌شدن به نسخه‌ی بتا", @@ -2074,7 +2032,6 @@ "Start audio stream": "آغاز جریان صدا", "Failed to start livestream": "آغاز livestream با شکست همراه بود", "Unable to start audio streaming.": "شروع پخش جریان صدا امکان‌پذیر نیست.", - "Report Content": "گزارش محتوا", "Reject invitation": "ردکردن دعوت", "Hold": "نگه‌داشتن", "Resume": "ادامه", @@ -2175,7 +2132,6 @@ "Ignored/Blocked": "نادیده گرفته‌شده/بلاک‌شده", "Labs": "قابلیت‌های بتا", "Clear cache and reload": "پاک‌کردن حافظه‌ی کش و راه‌اندازی مجدد", - "Copy": "رونوشت", "Your access token gives full access to your account. Do not share it with anyone.": "توکن دسترسی شما، دسترسی کامل به حساب کاربری شما را میسر می‌سازد. لطفا آن را در اختیار فرد دیگری قرار ندهید.", "Access Token": "توکن دسترسی", "Versions": "نسخه‌ها", @@ -2218,11 +2174,9 @@ "Your homeserver has exceeded its user limit.": "سرور شما از حد مجاز کاربر خود فراتر رفته است.", "Use app": "از برنامه استفاده کنید", "Use app for a better experience": "برای تجربه بهتر از برنامه استفاده کنید", - "Enable": "فعال کن", "Enable desktop notifications": "فعال‌کردن اعلان‌های دسکتاپ", "Don't miss a reply": "پاسخی را از دست ندهید", "Review to ensure your account is safe": "برای کسب اطمینان از امن‌بودن حساب کاربری خود، لطفا بررسی فرمائید", - "Yes": "بله", "Unknown App": "برنامه ناشناخته", "Share your public space": "محیط عمومی خود را به اشتراک بگذارید", "Invite to %(spaceName)s": "دعوت به %(spaceName)s", @@ -2237,7 +2191,6 @@ "Language and region": "زبان و جغرافیا", "Phone numbers": "شماره تلفن", "Email addresses": "آدرس ایمیل", - "Success": "موفقیت", "Customise your appearance": "ظاهر پیام‌رسان خود را سفارشی‌سازی کنید", "Show advanced": "نمایش بخش پیشرفته", "Hide advanced": "پنهان‌کردن بخش پیشرفته", @@ -2284,7 +2237,6 @@ "You signed in to a new session without verifying it:": "شما وارد یک نشست جدید شده‌اید بدون اینکه آن را تائید کنید:", "Please review and accept all of the homeserver's policies": "لطفاً کلیه خط مشی‌های سرور را مرور و قبول کنید", "Please review and accept the policies of this homeserver:": "لطفاً خط مشی‌های این سرور را مرور و قبول کنید:", - "Next": "بعدی", "Document": "سند", "Summary": "خلاصه", "Service": "سرویس", @@ -2447,7 +2399,6 @@ "Scroll up in the timeline": "بالا رفتن در تایم لاین", "Scroll down in the timeline": "پایین آمدن در تایم لاین", "Toggle webcam on/off": "روشن/خاموش کردن دوربین", - "Sticker": "استیکر", "Hide stickers": "پنهان سازی استیکرها", "Send a sticker": "ارسال یک استیکر", "%(senderDisplayName)s sent a sticker.": "%(senderDisplayName)s یک برچسب فرستاد.", @@ -2507,7 +2458,6 @@ "Notifications silenced": "هشدار بیصدا", "Silence call": "تماس بیصدا", "Sound on": "صدا", - "Video": "ویدئو", "Video call started": "تماس تصویری شروع شد", "Unknown room": "اتاق ناشناس", "Help improve %(analyticsOwner)s": "بهتر کردن راهنمای کاربری %(analyticsOwner)s", @@ -2605,6 +2555,29 @@ "Try using %(server)s": "سعی کنید از %(server)s استفاده کنید", "Keyboard shortcuts": "میانبرهای صفحه کلید", "Poll type": "نوع نظرسنجی", + "common": { + "about": "درباره", + "analytics": "تجزیه و تحلیل", + "encryption_enabled": "رمزگذاری فعال است", + "error": "خطا", + "mute": "سکوت", + "no_results": "بدون نتیجه", + "offline": "آفلاین", + "password": "گذرواژه", + "people": "افراد", + "reactions": "واکنش ها", + "report_a_bug": "گزارش اشکال", + "room_name": "نام اتاق", + "security": "امنیت", + "settings": "تنظیمات", + "sticker": "استیکر", + "success": "موفقیت", + "suggestions": "پیشنهادات", + "unmute": "صدادار", + "username": "نام کاربری", + "verification_cancelled": "تأیید هویت لغو شد", + "video": "ویدئو" + }, "action": { "reject": "پس زدن", "confirm": "تأیید", @@ -2625,5 +2598,8 @@ "share": "اشتراک‌گذاری", "skip": "بیخیال", "logout": "خروج" + }, + "a11y": { + "user_menu": "منوی کاربر" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 35f005b80596..bbb667efc979 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -1,18 +1,12 @@ { "Create new room": "Luo uusi huone", - "Error": "Virhe", "Failed to forget room %(errCode)s": "Huoneen unohtaminen epäonnistui %(errCode)s", "Favourite": "Suosikki", - "Mute": "Mykistä", "Notifications": "Ilmoitukset", "Operation failed": "Toiminto epäonnistui", - "Remove": "Poista", "Search": "Haku", - "Settings": "Asetukset", - "Start chat": "Aloita keskustelu", "unknown error code": "tuntematon virhekoodi", "Failed to change password. Is your password correct?": "Salasanan vaihtaminen epäonnistui. Onko salasanasi oikein?", - "Continue": "Jatka", "powered by Matrix": "moottorina Matrix", "Add": "Lisää", "Admin": "Ylläpitäjä", @@ -52,10 +46,8 @@ "Current password": "Nykyinen salasana", "Custom level": "Mukautettu taso", "Deactivate Account": "Poista tili pysyvästi", - "Decline": "Hylkää", "Default": "Oletus", "Download %(text)s": "Lataa %(text)s", - "Edit": "Muokkaa", "Email": "Sähköposti", "Email address": "Sähköpostiosoite", "Emoji": "Emoji", @@ -83,13 +75,11 @@ "Incorrect verification code": "Virheellinen varmennuskoodi", "Invalid Email Address": "Virheellinen sähköpostiosoite", "Invited": "Kutsuttu", - "Invites": "Kutsut", "Invites user with given id to current room": "Kutsuu tunnuksen mukaisen käyttäjän huoneeseen", "Sign in with": "Tunnistus", "Join Room": "Liity huoneeseen", "Jump to first unread message.": "Hyppää ensimmäiseen lukemattomaan viestiin.", "Labs": "Laboratorio", - "Leave room": "Poistu huoneesta", "Low priority": "Matala prioriteetti", "Moderator": "Valvoja", "Name": "Nimi", @@ -101,9 +91,6 @@ "PM": "ip.", "No display name": "Ei näyttönimeä", "No more results": "Ei enempää tuloksia", - "No results": "Ei tuloksia", - "OK": "OK", - "Password": "Salasana", "Passwords can't be empty": "Salasanat eivät voi olla tyhjiä", "Permissions": "Oikeudet", "Phone": "Puhelin", @@ -114,7 +101,6 @@ "Return to login screen": "Palaa kirjautumissivulle", "%(brand)s version:": "%(brand)s-versio:", "Rooms": "Huoneet", - "Save": "Tallenna", "Search failed": "Haku epäonnistui", "Server error": "Palvelinvirhe", "Session ID": "Istuntotunniste", @@ -127,7 +113,6 @@ "This room has no local addresses": "Tällä huoneella ei ole paikallista osoitetta", "This room is not accessible by remote Matrix servers": "Tähän huoneeseen ei pääse ulkopuolisilta Matrix-palvelimilta", "Unban": "Poista porttikielto", - "Unmute": "Poista mykistys", "Unnamed Room": "Nimeämätön huone", "Uploading %(filename)s": "Lähetetään %(filename)s", "Uploading %(filename)s and %(count)s others": { @@ -178,7 +163,6 @@ }, "New Password": "Uusi salasana", "Start automatically after system login": "Käynnistä automaattisesti käyttöjärjestelmään kirjautumisen jälkeen", - "Analytics": "Analytiikka", "Options": "Valinnat", "Passphrases must match": "Salasanojen on täsmättävä", "Passphrase must not be empty": "Salasana ei saa olla tyhjä", @@ -209,7 +193,6 @@ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Näytä aikaleimat 12 tunnin muodossa (esim. 2:30pm)", "Signed Out": "Uloskirjautunut", "Start authentication": "Aloita tunnistus", - "Success": "Onnistui", "Unable to add email address": "Sähköpostiosoitteen lisääminen epäonnistui", "Unable to remove contact information": "Yhteystietojen poistaminen epäonnistui", "Unable to verify email address.": "Sähköpostin vahvistaminen epäonnistui.", @@ -256,7 +239,6 @@ "Authentication check failed: incorrect password?": "Autentikointi epäonnistui: virheellinen salasana?", "Do you want to set an email address?": "Haluatko asettaa sähköpostiosoitteen?", "This will allow you to reset your password and receive notifications.": "Tämä sallii sinun uudelleenalustaa salasanasi ja vastaanottaa ilmoituksia.", - "Create": "Luo", "Delete widget": "Poista sovelma", "Unable to create widget.": "Sovelman luominen epäonnistui.", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Et voi kumota tätä muutosta, koska olet ylentämässä käyttäjää samalle oikeustasolle kuin itsesi.", @@ -281,7 +263,6 @@ "Ignore": "Sivuuta", "Jump to read receipt": "Hyppää lukukuittaukseen", "Mention": "Mainitse", - "Invite": "Kutsu", "Admin Tools": "Ylläpitotyökalut", "Unnamed room": "Nimetön huone", "Upload avatar": "Lähetä profiilikuva", @@ -303,7 +284,6 @@ "And %(count)s more...": { "other": "Ja %(count)s muuta..." }, - "Leave": "Poistu", "Description": "Kuvaus", "Please note you are logging into the %(hs)s server, not matrix.org.": "Huomaa että olet kirjautumassa palvelimelle %(hs)s, etkä palvelimelle matrix.org.", "Deops user with given id": "Poistaa tunnuksen mukaiselta käyttäjältä ylläpito-oikeudet", @@ -333,7 +313,6 @@ "Unknown for %(duration)s": "Tuntematon tila viimeiset %(duration)s", "Online": "Paikalla", "Idle": "Toimeton", - "Offline": "Poissa verkosta", "Unknown": "Tuntematon", "URL previews are enabled by default for participants in this room.": "URL-esikatselut on päällä oletusarvoisesti tämän huoneen jäsenillä.", "URL previews are disabled by default for participants in this room.": "URL-esikatselut ovat oletuksena pois päältä tämän huoneen jäsenillä.", @@ -443,7 +422,6 @@ "No update available.": "Ei päivityksiä saatavilla.", "Resend": "Lähetä uudelleen", "Collecting app version information": "Haetaan sovelluksen versiotietoja", - "View Source": "Näytä lähdekoodi", "Tuesday": "Tiistai", "Search…": "Haku…", "Developer Tools": "Kehittäjätyökalut", @@ -452,7 +430,6 @@ "Toolbox": "Työkalut", "Collecting logs": "Haetaan lokeja", "All Rooms": "Kaikki huoneet", - "Quote": "Lainaa", "Send logs": "Lähetä lokit", "All messages": "Kaikki viestit", "Call invitation": "Puhelukutsu", @@ -464,7 +441,6 @@ "You cannot delete this message. (%(code)s)": "Et voi poistaa tätä viestiä. (%(code)s)", "Thursday": "Torstai", "Back": "Takaisin", - "Reply": "Vastaa", "Show message in desktop notification": "Näytä viestit ilmoituskeskuksessa", "Messages in group chats": "Viestit ryhmissä", "Yesterday": "Eilen", @@ -607,7 +583,6 @@ "Send typing notifications": "Lähetä kirjoitusilmoituksia", "Room list": "Huoneluettelo", "Go to Settings": "Siirry asetuksiin", - "Retry": "Yritä uudelleen", "Success!": "Onnistui!", "Download": "Lataa", "Create account": "Luo tili", @@ -618,7 +593,6 @@ "Email (optional)": "Sähköposti (valinnainen)", "Phone (optional)": "Puhelin (valinnainen)", "This homeserver would like to make sure you are not a robot.": "Tämä kotipalvelin haluaa varmistaa, ettet ole robotti.", - "Next": "Seuraava", "No backup found!": "Varmuuskopiota ei löytynyt!", "Unable to restore backup": "Varmuuskopion palauttaminen ei onnistu", "Link to selected message": "Linkitä valittuun viestiin", @@ -648,8 +622,6 @@ "Restore from Backup": "Palauta varmuuskopiosta", "Delete Backup": "Poista varmuuskopio", "Email Address": "Sähköpostiosoite", - "Yes": "Kyllä", - "No": "Ei", "Elephant": "Norsu", "Chat with %(brand)s Bot": "Keskustele %(brand)s-botin kanssa", "You'll lose access to your encrypted messages": "Menetät pääsyn salattuihin viesteihisi", @@ -796,7 +768,6 @@ "Please review and accept all of the homeserver's policies": "Tarkistathan tämän kotipalvelimen käytännöt", "Please review and accept the policies of this homeserver:": "Tarkistathan tämän kotipalvelimen käytännöt:", "Code": "Koodi", - "Username": "Käyttäjätunnus", "Change": "Muuta", "Join millions for free on the largest public server": "Liity ilmaiseksi miljoonien joukkoon suurimmalla julkisella palvelimella", "Other": "Muut", @@ -1030,7 +1001,6 @@ "Report Content to Your Homeserver Administrator": "Ilmoita sisällöstä kotipalvelimesi ylläpitäjälle", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Tämän viestin ilmoittaminen lähettää sen yksilöllisen tapahtumatunnuksen (event ID) kotipalvelimesi ylläpitäjälle. Jos tämän huoneen viestit on salattu, kotipalvelimesi ylläpitäjä ei voi lukea viestin tekstiä tai nähdä tiedostoja tai kuvia.", "Send report": "Lähetä ilmoitus", - "Report Content": "Ilmoita sisällöstä", "View": "Näytä", "Explore rooms": "Selaa huoneita", "Unable to revoke sharing for phone number": "Puhelinnumeron jakamista ei voi kumota", @@ -1065,7 +1035,6 @@ "contact the administrators of identity server ": "ottaa yhteyttä identiteettipalvelimen ylläpitäjiin", "wait and try again later": "odottaa ja yrittää uudelleen myöhemmin", "Room %(name)s": "Huone %(name)s", - "React": "Reagoi", "Frequently Used": "Usein käytetyt", "Smileys & People": "Hymiöt ja ihmiset", "Animals & Nature": "Eläimet ja luonto", @@ -1108,7 +1077,6 @@ "Unsubscribe": "Lopeta tilaus", "View rules": "Näytä säännöt", "Subscribe": "Tilaa", - "Security": "Tietoturva", "Any of the following data may be shared:": "Seuraavat tiedot saatetaan jakaa:", "Your display name": "Näyttönimesi", "Your user ID": "Käyttäjätunnuksesi", @@ -1218,7 +1186,6 @@ "other": "%(count)s varmennettua istuntoa", "one": "1 varmennettu istunto" }, - "Reactions": "Reaktiot", "Language Dropdown": "Kielipudotusvalikko", "Upgrade private room": "Päivitä yksityinen huone", "Upgrade public room": "Päivitä julkinen huone", @@ -1243,7 +1210,6 @@ "%(num)s days ago": "%(num)s päivää sitten", "Show info about bridges in room settings": "Näytä tietoa silloista huoneen asetuksissa", "Show typing notifications": "Näytä kirjoitusilmoitukset", - "Start": "Aloita", "To be secure, do this in person or use a trusted way to communicate.": "Turvallisuuden varmistamiseksi tee tämä kasvokkain tai käytä luotettua viestintätapaa.", "Later": "Myöhemmin", "Show less": "Näytä vähemmän", @@ -1255,11 +1221,9 @@ "Unrecognised command: %(commandText)s": "Tunnistamaton komento: %(commandText)s", "Send as message": "Lähetä viestinä", "Waiting for %(displayName)s to accept…": "Odotetaan, että %(displayName)s hyväksyy…", - "Done": "Valmis", "Got it": "Asia selvä", "Failed to find the following users": "Seuraavia käyttäjiä ei löytynyt", "Go Back": "Takaisin", - "Copy": "Kopioi", "Upgrade your encryption": "Päivitä salauksesi", "Enable desktop notifications for this session": "Ota käyttöön työpöytäilmoitukset tälle istunnolle", "Enable audible notifications for this session": "Ota käyttöön ääni-ilmoitukset tälle istunnolle", @@ -1279,14 +1243,12 @@ "Accepting…": "Hyväksytään…", "One of the following may be compromised:": "Jokin seuraavista saattaa olla vaarantunut:", "Your homeserver": "Kotipalvelimesi", - "Encryption enabled": "Salaus käytössä", "Encryption not enabled": "Salaus pois käytöstä", "The encryption used by this room isn't supported.": "Tämän huoneen käyttämää salausta ei tueta.", "You declined": "Kieltäydyit", "%(name)s declined": "%(name)s kieltäytyi", "Something went wrong trying to invite the users.": "Käyttäjien kutsumisessa meni jotain pieleen.", "We couldn't invite those users. Please check the users you want to invite and try again.": "Emme voineet kutsua kyseisiä käyttäjiä. Tarkista käyttäjät, jotka haluat kutsua ja yritä uudelleen.", - "Suggestions": "Ehdotukset", "Confirm your identity by entering your account password below.": "Vahvista henkilöllisyytesi syöttämällä tilisi salasana alle.", "Enter your account password to confirm the upgrade:": "Syötä tilisi salasana vahvistaaksesi päivityksen:", "Restore": "Palauta", @@ -1344,7 +1306,6 @@ "Review": "Katselmoi", "This bridge was provisioned by .": "Tämän sillan tarjoaa käyttäjä .", "This bridge is managed by .": "Tätä siltaa hallinnoi käyttäjä .", - "Enable": "Ota käyttöön", "Theme added!": "Teema lisätty!", "Add theme": "Lisää teema", "Scroll to most recent messages": "Vieritä tuoreimpiin viesteihin", @@ -1361,7 +1322,6 @@ "Matrix": "Matrix", "Add a new server": "Lisää uusi palvelin", "Server name": "Palvelimen nimi", - "Disable": "Poista käytöstä", "Calls": "Puhelut", "Room List": "Huoneluettelo", "Autocomplete": "Automaattinen täydennys", @@ -1482,7 +1442,6 @@ "Verification timed out.": "Varmennuksessa kesti liikaa.", "%(displayName)s cancelled verification.": "%(displayName)s peruutti varmennuksen.", "You cancelled verification.": "Peruutit varmennuksen.", - "Verification cancelled": "Varmennus peruutettu", "Enter the name of a new server you want to explore.": "Syötä sen uuden palvelimen nimi, jota haluat selata.", "Destroy cross-signing keys?": "Tuhoa ristiinvarmennuksen avaimet?", "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "Ristiinvarmennuksen avainten tuhoamista ei voi kumota. Jokainen, jonka olet varmentanut, tulee näkemään turvallisuushälytyksiä. Et todennäköisesti halua tehdä tätä, ellet ole hukannut kaikkia laitteitasi, joista pystyit ristiinvarmentamaan.", @@ -1520,7 +1479,6 @@ "Light": "Vaalea", "Dark": "Tumma", "No recently visited rooms": "Ei hiljattain vierailtuja huoneita", - "People": "Ihmiset", "Sort by": "Lajittelutapa", "Switch to light mode": "Vaihda vaaleaan teemaan", "Switch to dark mode": "Vaihda tummaan teemaan", @@ -1542,12 +1500,9 @@ "Use custom size": "Käytä mukautettua kokoa", "Use a system font": "Käytä järjestelmän fonttia", "System font name": "Järjestelmän fontin nimi", - "Message layout": "Viestien asettelu", - "Modern": "Moderni", "Notification options": "Ilmoitusasetukset", "Room options": "Huoneen asetukset", "This room is public": "Tämä huone on julkinen", - "User menu": "Käyttäjän valikko", "Video conference started by %(senderName)s": "%(senderName)s aloitti ryhmävideopuhelun", "Video conference updated by %(senderName)s": "%(senderName)s päivitti ryhmävideopuhelun", "Video conference ended by %(senderName)s": "%(senderName)s päätti ryhmävideopuhelun", @@ -1627,7 +1582,6 @@ "Feedback sent": "Palaute lähetetty", "Download logs": "Lataa lokit", "Preparing to download logs": "Valmistellaan lokien lataamista", - "About": "Tietoa", "Unpin": "Poista kiinnitys", "Customise your appearance": "Mukauta ulkoasua", "Appearance Settings only affect this %(brand)s session.": "Ulkoasuasetukset vaikuttavat vain tähän %(brand)s-istuntoon.", @@ -1938,7 +1892,6 @@ "Use email or phone to optionally be discoverable by existing contacts.": "Käytä sähköpostiosoitetta tai puhelinnumeroa, jos haluat olla löydettävissä nykyisille yhteystiedoille.", "Use email to optionally be discoverable by existing contacts.": "Käytä sähköpostiosoitetta, jos haluat olla löydettävissä nykyisille yhteystiedoille.", "Add an email to be able to reset your password.": "Lisää sähköpostiosoite, jotta voit palauttaa salasanasi.", - "Forgot password?": "Unohtuiko salasana?", "That phone number doesn't look quite right, please check and try again": "Tämä puhelinnumero ei näytä oikealta, tarkista se ja yritä uudelleen", "Move right": "Siirry oikealle", "Move left": "Siirry vasemmalle", @@ -1962,7 +1915,6 @@ "Already have an account? Sign in here": "Onko sinulla jo tili? Kirjaudu tästä", "There was a problem communicating with the homeserver, please try again later.": "Yhteydessä kotipalvelimeen ilmeni ongelma, yritä myöhemmin uudelleen.", "This widget would like to:": "Tämä sovelma haluaa:", - "Learn more": "Lue lisää", "Other homeserver": "Muu kotipalvelin", "Specify a homeserver": "Määritä kotipalvelin", "The server has denied your request.": "Palvelin eväsi pyyntösi.", @@ -1994,7 +1946,6 @@ "New? Create account": "Uusi? Luo tili", "Continuing without email": "Jatka ilman sähköpostia", "Invite by email": "Kutsu sähköpostilla", - "Report a bug": "Raportoi virheestä", "Confirm Security Phrase": "Vahvista turvalause", "Upload a file": "Lähetä tiedosto", "Confirm encryption setup": "Vahvista salauksen asetukset", @@ -2075,7 +2026,6 @@ "Channel: ": "Kanava: ", "Share %(name)s": "Jaa %(name)s", "Skip for now": "Ohita tältä erää", - "Room name": "Huoneen nimi", " invites you": " kutsuu sinut", "You may want to try a different search or check for typos.": "Kokeile eri hakua tai tarkista haku kirjoitusvirheiden varalta.", "No results found": "Tuloksia ei löytynyt", @@ -2200,7 +2150,6 @@ "Join the beta": "Liity beetaan", "Leave the beta": "Poistu beetasta", "Show preview": "Näytä esikatselu", - "Forward": "Välitä", "View source": "Näytä lähde", "Settings - %(spaceName)s": "Asetukset - %(spaceName)s", "Report the entire room": "Raportoi koko huone", @@ -2209,7 +2158,6 @@ "You may contact me if you have any follow up questions": "Voitte olla yhteydessä minuun, jos teillä on lisäkysymyksiä", "Search for rooms or people": "Etsi huoneita tai ihmisiä", "Message preview": "Viestin esikatselu", - "Forward message": "Välitä viesti", "Sent": "Lähetetty", "Include Attachments": "Sisällytä liitteet", "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Oletko varma, että haluat lopettaa tietojen viennin? Jos lopetat, joudut aloittamaan alusta.", @@ -2220,7 +2168,6 @@ "Public space": "Julkinen avaruus", "Public room": "Julkinen huone", "Private room (invite only)": "Yksityinen huone (vain kutsulla)", - "Create a room": "Luo huone", "Only people invited will be able to find and join this room.": "Vain kutsutut ihmiset voivat löytää tämän huoneen ja liittyä siihen.", "You can change this at any time from room settings.": "Voit muuttaa tämän milloin tahansa huoneen asetuksista.", "Everyone in will be able to find and join this room.": "Kaikki avaruudessa voivat löytää tämän huoneen ja liittyä siihen.", @@ -2230,8 +2177,6 @@ "Share content": "Jaa sisältö", "Application window": "Sovelluksen ikkuna", "Share entire screen": "Jaa koko näyttö", - "Image": "Kuva", - "Sticker": "Tarra", "Error processing audio message": "Virhe ääniviestiä käsiteltäessä", "Decrypting": "Puretaan salausta", "The call is in an unknown state!": "Puhelu on tuntemattomassa tilassa!", @@ -2241,7 +2186,6 @@ "Their device couldn't start the camera or microphone": "Laite ei voinut käyynnistää kameraa tai mikrofonia", "Connection failed": "Yhteys epäonnistui", "No answer": "Ei vastausta", - "Message": "Viesti", "Pinned messages": "Kiinnitetyt viestit", "Nothing pinned, yet": "Ei mitään kiinnitetty, ei vielä", "Stop recording": "Pysäytä nauhoittaminen", @@ -2773,7 +2717,6 @@ "The authenticity of this encrypted message can't be guaranteed on this device.": "Tämän salatun viestin aitoutta ei voida taata tällä laitteella.", "Developer tools": "Kehittäjätyökalut", "Confirm the emoji below are displayed on both devices, in the same order:": "Varmista, että alla olevat emojit näkyvät molemmilla laitteilla samassa järjestyksessä:", - "Video": "Video", "Show polls button": "Näytä kyselypainike", "Failed to join": "Liittyminen epäonnistui", "The person who invited you has already left.": "Henkilö, joka kutsui sinut on jo poistunut.", @@ -2931,7 +2874,6 @@ "Space home": "Avaruuden koti", "See room timeline (devtools)": "Näytä huoneen aikajana (devtools)", "Mentions only": "Vain maininnat", - "Copy link": "Kopioi linkki", "Cameras": "Kamerat", "Output devices": "Ulostulolaitteet", "Input devices": "Sisääntulolaitteet", @@ -3505,7 +3447,6 @@ "Indent decrease": "Sisennyksen vähennys", "Indent increase": "Sisennyksen lisäys", "Rejecting invite…": "Hylätään kutsua…", - "Loading…": "Ladataan…", "Joining room…": "Liitytään huoneeseen…", "Once everyone has joined, you’ll be able to chat": "Voitte keskustella, kun kaikki ovat liittyneet", "Send your first message to invite to chat": "Kutsu keskusteluun kirjoittamalla ensimmäinen viesti", @@ -3546,6 +3487,35 @@ "Joining space…": "Liitytään avaruuteen…", "Sending your message…": "Lähetetään viestiäsi…", "Error details": "Virheen tiedot", + "common": { + "about": "Tietoa", + "analytics": "Analytiikka", + "encryption_enabled": "Salaus käytössä", + "error": "Virhe", + "forward_message": "Välitä viesti", + "image": "Kuva", + "loading": "Ladataan…", + "message": "Viesti", + "message_layout": "Viestien asettelu", + "modern": "Moderni", + "mute": "Mykistä", + "no_results": "Ei tuloksia", + "offline": "Poissa verkosta", + "password": "Salasana", + "people": "Ihmiset", + "reactions": "Reaktiot", + "report_a_bug": "Raportoi virheestä", + "room_name": "Huoneen nimi", + "security": "Tietoturva", + "settings": "Asetukset", + "sticker": "Tarra", + "success": "Onnistui", + "suggestions": "Ehdotukset", + "unmute": "Poista mykistys", + "username": "Käyttäjätunnus", + "verification_cancelled": "Varmennus peruutettu", + "video": "Video" + }, "action": { "reject": "Hylkää", "confirm": "Varmista", @@ -3570,5 +3540,8 @@ "share": "Jaa", "skip": "Ohita", "logout": "Kirjaudu ulos" + }, + "a11y": { + "user_menu": "Käyttäjän valikko" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index e934d3896d17..dfcd9ea4f6bb 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2,16 +2,13 @@ "Displays action": "Affiche l’action", "Download %(text)s": "Télécharger %(text)s", "Emoji": "Émojis", - "Error": "Erreur", "Export E2E room keys": "Exporter les clés de chiffrement de salon", "Failed to ban user": "Échec du bannissement de l’utilisateur", "Failed to change password. Is your password correct?": "Échec du changement de mot de passe. Votre mot de passe est-il correct ?", "Failed to change power level": "Échec du changement de rang", "Failed to forget room %(errCode)s": "Échec de l’oubli du salon %(errCode)s", - "Remove": "Supprimer", "Favourite": "Favoris", "Notifications": "Notifications", - "Settings": "Paramètres", "Account": "Compte", "Admin": "Administrateur", "Advanced": "Avancé", @@ -35,7 +32,6 @@ "Command error": "Erreur de commande", "Commands": "Commandes", "Confirm password": "Confirmer le mot de passe", - "Continue": "Continuer", "Cryptography": "Chiffrement", "Current password": "Mot de passe actuel", "Deactivate Account": "Fermer le compte", @@ -65,12 +61,10 @@ "Incorrect verification code": "Code de vérification incorrect", "Invalid Email Address": "Adresse e-mail non valide", "Invited": "Invités", - "Invites": "Invitations", "Invites user with given id to current room": "Invite un utilisateur dans le salon actuel à partir de son identifiant", "Sign in with": "Se connecter avec", "Join Room": "Rejoindre le salon", "Labs": "Expérimental", - "Leave room": "Quitter le salon", "Low priority": "Priorité basse", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s a rendu l’historique visible à tous les membres du salon, depuis le moment où ils ont été invités.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s a rendu l’historique visible à tous les membres du salon, à partir de leur arrivée.", @@ -86,10 +80,7 @@ "not specified": "non spécifié", "": "", "No more results": "Fin des résultats", - "No results": "Pas de résultat", "unknown error code": "code d’erreur inconnu", - "OK": "OK", - "Password": "Mot de passe", "Passwords can't be empty": "Le mot de passe ne peut pas être vide", "Permissions": "Permissions", "Phone": "Numéro de téléphone", @@ -98,7 +89,6 @@ "Email address": "Adresse e-mail", "Error decrypting attachment": "Erreur lors du déchiffrement de la pièce jointe", "Invalid file%(extra)s": "Fichier %(extra)s non valide", - "Mute": "Mettre en sourdine", "No users have specific privileges in this room": "Aucun utilisateur n’a de privilège spécifique dans ce salon", "Please check your email and click on the link it contains. Once this is done, click continue.": "Veuillez consulter vos e-mails et cliquer sur le lien que vous avez reçu. Puis cliquez sur continuer.", "Power level must be positive integer.": "Le rang doit être un entier positif.", @@ -127,7 +117,6 @@ "Sign out": "Se déconnecter", "Someone": "Quelqu’un", "Submit": "Soumettre", - "Success": "Succès", "This email address is already in use": "Cette adresse e-mail est déjà utilisée", "This email address was not found": "Cette adresse e-mail n’a pas été trouvée", "The email address linked to your account must be entered.": "L’adresse e-mail liée à votre compte doit être renseignée.", @@ -143,7 +132,6 @@ "Unable to verify email address.": "Impossible de vérifier l’adresse e-mail.", "Unban": "Révoquer le bannissement", "Unable to enable Notifications": "Impossible d’activer les notifications", - "Unmute": "Activer le son", "Upload avatar": "Envoyer un avatar", "Upload Failed": "Échec de l’envoi", "Usage": "Utilisation", @@ -187,7 +175,6 @@ "Connectivity to the server has been lost.": "La connexion au serveur a été perdue.", "Sent messages will be stored until your connection has returned.": "Les messages envoyés seront stockés jusqu’à ce que votre connexion revienne.", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s a supprimé le nom du salon.", - "Analytics": "Collecte de données", "Passphrases must match": "Les phrases secrètes doivent être identiques", "Passphrase must not be empty": "Le mot de passe ne peut pas être vide", "Export room keys": "Exporter les clés de salon", @@ -215,7 +202,6 @@ "URL Previews": "Aperçus des liens", "Drop file here to upload": "Glisser le fichier ici pour l’envoyer", "Online": "En ligne", - "Offline": "Hors ligne", "Start automatically after system login": "Démarrer automatiquement après la phase d'authentification du système", "Idle": "Inactif", "Jump to first unread message.": "Aller au premier message non lu.", @@ -239,7 +225,6 @@ "Are you sure you want to leave the room '%(roomName)s'?": "Voulez-vous vraiment quitter le salon « %(roomName)s » ?", "Custom level": "Rang personnalisé", "Register": "S’inscrire", - "Save": "Enregistrer", "You have disabled URL previews by default.": "Vous avez désactivé les aperçus d’URL par défaut.", "You have enabled URL previews by default.": "Vous avez activé les aperçus d’URL par défaut.", "Add": "Ajouter", @@ -250,11 +235,9 @@ }, "You must register to use this functionality": "Vous devez vous inscrire pour utiliser cette fonctionnalité", "Create new room": "Créer un nouveau salon", - "Start chat": "Commencer une conversation privée", "New Password": "Nouveau mot de passe", "Something went wrong!": "Quelque chose s’est mal déroulé !", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Impossible de se connecter au serveur d’accueil - veuillez vérifier votre connexion, assurez-vous que le certificat SSL de votre serveur d’accueil est un certificat de confiance, et qu’aucune extension du navigateur ne bloque les requêtes.", - "Decline": "Refuser", "No display name": "Pas de nom d’affichage", "%(roomName)s does not exist.": "%(roomName)s n’existe pas.", "%(roomName)s is not accessible at this time.": "%(roomName)s n’est pas joignable pour le moment.", @@ -274,12 +257,10 @@ "Check for update": "Rechercher une mise à jour", "Delete widget": "Supprimer le widget", "Define the power level of a user": "Définir le rang d’un utilisateur", - "Edit": "Modifier", "Enable automatic language detection for syntax highlighting": "Activer la détection automatique du langage pour la coloration syntaxique", "Unable to create widget.": "Impossible de créer le widget.", "You are not in this room.": "Vous n’êtes pas dans ce salon.", "You do not have permission to do that in this room.": "Vous n’avez pas l’autorisation d’effectuer cette action dans ce salon.", - "Create": "Créer", "Automatically replace plain text Emoji": "Remplacer automatiquement le texte par des émojis", "%(widgetName)s widget added by %(senderName)s": "Widget %(widgetName)s ajouté par %(senderName)s", "%(widgetName)s widget removed by %(senderName)s": "Widget %(widgetName)s supprimé par %(senderName)s", @@ -297,7 +278,6 @@ "Mention": "Mentionner", "Unignore": "Ne plus ignorer", "Ignore": "Ignorer", - "Invite": "Inviter", "Admin Tools": "Outils d’administration", "Unknown": "Inconnu", "Unnamed room": "Salon sans nom", @@ -398,7 +378,6 @@ "And %(count)s more...": { "other": "Et %(count)s autres…" }, - "Leave": "Quitter", "Description": "Description", "Mirror local video feed": "Inverser horizontalement la vidéo locale (effet miroir)", "Ignores a user, hiding their messages from you": "Ignore un utilisateur, en masquant ses messages", @@ -470,17 +449,14 @@ "Invite to this room": "Inviter dans ce salon", "Wednesday": "Mercredi", "You cannot delete this message. (%(code)s)": "Vous ne pouvez pas supprimer ce message. (%(code)s)", - "Quote": "Citer", "Send logs": "Envoyer les journaux", "All messages": "Tous les messages", "Call invitation": "Appel entrant", "State Key": "Clé d’état", "What's new?": "Nouveautés", - "View Source": "Voir la source", "All Rooms": "Tous les salons", "Thursday": "Jeudi", "Back": "Retour", - "Reply": "Répondre", "Show message in desktop notification": "Afficher le message dans les notifications de bureau", "Messages in group chats": "Messages dans les discussions de groupe", "Yesterday": "Hier", @@ -569,13 +545,11 @@ "Unable to load! Check your network connectivity and try again.": "Chargement impossible ! Vérifiez votre connexion au réseau et réessayez.", "Delete Backup": "Supprimer la sauvegarde", "Unable to load key backup status": "Impossible de charger l’état de sauvegarde des clés", - "Next": "Suivant", "That matches!": "Ça correspond !", "That doesn't match.": "Ça ne correspond pas.", "Go back to set it again.": "Retournez en arrière pour la redéfinir.", "Download": "Télécharger", "Unable to create key backup": "Impossible de créer la sauvegarde des clés", - "Retry": "Réessayer", "Unable to load backup status": "Impossible de récupérer l’état de la sauvegarde", "Unable to restore backup": "Impossible de restaurer la sauvegarde", "No backup found!": "Aucune sauvegarde n’a été trouvée !", @@ -650,8 +624,6 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Les messages sécurisés avec cet utilisateur sont chiffrés de bout en bout et ne peuvent être lus par d’autres personnes.", "Got It": "Compris", "Verify this user by confirming the following number appears on their screen.": "Vérifier cet utilisateur en confirmant que le nombre suivant apparaît sur leur écran.", - "Yes": "Oui", - "No": "Non", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Nous vous avons envoyé un e-mail pour vérifier votre adresse. Veuillez suivre les instructions qu’il contient puis cliquer sur le bouton ci-dessous.", "Email Address": "Adresse e-mail", "All keys backed up": "Toutes les clés ont été sauvegardées", @@ -700,7 +672,6 @@ "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Vérifier cet utilisateur pour le marquer comme fiable. Faire confiance aux utilisateurs vous permet d’être tranquille lorsque vous utilisez des messages chiffrés de bout en bout.", "Incoming Verification Request": "Demande de vérification entrante", "Go back": "Revenir en arrière", - "Username": "Nom d’utilisateur", "Email (optional)": "E-mail (facultatif)", "Phone (optional)": "Téléphone (facultatif)", "Join millions for free on the largest public server": "Rejoignez des millions d’utilisateurs gratuitement sur le plus grand serveur public", @@ -1051,7 +1022,6 @@ "Report Content to Your Homeserver Administrator": "Signaler le contenu à l’administrateur de votre serveur d’accueil", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Le signalement de ce message enverra son « event ID » unique à l’administrateur de votre serveur d’accueil. Si les messages dans ce salon sont chiffrés, l’administrateur ne pourra pas lire le texte du message ou voir les fichiers ou les images.", "Send report": "Envoyer le signalement", - "Report Content": "Signaler le contenu", "Read Marker lifetime (ms)": "Durée de vie du repère de lecture (ms)", "Read Marker off-screen lifetime (ms)": "Durée de vie du repère de lecture en dehors de l’écran (ms)", "Changes the avatar of the current room": "Modifie l’avatar du salon actuel", @@ -1103,7 +1073,6 @@ "Objects": "Objets", "Symbols": "Symboles", "Flags": "Drapeaux", - "React": "Réagir", "Cancel search": "Annuler la recherche", "Failed to deactivate user": "Échec de la désactivation de l’utilisateur", "This client does not support end-to-end encryption.": "Ce client ne prend pas en charge le chiffrement de bout en bout.", @@ -1157,7 +1126,6 @@ "Trusted": "Fiable", "Not trusted": "Non fiable", "Messages in this room are end-to-end encrypted.": "Les messages dans ce salon sont chiffrés de bout en bout.", - "Security": "Sécurité", "Any of the following data may be shared:": "Les données suivants peuvent être partagées :", "Your display name": "Votre nom d’affichage", "Your user ID": "Votre identifiant utilisateur", @@ -1191,7 +1159,6 @@ "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "La mise à niveau d’un salon est une action avancée et qui est généralement recommandée quand un salon est instable à cause d’anomalies, de fonctionnalités manquantes ou de failles de sécurité.", "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "Cela n’affecte généralement que la façon dont le salon est traité sur le serveur. Si vous avez des problèmes avec votre %(brand)s, signalez une anomalie.", "You'll upgrade this room from to .": "Vous allez mettre à niveau ce salon de vers .", - "Reactions": "Réactions", " wants to chat": " veut discuter", "Start chatting": "Commencer à discuter", "Cross-signing public keys:": "Clés publiques de signature croisée :", @@ -1234,7 +1201,6 @@ "Go": "C’est parti", "Show info about bridges in room settings": "Afficher des informations à propos des passerelles dans les paramètres du salon", "This bridge is managed by .": "Cette passerelle est gérée par .", - "Suggestions": "Suggestions", "Failed to find the following users": "Impossible de trouver les utilisateurs suivants", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Les utilisateurs suivant n’existent peut-être pas ou ne sont pas valides, et ne peuvent pas être invités : %(csvNames)s", "Lock": "Cadenas", @@ -1256,8 +1222,6 @@ "Something went wrong trying to invite the users.": "Une erreur est survenue en essayant d’inviter les utilisateurs.", "We couldn't invite those users. Please check the users you want to invite and try again.": "Impossible d’inviter ces utilisateurs. Vérifiez quels utilisateurs que vous souhaitez inviter et réessayez.", "Recently Direct Messaged": "Conversations privées récentes", - "Start": "Commencer", - "Done": "Terminé", "Go Back": "Retourner en arrière", "Other users may not trust it": "D’autres utilisateurs pourraient ne pas lui faire confiance", "Later": "Plus tard", @@ -1283,11 +1247,9 @@ "Review": "Examiner", "Manage": "Gérer", "Securely cache encrypted messages locally for them to appear in search results.": "Mettre en cache les messages chiffrés localement et de manière sécurisée pour qu’ils apparaissent dans les résultats de recherche.", - "Enable": "Activer", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "Il manque quelques composants à %(brand)s pour mettre en cache les messages chiffrés localement de manière sécurisée. Si vous voulez essayer cette fonctionnalité, construisez %(brand)s Desktop vous-même en ajoutant les composants de recherche.", "Message search": "Recherche de message", "If disabled, messages from encrypted rooms won't appear in search results.": "Si l’option est désactivée, les messages des salons chiffrés n’apparaîtront pas dans les résultats de recherche.", - "Disable": "Désactiver", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s met en cache les messages chiffrés localement et de manière sécurisée pour qu’ils apparaissent dans les résultats de recherche :", "Space used:": "Espace utilisé :", "Indexed messages:": "Messages indexés :", @@ -1339,7 +1301,6 @@ "one": "%(count)s session" }, "Hide sessions": "Masquer les sessions", - "Encryption enabled": "Chiffrement activé", "Encryption not enabled": "Chiffrement non activé", "The encryption used by this room isn't supported.": "Le chiffrement utilisé par ce salon n’est pas pris en charge.", "Clear all data in this session?": "Supprimer toutes les données de cette session ?", @@ -1355,7 +1316,6 @@ "Setting up keys": "Configuration des clés", "You have not verified this user.": "Vous n’avez pas vérifié cet utilisateur.", "Confirm your identity by entering your account password below.": "Confirmez votre identité en saisissant le mot de passe de votre compte ci-dessous.", - "Copy": "Copier", "Create key backup": "Créer une sauvegarde de clé", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Si vous l’avez fait accidentellement, vous pouvez configurer les messages sécurisés sur cette session ce qui re-chiffrera l’historique des messages de cette session avec une nouvelle méthode de récupération.", "How fast should messages be downloaded.": "À quelle fréquence les messages doivent être téléchargés.", @@ -1472,7 +1432,6 @@ "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Vérifiez individuellement chaque session utilisée par un utilisateur pour la marquer comme fiable, sans faire confiance aux appareils signés avec la signature croisée.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Dans les salons chiffrés, vos messages sont sécurisés et seuls vous et le destinataire avez les clés uniques pour les déchiffrer.", "Verify all users in a room to ensure it's secure.": "Vérifiez tous les utilisateurs d’un salon pour vous assurer qu’il est sécurisé.", - "Verification cancelled": "Vérification annulée", "Sends a message as html, without interpreting it as markdown": "Envoie un message en HTML, sans l’interpréter comme du Markdown", "Sign in with SSO": "Se connecter avec l’authentification unique", "Cancel replying to a message": "Annuler la réponse à un message", @@ -1563,7 +1522,6 @@ "Ok": "OK", "New version available. Update now.": "Nouvelle version disponible. Faire la mise à niveau maintenant.", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "L’administrateur de votre serveur a désactivé le chiffrement de bout en bout par défaut dans les salons privés et les conversations privées.", - "People": "Personnes", "Switch to light mode": "Passer au mode clair", "Switch to dark mode": "Passer au mode sombre", "Switch theme": "Changer le thème", @@ -1587,8 +1545,6 @@ "Looks good!": "Ça a l’air correct !", "Use custom size": "Utiliser une taille personnalisée", "Hey you. You're the best!": "Hé vous. Vous êtes le meilleur !", - "Message layout": "Mise en page des messages", - "Modern": "Moderne", "Use a system font": "Utiliser une police du système", "System font name": "Nom de la police du système", "The authenticity of this encrypted message can't be guaranteed on this device.": "L’authenticité de ce message chiffré ne peut pas être garantie sur cet appareil.", @@ -1626,7 +1582,6 @@ "This room is public": "Ce salon est public", "Edited at %(date)s": "Modifié le %(date)s", "Click to view edits": "Cliquez pour voir les modifications", - "User menu": "Menu utilisateur", "Are you sure you want to cancel entering passphrase?": "Souhaitez-vous vraiment annuler la saisie de la phrase de passe ?", "Unexpected server error trying to leave the room": "Erreur de serveur inattendue en essayant de quitter le salon", "Error leaving room": "Erreur en essayant de quitter le salon", @@ -1674,7 +1629,6 @@ "Video conference updated by %(senderName)s": "vidéoconférence mise à jour par %(senderName)s", "Video conference ended by %(senderName)s": "vidéoconférence terminée par %(senderName)s", "Room settings": "Paramètres du salon", - "About": "À propos", "Not encrypted": "Non-chiffré", "Add widgets, bridges & bots": "Ajouter des widgets, passerelles et robots", "Edit widgets, bridges & bots": "Modifier les widgets, passerelles et robots", @@ -1718,7 +1672,6 @@ "Send feedback": "Envoyer un commentaire", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "CONSEIL : si vous rapportez un bug, merci d’envoyer les journaux de débogage pour nous aider à identifier le problème.", "Please view existing bugs on Github first. No match? Start a new one.": "Merci de regarder d’abord les bugs déjà répertoriés sur Github. Pas de résultat ? Rapportez un nouveau bug.", - "Report a bug": "Signaler un bug", "Comment": "Commentaire", "Feedback sent": "Commentaire envoyé", "Block anyone not part of %(serverName)s from ever joining this room.": "Empêche n’importe qui n’étant pas membre de %(serverName)s de rejoindre ce salon.", @@ -2049,7 +2002,6 @@ "Send stickers to your active room as you": "Envoie des autocollants sous votre nom dans le salon actuel", "Continue with %(ssoButtons)s": "Continuer avec %(ssoButtons)s", "About homeservers": "À propos des serveurs d’accueil", - "Learn more": "En savoir plus", "Use your preferred Matrix homeserver if you have one, or host your own.": "Utilisez votre serveur d’accueil Matrix préféré si vous en avez un, ou hébergez le vôtre.", "Other homeserver": "Autre serveur d’accueil", "Sign into your homeserver": "Connectez-vous sur votre serveur d’accueil", @@ -2111,7 +2063,6 @@ "Use email to optionally be discoverable by existing contacts.": "Utiliser une adresse e-mail pour pouvoir être découvert par des contacts existants.", "Use email or phone to optionally be discoverable by existing contacts.": "Utiliser une adresse e-mail ou un numéro de téléphone pour pouvoir être découvert par des contacts existants.", "Add an email to be able to reset your password.": "Ajouter une adresse e-mail pour pouvoir réinitialiser votre mot de passe.", - "Forgot password?": "Mot de passe oublié ?", "That phone number doesn't look quite right, please check and try again": "Ce numéro de téléphone ne semble pas correct, merci de vérifier et réessayer", "Enter email address": "Saisir l’adresse e-mail", "Enter phone number": "Saisir le numéro de téléphone", @@ -2202,7 +2153,6 @@ "Who are you working with?": "Avec qui travaillez-vous ?", "Skip for now": "Passer pour l’instant", "Failed to create initial space rooms": "Échec de la création des salons initiaux de l’espace", - "Room name": "Nom du salon", "Support": "Prise en charge", "Random": "Aléatoire", "Welcome to ": "Bienvenue dans ", @@ -2373,7 +2323,6 @@ "Or send invite link": "Ou envoyer le lien d’invitation", "Some suggestions may be hidden for privacy.": "Certaines suggestions pourraient être masquées pour votre confidentialité.", "Search for rooms or people": "Rechercher des salons ou des gens", - "Forward message": "Transférer le message", "Sent": "Envoyé", "You don't have permission to do this": "Vous n’avez pas les permissions nécessaires pour effectuer cette action", "Error - Mixed content": "Erreur - Contenu mixte", @@ -2391,7 +2340,6 @@ "Collapse reply thread": "Masquer le fil de discussion", "Show preview": "Afficher l’aperçu", "View source": "Afficher la source", - "Forward": "Transférer", "Settings - %(spaceName)s": "Paramètres - %(spaceName)s", "Report the entire room": "Signaler le salon entier", "Spam or propaganda": "Publicité ou propagande", @@ -2520,8 +2468,6 @@ "Share content": "Partager le contenu", "Application window": "Fenêtre d’application", "Share entire screen": "Partager l’écran entier", - "Image": "Image", - "Sticker": "Autocollant", "Decrypting": "Déchiffrement", "The call is in an unknown state!": "Cet appel est dans un état inconnu !", "An unknown error occurred": "Une erreur inconnue s’est produite", @@ -2562,7 +2508,6 @@ "Public room": "Salon public", "Private room (invite only)": "Salon privé (uniquement sur invitation)", "Room visibility": "Visibilité du salon", - "Create a room": "Créer un salon", "Only people invited will be able to find and join this room.": "Seules les personnes invitées pourront trouver et rejoindre ce salon.", "Anyone will be able to find and join this room.": "Quiconque pourra trouver et rejoindre ce salon.", "Anyone will be able to find and join this room, not just members of .": "Quiconque pourra trouver et rejoindre ce salon, pas seulement les membres de .", @@ -2612,7 +2557,6 @@ "Reply to thread…": "Répondre au fil de discussion…", "Reply to encrypted thread…": "Répondre au fil de discussion chiffré…", "%(reactors)s reacted with %(content)s": "%(reactors)s ont réagi avec %(content)s", - "Message": "Message", "Message didn't send. Click for info.": "Le message n’a pas été envoyé. Cliquer pour plus d’info.", "Unknown failure": "Erreur inconnue", "Failed to update the join rules": "Échec de mise-à-jour des règles pour rejoindre le salon", @@ -2761,7 +2705,6 @@ "You do not have permission to start polls in this room.": "Vous n’avez pas la permission de démarrer un sondage dans ce salon.", "Show all threads": "Afficher tous les fils de discussion", "Keep discussions organised with threads": "Garde les discussions organisées à l’aide de fils de discussion", - "Copy link": "Copier le lien", "Mentions only": "Seulement les mentions", "Forget": "Oublier", "Files": "Fichiers", @@ -3148,7 +3091,6 @@ }, "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Les journaux de débogage contiennent les données d’utilisation de l’application incluant votre nom d’utilisateur, les identifiants ou les alias des salons que vous avez visités, les derniers élément de l’interface avec lesquels vous avez interagis, et les noms d’utilisateurs des autres utilisateurs. Ils ne contiennent pas de messages.", "Developer tools": "Outils de développement", - "Video": "Vidéo", "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.": "%(brand)s est expérimental sur un navigateur mobile. Pour une meilleure expérience et bénéficier des dernières fonctionnalités, utilisez notre application native gratuite.", "%(value)ss": "%(value)ss", "%(value)sm": "%(value)sm", @@ -3737,7 +3679,6 @@ "Adding…": "Ajout…", "Write something…": "Écrivez quelque chose…", "Rejecting invite…": "Rejet de l’invitation…", - "Loading…": "Chargement…", "Joining room…": "Entrée dans le salon…", "Joining space…": "Entrée dans l’espace…", "Encrypting your message…": "Chiffrement de votre message…", @@ -3947,6 +3888,35 @@ "Your homeserver is too old and does not support the minimum API version required. Please contact your server owner, or upgrade your server.": "Votre serveur d’accueil est trop ancien et ne prend pas en charge la version minimale requise de l’API. Veuillez contacter le propriétaire du serveur, ou bien mettez à jour votre serveur.", "Your server is unsupported": "Votre serveur n’est pas pris en charge", "This server is using an older version of Matrix. Upgrade to Matrix %(version)s to use %(brand)s without errors.": "Ce serveur utilise une ancienne version de Matrix. Mettez-le à jour vers Matrix %(version)s pour utiliser %(brand)s sans erreurs.", + "common": { + "about": "À propos", + "analytics": "Collecte de données", + "encryption_enabled": "Chiffrement activé", + "error": "Erreur", + "forward_message": "Transférer le message", + "image": "Image", + "loading": "Chargement…", + "message": "Message", + "message_layout": "Mise en page des messages", + "modern": "Moderne", + "mute": "Mettre en sourdine", + "no_results": "Pas de résultat", + "offline": "Hors ligne", + "password": "Mot de passe", + "people": "Personnes", + "reactions": "Réactions", + "report_a_bug": "Signaler un bug", + "room_name": "Nom du salon", + "security": "Sécurité", + "settings": "Paramètres", + "sticker": "Autocollant", + "success": "Succès", + "suggestions": "Suggestions", + "unmute": "Activer le son", + "username": "Nom d’utilisateur", + "verification_cancelled": "Vérification annulée", + "video": "Vidéo" + }, "action": { "reject": "Rejeter", "confirm": "Confirmer", @@ -3971,5 +3941,8 @@ "share": "Partager", "skip": "Passer", "logout": "Se déconnecter" + }, + "a11y": { + "user_menu": "Menu utilisateur" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/ga.json b/src/i18n/strings/ga.json index 451654d69dbf..95e251b44d03 100644 --- a/src/i18n/strings/ga.json +++ b/src/i18n/strings/ga.json @@ -17,7 +17,6 @@ "What's new?": "Cad é nua?", "New? Create account": "Céaduaire? Cruthaigh cuntas", "Forgotten your password?": "An nDearna tú dearmad ar do fhocal faire?", - "Forgot password?": "An nDearna tú dearmad ar do fhocal faire?", "Sign In or Create Account": "Sínigh Isteach nó Déan cuntas a chruthú", "Are you sure you want to reject the invitation?": "An bhfuil tú cinnte gur mian leat an cuireadh a dhiúltú?", "Are you sure you want to leave the room '%(roomName)s'?": "An bhfuil tú cinnte gur mian leat an seomra '%(roomName)s' a fhágáil?", @@ -57,7 +56,6 @@ "Unignored user": "Úsáideoir leis aird", "Ignored user": "Úsáideoir neamhairde", "Unignore": "Stop ag tabhairt neamhaird air", - "Leave room": "Fág an seomra", "Missing roomId.": "Comhartha aitheantais seomra ar iarraidh.", "Operation failed": "Chlis an oibríocht", "Unnamed Room": "Seomra gan ainm", @@ -269,7 +267,6 @@ "ready": "réidh", "Algorithm:": "Algartam:", "Unpin": "Neamhceangail", - "About": "Faoi", "Privacy": "Príobháideachas", "Information": "Eolas", "Away": "Imithe", @@ -280,7 +277,6 @@ "A-Z": "A-Z", "Activity": "Gníomhaíocht", "Feedback": "Aiseolas", - "People": "Daoine", "Ok": "Togha", "Categories": "Catagóire", "Appearance": "Cuma", @@ -298,28 +294,19 @@ "Accepting…": "ag Glacadh leis…", "Cancelling…": "ag Cealú…", "exists": "a bheith ann", - "Copy": "Cóipeáil", "Mod": "Mod", "Bridges": "Droichid", - "Disable": "Cuir as feidhm", - "Enable": "Tosaigh", "Manage": "Bainistigh", "Review": "Athbhreithnigh", "Later": "Níos deireanaí", - "Done": "Críochnaithe", - "Start": "Tosaigh", "Lock": "Glasáil", - "Suggestions": "Moltaí", "Go": "Téigh", "Cross-signing": "Cros-síniú", - "Reactions": "Freagartha", "Unencrypted": "Gan chriptiú", - "Security": "Slándáil", "Trusted": "Dílis", "Subscribe": "Liostáil", "Unsubscribe": "Díliostáil", "None": "Níl aon cheann", - "React": "Freagair", "Flags": "Bratacha", "Symbols": "Siombailí", "Objects": "Rudaí", @@ -335,7 +322,6 @@ "Discovery": "Aimsiú", "Actions": "Gníomhartha", "Messages": "Teachtaireachtaí", - "Retry": "Atriail", "Success!": "Rath!", "Download": "Íoslódáil", "Import": "Iompórtáil", @@ -350,22 +336,17 @@ "Other": "Eile", "Change": "Athraigh", "Phone": "Guthán", - "Username": "Ainm úsáideora", "Email": "Ríomhphost", "Submit": "Cuir isteach", "Code": "Cód", "Home": "Tús", "Favourite": "Cuir mar ceanán", - "Leave": "Fág", - "Quote": "Luaigh", "Resend": "Athsheol", - "Next": "Ar Aghaidh", "Summary": "Achoimre", "Service": "Seirbhís", "Refresh": "Athnuaigh", "Toolbox": "Uirlisí", "Back": "Ar Ais", - "Create": "Cruthaigh", "Removing…": "ag Baint…", "Changelog": "Loga na n-athruithe", "Unavailable": "Níl sé ar fáil", @@ -389,8 +370,6 @@ "Copied!": "Cóipeáilte!", "Attachment": "Ceangaltán", "Options": "Roghanna", - "Edit": "Cuir in eagar", - "Reply": "Freagair", "Yesterday": "Inné", "Today": "Inniu", "Saturday": "Dé Sathairn", @@ -406,12 +385,9 @@ "Historical": "Stairiúil", "Rooms": "Seomraí", "Favourites": "Ceanáin", - "Invites": "Cuirí", "Search": "Cuardaigh", - "Settings": "Socruithe", "Replying": "Ag freagairt", "Unknown": "Anaithnid", - "Offline": "As líne", "Idle": "Díomhaoin", "Online": "Ar Líne", "%(duration)sd": "%(duration)sl", @@ -430,9 +406,6 @@ "Call invitation": "Nuair a fhaighim cuireadh glaoigh", "Collecting logs": "ag Bailiú logaí", "Invited": "Le cuireadh", - "Mute": "Ciúinaigh", - "Unmute": "Stop ag ciúnú", - "Invite": "Tabhair cuireadh", "Mention": "Luaigh", "Demote": "Bain ceadanna", "Encrypted": "Criptithe", @@ -458,18 +431,12 @@ "Theme": "Téama", "Account": "Cuntas", "Profile": "Próifíl", - "Success": "Rath", - "Save": "Sábháil", "Noisy": "Callánach", "On": "Ar siúl", "Off": "Múchta", "Advanced": "Forbartha", "Add": "Cuir", - "Remove": "Bain", - "No": "Níl", - "Yes": "Tá", "Authentication": "Fíordheimhniú", - "Password": "Pasfhocal", "Warning!": "Aire!", "Folder": "Fillteán", "Headphones": "Cluasáin", @@ -532,8 +499,6 @@ "Cat": "Cat", "Dog": "Madra", "Verified!": "Deimhnithe!", - "OK": "Togha", - "Decline": "Diúltaigh", "Someone": "Duine éigin", "Reason": "Cúis", "Usage": "Úsáid", @@ -542,7 +507,6 @@ "Restricted": "Teoranta", "Default": "Réamhshocrú", "Register": "Cláraigh", - "Error": "Earráid", "AM": "RN", "PM": "IN", "Dec": "Nol", @@ -565,8 +529,6 @@ "Mon": "Lua", "Sun": "Doṁ", "Send": "Seol", - "Continue": "Lean ar aghaidh", - "Analytics": "Anailísiú sonraí", "Add Phone Number": "Cuir uimhir ghutháin", "Click the button below to confirm adding this phone number.": "Cliceáil an cnaipe thíos chun an uimhir ghutháin nua a dheimhniú.", "Confirm adding phone number": "Deimhnigh an uimhir ghutháin nua", @@ -606,14 +568,10 @@ "More": "Níos mó", "Decrypting": "Ag Díchriptiú", "Access": "Rochtain", - "Image": "Íomhá", - "Sticker": "Greamán", - "Modern": "Comhaimseartha", "Global": "Uilíoch", "Keyword": "Eochairfhocal", "[number]": "[uimhir]", "Report": "Tuairiscigh", - "Forward": "Seol ar aghaidh", "Disagree": "Easaontaigh", "Visibility": "Léargas", "Address": "Seoladh", @@ -676,7 +634,6 @@ "Collapse reply thread": "Cuir na freagraí i bhfolach", "Thread": "Snáithe", "Low priority": "Tosaíocht íseal", - "Start chat": "Tosaigh comhrá", "Share room": "Roinn seomra", "Forget room": "Déan dearmad ar an seomra", "Join Room": "Téigh isteach an seomra", @@ -712,6 +669,25 @@ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "D'athraigh %(senderName)s an leibhéal cumhachta %(powerLevelDiffText)s.", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Ní féidir ceangal leis an bhfreastalaí baile trí HTTP nuair a bhíonn URL HTTPS i mbarra do bhrabhsálaí. Bain úsáid as HTTPS nó scripteanna neamhshábháilte a chumasú .", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Ní féidir ceangal leis an bhfreastalaí baile - seiceáil do nascacht le do thoil, déan cinnte go bhfuil muinín i dteastas SSL do fhreastalaí baile, agus nach bhfuil síneadh brabhsálaí ag cur bac ar iarratais.", + "common": { + "about": "Faoi", + "analytics": "Anailísiú sonraí", + "error": "Earráid", + "image": "Íomhá", + "modern": "Comhaimseartha", + "mute": "Ciúinaigh", + "offline": "As líne", + "password": "Pasfhocal", + "people": "Daoine", + "reactions": "Freagartha", + "security": "Slándáil", + "settings": "Socruithe", + "sticker": "Greamán", + "success": "Rath", + "suggestions": "Moltaí", + "unmute": "Stop ag ciúnú", + "username": "Ainm úsáideora" + }, "action": { "reject": "Diúltaigh", "confirm": "Deimhnigh", @@ -733,4 +709,4 @@ "skip": "Léim", "logout": "Logáil amach" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 60905f8bca92..ff735cf75e44 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -90,8 +90,6 @@ "Enable inline URL previews by default": "Activar por defecto as vistas previas en liña de URL", "Enable URL previews for this room (only affects you)": "Activar vista previa de URL nesta sala (só che afecta a ti)", "Enable URL previews by default for participants in this room": "Activar a vista previa de URL por defecto para as participantes nesta sala", - "Decline": "Rexeitar", - "Error": "Fallo", "Incorrect verification code": "Código de verificación incorrecto", "Submit": "Enviar", "Phone": "Teléfono", @@ -99,11 +97,9 @@ "No display name": "Sen nome público", "New passwords don't match": "Os contrasinais novos non coinciden", "Passwords can't be empty": "Os contrasinais non poden estar baleiros", - "Continue": "Continuar", "Export E2E room keys": "Exportar chaves E2E da sala", "Do you want to set an email address?": "Quere establecer un enderezo de correo electrónico?", "Current password": "Contrasinal actual", - "Password": "Contrasinal", "New Password": "Novo contrasinal", "Confirm password": "Confirma o contrasinal", "Change Password": "Cambiar contrasinal", @@ -123,9 +119,6 @@ "Ignore": "Ignorar", "Jump to read receipt": "Ir ao resgardo de lectura", "Mention": "Mención", - "Invite": "Convidar", - "Unmute": "Non acalar", - "Mute": "Acalar", "Admin Tools": "Ferramentas de administración", "and %(count)s others...": { "other": "e %(count)s outras...", @@ -154,22 +147,18 @@ "Unknown for %(duration)s": "Descoñecido desde %(duration)s", "Online": "En liña", "Idle": "En pausa", - "Offline": "Sen conexión", "Unknown": "Descoñecido", "Replying": "Respondendo", "Unnamed room": "Sala sen nome", - "Save": "Gardar", "(~%(count)s results)": { "other": "(~%(count)s resultados)", "one": "(~%(count)s resultado)" }, "Join Room": "Unirse a sala", "Upload avatar": "Subir avatar", - "Settings": "Axustes", "Forget room": "Esquecer sala", "Search": "Busca", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Non poderá desfacer este cambio xa que está a diminuír a súa autoridade, se é a única persoa con autorización na sala será imposible volver a obter privilexios.", - "Invites": "Convites", "Favourites": "Favoritas", "Rooms": "Salas", "Low priority": "Baixa prioridade", @@ -184,7 +173,6 @@ "No users have specific privileges in this room": "Non hai usuarias con privilexios específicos nesta sala", "Banned users": "Usuarias excluídas", "This room is not accessible by remote Matrix servers": "Esta sala non é accesible por servidores Matrix remotos", - "Leave room": "Deixar a sala", "Favourite": "Favorita", "Publish this room to the public in %(domain)s's room directory?": "Publicar esta sala no directorio público de salas de %(domain)s?", "Who can read history?": "Quen pode ler o histórico?", @@ -224,14 +212,11 @@ "Email address": "Enderezo de correo", "Sign in": "Acceder", "Register": "Rexistrar", - "Remove": "Eliminar", "Something went wrong!": "Algo fallou!", "Delete Widget": "Eliminar widget", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Quitando un trebello elimínalo para todas as usuarias desta sala. ¿tes certeza de querer eliminar este widget?", "Delete widget": "Eliminar widget", - "Edit": "Editar", "Create new room": "Crear unha nova sala", - "No results": "Sen resultados", "Home": "Inicio", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(severalUsers)sjoined %(count)s times": { @@ -322,17 +307,14 @@ "collapse": "comprimir", "expand": "despregar", "Custom level": "Nivel personalizado", - "Start chat": "Iniciar conversa", "And %(count)s more...": { "other": "E %(count)s máis..." }, "Confirm Removal": "Confirma a retirada", - "Create": "Crear", "Unknown error": "Fallo descoñecido", "Incorrect password": "Contrasinal incorrecto", "Deactivate Account": "Desactivar conta", "An error has occurred.": "Algo fallou.", - "OK": "OK", "Unable to restore session": "Non se puido restaurar a sesión", "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se anteriormente utilizaches unha versión máis recente de %(brand)s, a túa sesión podería non ser compatible con esta versión. Pecha esta ventá e volve á versión máis recente.", "Invalid Email Address": "Enderezo de correo non válido", @@ -345,7 +327,6 @@ "Name": "Nome", "You must register to use this functionality": "Debe rexistrarse para utilizar esta función", "You must join the room to see its files": "Debes unirte a sala para ver os seus ficheiros", - "Leave": "Saír", "Description": "Descrición", "Reject invitation": "Rexeitar convite", "Are you sure you want to reject the invitation?": "Seguro que desexa rexeitar o convite?", @@ -374,12 +355,10 @@ "Uploading %(filename)s": "Subindo %(filename)s", "Sign out": "Saír", "Failed to change password. Is your password correct?": "Fallo ao cambiar o contrasinal. É correcto o contrasinal?", - "Success": "Parabéns", "Unable to remove contact information": "Non se puido eliminar a información do contacto", "": "", "Import E2E room keys": "Importar chaves E2E da sala", "Cryptography": "Criptografía", - "Analytics": "Análise", "Labs": "Labs", "Check for update": "Comprobar actualización", "Reject all %(invitedRooms)s invites": "Rexeitar todos os %(invitedRooms)s convites", @@ -472,7 +451,6 @@ "All Rooms": "Todas as Salas", "State Key": "Chave do estado", "Wednesday": "Mércores", - "Quote": "Cita", "Send logs": "Enviar informes", "All messages": "Todas as mensaxes", "Call invitation": "Convite de chamada", @@ -483,7 +461,6 @@ "Thursday": "Xoves", "Logs sent": "Informes enviados", "Back": "Atrás", - "Reply": "Resposta", "Show message in desktop notification": "Mostrar mensaxe nas notificacións de escritorio", "Messages in group chats": "Mensaxes en grupos de chat", "Yesterday": "Onte", @@ -492,7 +469,6 @@ "Off": "Off", "Event Type": "Tipo de evento", "Event sent!": "Evento enviado!", - "View Source": "Ver fonte", "Event Content": "Contido do evento", "Thank you!": "Grazas!", "Missing roomId.": "Falta o ID da sala.", @@ -684,7 +660,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) conectouse a unha nova sesión sen verificala:", "Ask this user to verify their session, or manually verify it below.": "Pídelle a usuaria que verifique a súa sesión, ou verificaa manualmente aquí.", "Not Trusted": "Non confiable", - "Done": "Feito", "%(displayName)s is typing …": "%(displayName)s está escribindo…", "%(names)s and %(count)s others are typing …": { "other": "%(names)s e outras %(count)s están escribindo…", @@ -754,7 +729,6 @@ "A word by itself is easy to guess": "Por si sola, unha palabra é fácil de adiviñar", "Names and surnames by themselves are easy to guess": "Nomes e apelidos por si mesmos son fáciles de adiviñar", "Common names and surnames are easy to guess": "Os nomes e alcumes son fáciles de adiviñar", - "No": "Non", "Review": "Revisar", "Later": "Máis tarde", "Your homeserver has exceeded its user limit.": "O teu servidor superou o seu límite de usuaras.", @@ -819,7 +793,6 @@ "Scan this unique code": "Escanea este código único", "Compare unique emoji": "Compara os emoji", "Compare a unique set of emoji if you don't have a camera on either device": "Compara o conxunto único de emoticonas se non tes cámara no outro dispositivo", - "Start": "Comezar", "Verify this user by confirming the following emoji appear on their screen.": "Verifica a usuaria confirmando que as emoticonas aparecen na súa pantalla.", "Verify this user by confirming the following number appears on their screen.": "Verifica esta usuaria confirmando que o seguinte número aparece na súa pantalla.", "Unable to find a supported verification method.": "Non se atopa un método de verificación válido.", @@ -917,7 +890,6 @@ "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verificar individualmente cada sesión utilizada pola usuaria para marcala como confiable, non confiando en dispositivos con sinatura cruzada.", "Manage": "Xestionar", "Securely cache encrypted messages locally for them to appear in search results.": "Gardar de xeito seguro mensaxes cifradas na caché local para que aparezan nos resultados de buscas.", - "Enable": "Activar", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "Falta un compoñente de %(brand)s requerido para almacenar localmente mensaxes cifradas na caché. Se queres experimentar con esta función, compila unha versión personalizada de %(brand)s Desktop cos compoñentes de busca engadidos.", "Cannot connect to integration manager": "Non se puido conectar co xestor de intregración", "The integration manager is offline or it cannot reach your homeserver.": "O xestor de integración non está en liña ou non é accesible desde o teu servidor.", @@ -1112,7 +1084,6 @@ "Italics": "Cursiva", "Code block": "Bloque de código", "No recently visited rooms": "Sen salas recentes visitadas", - "People": "Persoas", "Reason: %(reason)s": "Razón: %(reason)s", "Forget this room": "Esquecer sala", "You were banned from %(roomName)s by %(memberName)s": "Foches bloqueada en %(roomName)s por %(memberName)s", @@ -1215,14 +1186,12 @@ "Deactivate user": "Desactivar usuaria", "Failed to deactivate user": "Fallo ao desactivar a usuaria", "This client does not support end-to-end encryption.": "Este cliente non soporta o cifrado extremo-a-extremo.", - "Security": "Seguridade", "Verify by scanning": "Verificar escaneando", "Ask %(displayName)s to scan your code:": "Pídelle a %(displayName)s que escanee o teu código:", "If you can't scan the code above, verify by comparing unique emoji.": "Se non podes escanear o código superior, verifica comparando as emoticonas.", "Verify by comparing unique emoji.": "Verficación por comparación de emoticonas.", "Verify by emoji": "Verificar por emoticonas", "Almost there! Is %(displayName)s showing the same shield?": "Case feito! ¿está %(displayName)s mostrando as mesmas emoticonas?", - "Yes": "Si", "Verify all users in a room to ensure it's secure.": "Verificar todas as usuarias da sala para asegurar que é segura.", "Strikethrough": "Sobrescrito", "You've successfully verified your device!": "Verificaches correctamente o teu dispositivo!", @@ -1234,11 +1203,8 @@ "Verification timed out.": "Verificación caducada.", "%(displayName)s cancelled verification.": "%(displayName)s cancelou a verificación.", "You cancelled verification.": "Cancelaches a verificación.", - "Verification cancelled": "Verificación cancelada", - "Encryption enabled": "Cifrado activado", "Encryption not enabled": "Cifrado desactivado", "The encryption used by this room isn't supported.": "O cifrado desta sala non está soportado.", - "React": "Reacciona", "Message Actions": "Accións da mensaxe", "Show image": "Mostrar imaxe", "You have ignored this user, so their message is hidden. Show anyways.": "Estás a ignorar a esta usuaria, polo que a imaxe está agochada. Mostrar igualmente.", @@ -1254,7 +1220,6 @@ "%(name)s wants to verify": "%(name)s desexa verificar", "You sent a verification request": "Enviaches unha solicitude de verificación", "Show all": "Mostrar todo", - "Reactions": "Reaccións", "reacted with %(shortName)s": "reaccionaron con %(shortName)s", "Message deleted": "Mensaxe eliminada", "Message deleted by %(name)s": "Mensaxe eliminada por %(name)s", @@ -1354,8 +1319,6 @@ "Use a system font": "Usar tipo de letra do sistema", "System font name": "Nome da letra do sistema", "Hey you. You're the best!": "Ei ti. Es grande!", - "Message layout": "Disposición da mensaxe", - "Modern": "Moderna", "Power level": "Nivel responsabilidade", "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Verifica este dispositivo para marcalo como confiable. Confiando neste dispositivo permite que ti e outras usuarias estedes máis tranquilas ao utilizar mensaxes cifradas.", "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Ao verificar este dispositivo marcaralo como confiable, e as usuarias que confiaron en ti tamén confiarán nel.", @@ -1369,7 +1332,6 @@ "Failed to find the following users": "Non atopamos as seguintes usuarias", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "As seguintes usuarias poderían non existir ou non son válidas, e non se poden convidar: %(csvNames)s", "Recent Conversations": "Conversas recentes", - "Suggestions": "Suxestións", "Recently Direct Messaged": "Mensaxes Directas recentes", "Go": "Ir", "a new master key signature": "unha nova firma con chave mestra", @@ -1429,7 +1391,6 @@ "Service": "Servizo", "Summary": "Resumo", "Document": "Documento", - "Next": "Seguinte", "Upload files (%(current)s of %(total)s)": "Subir ficheiros (%(current)s de %(total)s)", "Upload files": "Subir ficheiros", "Upload all": "Subir todo", @@ -1454,7 +1415,6 @@ "Successfully restored %(sessionCount)s keys": "Restablecidas correctamente %(sessionCount)s chaves", "Warning: you should only set up key backup from a trusted computer.": "Aviso: só deberías realizar a copia de apoio desde un ordenador de confianza.", "Resend %(unsentCount)s reaction(s)": "Reenviar %(unsentCount)s reacción(s)", - "Report Content": "Denunciar contido", "Remove for everyone": "Eliminar para todas", "This homeserver would like to make sure you are not a robot.": "Este servidor quere asegurarse de que non es un robot.", "Country Dropdown": "Despregable de países", @@ -1465,7 +1425,6 @@ "Enter password": "Escribe contrasinal", "Nice, strong password!": "Ben, bo contrasinal!", "Password is allowed, but unsafe": "O contrasinal é admisible, pero inseguro", - "Username": "Nome de usuaria", "Use an email address to recover your account": "Usa un enderezo de email para recuperar a túa conta", "Enter email address (required on this homeserver)": "Escribe o enderzo de email (requerido neste servidor)", "Doesn't look like a valid email address": "Non semella un enderezo válido", @@ -1532,10 +1491,8 @@ "Use a different passphrase?": "¿Usar unha frase de paso diferente?", "That doesn't match.": "Non concorda.", "Go back to set it again.": "Vai atrás e volve a escribila.", - "Copy": "Copiar", "Download": "Descargar", "Unable to query secret storage status": "Non se obtivo o estado do almacenaxe segredo", - "Retry": "Reintentar", "Upgrade your encryption": "Mellora o teu cifrado", "Unable to set up secret storage": "Non se configurou un almacenaxe segredo", "Your keys are being backed up (the first backup could take a few minutes).": "As chaves estanse a copiar (a primeira copia podería tardar un anaco).", @@ -1551,7 +1508,6 @@ "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Se fixeches esto sen querer, podes configurar Mensaxes Seguras nesta sesión e volverá a cifrar as mensaxes da sesión cun novo método de recuperación.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Se non eliminaches o método de recuperación, un atacante podería estar a intentar acceder á túa conta. Cambia inmediatamente o contrasinal da conta e establece un novo método de recuperación nos Axustes.", "If disabled, messages from encrypted rooms won't appear in search results.": "Se está desactivado, as mensaxes das salas cifradas non aparecerán nos resultados das buscas.", - "Disable": "Desactivar", "Not currently indexing messages for any room.": "Non se están indexando as mensaxes de ningunha sala.", "Currently indexing: %(currentRoom)s": "Indexando actualmente: %(currentRoom)s", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s está gardando de xeito seguro na caché local mensaxes cifradas para que aparezan nos resultados das buscas:", @@ -1624,7 +1580,6 @@ "Favourited": "Con marca de Favorita", "Forget Room": "Esquecer sala", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Se a outra versión de %(brand)s aínda está aberta noutra lapela, péchaa xa que usar %(brand)s no mesmo servidor con carga preguiceira activada e desactivada ao mesmo tempo causará problemas.", - "User menu": "Menú de usuaria", "This room is public": "Esta é unha sala pública", "Away": "Fóra", "Show rooms with unread messages first": "Mostrar primeiro as salas con mensaxes sen ler", @@ -1666,7 +1621,6 @@ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Engade ( ͡° ͜ʖ ͡°) a unha mensaxe de texto-plano", "Unknown App": "App descoñecida", "Not encrypted": "Sen cifrar", - "About": "Acerca de", "Room settings": "Axustes da sala", "Take a picture": "Tomar unha foto", "Unpin": "Desafixar", @@ -1722,7 +1676,6 @@ "Send feedback": "Enviar comentario", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "PRO TIP: se inicias un novo informe, envía rexistros de depuración para axudarnos a investigar o problema.", "Please view existing bugs on Github first. No match? Start a new one.": "Primeiro revisa a lista existente de fallo en Github. Non hai nada? Abre un novo.", - "Report a bug": "Informar dun fallo", "Comment": "Comentar", "%(senderName)s ended the call": "%(senderName)s finalizou a chamada", "You ended the call": "Finalizaches a chamada", @@ -2087,10 +2040,8 @@ "Use email to optionally be discoverable by existing contacts.": "Usa o email para ser opcionalmente descubrible para os contactos existentes.", "Use email or phone to optionally be discoverable by existing contacts.": "Usa un email ou teléfono para ser (opcionalmente) descubrible polos contactos existentes.", "Add an email to be able to reset your password.": "Engade un email para poder restablecer o contrasinal.", - "Forgot password?": "Esqueceches o contrasinal?", "That phone number doesn't look quite right, please check and try again": "Non semella correcto este número, compróbao e inténtao outra vez", "About homeservers": "Acerca dos servidores de inicio", - "Learn more": "Saber máis", "Use your preferred Matrix homeserver if you have one, or host your own.": "Usa o teu servidor de inicio Matrix preferido, ou usa o teu propio.", "Other homeserver": "Outro servidor de inicio", "Sign into your homeserver": "Conecta co teu servidor de inicio", @@ -2200,7 +2151,6 @@ "Who are you working with?": "Con quen estás a traballar?", "Skip for now": "Omitir por agora", "Failed to create initial space rooms": "Fallou a creación inicial das salas do espazo", - "Room name": "Nome da sala", "Support": "Axuda", "Random": "Ao chou", "Welcome to ": "Benvida a ", @@ -2373,7 +2323,6 @@ "Or send invite link": "Ou envía ligazón de convite", "Some suggestions may be hidden for privacy.": "Algunhas suxestións poderían estar agochadas por privacidade.", "Search for rooms or people": "Busca salas ou persoas", - "Forward message": "Reenviar mensaxe", "Sent": "Enviado", "You don't have permission to do this": "Non tes permiso para facer isto", "Error - Mixed content": "Erro - Contido variado", @@ -2481,7 +2430,6 @@ "Collapse reply thread": "Contraer fío de resposta", "Show preview": "Ver vista previa", "View source": "Ver fonte", - "Forward": "Reenviar", "Settings - %(spaceName)s": "Axustes - %(spaceName)s", "Report the entire room": "Denunciar a toda a sala", "Spam or propaganda": "Spam ou propaganda", @@ -2498,8 +2446,6 @@ "Connection failed": "Fallou a conexión", "Could not connect media": "Non se puido conectar o multimedia", "Message bubbles": "Burbullas con mensaxes", - "Image": "Imaxe", - "Sticker": "Adhesivo", "Error downloading audio": "Erro ao descargar o audio", "Please note upgrading will make a new version of the room. All current messages will stay in this archived room.": "Ten en conta que a actualización creará unha nova versión da sala. Tódalas mensaxes actuais permanecerán nesta sala arquivada.", "Automatically invite members from this room to the new one": "Convidar automáticamente membros desta sala á nova sala", @@ -2514,7 +2460,6 @@ "Visible to space members": "Visible para membros do espazo", "Public room": "Sala pública", "Private room (invite only)": "Sala privada (só con convite)", - "Create a room": "Crear unha sala", "Only people invited will be able to find and join this room.": "Só as persoas convidadas poderán atopar e unirse a esta sala.", "Anyone will be able to find and join this room.": "Calquera poderá atopar e unirse a esta sala.", "Anyone will be able to find and join this room, not just members of .": "Calquera poderá atopar e unirse a esta sala, non só os membros de .", @@ -2620,7 +2565,6 @@ "Change space avatar": "Cambiar o avatar do espazo", "Anyone in can find and join. You can select other spaces too.": "Calquera en pode atopar e unirse. Tamén podes elexir outros espazos.", "Message didn't send. Click for info.": "Non se enviou a mensaxe. Click para info.", - "Message": "Mensaxe", "To join a space you'll need an invite.": "Para unirte a un espazo precisas un convite.", "Would you like to leave the rooms in this space?": "Queres saír destas salas neste espazo?", "You are about to leave .": "Vas saír de .", @@ -2780,7 +2724,6 @@ "Someone already has that username. Try another or if it is you, sign in below.": "Ese nome de usuaria xa está pillado. Inténtao con outro, ou se es ti, conéctate.", "Copy link to thread": "Copiar ligazón da conversa", "Thread options": "Opcións da conversa", - "Copy link": "Copiar ligazón", "Mentions only": "Só mencións", "Forget": "Esquecer", "We call the places where you can host your account 'homeservers'.": "Chamámoslle 'Servidores de Inicio' aos lugares onde podes ter a túa conta.", @@ -3152,7 +3095,6 @@ "%(brand)s was denied permission to fetch your location. Please allow location access in your browser settings.": "%(brand)s non ten permiso para obter a túa localización. Concede acceso á localización nos axustes do navegador.", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Os rexistros de depuración conteñen datos de uso da aplicación incluíndo o teu nome de usuaria, os IDs ou alias das salas que visitaches, os elementos da IU cos que interactuaches así como os identificadores de outras usuarias.", "Developer tools": "Ferramentas desenvolvemento", - "Video": "Vídeo", "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.": "%(brand)s é experimental no navegador web móbil. Para ter unha mellor experiencia e as últimas características usa a nosa app nativa.", "User may or may not exist": "A usuaria podería non existir", "User does not exist": "A usuaria non existe", @@ -3474,6 +3416,34 @@ "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", "%(minutes)sm %(seconds)ss left": "%(minutes)sm %(seconds)ss restantes", "%(hours)sh %(minutes)sm %(seconds)ss left": "%(hours)sh %(minutes)sm %(seconds)ss restantes", + "common": { + "about": "Acerca de", + "analytics": "Análise", + "encryption_enabled": "Cifrado activado", + "error": "Fallo", + "forward_message": "Reenviar mensaxe", + "image": "Imaxe", + "message": "Mensaxe", + "message_layout": "Disposición da mensaxe", + "modern": "Moderna", + "mute": "Acalar", + "no_results": "Sen resultados", + "offline": "Sen conexión", + "password": "Contrasinal", + "people": "Persoas", + "reactions": "Reaccións", + "report_a_bug": "Informar dun fallo", + "room_name": "Nome da sala", + "security": "Seguridade", + "settings": "Axustes", + "sticker": "Adhesivo", + "success": "Parabéns", + "suggestions": "Suxestións", + "unmute": "Non acalar", + "username": "Nome de usuaria", + "verification_cancelled": "Verificación cancelada", + "video": "Vídeo" + }, "action": { "reject": "Rexeitar", "confirm": "Confirmar", @@ -3496,5 +3466,8 @@ "share": "Compartir", "skip": "Saltar", "logout": "Saír" + }, + "a11y": { + "user_menu": "Menú de usuaria" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index 3fe011e029f8..2e8d241c500f 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -29,23 +29,16 @@ "AM": "AM", "Warning": "התראה", "Submit debug logs": "צרף לוגים", - "Edit": "ערוך", "Online": "מקוון", "Register": "צור חשבון", "Rooms": "חדרים", - "OK": "בסדר", "Operation failed": "פעולה נכשלה", "Search": "חפש", "powered by Matrix": "מופעל ע\"י Matrix", - "Error": "שגיאה", - "Remove": "הסר", "Send": "שלח", - "Continue": "המשך", "Failed to change password. Is your password correct?": "שינוי הסיסמה נכשל. האם הסיסמה שלך נכונה?", "unknown error code": "קוד שגיאה לא מוכר", "Failed to forget room %(errCode)s": "נכשל בעת בקשה לשכוח חדר %(errCode)s", - "Mute": "השתק", - "Leave": "לעזוב", "Favourite": "מועדף", "Notifications": "התראות", "Unnamed room": "חדר ללא שם", @@ -80,7 +73,6 @@ "All Rooms": "כל החדרים", "State Key": "מקש מצב", "Wednesday": "רביעי", - "Quote": "ציטוט", "Send logs": "שלח יומנים", "All messages": "כל ההודעות", "Call invitation": "הזמנה לשיחה", @@ -92,7 +84,6 @@ "Search…": "חפש…", "Logs sent": "יומנים נשלחו", "Back": "אחורה", - "Reply": "תשובה", "Show message in desktop notification": "הצג הודעה בהתראות שולחן עבודה", "Messages in group chats": "הודעות בקבוצות השיחה", "Yesterday": "אתמול", @@ -102,7 +93,6 @@ "Failed to remove tag %(tagName)s from room": "נכשל בעת נסיון הסרת תג %(tagName)s מהחדר", "Event Type": "סוג ארוע", "Developer Tools": "כלי מפתחים", - "View Source": "הצג מקור", "Event Content": "תוכן הארוע", "Thank you!": "רב תודות!", "Your %(brand)s is misconfigured": "ה %(brand)s שלך מוגדר באופן שגוי", @@ -142,7 +132,6 @@ "Ignores a user, hiding their messages from you": "התעלם ממשתמש, הסתר הודעות מהם", "Unbans user with given ID": "ביטול חסימה של משתמש עם קוד זיהוי", "Bans user with given id": "חסום משתמש עם קוד זיהוי", - "Leave room": "עזוב חדר", "Joins room with given address": "חיבור לחדר עם כתובת מסויימת", "Use an identity server to invite by email. Manage in Settings.": "השתמש בשרת זיהוי להזמין דרך מייל. ניהול דרך ההגדרות.", "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "השתמש בשרת זיהוי על מנת להזמין דרך מייל. לחצו על המשך להשתמש בשרת ברירת המחדל %(defaultIdentityServerName)s או הגדירו את השרת שלכם בהגדרות.", @@ -217,7 +206,6 @@ "The call was answered on another device.": "השיחה נענתה במכשיר אחר.", "Answered Elsewhere": "נענה במקום אחר", "The call could not be established": "לא ניתן להתקשר", - "Analytics": "אנליטיקה", "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "פעולה זו דורשת להכנס אל שרת הזיהוי לאשר מייל או טלפון, אבל לשרת אין כללי שרות.", "Identity server has no terms of service": "לשרת הזיהוי אין כללי שרות", "Unnamed Room": "חדר ללא שם", @@ -586,7 +574,6 @@ "other": "%(names)s ו%(count)s אחרים כותבים…" }, "%(displayName)s is typing …": "%(displayName)s כותב…", - "Done": "סיום", "Not Trusted": "לא אמין", "Ask this user to verify their session, or manually verify it below.": "בקש ממשתמש זה לאמת את ההתחברות שלו, או לאמת אותה באופן ידני למטה.", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s %(userId)s נכנס דרך התחברות חדשה מבלי לאמת אותה:", @@ -674,7 +661,6 @@ "Unable to load key backup status": "לא ניתן לטעון את מצב גיבוי המפתח", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "האם אתה בטוח? תאבד את ההודעות המוצפנות שלך אם המפתחות שלך לא מגובים כראוי.", "Delete Backup": "מחק גיבוי", - "Save": "שמירה", "Profile picture": "תמונת פרופיל", "Display Name": "שם לתצוגה", "Profile": "פרופיל", @@ -801,7 +787,6 @@ "Unable to find a supported verification method.": "לא מצליח למצוא שיטות אימות נתמכות.", "Verify this user by confirming the following number appears on their screen.": "אמת את המשתמש הזה בכך שאותו מספר מופיע אצלו במסך.", "Verify this user by confirming the following emoji appear on their screen.": "אמת את המשתמש הזה בכך שסדרת הסמלים מוצגת זהה אצלו במסך.", - "Start": "התחל", "Compare a unique set of emoji if you don't have a camera on either device": "השווה קבוצה של סמלים אם אין ברשותכם מצלמה על שום מכשיר", "Compare unique emoji": "השווה סמלים מסויימים", "Scan this unique code": "סרוק את הקוד הזה", @@ -810,7 +795,6 @@ "You've successfully verified this user.": "המשתמש הזה אומת בהצלחה.", "Verified!": "אומת!", "The other party cancelled the verification.": "הצד השני ביטל את האימות.", - "Decline": "סרב", "Unknown caller": "מתקשר לא ידוע", "%(name)s on hold": "%(name)s במצב המתנה", "You held the call Switch": "שמם את השיחה על המתנה להחליף", @@ -904,13 +888,10 @@ "Contact your server admin.": "צרו קשר עם מנהל השרת.", "Your homeserver has exceeded one of its resource limits.": "השרת שלכם חרג מאחד או יותר משאבים אשר הוקצו לו.", "Your homeserver has exceeded its user limit.": "השרת שלכם חרג ממגבלות מספר המשתמשים שלו.", - "Enable": "אפשר", "Enable desktop notifications": "אשרו התראות שולחן עבודה", "Don't miss a reply": "אל תפספסו תגובה", "Later": "מאוחר יותר", "Review": "סקירה", - "No": "לא", - "Yes": "כן", "Unknown App": "אפליקציה לא ידועה", "Short keyboard patterns are easy to guess": "דפוסים קצרים קל לנחש", "Straight rows of keys are easy to guess": "שורות מסודרות של מקשים מאוד קל לנחש", @@ -960,7 +941,6 @@ "Enable end-to-end encryption": "אפשר הצפנה מקצה לקצה", "Your server requires encryption to be enabled in private rooms.": "השרת שלכם דורש הפעלת הצפנה בחדרים פרטיים.", "Please enter a name for the room": "אנא הזינו שם לחדר", - "Create": "צור", "Clear all data": "נקה את כל הנתונים", "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "ניקוי כל הנתונים מהפגישה זו הוא קבוע. הודעות מוצפנות יאבדו אלא אם כן גובו על המפתחות שלהן.", "Clear all data in this session?": "למחוק את כל הנתונים בפגישה זו?", @@ -1108,7 +1088,6 @@ "collapse": "אחד", "expand": "הרחב", "Please create a new issue on GitHub so that we can investigate this bug.": "אנא צור בעיה חדשה ב- GitHub כדי שנוכל לחקור את הבאג הזה.", - "No results": "אין תוצאות", "This version of %(brand)s does not support searching encrypted messages": "גרסה זו של %(brand)s אינה תומכת בחיפוש הודעות מוצפנות", "This version of %(brand)s does not support viewing some encrypted files": "גרסה זו של %(brand)s אינה תומכת בצפייה בקבצים מוצפנים מסוימים", "Use the Desktop app to search encrypted messages": "השתמשו ב אפליקציית שולחן העבודה לחיפוש הודעות מוצפנות", @@ -1116,7 +1095,6 @@ "Popout widget": "יישומון קופץ", "Message deleted": "הודעה נמחקה", "reacted with %(shortName)s": " הגיבו עם %(shortName)s", - "Reactions": "תגובות", "Show all": "הצג הכל", "Error decrypting video": "שגיאה בפענוח וידאו", "You sent a verification request": "שלחתם בקשה לקוד אימות", @@ -1144,12 +1122,9 @@ "Error decrypting attachment": "שגיאה בפענוח קבצים מצורפים", "Attachment": "נספחים", "Message Actions": "פעולות הודעה", - "React": "הגב", "The encryption used by this room isn't supported.": "ההצפנה בה משתמשים בחדר זה אינה נתמכת.", "Encryption not enabled": "ההצפנה לא מופעלת", "Ignored attempt to disable encryption": "התעלם מהניסיון להשבית את ההצפנה", - "Encryption enabled": "הצפנה הופעלה", - "Verification cancelled": "אימות בוטל", "You cancelled verification.": "בטלתם את האימות.", "%(displayName)s cancelled verification.": "הצג אימותים מבוטלים %(displayName)s.", "Verification timed out.": "תם הזמן הקצוב לאימות.", @@ -1166,7 +1141,6 @@ "If you can't scan the code above, verify by comparing unique emoji.": "אם אינך יכול לסרוק את הקוד לעיל, ודא על ידי השוואת אמוג'י ייחודי.", "Ask %(displayName)s to scan your code:": "בקש מ- %(displayName)s לסרוק את הקוד שלכם:", "Verify by scanning": "אמת על ידי סריקה", - "Security": "אבטחה", "This client does not support end-to-end encryption.": "לקוח זה אינו תומך בהצפנה מקצה לקצה.", "Failed to deactivate user": "השבתת משתמש נכשלה", "Deactivate user?": "השבת משתמש?", @@ -1175,7 +1149,6 @@ "Are you sure?": "האם אתם בטוחים?", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "לא תוכל לבטל את השינוי הזה מכיוון שאתה מקדם את המשתמש לאותה רמת ניהול כמוך.", "Failed to change power level": "שינוי דרגת מנהל נכשל", - "Unmute": "בטל השתקה", "Failed to mute user": "כשלון בהשתקת משתמש", "Failed to ban user": "כשלון בחסימת משתמש", "Remove recent messages": "הסר הודעות אחרונות", @@ -1191,7 +1164,6 @@ "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "לא תוכל לבטל את השינוי הזה מכיוון שאתה מוריד את עצמך בדרגה, אם אתה המשתמש המיועד האחרון בחדר, אי אפשר יהיה להחזיר לו הרשאות.", "Demote yourself?": "להוריד את עצמך?", "Share Link to User": "שתף קישור למשתמש", - "Invite": "הזמן", "Mention": "אזכר", "Jump to read receipt": "קפצו לקבלת קריאה", "Hide sessions": "הסתר מושבים", @@ -1208,7 +1180,6 @@ "Trusted": "אמין", "Room settings": "הגדרות חדר", "Share room": "שתף חדר", - "About": "אודות", "Not encrypted": "לא מוצפן", "Add widgets, bridges & bots": "הוסף יישומונים, גשרים ובוטים", "Edit widgets, bridges & bots": "ערוך ישומונים, גשרים ובוטים", @@ -1298,10 +1269,7 @@ "Explore public rooms": "שוטט בחדרים ציבוריים", "Create new room": "צור חדר חדש", "Add room": "הוסף חדר", - "Start chat": "התחל שיחה", - "People": "אנשים", "Favourites": "מועדפים", - "Invites": "הזמנות", "Show Widgets": "הצג ישומונים", "Hide Widgets": "הסתר ישומונים", "Forget room": "שכח חדר", @@ -1314,7 +1282,6 @@ "Room %(name)s": "חדר %(name)s", "Replying": "משיבים", "Unknown": "לא ידוע", - "Offline": "לא מחובר", "Idle": "לא פעיל", "Unknown for %(duration)s": "זמן לא ידוע %(duration)s", "Offline for %(duration)s": "לא מחובר %(duration)s", @@ -1585,14 +1552,11 @@ "Account": "חשבון", "Phone numbers": "מספרי טלפון", "Email addresses": "כתובות דוא\"ל", - "Success": "הצלחה", "Appearance Settings only affect this %(brand)s session.": "התאמת תצוגה משפיעה רק על התחברות זו %(brand)s.", "Customise your appearance": "התאם את התצוגה שלך", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "הגדר את שם הגופן המותקן במערכת שלך ו- %(brand)s ים ינסו להשתמש בו.", "Show advanced": "הצג מתקדם", "Hide advanced": "הסתר מתקדם", - "Modern": "מודרני", - "Message layout": "תבנית הודעה", "Theme": "ערכת נושא", "Add theme": "הוסף ערכת נושא חדשה", "Custom theme URL": "כתובת ערכת נושא מותאמת אישית", @@ -1642,7 +1606,6 @@ "unexpected type": "סוג בלתי צפוי", "well formed": "מעוצב היטב", "Back up your keys before signing out to avoid losing them.": "גבה את המפתחות שלך לפני היציאה כדי להימנע מלאבד אותם.", - "Settings": "הגדרות", "Favourited": "מועדפים", "Forget Room": "שכח חדר", "Notification options": "אפשרויות התרעות", @@ -1713,9 +1676,7 @@ "Use an email address to recover your account": "השתמש בכתובת דוא\"ל לשחזור חשבונך", "Sign in": "כניסה", "Sign in with": "כניסה עם", - "Forgot password?": "שכחת את הסיסמה?", "Phone": "טלפון", - "Username": "שם משתמש", "Email": "דוא\"ל", "That phone number doesn't look quite right, please check and try again": "מספר הטלפון הזה לא נראה בסדר, אנא בדוק ונסה שוב", "Enter phone number": "הזן טלפון", @@ -1733,7 +1694,6 @@ "Please review and accept the policies of this homeserver:": "אנא עיין וקבל את המדיניות של שרת בית זה:", "Please review and accept all of the homeserver's policies": "אנא עיין וקבל את כל המדיניות של שרת הבית", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "חסר מפתח ציבורי של captcha בתצורת שרת הבית. אנא דווח על כך למנהל שרת הבית שלך.", - "Password": "סיסמה", "Confirm your identity by entering your account password below.": "אשר את זהותך על ידי הזנת סיסמת החשבון שלך למטה.", "Country Dropdown": "נפתח במדינה", "This homeserver would like to make sure you are not a robot.": "שרת בית זה רוצה לוודא שאתה לא רובוט.", @@ -1747,7 +1707,6 @@ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "מחיקת יישומון מסירה אותו לכל המשתמשים בחדר זה. האם אתה בטוח שברצונך למחוק את היישומון הזה?", "Delete Widget": "מחק ישומון", "Take a picture": "צלם תמונה", - "Report Content": "דווח על תוכן", "Resend %(unsentCount)s reaction(s)": "שלח שוב תגובות %(unsentCount)s", "Are you sure you want to reject the invitation?": "האם אתם בטוחים שברצונכם לדחות את ההזמנה?", "Reject invitation": "דחה הזמנה", @@ -1762,7 +1721,6 @@ "Unable to load backup status": "לא ניתן לטעון את מצב הגיבוי", "%(completed)s of %(total)s keys restored": "%(completed)s שניות מתוך %(total)s מפתחות שוחזרו", "Restoring keys from backup": "שחזור מפתחות מגיבוי", - "Retry": "נסה שוב", "Unable to set up keys": "לא ניתן להגדיר מקשים", "Click the button below to confirm setting up encryption.": "לחץ על הלחצן למטה כדי לאשר את הגדרת ההצפנה.", "Confirm encryption setup": "אשר את הגדרת ההצפנה", @@ -1792,7 +1750,6 @@ "Upload all": "מעלה הכל", "Upload files (%(current)s of %(total)s)": "מעלה קבצים (%(current)s מ %(total)s)", "Upload files": "מעלה קבצים", - "Next": "הבא", "Document": "מסמך", "Summary": "תקציר", "Service": "שֵׁרוּת", @@ -1806,7 +1763,6 @@ "Missing session data": "חסרים נתוני הפעלות", "To help us prevent this in future, please send us logs.": "כדי לעזור לנו למנוע זאת בעתיד, אנא שלחו לנו יומנים .", "Command Help": "עזרה לפיקוד", - "Copy": "העתק", "Link to selected message": "קישור להודעה שנבחרה", "Share Room Message": "שתף הודעה בחדר", "Share User": "שתף משתמש", @@ -1824,7 +1780,6 @@ "Clear Storage and Sign Out": "נקה אחסון והתנתק", "Sign out and remove encryption keys?": "להתנתק ולהסיר מפתחות הצפנה?", "About homeservers": "אודות שרתי בית", - "Learn more": "לימדו עוד", "Use your preferred Matrix homeserver if you have one, or host your own.": "השתמש בשרת הבית המועדף על מטריקס אם יש לך כזה, או מארח משלך.", "Other homeserver": "שרת בית אחר", "Sign into your homeserver": "היכנס לשרת הבית שלך", @@ -1906,7 +1861,6 @@ "Start a conversation with someone using their name, email address or username (like ).": "התחל שיחה עם מישהו המשתמש בשמו, כתובת הדוא\"ל או שם המשתמש שלו (כמו ).", "Direct Messages": "הודעות ישירות", "Recently Direct Messaged": "הודעות ישירות לאחרונה", - "Suggestions": "הצעות", "Recent Conversations": "שיחות אחרונות", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "המשתמשים הבאים עשויים שלא להתקיים או שאינם תקפים, ולא ניתן להזמין אותם: %(csvNames)s", "Failed to find the following users": "מציאת המשתמשים הבאים נכשלה", @@ -1926,7 +1880,6 @@ "Send feedback": "שלח משוב", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "טיפ למקצוענים: אם אתה מפעיל באג, שלח יומני איתור באגים כדי לעזור לנו לאתר את הבעיה.", "Please view existing bugs on Github first. No match? Start a new one.": "אנא צפה תחילה ב באגים קיימים ב- Github . אין התאמה? התחל חדש .", - "Report a bug": "דיווח על תקלה", "Feedback": "משוב", "Comment": "תגובה", "Feedback sent": "משוב נשלח", @@ -1974,7 +1927,6 @@ "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s מאחסן באופן מאובטח הודעות מוצפנות באופן מקומי כדי שיופיעו בתוצאות החיפוש:", "Currently indexing: %(currentRoom)s": "אינדקס כרגע: %(currentRoom)s", "Not currently indexing messages for any room.": "כרגע לא מוסיף לאינדקס הודעות עבור אף חדר.", - "Disable": "השבת", "If disabled, messages from encrypted rooms won't appear in search results.": "אם מושבת, הודעות מחדרים מוצפנים לא יופיעו בתוצאות החיפוש.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "אם לא הסרת את שיטת השחזור, ייתכן שתוקף מנסה לגשת לחשבונך. שנה את סיסמת החשבון שלך והגדר מיד שיטת שחזור חדשה בהגדרות.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "אם עשית זאת בטעות, באפשרותך להגדיר הודעות מאובטחות בהפעלה זו אשר תצפין מחדש את היסטוריית ההודעות של הפגישה בשיטת שחזור חדשה.", @@ -2081,7 +2033,6 @@ "A new password must be entered.": "יש להזין סיסמה חדשה.", "The email address linked to your account must be entered.": "יש להזין את כתובת הדוא\"ל המקושרת לחשבונך.", "Could not load user profile": "לא ניתן לטעון את פרופיל המשתמש", - "User menu": "תפריט משתמש", "Switch theme": "שנה ערכת נושא", "Switch to dark mode": "שנה למצב כהה", "Switch to light mode": "שנה למצב בהיר", @@ -2233,7 +2184,6 @@ "Error fetching file": "שגיאה באחזור הקובץ", "Current Timeline": "ציר הזמן הנוכחי", "Voice Message": "הודעה קולית", - "Sticker": "מַדבֵּקָה", "Send voice message": "שלח הודעה קולית", "Reply to thread…": "תשובה לשרשור…", "Send message": "לשלוח הודעה", @@ -2295,7 +2245,6 @@ "sends rainfall": "שלח גשם נופל", "Waiting for you to verify on your other device…": "ממתין לאישור שלך במכשיר השני…", "Confirm the emoji below are displayed on both devices, in the same order:": "ודא ואשר שהסמלים הבאים מופיעים בשני המכשירים ובאותו הסדר:", - "Video": "וידאו", "Show chat effects (animations when receiving e.g. confetti)": "הצג אפקטים בצ'אט (אנימציות, למשל קונפטי)", "Use Ctrl + F to search timeline": "השתמש ב Ctrl + F כדי לחפש הודעות", "Jump to the bottom of the timeline when you send a message": "קפוץ לתחתית השיחה בעת שליחת הודעה", @@ -2484,7 +2433,6 @@ "What do you want to organise?": "מה ברצונכם לארגן ?", "Skip for now": "דלגו לעת עתה", "Failed to create initial space rooms": "יצירת חדר חלל עבודה ראשוני נכשלה", - "Room name": "שם חדר", "Support": "תמיכה", "Random": "אקראי", "Verify this device": "אמתו את מכשיר זה", @@ -2530,7 +2478,6 @@ "Feedback sent! Thanks, we appreciate it!": "משוב נשלח! תודה, אנחנו מודים לכם", "Search for rooms or people": "חפשו אנשים או חדרים", "Message preview": "צפו בהודעה", - "Forward message": "העבירו את ההודעה", "Published addresses can be used by anyone on any server to join your room.": "כל אחד בכל שרת יכול להשתמש בכתובות שפורסמו כדי להצטרף לחלל העבודה שלכם.", "Published addresses can be used by anyone on any server to join your space.": "כל אחד בכל שרת יכול להשתמש בכתובות שפורסמו כדי להצטרף למרחב העבודה שלכם.", "Include Attachments": "כלול קבצים מצורפים", @@ -2578,7 +2525,6 @@ "Server": "שרת", "Value:": "ערך:", "Phase": "שלב", - "Forward": "קדימה", "@mentions & keywords": "אזכורים ומילות מפתח", "Mentions & keywords": "אזכורים ומילות מפתח", "Failed to invite users to %(roomName)s": "נכשל בהזמנת משתמשים לחדר - %(roomName)", @@ -2748,6 +2694,32 @@ "Room directory": "רשימת חדרים", "Enable Markdown": "אפשר Markdown", "New room": "חדר חדש", + "common": { + "about": "אודות", + "analytics": "אנליטיקה", + "encryption_enabled": "הצפנה הופעלה", + "error": "שגיאה", + "forward_message": "העבירו את ההודעה", + "message_layout": "תבנית הודעה", + "modern": "מודרני", + "mute": "השתק", + "no_results": "אין תוצאות", + "offline": "לא מחובר", + "password": "סיסמה", + "people": "אנשים", + "reactions": "תגובות", + "report_a_bug": "דיווח על תקלה", + "room_name": "שם חדר", + "security": "אבטחה", + "settings": "הגדרות", + "sticker": "מַדבֵּקָה", + "success": "הצלחה", + "suggestions": "הצעות", + "unmute": "בטל השתקה", + "username": "שם משתמש", + "verification_cancelled": "אימות בוטל", + "video": "וידאו" + }, "action": { "reject": "דחה", "confirm": "אישור", @@ -2770,5 +2742,8 @@ "share": "לשתף", "skip": "דלג", "logout": "יציאה" + }, + "a11y": { + "user_menu": "תפריט משתמש" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/hi.json b/src/i18n/strings/hi.json index f3a41e648e83..30a379767756 100644 --- a/src/i18n/strings/hi.json +++ b/src/i18n/strings/hi.json @@ -1,12 +1,10 @@ { "All messages": "सारे संदेश", "All Rooms": "सारे कमरे", - "Continue": "आगे बढ़ें", "This email address is already in use": "यह ईमेल आईडी पहले से इस्तेमाल में है", "This phone number is already in use": "यह फ़ोन नंबर पहले से इस्तेमाल में है", "Failed to verify email address: make sure you clicked the link in the email": "ईमेल आईडी सत्यापित नही हो पाया: कृपया सुनिश्चित कर लें कि आपने ईमेल में मौजूद लिंक पर क्लिक किया है", "powered by Matrix": "मैट्रिक्स द्वारा संचालित", - "Analytics": "एनालिटिक्स", "Call Failed": "कॉल विफल", "You cannot place a call with yourself.": "आप अपने साथ कॉल नहीं कर सकते हैं।", "Permission Required": "अनुमति आवश्यक है", @@ -62,7 +60,6 @@ "Usage": "प्रयोग", "Changes your display nickname": "अपना प्रदर्शन उपनाम बदलता है", "Invites user with given id to current room": "दिए गए आईडी के साथ उपयोगकर्ता को वर्तमान रूम में आमंत्रित करता है", - "Leave room": "रूम छोड़ें", "Bans user with given id": "दिए गए आईडी के साथ उपयोगकर्ता को प्रतिबंध लगाता है", "Ignores a user, hiding their messages from you": "उपयोगकर्ता को अनदेखा करें और स्वयं से संदेश छुपाएं", "Ignored user": "अनदेखा उपयोगकर्ता", @@ -125,8 +122,6 @@ "When I'm invited to a room": "जब मुझे एक रूम में आमंत्रित किया जाता है", "Call invitation": "कॉल आमंत्रण", "Messages sent by bot": "रोबॉट द्वारा भेजे गए संदेश", - "Decline": "पतन", - "Error": "त्रुटि", "Incorrect verification code": "गलत सत्यापन कोड", "Submit": "जमा करें", "Phone": "फ़ोन", @@ -138,7 +133,6 @@ "Export E2E room keys": "E2E रूम कुंजी निर्यात करें", "Do you want to set an email address?": "क्या आप एक ईमेल पता सेट करना चाहते हैं?", "Current password": "वर्तमान पासवर्ड", - "Password": "पासवर्ड", "New Password": "नया पासवर्ड", "Confirm password": "पासवर्ड की पुष्टि कीजिये", "Change Password": "पासवर्ड बदलें", @@ -146,7 +140,6 @@ "Failed to set display name": "प्रदर्शन नाम सेट करने में विफल", "Delete Backup": "बैकअप हटाएं", "Unable to load key backup status": "कुंजी बैकअप स्थिति लोड होने में असमर्थ", - "OK": "ठीक", "Notification targets": "अधिसूचना के लक्ष्य", "Use a few words, avoid common phrases": "कम शब्दों का प्रयोग करें, सामान्य वाक्यांशों से बचें", "No need for symbols, digits, or uppercase letters": "प्रतीकों, अंक, या अपरकेस अक्षरों की कोई ज़रूरत नहीं है", @@ -198,10 +191,7 @@ "Ignore": "अनदेखा करें", "Jump to read receipt": "पढ़ी हुई रसीद में कूदें", "Mention": "उल्लेख", - "Invite": "आमंत्रण", "Share Link to User": "उपयोगकर्ता को लिंक साझा करें", - "Unmute": "अनम्यूट", - "Mute": "म्यूट", "Admin Tools": "व्यवस्थापक उपकरण", "and %(count)s others...": { "other": "और %(count)s अन्य ...", @@ -232,7 +222,6 @@ "Unknown for %(duration)s": "%(duration)s के लिए अज्ञात", "Online": "ऑनलाइन", "Idle": "निष्क्रिय", - "Offline": "ऑफलाइन", "Unknown": "अज्ञात", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "फ़ाइल '%(fileName)s' अपलोड के लिए इस होमस्वर के आकार की सीमा से अधिक है", "Upgrades a room to a new version": "एक रूम को एक नए संस्करण में अपग्रेड करता है", @@ -334,9 +323,6 @@ "Folder": "फ़ोल्डर", "Pin": "पिन", "Unable to remove contact information": "संपर्क जानकारी निकालने में असमर्थ", - "Yes": "हाँ", - "No": "नहीं", - "Remove": "हटाए", "Invalid Email Address": "अमान्य ईमेल पता", "This doesn't appear to be a valid email address": "यह एक मान्य ईमेल पता प्रतीत नहीं होता है", "Unable to add email address": "ईमेल पता जोड़ने में असमर्थ", @@ -355,7 +341,6 @@ "Phone Number": "फ़ोन नंबर", "Profile picture": "प्रोफ़ाइल फोटो", "Display Name": "प्रदर्शित होने वाला नाम", - "Save": "अमुकनाम्ना", "This room is not accessible by remote Matrix servers": "यह रूम रिमोट मैट्रिक्स सर्वर द्वारा सुलभ नहीं है", "Room information": "रूम जानकारी", "Room version": "रूम का संस्करण", @@ -365,7 +350,6 @@ "Publish this room to the public in %(domain)s's room directory?": "इस कमरे को %(domain)s के कमरे की निर्देशिका में जनता के लिए प्रकाशित करें?", "URL Previews": "URL पूर्वावलोकन", "Failed to change password. Is your password correct?": "पासवर्ड बदलने में विफल। क्या आपका पासवर्ड सही है?", - "Success": "सफल", "Profile": "प्रोफाइल", "Account": "अकाउंट", "Email addresses": "ईमेल पता", @@ -624,6 +608,15 @@ "Single Sign On": "केवल हस्ताक्षर के ऊपर", "Confirm adding this email address by using Single Sign On to prove your identity.": "अपनी पहचान साबित करने के लिए सिंगल साइन ऑन का उपयोग करके इस ईमेल पते को जोड़ने की पुष्टि करें।", "Use Single Sign On to continue": "जारी रखने के लिए सिंगल साइन ऑन का उपयोग करें", + "common": { + "analytics": "एनालिटिक्स", + "error": "त्रुटि", + "mute": "म्यूट", + "offline": "ऑफलाइन", + "password": "पासवर्ड", + "success": "सफल", + "unmute": "अनम्यूट" + }, "action": { "confirm": "पुष्टि", "dismiss": "खारिज", @@ -632,4 +625,4 @@ "close": "बंद", "accept": "स्वीकार" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/hr.json b/src/i18n/strings/hr.json index 51dc7bf2a3c0..ba0d50d6eded 100644 --- a/src/i18n/strings/hr.json +++ b/src/i18n/strings/hr.json @@ -124,7 +124,6 @@ "Upload Failed": "Prijenos neuspješan", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Datoteka '%(fileName)s' premašuje maksimalnu veličinu ovog kućnog poslužitelja za prijenose", "The file '%(fileName)s' failed to upload.": "Prijenos datoteke '%(fileName)s' nije uspio.", - "Continue": "Nastavi", "You do not have permission to start a conference call in this room": "Nemate dopuštenje uspostaviti konferencijski poziv u ovoj sobi", "Permission Required": "Potrebno dopuštenje", "You cannot place a call with yourself.": "Ne možete uspostaviti poziv sami sa sobom.", @@ -139,7 +138,6 @@ "Call failed because webcam or microphone could not be accessed. Check that:": "Poziv nije uspio jer nije bilo moguće pristupiti web kameri ili mikrofonu. Provjerite:", "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Poziv nije uspio jer nije bilo moguće pristupiti mikrofonu. Provjerite je li mikrofon priključen i ispravno postavljen.", "Unable to access microphone": "Nije moguće pristupiti mikrofonu", - "OK": "OK", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Zamolite administratora Vašeg kućnog poslužitelja (%(homeserverDomain)s) da konfigurira TURN poslužitelj kako bi pozivi mogli pouzdano funkcionirati.", "Call failed due to misconfigured server": "Poziv neuspješan radi pogrešno konfiguriranog poslužitelja", "The call was answered on another device.": "Na poziv je odgovoreno sa drugog uređaja.", @@ -149,8 +147,6 @@ "User Busy": "Korisnik zauzet", "Call Failed": "Poziv neuspješan", "Unable to load! Check your network connectivity and try again.": "Učitavanje nije moguće! Provjerite mrežnu povezanost i pokušajte ponovo.", - "Error": "Geška", - "Analytics": "Analitika", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Potvrdite dodavanje ovog telefonskog broja koristeći jedinstvenu prijavu (SSO) da biste dokazali Vaš identitet.", "Confirm adding this email address by using Single Sign On to prove your identity.": "Potvrdite dodavanje ove email adrese koristeći jedinstvenu prijavu (SSO) da biste dokazali Vaš identitet.", "Single Sign On": "Jedinstvena prijava (SSO)", @@ -164,9 +160,13 @@ "Integration manager": "Upravitelj integracijama", "Identity server": "Poslužitelj identiteta", "Could not connect to identity server": "Nije moguće spojiti se na poslužitelja identiteta", + "common": { + "analytics": "Analitika", + "error": "Geška" + }, "action": { "confirm": "Potvrdi", "dismiss": "Odbaci", "trust": "Vjeruj" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 5b7d4a553560..cb8653833b77 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1,15 +1,10 @@ { "Search": "Keresés", - "OK": "Rendben", - "Error": "Hiba", "Failed to forget room %(errCode)s": "A szobát nem sikerült elfelejtetni: %(errCode)s", "Favourite": "Kedvencnek jelölés", - "Mute": "Elnémít", "Notifications": "Értesítések", "Operation failed": "Sikertelen művelet", "powered by Matrix": "a gépházban: Matrix", - "Remove": "Eltávolítás", - "Settings": "Beállítások", "unknown error code": "ismeretlen hibakód", "Account": "Fiók", "Add": "Hozzáadás", @@ -26,9 +21,7 @@ "Always show message timestamps": "Üzenetek időbélyegének megjelenítése mindig", "Authentication": "Azonosítás", "Failed to change password. Is your password correct?": "Nem sikerült megváltoztatni a jelszót. Helyesen írta be a jelszavát?", - "Continue": "Folytatás", "Create new room": "Új szoba létrehozása", - "Start chat": "Csevegés indítása", "%(items)s and %(lastItem)s": "%(items)s és %(lastItem)s", "and %(count)s others...": { "other": "és még: %(count)s ...", @@ -58,7 +51,6 @@ "Current password": "Jelenlegi jelszó", "Custom level": "Egyedi szint", "Deactivate Account": "Fiók felfüggesztése", - "Decline": "Elutasítás", "Decrypt %(text)s": "%(text)s visszafejtése", "Default": "Alapértelmezett", "Displays action": "Megjeleníti a tevékenységet", @@ -96,13 +88,11 @@ "Invalid Email Address": "Érvénytelen e-mail-cím", "Invalid file%(extra)s": "Hibás fájl%(extra)s", "Invited": "Meghívva", - "Invites": "Meghívók", "Invites user with given id to current room": "A megadott azonosítójú felhasználó meghívása a jelenlegi szobába", "Sign in with": "Bejelentkezés ezzel:", "Join Room": "Belépés a szobába", "Jump to first unread message.": "Ugrás az első olvasatlan üzenetre.", "Labs": "Labor", - "Leave room": "Szoba elhagyása", "Low priority": "Alacsony prioritás", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s láthatóvá tette a szoba új üzeneteit minden szobatagnak, a meghívásuk idejétől kezdve.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s láthatóvá tette a szoba új üzeneteit minden szobatagnak, a csatlakozásuk idejétől kezdve.", @@ -119,9 +109,7 @@ "": "", "No display name": "Nincs megjelenítendő név", "No more results": "Nincs több találat", - "No results": "Nincs találat", "No users have specific privileges in this room": "Egy felhasználónak sincsenek specifikus jogosultságai ebben a szobában", - "Password": "Jelszó", "Passwords can't be empty": "A jelszó nem lehet üres", "Permissions": "Jogosultságok", "Phone": "Telefon", @@ -140,7 +128,6 @@ "%(roomName)s does not exist.": "%(roomName)s nem létezik.", "%(roomName)s is not accessible at this time.": "%(roomName)s jelenleg nem érhető el.", "Rooms": "Szobák", - "Save": "Mentés", "Search failed": "Keresés sikertelen", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s képet küldött.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s meghívót küldött %(targetDisplayName)s számára, hogy lépjen be a szobába.", @@ -156,7 +143,6 @@ "Someone": "Valaki", "Start authentication": "Hitelesítés indítása", "Submit": "Elküldés", - "Success": "Sikeres", "This email address is already in use": "Ez az e-mail-cím már használatban van", "This email address was not found": "Az e-mail-cím nem található", "The email address linked to your account must be entered.": "A fiókodhoz kötött e-mail címet add meg.", @@ -172,7 +158,6 @@ "Unable to verify email address.": "Az e-mail cím ellenőrzése sikertelen.", "Unban": "Kitiltás visszavonása", "Unable to enable Notifications": "Az értesítések engedélyezése sikertelen", - "Unmute": "Némítás visszavonása", "Unnamed Room": "Névtelen szoba", "Uploading %(filename)s": "%(filename)s feltöltése", "Uploading %(filename)s and %(count)s others": { @@ -232,7 +217,6 @@ }, "New Password": "Új jelszó", "Start automatically after system login": "Automatikus indítás rendszerindítás után", - "Analytics": "Analitika", "Options": "Lehetőségek", "Passphrases must match": "A jelmondatoknak meg kell egyezniük", "Passphrase must not be empty": "A jelmondat nem lehet üres", @@ -257,7 +241,6 @@ "Drop file here to upload": "Feltöltéshez húzz ide egy fájlt", "Online": "Online", "Idle": "Várakozik", - "Offline": "Nem érhető el", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s megváltoztatta a szoba profilképét: ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s törölte a szoba profilképét.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s megváltoztatta %(roomName)s szoba profilképét", @@ -275,14 +258,12 @@ "Check for update": "Frissítések keresése", "Delete widget": "Kisalkalmazás törlése", "Define the power level of a user": "A felhasználó szintjének meghatározása", - "Edit": "Szerkeszt", "Enable automatic language detection for syntax highlighting": "Nyelv automatikus felismerése a szintaxiskiemeléshez", "AM": "de.", "PM": "du.", "Unable to create widget.": "Nem lehet kisalkalmazást létrehozni.", "You are not in this room.": "Nem tagja ennek a szobának.", "You do not have permission to do that in this room.": "Nincs jogosultsága ezt tenni ebben a szobában.", - "Create": "Létrehozás", "Automatically replace plain text Emoji": "Egyszerű szöveg automatikus cseréje emodzsira", "Publish this room to the public in %(domain)s's room directory?": "Publikálod a szobát a(z) %(domain)s szoba listájába?", "%(widgetName)s widget added by %(senderName)s": "%(senderName)s hozzáadta a %(widgetName)s kisalkalmazást", @@ -300,7 +281,6 @@ "Ignores a user, hiding their messages from you": "Figyelmen kívül hagy egy felhasználót, elrejtve az üzeneteit", "Banned by %(displayName)s": "Kitiltotta: %(displayName)s", "Description": "Leírás", - "Leave": "Elhagyás", "Unknown": "Ismeretlen", "Jump to read receipt": "Olvasási visszaigazolásra ugrás", "Message Pinning": "Üzenet kitűzése", @@ -310,7 +290,6 @@ "other": "És még %(count)s..." }, "Mention": "Megemlítés", - "Invite": "Meghívás", "Delete Widget": "Kisalkalmazás törlése", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "A kisalkalmazás törlése minden felhasználót érint a szobában. Biztos, hogy törli a kisalkalmazást?", "Mirror local video feed": "Helyi videófolyam tükrözése", @@ -469,7 +448,6 @@ "Toolbox": "Eszköztár", "Collecting logs": "Naplók összegyűjtése", "Invite to this room": "Meghívás a szobába", - "Quote": "Idézés", "Send logs": "Naplófájlok elküldése", "All messages": "Összes üzenet", "Call invitation": "Hívásmeghívások", @@ -482,7 +460,6 @@ "Search…": "Keresés…", "Logs sent": "Napló elküldve", "Back": "Vissza", - "Reply": "Válasz", "Show message in desktop notification": "Üzenet megjelenítése az asztali értesítésekben", "Messages in group chats": "A csoportos csevegések üzenetei", "Yesterday": "Tegnap", @@ -492,7 +469,6 @@ "Wednesday": "Szerda", "Event Type": "Esemény típusa", "Event sent!": "Az esemény elküldve!", - "View Source": "Forrás megjelenítése", "Event Content": "Esemény tartalma", "Thank you!": "Köszönjük!", "Missing roomId.": "Hiányzó szobaazonosító.", @@ -569,13 +545,11 @@ "Unable to load! Check your network connectivity and try again.": "A betöltés sikertelen. Ellenőrizze a hálózati kapcsolatot, és próbálja újra.", "Delete Backup": "Mentés törlése", "Unable to load key backup status": "A mentett kulcsok állapotát nem lehet betölteni", - "Next": "Következő", "That matches!": "Egyeznek!", "That doesn't match.": "Nem egyeznek.", "Go back to set it again.": "Lépj vissza és állítsd be újra.", "Download": "Letöltés", "Unable to create key backup": "Kulcs mentés sikertelen", - "Retry": "Újra", "Unable to load backup status": "A mentés állapotát nem lehet lekérdezni", "Unable to restore backup": "A mentést nem lehet helyreállítani", "No backup found!": "Mentés nem található!", @@ -650,8 +624,6 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Az ezzel felhasználóval váltott biztonságos üzenetek végpontok közti titkosítással védettek, és azt harmadik fél nem tudja elolvasni.", "Got It": "Megértettem", "Verify this user by confirming the following number appears on their screen.": "Ellenőrizze ezt a felhasználót azzal, hogy megerősíti, hogy a következő szám jelenik meg a képernyőjén.", - "Yes": "Igen", - "No": "Nem", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "E-mail üzenetet küldtünk Önnek, hogy ellenőrizzük a címét. Kövesse az ott leírt utasításokat, és kattintson az alábbi gombra.", "Email Address": "E-mail cím", "All keys backed up": "Az összes kulcs elmentve", @@ -699,7 +671,6 @@ "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Ellenőrizd ezt a felhasználót, hogy megbízhatónak lehessen tekinteni. Megbízható felhasználók további nyugalmat jelenthetnek ha végpontól végpontig titkosítást használsz.", "Incoming Verification Request": "Bejövő Hitelesítési Kérés", "Go back": "Vissza", - "Username": "Felhasználói név", "Email (optional)": "E-mail (nem kötelező)", "Phone (optional)": "Telefonszám (nem kötelező)", "Join millions for free on the largest public server": "Csatlakozzon több millió felhasználóhoz ingyen a legnagyobb nyilvános szerveren", @@ -1051,7 +1022,6 @@ "Report Content to Your Homeserver Administrator": "Tartalom bejelentése a Matrix-kiszolgáló rendszergazdájának", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Az üzenet bejelentése egy egyedi „eseményazonosítót” küld el a Matrix-kiszolgáló rendszergazdájának. Ha az üzenetek titkosítottak a szobában, akkor a Matrix-kiszolgáló rendszergazdája nem tudja elolvasni az üzenetet, vagy nem tudja megnézni a fájlokat vagy képeket.", "Send report": "Jelentés küldése", - "Report Content": "Tartalom jelentése", "Read Marker lifetime (ms)": "Olvasási visszajelzés érvényessége (ms)", "Read Marker off-screen lifetime (ms)": "Olvasási visszajelzés érvényessége a képernyőn kívül (ms)", "Changes the avatar of the current room": "Megváltoztatja a profilképét a jelenlegi szobában", @@ -1106,7 +1076,6 @@ "Objects": "Tárgyak", "Symbols": "Szimbólumok", "Flags": "Zászlók", - "React": "Reakció", "Cancel search": "Keresés megszakítása", "Jump to first unread room.": "Ugrás az első olvasatlan szobához.", "Jump to first invite.": "Újrás az első meghívóhoz.", @@ -1157,7 +1126,6 @@ "Trusted": "Megbízható", "Not trusted": "Megbízhatatlan", "Messages in this room are end-to-end encrypted.": "Az üzenetek a szobában végponttól végpontig titkosítottak.", - "Security": "Biztonság", "Any of the following data may be shared:": "Az alábbi adatok közül bármelyik megosztásra kerülhet:", "Your display name": "Saját megjelenítendő neve", "Your user ID": "Saját felhasználói azonosítója", @@ -1191,7 +1159,6 @@ "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "A szoba frissítése nem egyszerű művelet, általában a szoba hibás működése, hiányzó funkció vagy biztonsági sérülékenység esetén javasolt.", "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "Ez általában a szoba kiszolgálóoldali kezelésében jelent változást. Ha a(z) %(brand)s kliensben tapasztal problémát, akkor küldjön egy hibajelentést.", "You'll upgrade this room from to .": " verzióról verzióra fogja fejleszteni a szobát.", - "Reactions": "Reakciók", " wants to chat": " csevegni szeretne", "Start chatting": "Beszélgetés elkezdése", "Cross-signing public keys:": "Az eszközök közti hitelesítés nyilvános kulcsai:", @@ -1234,7 +1201,6 @@ "Go": "Meghívás", "Show info about bridges in room settings": "Híd információk megjelenítése a szobabeállításokban", "This bridge is managed by .": "Ezt a hidat a következő kezeli: .", - "Suggestions": "Javaslatok", "Failed to find the following users": "Az alábbi felhasználók nem találhatók", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Az alábbi felhasználók nem léteznek vagy hibásan vannak megadva, és nem lehet őket meghívni: %(csvNames)s", "Lock": "Lakat", @@ -1253,8 +1219,6 @@ "about a day from now": "egy nap múlva", "%(num)s days from now": "%(num)s nap múlva", "Restore": "Visszaállítás", - "Start": "Indít", - "Done": "Kész", "Go Back": "Vissza", "Other users may not trust it": "Más felhasználók lehet, hogy nem bíznak benne", "Later": "Később", @@ -1285,13 +1249,11 @@ "Show less": "Kevesebb megjelenítése", "Manage": "Kezelés", "Securely cache encrypted messages locally for them to appear in search results.": "A titkosított üzenetek biztonságos helyi gyorsítótárazása, hogy megjelenhessenek a keresési találatok között.", - "Enable": "Engedélyezés", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "A titkosított üzenetek biztonságos helyi tárolásához hiányzik néhány összetevő a(z) %(brand)s alkalmazásból. Ha kísérletezni szeretne ezzel a funkcióval, akkor állítson össze egy egyéni asztali %(brand)s alkalmazást, amely tartalmazza a keresési összetevőket.", "Message search": "Üzenet keresése", "This room is bridging messages to the following platforms. Learn more.": "Ez a szoba áthidalja az üzeneteket a felsorolt platformok felé. Tudjon meg többet.", "Bridges": "Hidak", "If disabled, messages from encrypted rooms won't appear in search results.": "Ha nincs engedélyezve akkor a titkosított szobák üzenetei nem jelennek meg a keresések között.", - "Disable": "Tiltás", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s a kereshetőség érdekében a titkosított üzeneteket biztonságos módon helyileg tárolja:", "Space used:": "Felhasznált hely:", "Indexed messages:": "Indexált üzenetek:", @@ -1342,7 +1304,6 @@ "If you can't scan the code above, verify by comparing unique emoji.": "Ha nem tudod beolvasni az alábbi kódot, ellenőrizd az egyedi emodzsik összehasonlításával.", "You've successfully verified %(displayName)s!": "Sikeresen ellenőrizted a felhasználót: %(displayName)s!", "Got it": "Értem", - "Encryption enabled": "Titkosítás bekapcsolva", "Encryption not enabled": "Titkosítás nincs engedélyezve", "The encryption used by this room isn't supported.": "A szobában használt titkosítás nem támogatott.", "Clear all data in this session?": "Minden adat törlése ebben a munkamenetben?", @@ -1356,7 +1317,6 @@ "Cancel entering passphrase?": "Megszakítja a jelmondat bevitelét?", "Confirm your identity by entering your account password below.": "A fiók jelszó megadásával erősítsd meg a személyazonosságodat.", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Fejleszd ezt a munkamenetet, hogy más munkameneteket is tudj vele hitelesíteni, azért, hogy azok hozzáférhessenek a titkosított üzenetekhez és megbízhatónak legyenek jelölve más felhasználók számára.", - "Copy": "Másolás", "Create key backup": "Kulcs mentés készítése", "This session is encrypting history using the new recovery method.": "Ez a munkamenet az új helyreállítási móddal titkosítja a régi üzeneteket.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Ha véletlenül tette, akkor beállíthatja a biztonságos üzeneteket ebben a munkamenetben, ami újra titkosítja a régi üzeneteket a helyreállítási móddal.", @@ -1431,7 +1391,6 @@ "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "Állíts be címet ehhez a szobához, hogy a felhasználók a matrix szervereden megtalálhassák (%(localDomain)s)", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "A titkosított szobákban az üzenete biztonságban van, és csak Ön és a címzettek rendelkeznek a visszafejtéshez szükséges egyedi kulcsokkal.", "Verify all users in a room to ensure it's secure.": "Ellenőrizze a szoba összes tagját, hogy meggyőződjön a biztonságáról.", - "Verification cancelled": "Ellenőrzés megszakítva", "Enter the name of a new server you want to explore.": "Add meg a felfedezni kívánt új szerver nevét.", "Server name": "Szerver neve", "a new master key signature": "az új mester kulcs aláírás", @@ -1564,7 +1523,6 @@ "Use a different passphrase?": "Másik jelmondat használata?", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "A kiszolgáló rendszergazdája alapértelmezetten kikapcsolta a végpontok közötti titkosítást a privát szobákban és a közvetlen beszélgetésekben.", "No recently visited rooms": "Nincsenek nemrégiben meglátogatott szobák", - "People": "Emberek", "Sort by": "Rendezés", "Message preview": "Üzenet előnézet", "List options": "Lista beállításai", @@ -1588,8 +1546,6 @@ "Use a system font": "Rendszer betűkészletének használata", "System font name": "Rendszer betűkészletének neve", "Hey you. You're the best!": "Szia! Te vagy a legjobb!", - "Message layout": "Üzenet elrendezése", - "Modern": "Modern", "The authenticity of this encrypted message can't be guaranteed on this device.": "A titkosított üzenetek valódiságát ezen az eszközön nem lehet garantálni.", "You joined the call": "Csatlakozott a hívásba", "%(senderName)s joined the call": "%(senderName)s csatlakozott a hívásba", @@ -1621,7 +1577,6 @@ "Notification options": "Értesítési beállítások", "Favourited": "Kedvencnek jelölt", "Forget Room": "Szoba elfelejtése", - "User menu": "Felhasználói menü", "This room is public": "Ez egy nyilvános szoba", "Away": "Távol", "Are you sure you want to cancel entering passphrase?": "Biztos, hogy megszakítja a jelmondat bevitelét?", @@ -1666,7 +1621,6 @@ "Unknown App": "Ismeretlen alkalmazás", "Privacy": "Adatvédelem", "Not encrypted": "Nem titkosított", - "About": "Névjegy", "Room settings": "Szoba beállítások", "Take a picture": "Fénykép készítése", "Unpin": "Leszedés", @@ -1736,7 +1690,6 @@ "Send feedback": "Visszajelzés küldése", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "Tipp: Ha hibajegyet készítesz, légyszíves segíts a probléma feltárásában azzal, hogy elküldöd a részletes naplót.", "Please view existing bugs on Github first. No match? Start a new one.": "Először nézd meg, hogy van-e már jegy róla a Github-on. Nincs? Adj fel egy új jegyet.", - "Report a bug": "Hibajegy feladása", "Comment": "Megjegyzés", "Bermuda": "Bermuda", "Benin": "Benin", @@ -2014,7 +1967,6 @@ "There was a problem communicating with the homeserver, please try again later.": "A kiszolgálóval való kommunikáció során probléma történt, próbálja újra.", "New here? Create an account": "Új vagy? Készíts egy fiókot", "Got an account? Sign in": "Van már fiókod? Jelentkezz be", - "Forgot password?": "Elfelejtetted a jelszót?", "That phone number doesn't look quite right, please check and try again": "Ez a telefonszám nem tűnik teljesen helyesnek, kérlek ellenőrizd újra", "Enter phone number": "Telefonszám megadása", "Enter email address": "E-mail cím megadása", @@ -2090,7 +2042,6 @@ "Add an email to be able to reset your password.": "Adj meg egy e-mail címet, hogy vissza tudd állítani a jelszavad.", "Just a heads up, if you don't add an email and forget your password, you could permanently lose access to your account.": "Csak egy figyelmeztetés, ha nem ad meg e-mail-címet, és elfelejti a jelszavát, akkor véglegesen elveszíti a hozzáférést a fiókjához.", "Server Options": "Szerver lehetőségek", - "Learn more": "További információk", "About homeservers": "A Matrix-kiszolgálókról", "Use your preferred Matrix homeserver if you have one, or host your own.": "Használja a választott Matrix-kiszolgálóját, ha van ilyenje, vagy üzemeltessen egy sajátot.", "Other homeserver": "Másik Matrix-kiszolgáló", @@ -2200,7 +2151,6 @@ "Who are you working with?": "Kivel dolgozik együtt?", "Skip for now": "Kihagy egyenlőre", "Failed to create initial space rooms": "Térhez tartozó kezdő szobákat nem sikerült elkészíteni", - "Room name": "Szoba neve", "Support": "Támogatás", "Random": "Véletlen", "Welcome to ": "Üdvözöl a(z) ", @@ -2374,7 +2324,6 @@ "If you have permissions, open the menu on any message and select Pin to stick them here.": "Ha van hozzá jogosultsága, nyissa meg a menüt bármelyik üzenetben és válassza a Kitűzés menüpontot a kitűzéshez.", "Or send invite link": "Vagy meghívó link küldése", "Search for rooms or people": "Szobák vagy emberek keresése", - "Forward message": "Üzenet továbbítása", "Sent": "Elküldve", "You don't have permission to do this": "Nincs jogosultsága ehhez", "Error - Mixed content": "Hiba – Vegyes tartalom", @@ -2428,7 +2377,6 @@ "Collapse reply thread": "Üzenetszál összecsukása", "Show preview": "Előnézet megjelenítése", "View source": "Forrás megtekintése", - "Forward": "Továbbítás", "Settings - %(spaceName)s": "Beállítások – %(spaceName)s", "Report the entire room": "Az egész szoba jelentése", "Spam or propaganda": "Kéretlen tartalom vagy propaganda", @@ -2492,7 +2440,6 @@ "Visible to space members": "Tér tagság számára látható", "Public room": "Nyilvános szoba", "Private room (invite only)": "Privát szoba (csak meghívóval)", - "Create a room": "Szoba létrehozása", "Only people invited will be able to find and join this room.": "Csak a meghívott emberek fogják megtalálni és tudnak belépni a szobába.", "Anyone will be able to find and join this room, not just members of .": "Bárki megtalálhatja és beléphet a szobába, nem csak tér tagsága.", "You can change this at any time from room settings.": "A szoba beállításokban ezt bármikor megváltoztathatja.", @@ -2500,8 +2447,6 @@ "Share content": "Tartalom megosztása", "Application window": "Alkalmazásablak", "Share entire screen": "A teljes képernyő megosztása", - "Image": "Kép", - "Sticker": "Matrica", "The call is in an unknown state!": "A hívás ismeretlen állapotban van!", "An unknown error occurred": "Ismeretlen hiba történt", "Their device couldn't start the camera or microphone": "A másik fél eszköze nem képes használni a kamerát vagy a mikrofont", @@ -2620,7 +2565,6 @@ "Change space avatar": "Tér profilképének megváltoztatása", "Anyone in can find and join. You can select other spaces too.": "A(z) téren bárki megtalálhatja és beléphet. Kiválaszthat más tereket is.", "Message didn't send. Click for info.": "Az üzenet nincs elküldve. Kattintson az információkért.", - "Message": "Üzenet", "To join a space you'll need an invite.": "A térre való belépéshez meghívóra van szükség.", "%(reactors)s reacted with %(content)s": "%(reactors)s reagált: %(content)s", "Would you like to leave the rooms in this space?": "Ki szeretne lépni ennek a térnek minden szobájából?", @@ -2770,7 +2714,6 @@ "Home is useful for getting an overview of everything.": "A Kezdőlap áttekintést adhat mindenről.", "Show all threads": "Minden üzenetszál megjelenítése", "Keep discussions organised with threads": "Beszélgetések üzenetszálakba rendezése", - "Copy link": "Hivatkozás másolása", "Mentions only": "Csak megemlítések", "Forget": "Elfelejtés", "Files": "Fájlok", @@ -3148,7 +3091,6 @@ "Share for %(duration)s": "Megosztás eddig: %(duration)s", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "A hibakeresési napló alkalmazáshasználati adatokat tartalmaz, amely tartalmazza a felhasználónevét, a felkeresett szobák azonosítóit vagy álneveit, az utolsó felhasználói felület elemét, amelyet használt, valamint a többi felhasználó neveit. A csevegési üzenetek szövegét nem tartalmazza.", "Developer tools": "Fejlesztői eszközök", - "Video": "Videó", "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.": "A(z) %(brand)s kísérleti állapotban van a mobilos webböngészőkben. A jobb élmény és a legújabb funkciók használatához használja az ingyenes natív alkalmazásunkat.", "%(value)ss": "%(value)s mp", "%(value)sm": "%(value)s p", @@ -3737,7 +3679,6 @@ "Adding…": "Hozzáadás…", "Declining…": "Elutasítás…", "Rejecting invite…": "Meghívó elutasítása…", - "Loading…": "Betöltés…", "Joining room…": "Belépés a szobába…", "Joining space…": "Belépés a térbe…", "Encrypting your message…": "Üzenet titkosítása…", @@ -3851,6 +3792,35 @@ "%(oldDisplayName)s changed their display name and profile picture": "%(oldDisplayName)s megváltoztatta a megjelenítendő nevét és profilképét", "Failed to download source media, no source url was found": "A forrásmédia letöltése sikertelen, nem található forráswebcím", "Unable to create room with moderation bot": "Nem hozható létre szoba moderációs bottal", + "common": { + "about": "Névjegy", + "analytics": "Analitika", + "encryption_enabled": "Titkosítás bekapcsolva", + "error": "Hiba", + "forward_message": "Üzenet továbbítása", + "image": "Kép", + "loading": "Betöltés…", + "message": "Üzenet", + "message_layout": "Üzenet elrendezése", + "modern": "Modern", + "mute": "Elnémít", + "no_results": "Nincs találat", + "offline": "Nem érhető el", + "password": "Jelszó", + "people": "Emberek", + "reactions": "Reakciók", + "report_a_bug": "Hibajegy feladása", + "room_name": "Szoba neve", + "security": "Biztonság", + "settings": "Beállítások", + "sticker": "Matrica", + "success": "Sikeres", + "suggestions": "Javaslatok", + "unmute": "Némítás visszavonása", + "username": "Felhasználói név", + "verification_cancelled": "Ellenőrzés megszakítva", + "video": "Videó" + }, "action": { "reject": "Elutasítás", "confirm": "Megerősítés", @@ -3875,5 +3845,8 @@ "share": "Megosztás", "skip": "Kihagy", "logout": "Kilépés" + }, + "a11y": { + "user_menu": "Felhasználói menü" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index b1c8cb4c351f..cf1f7e47be0f 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -11,14 +11,12 @@ "Change Password": "Ubah Kata Sandi", "Commands": "Perintah", "Confirm password": "Konfirmasi kata sandi", - "Continue": "Lanjut", "Current password": "Kata sandi sekarang", "Deactivate Account": "Nonaktifkan Akun", "Email": "Email", "Email address": "Alamat email", "Attachment": "Lampiran", "Command error": "Perintah gagal", - "Decline": "Tolak", "Default": "Bawaan", "Download %(text)s": "Unduh %(text)s", "Export": "Ekspor", @@ -30,14 +28,10 @@ "Invalid Email Address": "Alamat Email Tidak Absah", "Invited": "Diundang", "Sign in with": "Masuk dengan", - "Leave room": "Tinggalkan ruangan", "Low priority": "Prioritas rendah", - "Mute": "Bisukan", "Name": "Nama", "New passwords don't match": "Kata sandi baru tidak cocok", "": "", - "No results": "Tidak ada hasil", - "OK": "OK", "Operation failed": "Operasi gagal", "Passwords can't be empty": "Kata sandi tidak boleh kosong", "Permissions": "Izin", @@ -47,17 +41,14 @@ "%(brand)s version:": "Versi %(brand)s:", "Return to login screen": "Kembali ke halaman masuk", "Rooms": "Ruangan", - "Save": "Simpan", "Search": "Cari", "Search failed": "Pencarian gagal", "Server error": "Kesalahan server", "Session ID": "ID Sesi", - "Settings": "Pengaturan", "Sign in": "Masuk", "Sign out": "Keluar", "Someone": "Seseorang", "Submit": "Kirim", - "Success": "Berhasil", "This email address was not found": "Alamat email ini tidak ditemukan", "Unable to add email address": "Tidak dapat menambahkan alamat email", "Unable to verify email address.": "Tidak dapat memverifikasi alamat email.", @@ -117,7 +108,6 @@ "On": "Nyala", "Changelog": "Changelog", "Waiting for response from server": "Menunggu respon dari server", - "Leave": "Tinggalkan", "Warning": "Peringatan", "This Room": "Ruangan ini", "Noisy": "Berisik", @@ -141,9 +131,7 @@ "Failed to forget room %(errCode)s": "Gagal melupakan ruangan %(errCode)s", "Wednesday": "Rabu", "You cannot delete this message. (%(code)s)": "Anda tidak dapat menghapus pesan ini. (%(code)s)", - "Quote": "Kutip", "Send": "Kirim", - "Error": "Kesalahan", "Send logs": "Kirim catatan", "All messages": "Semua pesan", "Call invitation": "Undangan panggilan", @@ -159,14 +147,11 @@ "Low Priority": "Prioritas Rendah", "Off": "Mati", "Failed to remove tag %(tagName)s from room": "Gagal menghapus tanda %(tagName)s dari ruangan", - "Remove": "Hapus", "Failed to change password. Is your password correct?": "Gagal untuk mengubah kata sandi. Apakah kata sandi Anda benar?", - "View Source": "Tampilkan Sumber", "Thank you!": "Terima kasih!", "This email address is already in use": "Alamat email ini telah dipakai", "This phone number is already in use": "Nomor telepon ini telah dipakai", "Failed to verify email address: make sure you clicked the link in the email": "Gagal memverifikasi alamat email: pastikan Anda telah menekan link di dalam email", - "Analytics": "Analitik", "Call Failed": "Panggilan Gagal", "Permission Required": "Izin Dibutuhkan", "You do not have permission to start a conference call in this room": "Anda tidak memiliki permisi untuk memulai panggilan konferensi di ruang ini", @@ -586,9 +571,7 @@ "Toolbox": "Kotak Peralatan", "expand": "buka", "collapse": "tutup", - "Username": "Nama Pengguna", "Code": "Kode", - "Next": "Lanjut", "Refresh": "Muat Ulang", "%(oneUser)sleft %(count)s times": { "one": "%(oneUser)skeluar", @@ -606,7 +589,6 @@ "one": "%(severalUsers)sbergabung", "other": "%(severalUsers)sbergabung %(count)s kali" }, - "Invite": "Undang", "Mention": "Sebutkan", "Unknown": "Tidak Dikenal", "%(duration)sd": "%(duration)sh", @@ -616,18 +598,12 @@ "Unignore": "Hilangkan Abaian", "Ignore": "Abaikan", "Copied!": "Disalin!", - "Create": "Buat", "Description": "Deskripsi", "Users": "Pengguna", "Emoji": "Emoji", "Room": "Ruangan", "Phone": "Ponsel", - "Password": "Kata Sandi", - "Edit": "Edit", - "Unmute": "Suarakan", "Historical": "Riwayat", - "Invites": "Undangan", - "Offline": "Luring", "Idle": "Idle", "Online": "Daring", "Anyone": "Siapa Saja", @@ -646,7 +622,6 @@ "Comment": "Komentar", "Homeserver": "Homeserver", "Information": "Informasi", - "About": "Tentang", "Widgets": "Widget", "Favourited": "Difavorit", "A-Z": "A-Z", @@ -671,17 +646,13 @@ "Matrix": "Matrix", "Categories": "Categori", "Go": "Mulai", - "Suggestions": "Saran", - "Done": "Selesai", "Unencrypted": "Tidak Dienkripsi", "Mod": "Mod", "Bridges": "Jembatan", "Cross-signing": "Penandatanganan silang", - "Copy": "Salin", "Manage": "Kelola", "exists": "sudah ada", "Lock": "Gembok", - "Enable": "Aktifkan", "Later": "Nanti", "Review": "Lihat", "Document": "Dokumen", @@ -689,14 +660,9 @@ "Symbols": "Simbol", "Objects": "Obyek", "Activities": "Aktivitas", - "React": "Bereaksi", - "Reactions": "Reaksi", - "Start": "Mulai", - "Security": "Keamanan", "Trusted": "Dipercayai", "Accepting…": "Menerima…", "Appearance": "Tampilan", - "People": "Orang", "Strikethrough": "Coret", "Italics": "Miring", "Bold": "Tebal", @@ -713,7 +679,6 @@ "Scissors": "Gunting", "Cancelling…": "Membatalkan…", "Ok": "Ok", - "Disable": "Nonaktifkan", "Success!": "Berhasil!", "View": "Pratinjau", "Summary": "Kesimpulan", @@ -785,9 +750,7 @@ "Cat": "Kucing", "Dog": "Anjing", "Guest": "Tamu", - "Reply": "Balas", "Download": "Unduh", - "Retry": "Coba Ulang", "Demote": "Turunkan", "Stickerpack": "Paket Stiker", "Replying": "Membalas", @@ -801,8 +764,6 @@ "Encryption": "Enkripsi", "General": "Umum", "Verified!": "Terverifikasi!", - "No": "Tidak", - "Yes": "Ya", "Emoji Autocomplete": "Penyelesaian Otomatis Emoji", "Deactivate user?": "Nonaktifkan pengguna?", "Code block": "Blok kode", @@ -933,7 +894,6 @@ "Confirm Removal": "Konfirmasi Penghapusan", "Invalid file%(extra)s": "File tidak absah%(extra)s", "not specified": "tidak ditentukan", - "Start chat": "Mulai obrolan", "Join Room": "Bergabung dengan Ruangan", "Privileged Users": "Pengguna Istimewa", "URL Previews": "Tampilan URL", @@ -956,18 +916,14 @@ "Format": "Format", "MB": "MB", "Custom level": "Tingkat kustom", - "Image": "Gambar", - "Sticker": "Stiker", "Decrypting": "Mendekripsi", "Downloading": "Mengunduh", - "Message": "Pesan", "Threads": "Utasan", "Forget room": "Lupakan ruangan", "Thread": "Utasan", "Access": "Akses", "Global": "Global", "Keyword": "Kata kunci", - "Modern": "Modern", "Rename": "Ubah Nama", "Visibility": "Visibilitas", "Address": "Alamat", @@ -978,7 +934,6 @@ "Pause": "Jeda", "Avatar": "Avatar", "Beta": "Beta", - "Forward": "Teruskan", "Hold": "Jeda", "Transfer": "Pindah", "Sending": "Mengirim", @@ -1240,7 +1195,6 @@ "Error saving notification preferences": "Gagal menyimpan preferensi notifikasi", "Messages containing keywords": "Pesan berisi kata kunci", "Message bubbles": "Gelembung pesan", - "Message layout": "Tata letak pesan", "Updating spaces... (%(progress)s out of %(count)s)": { "one": "Memperbarui space...", "other": "Memperbarui space... (%(progress)s dari %(count)s)" @@ -1929,7 +1883,6 @@ "The encryption used by this room isn't supported.": "Enkripsi yang digunakan di ruangan ini tidak didukung.", "Encryption not enabled": "Enkripsi tidak diaktifkan", "Ignored attempt to disable encryption": "Mengabaikan percobaan untuk menonaktifkan enkripsi", - "Encryption enabled": "Enkripsi diaktifkan", "Some encryption parameters have been changed.": "Beberapa parameter enkripsi telah diubah.", "The call is in an unknown state!": "Panggilan ini berada di status yang tidak diketahui!", "Missed call": "Panggilan terlewat", @@ -1941,7 +1894,6 @@ "No answer": "Tidak ada jawaban", "Call back": "Panggil ulang", "Call declined": "Panggilan ditolak", - "Verification cancelled": "Verifikasi dibatalkan", "You cancelled verification.": "Anda membatalkan verifikasi.", "%(displayName)s cancelled verification.": "%(displayName)s membatalkan verifikasi.", "Verification timed out.": "Waktu habis untuk memverifikasi.", @@ -2053,7 +2005,6 @@ "Topic (optional)": "Topik (opsional)", "Create a private room": "Buat sebuah ruangan privat", "Create a public room": "Buat sebuah ruangan publik", - "Create a room": "Buat sebuah ruangan", "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.": "Anda mungkin menonaktifkannya jika ruangan ini akan digunakan untuk berkolabroasi dengan tim eksternal yang mempunyai homeserver sendiri. Ini tidak dapat diubah nanti.", "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.": "Anda mungkin aktifkan jika ruangan ini hanya digunakan untuk berkolabroasi dengan tim internal di homeserver Anda. Ini tidak dapat diubah nanti.", "Enable end-to-end encryption": "Aktifkan enkripsi ujung ke ujung", @@ -2227,7 +2178,6 @@ "Cancel search": "Batalkan pencarian", "Other homeserver": "Homeserver lainnya", "You'll upgrade this room from to .": "Anda akan meningkatkan ruangan ini dari ke .", - "Learn more": "Pelajari lebih lanjut", "Use your preferred Matrix homeserver if you have one, or host your own.": "Gunakan homeserver Matrix yang Anda inginkan jika Anda punya satu, atau host sendiri.", "We call the places where you can host your account 'homeservers'.": "Kami memanggil tempat-tempat yang Anda dapat menghost akun Anda sebagai 'homeserver'.", "Sign into your homeserver": "Masuk ke homeserver Anda", @@ -2271,7 +2221,6 @@ "Spam or propaganda": "Spam atau propaganda", "Illegal Content": "Konten Ilegal", "Toxic Behaviour": "Kelakukan Toxic", - "Report Content": "Laporkan Konten", "Please pick a nature and describe what makes this message abusive.": "Harap pilih sifat dan jelaskan apa yang membuat pesan ini kasar.", "Any other reason. Please describe the problem.\nThis will be reported to the room moderators.": "Alasan yang lain. Mohon jelaskan masalahnya.\nIni akan dilaporkan ke moderator ruangan.", "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s. The administrators will NOT be able to read the encrypted content of this room.": "Ruangan ini khusus untuk konten ilegal atau toxic atau moderator gagal untuk memoderasikan konten ilegal atau toxic.\nIni akan dilaporkan ke administrator %(homeserver)s. Administrator TIDAK akan dapat membaca konten yang terenkripsi di ruangan ini.", @@ -2285,11 +2234,9 @@ "Your platform and username will be noted to help us use your feedback as much as we can.": "Platform dan nama pengguna Anda akan dicatat untuk membantu kami menggunakan masukan Anda sebanyak yang kita bisa.", "Search for rooms or people": "Cari ruangan atau orang", "Message preview": "Tampilan pesan", - "Forward message": "Teruskan pesan", "You don't have permission to do this": "Anda tidak memiliki izin untuk melakukannya", "Send feedback": "Kirimkan masukan", "Please view existing bugs on Github first. No match? Start a new one.": "Mohon lihat bug yang sudah ada di GitHub dahulu. Tidak ada? Buat yang baru.", - "Report a bug": "Laporkan sebuah bug", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "Jika Anda membuat issue, silakan kirimkan log pengawakutu untuk membantu kami menemukan masalahnya.", "Feedback sent": "Masukan terkirim", "Include Attachments": "Tambahkan Lampiran", @@ -2340,7 +2287,6 @@ "one": "Saat ini bergabung dengan %(count)s ruangan", "other": "Saat ini bergabung dengan %(count)s ruangan" }, - "User menu": "Menu pengguna", "Switch theme": "Ubah tema", "Switch to dark mode": "Ubah ke mode gelap", "Switch to light mode": "Ubah ke mode terang", @@ -2381,7 +2327,6 @@ "What do you want to organise?": "Apa saja yang Anda ingin organisirkan?", "Skip for now": "Lewat untuk sementara", "Failed to create initial space rooms": "Gagal membuat ruangan space awal", - "Room name": "Nama ruangan", "Welcome to ": "Selamat datang di ", " invites you": " mengundang Anda", "Private space": "Space pribadi", @@ -2459,7 +2404,6 @@ "Other users can invite you to rooms using your contact details": "Pengguna lain dapat mengundang Anda ke ruangan menggunakan detail kontak Anda", "Enter email address (required on this homeserver)": "Masukkan alamat email (diperlukan di homeserver ini)", "Use an email address to recover your account": "Gunakan sebuah alamat email untuk memulihkan akun Anda", - "Forgot password?": "Lupa kata sandi?", "That phone number doesn't look quite right, please check and try again": "Nomor teleponnya tidak terlihat benar, mohon periksa dan coba lagi", "Enter phone number": "Masukkan nomor telepon", "Password is allowed, but unsafe": "Kata sandi diperbolehkan, tetapi tidak aman", @@ -2492,7 +2436,6 @@ "Manage & explore rooms": "Kelola & jelajahi ruangan", "Add space": "Tambahkan space", "See room timeline (devtools)": "Lihat lini masa ruangan (alat pengembang)", - "Copy link": "Salin tautan", "Mentions only": "Sebutan saja", "Forget": "Lupakan", "View in room": "Tampilkan di ruangan", @@ -3113,7 +3056,6 @@ "Next recently visited room or space": "Ruangan atau space berikut yang dikunjungi", "Previous recently visited room or space": "Ruangan atau space yang dikunjungi sebelumnya", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Catatan pengawakutu berisi data penggunaan aplikasi termasuk nama pengguna Anda, ID atau alias ruangan yang telah Anda kunjungi, elemen UI apa saja yang Anda terakhir berinteraksi, dan nama pengguna lain. Mereka tidak berisi pesan.", - "Video": "Video", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use %(brand)s with an existing Matrix account on a different homeserver.": "Anda dapat menggunakan opsi server khusus untuk masuk ke server Matrix lain dengan menentukan URL homeserver yang berbeda. Ini memungkinkan Anda untuk menggunakan %(brand)s dengan akun Matrix yang ada di homeserver yang berbeda.", "%(brand)s was denied permission to fetch your location. Please allow location access in your browser settings.": "Izin %(brand)s ditolak untuk mengakses lokasi Anda. Mohon izinkan akses lokasi di pengaturan peramban Anda.", "Developer tools": "Alat pengembang", @@ -3738,7 +3680,6 @@ "Adding…": "Menambahkan…", "Write something…": "Tulis sesuatu…", "Rejecting invite…": "Menolak undangan…", - "Loading…": "Memuat…", "Joining room…": "Bergabung dengan ruangan…", "Joining space…": "Bergabung dengan space…", "Encrypting your message…": "Mengenkripsi pesan Anda…", @@ -3952,6 +3893,35 @@ "Deny": "Tolak", "Asking to join": "Meminta untuk bergabung", "No requests": "Tidak ada permintaan", + "common": { + "about": "Tentang", + "analytics": "Analitik", + "encryption_enabled": "Enkripsi diaktifkan", + "error": "Kesalahan", + "forward_message": "Teruskan pesan", + "image": "Gambar", + "loading": "Memuat…", + "message": "Pesan", + "message_layout": "Tata letak pesan", + "modern": "Modern", + "mute": "Bisukan", + "no_results": "Tidak ada hasil", + "offline": "Luring", + "password": "Kata Sandi", + "people": "Orang", + "reactions": "Reaksi", + "report_a_bug": "Laporkan sebuah bug", + "room_name": "Nama ruangan", + "security": "Keamanan", + "settings": "Pengaturan", + "sticker": "Stiker", + "success": "Berhasil", + "suggestions": "Saran", + "unmute": "Suarakan", + "username": "Nama Pengguna", + "verification_cancelled": "Verifikasi dibatalkan", + "video": "Video" + }, "action": { "reject": "Tolak", "confirm": "Konfirmasi", @@ -3976,5 +3946,8 @@ "share": "Bagikan", "skip": "Lewat", "logout": "Keluar" + }, + "a11y": { + "user_menu": "Menu pengguna" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json index 11b5ccc75074..c1c425cf42e0 100644 --- a/src/i18n/strings/is.json +++ b/src/i18n/strings/is.json @@ -2,7 +2,6 @@ "This email address is already in use": "Þetta tölvupóstfang er nú þegar í notkun", "This phone number is already in use": "Þetta símanúmer er nú þegar í notkun", "Failed to verify email address: make sure you clicked the link in the email": "Gat ekki sannprófað tölvupóstfang: gakktu úr skugga um að þú hafir smellt á tengilinn í tölvupóstinum", - "Analytics": "Greiningar", "Warning!": "Aðvörun!", "Upload Failed": "Innsending mistókst", "Sun": "sun", @@ -62,20 +61,15 @@ "When I'm invited to a room": "Þegar mér er boðið á spjallrás", "Call invitation": "Boð um þátttöku í símtali", "Messages sent by bot": "Skilaboð send af vélmennum", - "Decline": "Hafna", - "Error": "Villa", "Submit": "Senda inn", "Phone": "Sími", "Add": "Bæta við", - "Continue": "Halda áfram", "Export E2E room keys": "Flytja út E2E dulritunarlykla spjallrásar", "Current password": "Núverandi lykilorð", - "Password": "Lykilorð", "New Password": "Nýtt lykilorð", "Confirm password": "Staðfestu lykilorðið", "Change Password": "Breyta lykilorði", "Authentication": "Auðkenning", - "OK": "Í lagi", "Notification targets": "Markmið tilkynninga", "Show message in desktop notification": "Birta tilkynningu í innbyggðu kerfistilkynningakerfi", "Off": "Slökkt", @@ -88,9 +82,6 @@ "Unignore": "Hætta að hunsa", "Ignore": "Hunsa", "Mention": "Minnst á", - "Invite": "Bjóða", - "Unmute": "Ekki þagga", - "Mute": "Þagga niður", "Admin Tools": "Kerfisstjóratól", "Invited": "Boðið", "Filter room members": "Sía meðlimi spjallrásar", @@ -104,15 +95,11 @@ "Command error": "Skipanavilla", "Online": "Nettengt", "Idle": "Iðjulaust", - "Offline": "Ónettengt", "Unknown": "Óþekkt", "Unnamed room": "Nafnlaus spjallrás", - "Save": "Vista", "Join Room": "Taka þátt í spjallrás", - "Settings": "Stillingar", "Forget room": "Gleyma spjallrás", "Search": "Leita", - "Invites": "Boðsgestir", "Favourites": "Eftirlæti", "Rooms": "Spjallrásir", "Low priority": "Lítill forgangur", @@ -120,7 +107,6 @@ "unknown error code": "óþekktur villukóði", "Failed to forget room %(errCode)s": "Mistókst að gleyma spjallrásinni %(errCode)s", "Banned users": "Bannaðir notendur", - "Leave room": "Fara af spjallrás", "Favourite": "Eftirlæti", "Who can read history?": "Hver getur lesið ferilskráningu?", "Anyone": "Hver sem er", @@ -150,20 +136,16 @@ "Email address": "Tölvupóstfang", "Sign in": "Skrá inn", "Register": "Nýskrá", - "Remove": "Fjarlægja", "Something went wrong!": "Eitthvað fór úrskeiðis!", "What's New": "Nýtt á döfinni", "What's new?": "Hvað er nýtt á döfinni?", "Error encountered (%(errorDetail)s).": "Villa fannst (%(errorDetail)s).", "No update available.": "Engin uppfærsla tiltæk.", "Warning": "Aðvörun", - "Edit": "Breyta", - "No results": "Engar niðurstöður", "Home": "Forsíða", "collapse": "fella saman", "expand": "fletta út", "In reply to ": "Sem svar til ", - "Start chat": "Hefja spjall", "Preparing to send logs": "Undirbý sendingu atvikaskráa", "Logs sent": "Sendi atvikaskrár", "Thank you!": "Takk fyrir!", @@ -173,7 +155,6 @@ "Unavailable": "Ekki tiltækt", "Changelog": "Breytingaskrá", "Confirm Removal": "Staðfesta fjarlægingu", - "Create": "Búa til", "Unknown error": "Óþekkt villa", "Incorrect password": "Rangt lykilorð", "Deactivate Account": "Gera notandaaðgang óvirkann", @@ -191,12 +172,8 @@ "Failed to change password. Is your password correct?": "Mistókst að breyta lykilorðinu. Er lykilorðið rétt?", "You cannot delete this message. (%(code)s)": "Þú getur ekki eytt þessum skilaboðum. (%(code)s)", "Resend": "Endursenda", - "Reply": "Svara", - "View Source": "Skoða frumkóða", - "Quote": "Tilvitnun", "Source URL": "Upprunaslóð", "All messages": "Öll skilaboð", - "Leave": "Fara út", "Low Priority": "Lítill forgangur", "Name": "Heiti", "Description": "Lýsing", @@ -207,7 +184,6 @@ "Connectivity to the server has been lost.": "Tenging við vefþjón hefur rofnað.", "Search failed": "Leit mistókst", "Room": "Spjallrás", - "Success": "Tókst", "Import E2E room keys": "Flytja inn E2E dulritunarlykla spjallrásar", "Cryptography": "Dulritun", "Labs": "Tilraunir", @@ -300,7 +276,6 @@ "Room information": "Upplýsingar um spjallrás", "Room options": "Valkostir spjallrásar", "Invite people": "Bjóða fólki", - "People": "Fólk", "Finland": "Finnland", "Norway": "Noreg", "Denmark": "Danmörk", @@ -424,7 +399,6 @@ "Add Email Address": "Bæta við tölvupóstfangi", "Click the button below to confirm adding this email address.": "Smelltu á hnappinn hér að neðan til að staðfesta að bæta við þessu netfangi.", "Confirm adding email": "Staðfestu að bæta við tölvupósti", - "Security": "Öryggi", "Trusted": "Treyst", "Subscribe": "Skrá", "Unsubscribe": "Afskrá", @@ -478,7 +452,6 @@ "Dog": "Hundur", "Guest": "Gestur", "Other": "Annað", - "Username": "Notandanafn", "Encrypted": "Dulritað", "Encryption": "Dulritun", "Timeline": "Tímalína", @@ -488,12 +461,8 @@ "FAQ": "Algengar spurningar", "Theme": "Þema", "General": "Almennt", - "No": "Nei", - "Yes": "Já", "Verified!": "Sannreynt!", - "Retry": "Reyna aftur", "Download": "Niðurhal", - "Next": "Næsta", "Legal": "Lagalegir fyrirvarar", "Demote": "Leggja til baka", "%(oneUser)sleft %(count)s times": { @@ -810,9 +779,7 @@ "Use app": "Nota smáforrit", "Later": "Seinna", "Review": "Yfirfara", - "Learn more": "Kanna nánar", "That's fine": "Það er í góðu", - "Enable": "Virkja", "Topic: %(topic)s": "Umfjöllunarefni: %(topic)s", "Current Timeline": "Núverandi tímalína", "From the beginning": "Frá byrjun", @@ -904,7 +871,6 @@ "Page Down": "Síða niður", "Page Up": "Síða upp", "Space used:": "Notað geymslupláss:", - "Disable": "Gera óvirkt", "Go to Settings": "Fara í stillingar", "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Útflutta skráin verður varin með lykilfrasa. Settu inn lykilfrasann hér til að afkóða skrána.", "Restore": "Endurheimta", @@ -925,7 +891,6 @@ "Play": "Spila", "Pause": "Bið", "Sign in with": "Skrá inn með", - "Forgot password?": "Gleymt lykilorð?", "Enter phone number": "Settu inn símanúmer", "Enter username": "Settu inn notandanafn", "Enter password": "Settu inn lykilorð", @@ -944,7 +909,6 @@ "Report": "Tilkynna", "Show preview": "Birta forskoðun", "View source": "Skoða frumkóða", - "Forward": "Áfram", "Hold": "Bíða", "Resume": "Halda áfram", "Looks good!": "Lítur vel út!", @@ -978,13 +942,10 @@ "User Directory": "Mappa notanda", "Transfer": "Flutningur", "Unnamed Space": "Nafnlaust svæði", - "Suggestions": "Tillögur", "Terms of Service": "Þjónustuskilmálar", "Message preview": "Forskoðun skilaboða", - "Forward message": "Áframsenda skilaboð", "Sent": "Sent", "Sending": "Sendi", - "Report a bug": "Tilkynna um villu", "Comment": "Athugasemd", "Format": "Snið", "Export Successful": "Útflutningur tókst", @@ -1007,7 +968,6 @@ "Room visibility": "Sýnileiki spjallrásar", "Create a private room": "Búa til einkaspjallrás", "Create a public room": "Búa til opinbera almenningsspjallrás", - "Create a room": "Búa til spjallrás", "Notes": "Minnispunktar", "Want to add a new room instead?": "Viltu frekar bæta við nýrri spjallrás?", "Add existing rooms": "Bæta við fyrirliggjandi spjallrásum", @@ -1016,13 +976,11 @@ "Looks good": "Lítur vel út", "QR Code": "QR-kóði", "Create options": "Búa til valkosti", - "Done": "Lokið", "Information": "Upplýsingar", "Rotate Right": "Snúa til hægri", "Rotate Left": "Snúa til vinstri", "Backspace": "Baklykill (backspace)", "Application window": "Forritsgluggi", - "Copy": "Afrita", "Categories": "Flokkar", "Share location": "Deila staðsetningu", "Location": "Staðsetning", @@ -1033,10 +991,8 @@ }, "Zoom out": "Renna frá", "Zoom in": "Renna að", - "Image": "Mynd", "Show image": "Birta mynd", "Go": "Fara", - "Encryption enabled": "Dulritun virk", "Decrypting": "Afkóðun", "Downloading": "Sæki", "Last month": "Í síðasta mánuði", @@ -1045,15 +1001,12 @@ "An unknown error occurred": "Óþekkt villa kom upp", "Connection failed": "Tenging mistókst", "Got it": "Náði því", - "Start": "Byrja", "Edit devices": "Breyta tækjum", "Ban from %(roomName)s": "Banna í %(roomName)s", "Unban from %(roomName)s": "Afbanna í %(roomName)s", "Remove from room": "Fjarlægja úr spjallrás", - "Message": "Skilaboð", "Share room": "Deila spjallrás", "Files": "Skrár", - "About": "Um hugbúnaðinn", "Chat": "Spjall", "Show more": "Sýna meira", "Local Addresses": "Staðvær vistföng", @@ -1085,7 +1038,6 @@ "Code block": "Kóðablokk", "Poll": "Könnun", "Voice Message": "Talskilaboð", - "Sticker": "Límmerki", "Hide stickers": "Fela límmerki", "Failed to send": "Mistókst að senda", "Your message was sent": "Skilaboðin þín voru send", @@ -1124,7 +1076,6 @@ "Mentions & keywords": "Tilvísanir og stikkorð", "Global": "Víðvært", "Keyword": "Stikkorð", - "Modern": "Nútímalegt", "Updating spaces... (%(progress)s out of %(count)s)": { "one": "Uppfæri svæði...", "other": "Uppfæri svæði... (%(progress)s af %(count)s)" @@ -1428,13 +1379,11 @@ "Cannot reach identity server": "Næ ekki sambandi við auðkennisþjón", "Send a sticker": "Senda límmerki", "Just me": "Bara ég", - "Room name": "Heiti spjallrásar", "Private space": "Einkasvæði", "Doesn't look like a valid email address": "Þetta lítur ekki út eins og gilt tölvupóstfang", "Mentions only": "Aðeins minnst á", "Reset everything": "Frumstilla allt", "Not Trusted": "Ekki treyst", - "Report Content": "Kæra efni", "Session key": "Dulritunarlykill setu", "Other spaces or rooms you might not know": "Önnur svæði sem þú gætir ekki vitað um", "Select spaces": "Veldu svæði", @@ -1467,7 +1416,6 @@ "Your theme": "Þemað þitt", "Your user ID": "Notandaauðkennið þitt", "Your display name": "Birtingarnafnið þitt", - "Reactions": "Viðbrögð", "No answer": "Ekkert svar", "Call back": "Hringja til baka", "Demote yourself?": "Lækka þig sjálfa/n í tign?", @@ -1621,7 +1569,6 @@ "Delete Backup": "Eyða öryggisafriti", "Message bubbles": "Skilaboðablöðrur", "IRC (Experimental)": "IRC (á tilraunastigi)", - "Message layout": "Framsetning skilaboða", "Sending invites... (%(progress)s out of %(count)s)": { "one": "Sendi boð...", "other": "Sendi boð... (%(progress)s af %(count)s)" @@ -1797,7 +1744,6 @@ "in secret storage": "í leynigeymslu", "Manually verify all remote sessions": "Sannreyna handvirkt allar fjartengdar setur", "Share anonymous data to help us identify issues. Nothing personal. No third parties. Learn More": "Deildu nafnlausum gögnum til að hjálpa okkur við að greina vandamál. Ekkert persónulegt. Engir utanaðkomandi. Kanna nánar", - "User menu": "Valmynd notandans", "Switch theme": "Skipta um þema", "Got an account? Sign in": "Ertu með aðgang? Skráðu þig inn", "Shows all threads you've participated in": "Birtir alla spjallþræði sem þú hefur tekið þátt í", @@ -2012,7 +1958,6 @@ "Expand quotes": "Fletta út tilvitnunum", "Collapse quotes": "Fella saman tilvitnanir", "Reply in thread": "Svara í spjallþræði", - "React": "Bregðast við", "Error processing audio message": "Villa við meðhöndlun hljóðskilaboða", "The encryption used by this room isn't supported.": "Dulritunin sem notuð er í þessari spjallrás er ekki studd.", "The beginning of the room": "Upphaf spjallrásarinnar", @@ -2345,7 +2290,6 @@ "Change which room you're viewing": "Breyttu hvaða spjallrás þú ert að skoða", "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s breytti ACL á netþjóni fyrir þessa spjallrás.", "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s breytti þátttökureglu í %(rule)s", - "Video": "Myndskeið", "Verification Request": "Beiðni um sannvottun", "Save your Security Key": "Vista öryggislykilinn þinn", "Set a Security Phrase": "Setja öryggisfrasa", @@ -2452,7 +2396,6 @@ "You declined": "Þú hafnaðir", "You cancelled verifying %(name)s": "Þú hættir við sannvottun á %(name)s", "You verified %(name)s": "Þú sannreyndir %(name)s", - "Verification cancelled": "Hætt við sannprófun", "You cancelled verification.": "Þú hættir við sannvottun.", "Verification timed out.": "Sannvottun rann út á tíma.", "Verify User": "Sannreyna notanda", @@ -2918,7 +2861,6 @@ "Close sidebar": "Loka hliðarstiku", "View List": "Skoða lista", "View list": "Skoða lista", - "Copy link": "Afrita tengil", "View related event": "Skoða tengdan atburð", "Cameras": "Myndavélar", "Output devices": "Úttakstæki", @@ -3340,6 +3282,34 @@ "Get stuff done by finding your teammates": "Komdu hlutum í verk með því að finna félaga í teyminu þínu", "It’s what you’re here for, so lets get to it": "Það er nú einusinni það sem þú komst hingað til að gera, þannug að við skulum skella okkur í málið", "Sorry — this call is currently full": "Því miður - þetta símtal er fullt í augnablikinu", + "common": { + "about": "Um hugbúnaðinn", + "analytics": "Greiningar", + "encryption_enabled": "Dulritun virk", + "error": "Villa", + "forward_message": "Áframsenda skilaboð", + "image": "Mynd", + "message": "Skilaboð", + "message_layout": "Framsetning skilaboða", + "modern": "Nútímalegt", + "mute": "Þagga niður", + "no_results": "Engar niðurstöður", + "offline": "Ónettengt", + "password": "Lykilorð", + "people": "Fólk", + "reactions": "Viðbrögð", + "report_a_bug": "Tilkynna um villu", + "room_name": "Heiti spjallrásar", + "security": "Öryggi", + "settings": "Stillingar", + "sticker": "Límmerki", + "success": "Tókst", + "suggestions": "Tillögur", + "unmute": "Ekki þagga", + "username": "Notandanafn", + "verification_cancelled": "Hætt við sannprófun", + "video": "Myndskeið" + }, "action": { "reject": "Hafna", "confirm": "Staðfesta", @@ -3363,5 +3333,8 @@ "share": "Deila", "skip": "Sleppa", "logout": "Útskráning" + }, + "a11y": { + "user_menu": "Valmynd notandans" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index f4b6d4502765..d21a6f9f3652 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -1,20 +1,13 @@ { "Failed to forget room %(errCode)s": "Impossibile dimenticare la stanza %(errCode)s", - "Mute": "Silenzia", "Notifications": "Notifiche", "Operation failed": "Operazione fallita", "powered by Matrix": "offerto da Matrix", - "Remove": "Rimuovi", "Search": "Cerca", - "Settings": "Impostazioni", - "Start chat": "Inizia una chat", "unknown error code": "codice errore sconosciuto", "Create new room": "Crea una nuova stanza", - "Error": "Errore", "Favourite": "Preferito", - "OK": "OK", "Failed to change password. Is your password correct?": "Modifica password fallita. La tua password è corretta?", - "Continue": "Continua", "Account": "Account", "Add": "Aggiungi", "Admin": "Amministratore", @@ -28,7 +21,6 @@ "Advanced": "Avanzato", "Always show message timestamps": "Mostra sempre l'orario dei messaggi", "Authentication": "Autenticazione", - "Edit": "Modifica", "This email address is already in use": "Questo indirizzo e-mail è già in uso", "This phone number is already in use": "Questo numero di telefono è già in uso", "Failed to verify email address: make sure you clicked the link in the email": "Impossibile verificare l'indirizzo e-mail: assicurati di aver cliccato il link nell'e-mail", @@ -63,7 +55,6 @@ "Warning": "Attenzione", "Unnamed room": "Stanza senza nome", "Online": "Online", - "Analytics": "Statistiche", "Call Failed": "Chiamata fallita", "Upload Failed": "Invio fallito", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", @@ -121,7 +112,6 @@ "Enable inline URL previews by default": "Attiva le anteprime URL in modo predefinito", "Enable URL previews for this room (only affects you)": "Attiva le anteprime URL in questa stanza (riguarda solo te)", "Enable URL previews by default for participants in this room": "Attiva le anteprime URL in modo predefinito per i partecipanti in questa stanza", - "Decline": "Rifiuta", "Incorrect verification code": "Codice di verifica sbagliato", "Submit": "Invia", "Phone": "Telefono", @@ -131,7 +121,6 @@ "Export E2E room keys": "Esporta chiavi E2E della stanza", "Do you want to set an email address?": "Vuoi impostare un indirizzo email?", "Current password": "Password attuale", - "Password": "Password", "New Password": "Nuova password", "Confirm password": "Conferma password", "Change Password": "Modifica password", @@ -148,8 +137,6 @@ "Unignore": "Non ignorare più", "Ignore": "Ignora", "Mention": "Cita", - "Invite": "Invita", - "Unmute": "Togli silenzio", "and %(count)s others...": { "other": "e altri %(count)s ...", "one": "e un altro..." @@ -176,9 +163,7 @@ "Offline for %(duration)s": "Offline per %(duration)s", "Unknown for %(duration)s": "Sconosciuto per %(duration)s", "Idle": "Inattivo", - "Offline": "Offline", "Unknown": "Sconosciuto", - "Save": "Salva", "(~%(count)s results)": { "other": "(~%(count)s risultati)", "one": "(~%(count)s risultato)" @@ -186,7 +171,6 @@ "Join Room": "Entra nella stanza", "Upload avatar": "Invia avatar", "Forget room": "Dimentica la stanza", - "Invites": "Inviti", "Favourites": "Preferiti", "Low priority": "Bassa priorità", "Historical": "Cronologia", @@ -201,7 +185,6 @@ "No users have specific privileges in this room": "Nessun utente ha privilegi specifici in questa stanza", "Banned users": "Utenti banditi", "This room is not accessible by remote Matrix servers": "Questa stanza non è accessibile da server di Matrix remoti", - "Leave room": "Esci dalla stanza", "Publish this room to the public in %(domain)s's room directory?": "Pubblicare questa stanza nell'elenco pubblico delle stanze in %(domain)s ?", "Who can read history?": "Chi può leggere la cronologia?", "Anyone": "Chiunque", @@ -242,7 +225,6 @@ "Delete Widget": "Elimina widget", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "L'eliminazione di un widget lo rimuove per tutti gli utenti della stanza. Sei sicuro di eliminare il widget?", "Delete widget": "Elimina widget", - "No results": "Nessun risultato", "Home": "Pagina iniziale", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(severalUsers)sjoined %(count)s times": { @@ -338,7 +320,6 @@ "other": "E altri %(count)s ..." }, "Confirm Removal": "Conferma la rimozione", - "Create": "Crea", "Unknown error": "Errore sconosciuto", "Incorrect password": "Password sbagliata", "Deactivate Account": "Disattiva l'account", @@ -355,7 +336,6 @@ "Name": "Nome", "You must register to use this functionality": "Devi registrarti per usare questa funzionalità", "You must join the room to see its files": "Devi entrare nella stanza per vederne i file", - "Leave": "Esci", "Description": "Descrizione", "Reject invitation": "Rifiuta l'invito", "Are you sure you want to reject the invitation?": "Sei sicuro di volere rifiutare l'invito?", @@ -384,7 +364,6 @@ }, "Uploading %(filename)s": "Invio di %(filename)s", "Sign out": "Disconnetti", - "Success": "Successo", "Unable to remove contact information": "Impossibile rimuovere le informazioni di contatto", "": "", "Import E2E room keys": "Importa chiavi E2E stanza", @@ -468,7 +447,6 @@ "All Rooms": "Tutte le stanze", "Wednesday": "Mercoledì", "You cannot delete this message. (%(code)s)": "Non puoi eliminare questo messaggio. (%(code)s)", - "Quote": "Cita", "Send logs": "Invia i log", "All messages": "Tutti i messaggi", "Call invitation": "Invito ad una chiamata", @@ -479,7 +457,6 @@ "Thursday": "Giovedì", "Logs sent": "Log inviati", "Back": "Indietro", - "Reply": "Rispondi", "Show message in desktop notification": "Mostra i messaggi nelle notifiche desktop", "Messages in group chats": "Messaggi nelle chat di gruppo", "Yesterday": "Ieri", @@ -490,7 +467,6 @@ "Event Type": "Tipo di Evento", "Thank you!": "Grazie!", "Event sent!": "Evento inviato!", - "View Source": "Visualizza sorgente", "Event Content": "Contenuto dell'Evento", "Missing roomId.": "ID stanza mancante.", "Enable widget screenshots on supported widgets": "Attiva le schermate dei widget sui widget supportati", @@ -599,7 +575,6 @@ "Unable to restore backup": "Impossibile ripristinare il backup", "No backup found!": "Nessun backup trovato!", "Failed to decrypt %(failedCount)s sessions!": "Decifrazione di %(failedCount)s sessioni fallita!", - "Next": "Avanti", "Failed to perform homeserver discovery": "Ricerca dell'homeserver fallita", "Invalid homeserver discovery response": "Risposta della ricerca homeserver non valida", "Sign in with single sign-on": "Accedi con single sign-on", @@ -608,7 +583,6 @@ "Go back to set it again.": "Torna per reimpostare.", "Download": "Scarica", "Unable to create key backup": "Impossibile creare backup della chiave", - "Retry": "Riprova", "Set up": "Imposta", "Messages containing @room": "Messaggi contenenti @room", "Encrypted messages in one-to-one chats": "Messaggi cifrati in chat uno-ad-uno", @@ -728,8 +702,6 @@ "Headphones": "Auricolari", "Folder": "Cartella", "Pin": "Spillo", - "Yes": "Sì", - "No": "No", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Ti abbiamo inviato un'email per verificare il tuo indirizzo. Segui le istruzioni contenute e poi clicca il pulsante sotto.", "Email Address": "Indirizzo email", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Sei sicuro? Perderai i tuoi messaggi cifrati se non hai salvato adeguatamente le tue chiavi.", @@ -812,7 +784,6 @@ "Room Settings - %(roomName)s": "Impostazioni stanza - %(roomName)s", "Warning: you should only set up key backup from a trusted computer.": "Attenzione: dovresti impostare il backup chiavi solo da un computer fidato.", "This homeserver would like to make sure you are not a robot.": "Questo homeserver vorrebbe assicurarsi che non sei un robot.", - "Username": "Nome utente", "Change": "Cambia", "Email (optional)": "Email (facoltativa)", "Phone (optional)": "Telefono (facoltativo)", @@ -1058,7 +1029,6 @@ "Report Content to Your Homeserver Administrator": "Segnala il contenuto all'amministratore dell'homeserver", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "La segnalazione di questo messaggio invierà il suo 'ID evento' univoco all'amministratore del tuo homeserver. Se i messaggi della stanza sono cifrati, l'amministratore non potrà leggere il messaggio o vedere file e immagini.", "Send report": "Invia segnalazione", - "Report Content": "Segnala contenuto", "View": "Vedi", "Explore rooms": "Esplora stanze", "Show previews/thumbnails for images": "Mostra anteprime/miniature per le immagini", @@ -1095,7 +1065,6 @@ "Failed to deactivate user": "Disattivazione utente fallita", "This client does not support end-to-end encryption.": "Questo client non supporta la crittografia end-to-end.", "Messages in this room are not end-to-end encrypted.": "I messaggi in questa stanza non sono cifrati end-to-end.", - "React": "Reagisci", "Frequently Used": "Usati di frequente", "Smileys & People": "Faccine e Persone", "Animals & Nature": "Animali e Natura", @@ -1157,7 +1126,6 @@ "Trusted": "Fidato", "Not trusted": "Non fidato", "Messages in this room are end-to-end encrypted.": "I messaggi in questa stanza sono cifrati end-to-end.", - "Security": "Sicurezza", "Any of the following data may be shared:": "Possono essere condivisi tutti i seguenti dati:", "Your display name": "Il tuo nome visualizzato", "Your user ID": "Il tuo ID utente", @@ -1187,7 +1155,6 @@ "Error upgrading room": "Errore di aggiornamento stanza", "Double check that your server supports the room version chosen and try again.": "Controlla che il tuo server supporti la versione di stanza scelta e riprova.", "Unencrypted": "Non criptato", - "Reactions": "Reazioni", "Upgrade private room": "Aggiorna stanza privata", "Upgrade public room": "Aggiorna stanza pubblica", "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "Aggiornare una stanza è un'azione avanzata ed è consigliabile quando una stanza non è stabile a causa di errori, funzioni mancanti o vulnerabilità di sicurezza.", @@ -1232,7 +1199,6 @@ "Show info about bridges in room settings": "Mostra info sui bridge nelle impostazioni stanza", "This bridge is managed by .": "Questo bridge è gestito da .", "Recent Conversations": "Conversazioni recenti", - "Suggestions": "Suggerimenti", "Show more": "Mostra altro", "Direct Messages": "Messaggi diretti", "Go": "Vai", @@ -1259,8 +1225,6 @@ "Something went wrong trying to invite the users.": "Qualcosa è andato storto provando ad invitare gli utenti.", "We couldn't invite those users. Please check the users you want to invite and try again.": "Impossibile invitare quegli utenti. Ricontrolla gli utenti che vuoi invitare e riprova.", "Recently Direct Messaged": "Contattati direttamente di recente", - "Start": "Inizia", - "Done": "Fatto", "Go Back": "Torna", "Verify User": "Verifica utente", "For extra security, verify this user by checking a one-time code on both of your devices.": "Per maggiore sicurezza, verifica questo utente controllando un codice univoco sui vostri dispositivi.", @@ -1289,7 +1253,6 @@ "Show less": "Mostra meno", "Manage": "Gestisci", "Securely cache encrypted messages locally for them to appear in search results.": "Tieni in cache localmente i messaggi cifrati in modo sicuro affinché appaiano nei risultati di ricerca.", - "Enable": "Attiva", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "A %(brand)s mancano alcuni componenti richiesti per tenere in cache i messaggi cifrati in modo sicuro. Se vuoi sperimentare questa funzionalità, compila un %(brand)s Desktop personale con i componenti di ricerca aggiunti.", "Verifies a user, session, and pubkey tuple": "Verifica un utente, una sessione e una tupla pubblica", "Session already verified!": "Sessione già verificata!", @@ -1338,7 +1301,6 @@ "If you can't scan the code above, verify by comparing unique emoji.": "Se non riesci a scansionare il codice sopra, verifica confrontando emoji specifiche.", "You've successfully verified %(displayName)s!": "Hai verificato correttamente %(displayName)s!", "Got it": "Capito", - "Encryption enabled": "Crittografia attivata", "Encryption not enabled": "Crittografia non attivata", "The encryption used by this room isn't supported.": "La crittografia usata da questa stanza non è supportata.", "Clear all data in this session?": "Svuotare tutti i dati in questa sessione?", @@ -1352,12 +1314,10 @@ "Confirm your identity by entering your account password below.": "Conferma la tua identità inserendo la password dell'account sotto.", "Restore your key backup to upgrade your encryption": "Ripristina il tuo backup chiavi per aggiornare la crittografia", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Aggiorna questa sessione per consentirle di verificare altre sessioni, garantendo loro l'accesso ai messaggi cifrati e contrassegnandole come fidate per gli altri utenti.", - "Copy": "Copia", "Create key backup": "Crea backup chiavi", "This session is encrypting history using the new recovery method.": "Questa sessione sta cifrando la cronologia usando il nuovo metodo di recupero.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Se l'hai fatto accidentalmente, puoi configurare Messaggi Sicuri su questa sessione che cripterà nuovamente la cronologia dei messaggi con un nuovo metodo di recupero.", "If disabled, messages from encrypted rooms won't appear in search results.": "Se disattivato, i messaggi delle stanze cifrate non appariranno nei risultati di ricerca.", - "Disable": "Disattiva", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s sta tenendo in cache localmente i messaggi cifrati in modo sicuro affinché appaiano nei risultati di ricerca:", "Message downloading sleep time(ms)": "Tempo di attesa scaricamento messaggi (ms)", "Cancel entering passphrase?": "Annullare l'inserimento della password?", @@ -1473,7 +1433,6 @@ "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verifica individualmente ogni sessione usata da un utente per segnarla come fidata, senza fidarsi dei dispositivi a firma incrociata.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Nelle stanze cifrate, i tuoi messaggi sono protetti e solo tu ed il destinatario avete le chiavi univoche per sbloccarli.", "Verify all users in a room to ensure it's secure.": "Verifica tutti gli utenti in una stanza per confermare che sia sicura.", - "Verification cancelled": "Verifica annullata", "Cancel replying to a message": "Annulla la risposta a un messaggio", "Sends a message as html, without interpreting it as markdown": "Invia un messaggio come html, senza interpretarlo come markdown", "Sign in with SSO": "Accedi con SSO", @@ -1564,7 +1523,6 @@ "Ok": "Ok", "New version available. Update now.": "Nuova versione disponibile. Aggiorna ora.", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "L'amministratore del server ha disattivato la crittografia end-to-end in modo predefinito nelle stanze private e nei messaggi diretti.", - "People": "Persone", "Switch to light mode": "Passa alla modalità chiara", "Switch to dark mode": "Passa alla modalità scura", "Switch theme": "Cambia tema", @@ -1588,8 +1546,6 @@ "Looks good!": "Sembra giusta!", "Use custom size": "Usa dimensione personalizzata", "Hey you. You're the best!": "Ehi tu. Sei il migliore!", - "Message layout": "Disposizione del messaggio", - "Modern": "Moderno", "Use a system font": "Usa un carattere di sistema", "System font name": "Nome carattere di sistema", "The authenticity of this encrypted message can't be guaranteed on this device.": "L'autenticità di questo messaggio cifrato non può essere garantita su questo dispositivo.", @@ -1615,7 +1571,6 @@ "Security Phrase": "Frase di sicurezza", "Security Key": "Chiave di sicurezza", "Use your Security Key to continue.": "Usa la tua chiave di sicurezza per continuare.", - "User menu": "Menu utente", "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Proteggiti contro la perdita dell'accesso ai messaggi e dati cifrati facendo un backup delle chiavi crittografiche sul tuo server.", "Generate a Security Key": "Genera una chiave di sicurezza", "Enter a Security Phrase": "Inserisci una frase di sicurezza", @@ -1676,7 +1631,6 @@ "Secure Backup": "Backup Sicuro", "Privacy": "Privacy", "Not encrypted": "Non cifrato", - "About": "Al riguardo", "Room settings": "Impostazioni stanza", "Take a picture": "Scatta una foto", "Unpin": "Sblocca", @@ -1721,7 +1675,6 @@ "Send feedback": "Invia feedback", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "CONSIGLIO: se segnali un errore, invia i log di debug per aiutarci ad individuare il problema.", "Please view existing bugs on Github first. No match? Start a new one.": "Prima controlla gli errori esistenti su Github. Non l'hai trovato? Apri una segnalazione.", - "Report a bug": "Segnala un errore", "Comment": "Commento", "Feedback sent": "Feedback inviato", "%(senderName)s ended the call": "%(senderName)s ha terminato la chiamata", @@ -2059,7 +2012,6 @@ "Use email to optionally be discoverable by existing contacts.": "Usa l'email per essere facoltativamente trovabile dai contatti esistenti.", "Use email or phone to optionally be discoverable by existing contacts.": "Usa l'email o il telefono per essere facoltativamente trovabile dai contatti esistenti.", "Add an email to be able to reset your password.": "Aggiungi un'email per poter reimpostare la password.", - "Forgot password?": "Hai dimenticato la password?", "That phone number doesn't look quite right, please check and try again": "Quel numero di telefono non sembra corretto, controlla e riprova", "Enter phone number": "Inserisci numero di telefono", "Enter email address": "Inserisci indirizzo email", @@ -2068,7 +2020,6 @@ "Approve": "Approva", "This widget would like to:": "Il widget vorrebbe:", "About homeservers": "Riguardo gli homeserver", - "Learn more": "Maggiori informazioni", "Use your preferred Matrix homeserver if you have one, or host your own.": "Usa il tuo homeserver Matrix preferito se ne hai uno, o ospitane uno tuo.", "Other homeserver": "Altro homeserver", "Sign into your homeserver": "Accedi al tuo homeserver", @@ -2200,7 +2151,6 @@ "Who are you working with?": "Con chi stai lavorando?", "Skip for now": "Salta per adesso", "Failed to create initial space rooms": "Creazione di stanze iniziali dello spazio fallita", - "Room name": "Nome stanza", "Support": "Supporto", "Random": "Casuale", "Welcome to ": "Ti diamo il benvenuto in ", @@ -2373,7 +2323,6 @@ "Or send invite link": "O manda un collegamento di invito", "Some suggestions may be hidden for privacy.": "Alcuni suggerimenti potrebbero essere nascosti per privacy.", "Search for rooms or people": "Cerca stanze o persone", - "Forward message": "Inoltra messaggio", "Sent": "Inviato", "You don't have permission to do this": "Non hai il permesso per farlo", "Error - Mixed content": "Errore - Contenuto misto", @@ -2419,7 +2368,6 @@ "%(targetName)s accepted the invitation for %(displayName)s": "%(targetName)s ha accettato l'invito per %(displayName)s", "Some invites couldn't be sent": "Alcuni inviti non sono stati spediti", "We sent the others, but the below people couldn't be invited to ": "Abbiamo inviato gli altri, ma non è stato possibile invitare le seguenti persone in ", - "Forward": "Inoltra", "Disagree": "Rifiuta", "Any other reason. Please describe the problem.\nThis will be reported to the room moderators.": "Altri motivi. Si prega di descrivere il problema.\nVerrà segnalato ai moderatori della stanza.", "This room is dedicated to illegal or toxic content or the moderators fail to moderate illegal or toxic content.\nThis will be reported to the administrators of %(homeserver)s. The administrators will NOT be able to read the encrypted content of this room.": "Questa stanza è dedicata a contenuti illegali o dannosi, oppure i moderatori non riescono a censurare questo tipo di contenuti.\nVerrà segnalata agli amministratori di %(homeserver)s. Gli amministratori NON potranno leggere i contenuti cifrati di questa stanza.", @@ -2503,13 +2451,10 @@ "Visible to space members": "Visibile ai membri dello spazio", "Public room": "Stanza pubblica", "Private room (invite only)": "Stanza privata (solo a invito)", - "Create a room": "Crea una stanza", "Only people invited will be able to find and join this room.": "Solo le persone invitate potranno trovare ed entrare in questa stanza.", "Anyone will be able to find and join this room, not just members of .": "Chiunque potrà trovare ed entrare in questa stanza, non solo i membri di .", "You can change this at any time from room settings.": "Puoi cambiarlo in qualsiasi momento dalle impostazioni della stanza.", "Everyone in will be able to find and join this room.": "Chiunque in potrà trovare ed entrare in questa stanza.", - "Image": "Immagine", - "Sticker": "Sticker", "The call is in an unknown state!": "La chiamata è in uno stato sconosciuto!", "Call back": "Richiama", "No answer": "Nessuna risposta", @@ -2619,7 +2564,6 @@ "Change space name": "Cambia nome dello spazio", "Change space avatar": "Cambia avatar dello spazio", "Message didn't send. Click for info.": "Il messaggio non è stato inviato. Clicca per informazioni.", - "Message": "Messaggio", "To join a space you'll need an invite.": "Per entrare in uno spazio ti serve un invito.", "%(reactors)s reacted with %(content)s": "%(reactors)s ha reagito con %(content)s", "Would you like to leave the rooms in this space?": "Vuoi uscire dalle stanze di questo spazio?", @@ -2770,7 +2714,6 @@ "Show all threads": "Mostra tutte le conversazioni", "Keep discussions organised with threads": "Tieni le discussioni organizzate in conversazioni", "Manage rooms in this space": "Gestisci le stanze in questo spazio", - "Copy link": "Copia collegamento", "Mentions only": "Solo le citazioni", "Forget": "Dimentica", "Files": "File", @@ -3113,7 +3056,6 @@ "Next recently visited room or space": "Successiva stanza o spazio visitati di recente", "Previous recently visited room or space": "Precedente stanza o spazio visitati di recente", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "I log di debug contengono dati di utilizzo dell'applicazione inclusi il nome utente, gli ID o alias delle stanze o gruppi visitati, gli ultimi elementi dell'interfaccia con cui hai interagito e i nomi degli altri utenti. Non contengono messaggi.", - "Video": "Video", "Event ID: %(eventId)s": "ID evento: %(eventId)s", "No verification requests found": "Nessuna richiesta di verifica trovata", "Observe only": "Osserva solo", @@ -3736,7 +3678,6 @@ "Adding…": "Aggiunta…", "Write something…": "Scrivi qualcosa…", "Rejecting invite…": "Rifiuto dell'invito…", - "Loading…": "Caricamento…", "Joining room…": "Ingresso nella stanza…", "Joining space…": "Ingresso nello spazio…", "Encrypting your message…": "Crittazione del tuo messaggio…", @@ -3952,6 +3893,35 @@ "No requests": "Nessuna richiesta", "Deny": "Nega", "Asking to join": "Richiesta di entrare", + "common": { + "about": "Al riguardo", + "analytics": "Statistiche", + "encryption_enabled": "Crittografia attivata", + "error": "Errore", + "forward_message": "Inoltra messaggio", + "image": "Immagine", + "loading": "Caricamento…", + "message": "Messaggio", + "message_layout": "Disposizione del messaggio", + "modern": "Moderno", + "mute": "Silenzia", + "no_results": "Nessun risultato", + "offline": "Offline", + "password": "Password", + "people": "Persone", + "reactions": "Reazioni", + "report_a_bug": "Segnala un errore", + "room_name": "Nome stanza", + "security": "Sicurezza", + "settings": "Impostazioni", + "sticker": "Sticker", + "success": "Successo", + "suggestions": "Suggerimenti", + "unmute": "Togli silenzio", + "username": "Nome utente", + "verification_cancelled": "Verifica annullata", + "video": "Video" + }, "action": { "reject": "Rifiuta", "confirm": "Conferma", @@ -3976,5 +3946,8 @@ "share": "Condividi", "skip": "Salta", "logout": "Disconnetti" + }, + "a11y": { + "user_menu": "Menu utente" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index df2c55eb096f..e1119f912610 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -6,12 +6,9 @@ "Favourites": "お気に入り", "Invited": "招待済", "Low priority": "低優先度", - "Mute": "ミュート", "Notifications": "通知", "Create new room": "新しいルームを作成", "Search": "検索", - "Settings": "設定", - "Start chat": "チャットを開始", "New Password": "新しいパスワード", "Failed to change password. Is your password correct?": "パスワードの変更に失敗しました。パスワードは正しいですか?", "Always show message timestamps": "メッセージの時刻を常に表示", @@ -24,14 +21,9 @@ "Microphone": "マイク", "Camera": "カメラ", "Are you sure?": "よろしいですか?", - "OK": "OK", "Operation failed": "操作に失敗しました", "powered by Matrix": "powered by Matrix", - "Error": "エラー", - "Remove": "削除", "Submit debug logs": "デバッグログを送信", - "Edit": "編集", - "Continue": "続行", "Online": "オンライン", "unknown error code": "不明なエラーコード", "Failed to forget room %(errCode)s": "ルームの履歴を消去するのに失敗しました %(errCode)s", @@ -41,7 +33,6 @@ "This email address is already in use": "このメールアドレスは既に使用されています", "This phone number is already in use": "この電話番号は既に使用されています", "Failed to verify email address: make sure you clicked the link in the email": "メールアドレスの認証に失敗しました。電子メール内のリンクをクリックしたことを確認してください", - "Analytics": "分析", "Thursday": "木曜日", "Messages in one-to-one chats": "1対1のチャットでのメッセージ", "All Rooms": "全てのルーム", @@ -63,7 +54,6 @@ "Invite to this room": "このルームに招待", "Waiting for response from server": "サーバーからの応答を待っています", "Wednesday": "水曜日", - "Leave": "退出", "Call invitation": "通話への招待", "Tuesday": "火曜日", "Search…": "検索…", @@ -79,17 +69,14 @@ "Source URL": "ソースのURL", "Filter results": "結果を絞り込む", "Noisy": "音量大", - "View Source": "ソースコードを表示", "Back": "戻る", "Event sent!": "イベントを送信しました!", "Preparing to send logs": "ログを送信する準備をしています", "Toolbox": "ツールボックス", "State Key": "ステートキー", - "Quote": "引用", "Send logs": "ログを送信", "What's new?": "新着", "Logs sent": "ログが送信されました", - "Reply": "返信", "Show message in desktop notification": "デスクトップ通知にメッセージの内容を表示", "Error encountered (%(errorDetail)s).": "エラーが発生しました(%(errorDetail)s)。", "Event Type": "イベントの種類", @@ -150,7 +137,6 @@ "Usage": "用法", "Changes your display nickname": "表示されるニックネームを変更", "Invites user with given id to current room": "指定したIDのユーザーを現在のルームに招待", - "Leave room": "ルームから退出", "Bans user with given id": "指定したIDのユーザーをブロック", "Ignores a user, hiding their messages from you": "ユーザーを無視し、そのメッセージを非表示に設定", "Ignored user": "無視しているユーザー", @@ -201,7 +187,6 @@ "Enable URL previews for this room (only affects you)": "このルームのURLプレビューを有効にする(あなたにのみ適用)", "Enable URL previews by default for participants in this room": "このルームの参加者のために既定でURLプレビューを有効にする", "Enable widget screenshots on supported widgets": "サポートされているウィジェットで、ウィジェットのスクリーンショットを有効にする", - "Decline": "拒否", "Incorrect verification code": "認証コードが誤っています", "Submit": "送信", "Phone": "電話", @@ -211,7 +196,6 @@ "Warning!": "警告!", "Export E2E room keys": "ルームのエンドツーエンド暗号鍵をエクスポート", "Do you want to set an email address?": "メールアドレスを設定しますか?", - "Password": "パスワード", "Confirm password": "パスワードを確認", "Authentication": "認証", "Failed to set display name": "表示名の設定に失敗しました", @@ -230,9 +214,7 @@ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "このユーザーにあなたと同じ権限レベルを与えようとしています。この変更は取り消せません。", "Ignore": "無視", "Jump to read receipt": "既読通知へ移動", - "Invite": "招待", "Share Link to User": "ユーザーへのリンクを共有", - "Unmute": "ミュート解除", "Admin Tools": "管理者ツール", "and %(count)s others...": { "other": "他%(count)s人…", @@ -260,10 +242,8 @@ "Offline for %(duration)s": "オフライン時間 %(duration)s", "Unknown for %(duration)s": "不明な時間 %(duration)s", "Idle": "待機中", - "Offline": "オフライン", "Unknown": "不明", "Replying": "以下に返信", - "Save": "保存", "(~%(count)s results)": { "other": "(〜%(count)s件)", "one": "(〜%(count)s件)" @@ -271,7 +251,6 @@ "Join Room": "ルームに参加", "Forget room": "ルームを消去", "Share room": "ルームを共有", - "Invites": "招待", "Unban": "ブロックを解除", "Failed to ban user": "ユーザーをブロックできませんでした", "System Alerts": "システムアラート", @@ -335,7 +314,6 @@ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "ウィジェットを削除すると、このルームの全てのユーザーから削除されます。削除してよろしいですか?", "Delete widget": "ウィジェットを削除", "Popout widget": "ウィジェットをポップアウト", - "No results": "結果がありません", "Home": "ホーム", "%(nameList)s %(transitionList)s": "%(nameList)s%(transitionList)s", "%(severalUsers)sjoined %(count)s times": { @@ -433,7 +411,6 @@ }, "Before submitting logs, you must create a GitHub issue to describe your problem.": "ログを送信する前に、問題を説明するGitHub issueを作成してください。", "Confirm Removal": "削除の確認", - "Create": "作成", "Unknown error": "不明なエラー", "Incorrect password": "誤ったパスワード", "Deactivate Account": "アカウントの無効化", @@ -511,7 +488,6 @@ "one": "%(filename)sと他%(count)s件をアップロードしています" }, "Uploading %(filename)s": "%(filename)sをアップロードしています", - "Success": "成功", "Unable to remove contact information": "連絡先の情報を削除できません", "": "<サポート対象外>", "Import E2E room keys": "ルームのエンドツーエンド暗号鍵をインポート", @@ -688,8 +664,6 @@ "Select the roles required to change various parts of the room": "ルームに関する変更を行うために必要な役割を選択", "Room Topic": "ルームのトピック", "reacted with %(shortName)s": "%(shortName)sでリアクションしました", - "Next": "次へ", - "Username": "ユーザー名", "Create account": "アカウントを作成", "Error upgrading room": "ルームをアップグレードする際にエラーが発生しました", "%(senderName)s placed a voice call.": "%(senderName)sが音声通話を行いました。", @@ -725,7 +699,6 @@ "Download": "ダウンロード", "Display Name": "表示名", "Profile picture": "プロフィール画像", - "Encryption enabled": "暗号化が有効です", "Encryption not enabled": "暗号化が有効になっていません", "The encryption used by this room isn't supported.": "このルームで使用されている暗号化はサポートされていません。", "Cross-signing public keys:": "クロス署名の公開鍵:", @@ -761,10 +734,8 @@ "Sign out and remove encryption keys?": "サインアウトして、暗号鍵を削除しますか?", "Terms of Service": "利用規約", "To continue you need to accept the terms of this service.": "続行するには、このサービスの利用規約に同意する必要があります。", - "Report Content": "コンテンツを報告", "Bold": "太字", "Italics": "斜字体", - "React": "リアクション", "Quick Reactions": "一般的なリアクション", "Local address": "ローカルアドレス", "Calls": "通話", @@ -785,7 +756,6 @@ "Verify this session": "このセッションを認証", "Encryption upgrade available": "暗号化のアップグレードが利用できます", "Not Trusted": "信頼されていません", - "Done": "完了", "Later": "後で", "Review": "確認", "Trusted": "信頼済", @@ -800,7 +770,6 @@ "one": "%(count)s個のセッション" }, "Hide sessions": "セッションを隠す", - "Security": "セキュリティー", "Welcome to %(appName)s": "%(appName)sにようこそ", "Send a Direct Message": "ダイレクトメッセージを送信", "Explore Public Rooms": "公開ルームを探す", @@ -811,7 +780,6 @@ "You signed in to a new session without verifying it:": "あなたのこのセッションはまだ認証されていません:", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s(%(userId)s)は未認証のセッションにサインインしました:", "Recent Conversations": "最近会話したユーザー", - "Suggestions": "提案", "Go": "続行", "Session already verified!": "このセッションは認証済です!", "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "警告:鍵の認証に失敗しました!提供された鍵「%(fingerprint)s」は、%(userId)sおよびセッション %(deviceId)s の署名鍵「%(fprint)s」と一致しません。通信が傍受されているおそれがあります!", @@ -902,19 +870,16 @@ "Hey you. You're the best!": "こんにちは、よろしくね!", "Customise your appearance": "外観のカスタマイズ", "Appearance Settings only affect this %(brand)s session.": "外観の設定はこの%(brand)sのセッションにのみ適用されます。", - "People": "連絡先", "Notification options": "通知設定", "Verify User": "ユーザーの認証", "Your homeserver": "あなたのホームサーバー", "%(displayName)s cancelled verification.": "%(displayName)sが認証をキャンセルしました。", "You cancelled verification.": "認証をキャンセルしました。", - "Verification cancelled": "認証のキャンセル", "Switch to light mode": "ライトテーマに切り替える", "Switch to dark mode": "ダークテーマに切り替える", "Switch theme": "テーマを切り替える", "All settings": "全ての設定", "Feedback": "フィードバック", - "User menu": "ユーザーメニュー", "Cannot connect to integration manager": "インテグレーションマネージャーに接続できません", "Failed to connect to integration manager": "インテグレーションマネージャーへの接続に失敗しました", "Start verification again from their profile.": "プロフィールから再度認証を開始してください。", @@ -958,7 +923,6 @@ "%(num)s days from now": "今から%(num)s日前", "%(name)s (%(userId)s)": "%(name)s(%(userId)s)", "Unknown App": "不明なアプリ", - "About": "概要", "Room settings": "ルームの設定", "Show image": "画像を表示", "Upload files (%(current)s of %(total)s)": "ファイルのアップロード(%(current)s/%(total)s)", @@ -1040,7 +1004,6 @@ "Password is allowed, but unsafe": "パスワードの要件は満たしていますが、安全ではありません", "Nice, strong password!": "素晴らしい、強固なパスワードです!", "Enter password": "パスワードを入力してください", - "Forgot password?": "パスワードを忘れましたか?", "Enter email address": "メールアドレスを入力", "Enter phone number (required on this homeserver)": "電話番号を入力(このホームサーバーでは必須)", "Enter phone number": "電話番号を入力", @@ -1050,7 +1013,6 @@ "Create Account": "アカウントを作成", "Explore rooms": "ルームを探す", "Please view existing bugs on Github first. No match? Start a new one.": "まず、Githubで既知の不具合を確認してください。また掲載されていない新しい不具合を発見した場合は報告してください。", - "Report a bug": "不具合の報告", "Update %(brand)s": "%(brand)sの更新", "New version of %(brand)s is available": "%(brand)sの新しいバージョンが利用可能です", "Block anyone not part of %(serverName)s from ever joining this room.": "%(serverName)s以外からの参加をブロック。", @@ -1688,7 +1650,6 @@ "Permission is granted to use the webcam": "Webカメラを使用する権限が与えられていること", "A microphone and webcam are plugged in and set up correctly": "マイクとWebカメラが接続されていて、正しく設定されていること", "Verify this user by confirming the following emoji appear on their screen.": "このユーザーを認証するには、相手の画面に以下の絵文字が表示されていることを確認してください。", - "Start": "開始", "Compare a unique set of emoji if you don't have a camera on either device": "両方の端末でQRコードをキャプチャできない場合、絵文字の比較を選んでください", "Compare unique emoji": "絵文字の並びを比較", "Scan this unique code": "ユニークなコードをスキャン", @@ -1750,11 +1711,8 @@ "Your homeserver has exceeded its user limit.": "あなたのホームサーバーはユーザー数の上限に達しました。", "Use app": "アプリを使用", "Use app for a better experience": "より良い体験のためにアプリケーションを使用", - "Enable": "有効にする", "Enable desktop notifications": "デスクトップ通知を有効にする", "Don't miss a reply": "返信をお見逃しなく", - "No": "いいえ", - "Yes": "はい", "Short keyboard patterns are easy to guess": "短いキーボードパターンは簡単に推測されます", "Straight rows of keys are easy to guess": "キーボードの同じ列の文字を使用すると簡単に推測されます", "Common names and surnames are easy to guess": "名前や名字は簡単に推測されます", @@ -1771,7 +1729,6 @@ "Confirm adding phone number": "電話番号の追加を承認", "Confirm adding this phone number by using Single Sign On to prove your identity.": "シングルサインオンを使用して本人確認を行い、電話番号の追加を承認してください。", "Click the button below to confirm adding this email address.": "下のボタンをクリックすると、このメールアドレスを追加します。", - "Reactions": "リアクション", "%(name)s accepted": "%(name)sは受け付けました", "You accepted": "受け付けました", "%(name)s cancelled": "%(name)sは中止しました", @@ -1949,8 +1906,6 @@ "QR Code": "QRコード", "Home options": "ホームのオプション", "Report": "報告", - "Forward message": "メッセージを転送", - "Forward": "転送", "Files": "ファイル", "Number of messages": "メッセージ数", "Plain Text": "プレーンテキスト", @@ -1986,7 +1941,6 @@ "Send voice message": "音声メッセージを送信", "You do not have permission to start polls in this room.": "このルームでアンケートを開始する権限がありません。", "Voice Message": "音声メッセージ", - "Sticker": "ステッカー", "Poll": "アンケート", "Insert link": "リンクを挿入", "Calls are unsupported": "通話はサポートされていません", @@ -2044,7 +1998,6 @@ "Pinned messages": "固定メッセージ", "Export successful!": "エクスポートが成功しました!", "We sent the others, but the below people couldn't be invited to ": "以下の人たちをに招待できませんでした", - "Copy": "コピー", "Widgets do not use message encryption.": "ウィジェットはメッセージの暗号化を行いません。", "Using this widget may share data with %(widgetDomain)s.": "このウィジェットを使うと、データが%(widgetDomain)sと共有される可能性があります。", "Using this widget may share data with %(widgetDomain)s & your integration manager.": "このウィジェットを使うと、データが%(widgetDomain)sとインテグレーションマネージャーと共有される可能性があります。", @@ -2080,7 +2033,6 @@ "one": "%(count)s個の投票", "other": "%(count)s個の投票" }, - "Image": "画像", "Reply in thread": "スレッドで返信", "Decrypting": "復号化しています", "Downloading": "ダウンロードしています", @@ -2139,8 +2091,6 @@ "Image size in the timeline": "タイムライン上での画像のサイズ", "Enable email notifications for %(email)s": "%(email)sへの電子メール通知を有効にする", "Message bubbles": "吹き出し", - "Modern": "モダン", - "Message layout": "メッセージのレイアウト", "Updating spaces... (%(progress)s out of %(count)s)": { "one": "スペースを更新しています…", "other": "スペースを更新しています…(計%(count)s個のうち%(progress)s個)" @@ -2155,7 +2105,6 @@ "Use high contrast": "高コントラストを使用", "Developer mode": "開発者モード", "Address": "アドレス", - "Message": "メッセージ", "Shows all threads from current room": "現在のルームのスレッドを全て表示", "All threads": "全てのスレッド", "Keep discussions organised with threads": "スレッド機能を使って、会話をまとめましょう", @@ -2250,7 +2199,6 @@ "Doesn't look like a valid email address": "メールアドレスの形式が正しくありません", "Enter email address (required on this homeserver)": "メールアドレスを入力してください(このホームサーバーでは必須)", "Use an email address to recover your account": "アカウント復旧用のメールアドレスを設定してください", - "Learn more": "詳細を表示", "Verify this device": "この端末を認証", "Verify with another device": "別の端末で認証", "Forgotten or lost all recovery methods? Reset all": "復元方法を全て失ってしまいましたか?リセットできます", @@ -2380,7 +2328,6 @@ "Away": "離席中", "Categories": "カテゴリー", "Space": "スペース", - "Disable": "無効にする", "Themes": "テーマ", "Developer": "開発者", "Experimental": "実験的", @@ -2456,7 +2403,6 @@ "Delete all": "全て削除", "You don't have permission": "権限がありません", "Results": "結果", - "Room name": "ルーム名", "Random": "ランダム", "Failed to invite the following users to your space: %(csvUsers)s": "以下のユーザーをスペースに招待するのに失敗しました:%(csvUsers)s", "Invite by username": "ユーザー名で招待", @@ -2528,7 +2474,6 @@ "No backup found!": "バックアップがありません!", "Unable to restore backup": "バックアップを復元できません", "Unable to load backup status": "バックアップの状態を読み込めません", - "Retry": "再試行", "Unable to create key backup": "鍵のバックアップを作成できません", "Go back to set it again.": "戻って、改めて設定してください。", "That doesn't match.": "合致しません。", @@ -2605,7 +2550,6 @@ "Want to add an existing space instead?": "代わりに既存のスペースを追加しますか?", "Space visibility": "スペースの見え方", "Room visibility": "ルームの見え方", - "Create a room": "ルームを作成", "That phone number doesn't look quite right, please check and try again": "電話番号が正しくありません。確認してもう一度やり直してください", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "ホームサーバーの設定にcaptchaの公開鍵が入力されていません。ホームサーバーの管理者に報告してください。", "This room is public": "このルームは公開されています", @@ -3029,7 +2973,6 @@ "Ban from space": "スペースからブロック", "Unban from room": "ルームからのブロックを解除", "Ban from room": "ルームからブロック", - "Copy link": "リンクをコピー", "%(featureName)s Beta feedback": "%(featureName)sのベータ版のフィードバック", "The user's homeserver does not support the version of the space.": "ユーザーのホームサーバーは、このバージョンのスペースをサポートしていません。", "User may or may not exist": "ユーザーが存在するか不明です", @@ -3158,7 +3101,6 @@ "Video rooms": "ビデオ通話ルーム", "You were disconnected from the call. (Error: %(message)s)": "通話から切断されました。(エラー:%(message)s)", "Connection lost": "接続が切断されました", - "Video": "動画", "Room info": "ルームの情報", "Receive push notifications on this session.": "このセッションでプッシュ通知を受信。", "Push notifications": "プッシュ通知", @@ -3729,7 +3671,6 @@ "Adding…": "追加しています…", "Write something…": "記入してください…", "Rejecting invite…": "招待を拒否しています…", - "Loading…": "読み込んでいます…", "Joining room…": "ルームに参加しています…", "Joining space…": "スペースに参加しています…", "Encrypting your message…": "メッセージを暗号化しています…", @@ -3750,6 +3691,35 @@ "Secure Backup successful": "セキュアバックアップに成功しました", "Your keys are now being backed up from this device.": "鍵はこの端末からバックアップされています。", "Show avatars in user, room and event mentions": "アバターをユーザー、ルーム、イベントのメンションに表示", + "common": { + "about": "概要", + "analytics": "分析", + "encryption_enabled": "暗号化が有効です", + "error": "エラー", + "forward_message": "メッセージを転送", + "image": "画像", + "loading": "読み込んでいます…", + "message": "メッセージ", + "message_layout": "メッセージのレイアウト", + "modern": "モダン", + "mute": "ミュート", + "no_results": "結果がありません", + "offline": "オフライン", + "password": "パスワード", + "people": "連絡先", + "reactions": "リアクション", + "report_a_bug": "不具合の報告", + "room_name": "ルーム名", + "security": "セキュリティー", + "settings": "設定", + "sticker": "ステッカー", + "success": "成功", + "suggestions": "提案", + "unmute": "ミュート解除", + "username": "ユーザー名", + "verification_cancelled": "認証のキャンセル", + "video": "動画" + }, "action": { "reject": "拒否", "confirm": "承認", @@ -3773,5 +3743,8 @@ "share": "共有", "skip": "スキップ", "logout": "ログアウト" + }, + "a11y": { + "user_menu": "ユーザーメニュー" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/jbo.json b/src/i18n/strings/jbo.json index f2a5a67afb0a..f6880943e481 100644 --- a/src/i18n/strings/jbo.json +++ b/src/i18n/strings/jbo.json @@ -2,7 +2,6 @@ "This email address is already in use": ".i xa'o pilno fa da le samymri judri", "This phone number is already in use": ".i xa'o pilno fa da le fonxa judri", "Failed to verify email address: make sure you clicked the link in the email": ".i da nabmi fi lo nu facki le du'u do ponse le te samymri .i ko birti le du'u do samcu'a le judrysni pe le se samymri", - "Analytics": "lanli datni", "Call Failed": ".i da nabmi fi lo nu co'a fonjo'e", "You cannot place a call with yourself.": ".i do na ka'e fonjo'e do", "Permission Required": ".i lo nu curmi cu sarcu", @@ -64,7 +63,6 @@ "Usage": "tadji lo nu pilno", "Changes your display nickname": "", "Invites user with given id to current room": ".i vi'ecpe lo pilno poi se judri ti ku le kumfa pe'a", - "Leave room": "nu do zilvi'u le se zilbe'i", "Bans user with given id": ".i rinka lo nu lo pilno poi se judri ti cu vitno cliva", "Ignores a user, hiding their messages from you": ".i rinka lo nu no'e jundi lo pilno gi'e mipri lo notci be fi py. do", "Ignored user": ".i mo'u co'a na jundi tu'a le pilno", @@ -121,8 +119,6 @@ "When I'm invited to a room": "nu da friti le ka ziljmina lo se zilbe'i kei do", "Call invitation": "nu da co'a fonjo'e do", "Messages sent by bot": "nu da zilbe'i fi pa sampre", - "Decline": "nu na fonjo'e", - "Error": "nabmi", "Incorrect verification code": ".i na'e drani ke lacri lerpoi", "Submit": "nu zilbe'i", "Phone": "fonxa", @@ -132,16 +128,13 @@ "Passwords can't be empty": ".i lu li'u .e'a nai japyvla", "Warning!": ".i ju'i", "Export E2E room keys": "barbei lo kumfa pe'a termifckiku", - "Continue": "", "Do you want to set an email address?": ".i .au pei do jmina lo te samymri", "Current password": "lo ca japyvla", - "Password": "lerpoijaspu", "New Password": "lerpoijaspu vau je cnino", "Confirm password": "lo za'u re'u japyvla poi cnino", "Change Password": "nu basti fi le ka lerpoijaspu", "Authentication": "lo nu facki lo du'u do du ma kau", "Failed to set display name": ".i pu fliba lo nu galfi lo cmene", - "OK": "je'e", "Custom (%(level)s)": "drata (%(level)s)", "Messages": "notci", "Actions": "ka'e se zukte", @@ -239,7 +232,6 @@ "Send an encrypted message…": "nu pa mifra be pa notci cu zilbe'i", "Send a message…": "nu pa notci cu zilbe'i", "Search": "nu sisku", - "People": "prenu", "Rooms": "ve zilbe'i", "Show %(count)s more": { "other": "nu viska %(count)s na du", @@ -266,14 +258,12 @@ "Users": "pilno", "That matches!": ".i du", "Download": "nu kibycpa", - "Retry": "nu za'u re'u troci", "Success!": ".i snada", "Room List": "liste le'i ve zilbe'i", "Upload a file": "nu kibdu'a pa vreji", "Verify your other session using one of the options below.": ".i ko cuxna da le di'e cei'i le ka tadji lo nu do co'a lacri", "Ask this user to verify their session, or manually verify it below.": ".i ko cpedu le ka co'a lacri le se samtcise'u kei le pilno vau ja pilno le di'e cei'i le ka co'a lacri", "Not Trusted": "na se lacri", - "Done": "nu mo'u co'e", "%(displayName)s is typing …": ".i la'o zoi. %(displayName)s .zoi ca'o ciska", "%(names)s and %(count)s others are typing …": { "other": ".i la'o zoi. %(names)s .zoi je %(count)s na du ca'o ciska", @@ -291,11 +281,9 @@ "Verified!": ".i mo'u co'a lacri", "You've successfully verified this user.": ".i mo'u co'a lacri le pilno", "Got It": "je'e", - "Start": "nu co'a co'e", "Waiting for %(displayName)s to verify…": ".i ca'o denpa lo nu la'o zoi. %(displayName)s .zoi mo'u co'a lacri", "Cancelling…": ".i ca'o co'u co'e", "To be secure, do this in person or use a trusted way to communicate.": ".i lo nu marji penmi vau ja pilno pa se lacri lo nu tavla cu sarcu lo nu snura", - "No": ".i na co'e", "Ok": "je'e", "Verify this session": "nu co'a lacri le se samtcise'u", "What's New": "notci le du'u cnino", @@ -324,7 +312,6 @@ "Sign Up": "nu co'a na'o jaspu", " wants to chat": ".i la'o zoi. .zoi kaidji le ka tavla do", " invited you": ".i la'o zoi. .zoi friti le ka ziljmina kei do", - "Username": "judri cmene", "Enter username": ".i ko cuxna fo le ka judri cmene", "Messages in this room are end-to-end encrypted.": ".i ro zilbe'i be fo le cei'i cu mifra", "Messages in this room are not end-to-end encrypted.": ".i na pa zilbe'i be fo le cei'i cu mifra", @@ -340,11 +327,9 @@ "one": ".i samtcise'u %(count)s da" }, "Hide sessions": "nu ro se samtcise'u cu zilmipri", - "Invite": "nu friti le ka ziljmina", "For help with using %(brand)s, click here or start a chat with our bot using the button below.": ".i gi je lo nu samcu'a le dei cei'i gi lo nu co'a tavla le sampre cu tadji lo nu facki le du'u tadji lo nu pilno la'o zoi. %(brand)s .zoi", "This room is end-to-end encrypted": ".i ro zilbe'i be fo le cei'i cu mifra", "Everyone in this room is verified": ".i do lacri ro pagbu be le se zilbe'i", - "Start chat": "nu co'a tavla", "The file '%(fileName)s' failed to upload.": ".i da nabmi fi lo nu kibdu'a la'o zoi. %(fileName)s .zoi", "Invite users": "nu friti le ka ziljmina kei pa pilno", "Invite to this room": "nu friti le ka ziljmina le se zilbe'i", @@ -363,17 +348,13 @@ }, "Are you sure you want to leave the room '%(roomName)s'?": ".i xu do birti le du'u do kaidji le ka co'u pagbu le se zilbe'i be fo la'o zoi. %(roomName)s .zoi", "For security, this session has been signed out. Please sign in again.": ".i ki'u lo nu snura co'u jaspu le se samtcise'u .i ko za'u re'u co'a se jaspu", - "React": "nu cinmo spuda", - "Reply": "nu spuda", "In reply to ": ".i nu spuda tu'a la'o zoi. .zoi", "Show less": "nu viska so'u da", - "Save": "nu co'a vreji", "Unable to share email address": ".i da nabmi fi lo nu jungau le du'u samymri judri", "Unable to share phone number": ".i da nabmi fi lo nu jungau le du'u fonjudri", "Edit message": "nu basti fi le ka notci", "Share room": "nu jungau fi le du'u ve zilbe'i", "Share Link to User": "nu jungau pa pilno le du'u judri", - "Edit": "nu basti", "Share Room": "nu jungau fi le du'u ve zilbe'i", "Share User": "nu jungau fi le du'u pilno", "Share Room Message": "nu jungau fi le du'u notci", @@ -386,6 +367,13 @@ "Download %(text)s": "nu kibycpa la'o zoi. %(text)s .zoi", "Explore rooms": "nu facki le du'u ve zilbe'i", "Create Account": "nu pa re'u co'a jaspu", + "common": { + "analytics": "lanli datni", + "error": "nabmi", + "password": "lerpoijaspu", + "people": "prenu", + "username": "judri cmene" + }, "action": { "dismiss": "nu mipri", "close": "nu zilmipri", @@ -395,4 +383,4 @@ "share": "nu jungau", "logout": "nu co'u jaspu" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/ka.json b/src/i18n/strings/ka.json index fe7529423199..5c1d515fbe72 100644 --- a/src/i18n/strings/ka.json +++ b/src/i18n/strings/ka.json @@ -48,13 +48,15 @@ "Failure to create room": "ოთახის შექმნის შეცდომა", "Upload Failed": "ატვირთვა ვერ მოხერხდა", "Unable to load! Check your network connectivity and try again.": "ვერ იტვირთება! შეამოწმეთ თქვენი ინტერნეტ-კავშირი და სცადეთ ისევ.", - "Error": "შეცდომა", "Add Phone Number": "მობილურის ნომრის დამატება", "Confirm adding phone number": "დაადასტურეთ მობილურის ნომრის დამატება", "%(hours)sh %(minutes)sm %(seconds)ss left": "%(hours)sს %(minutes)sწთ %(seconds)sწმ დარჩა", "Feb": "თებ", + "common": { + "error": "შეცდომა" + }, "action": { "confirm": "დადასტურება", "dismiss": "დახურვა" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 97139faaf628..52f205fb8167 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -1,9 +1,5 @@ { - "Analytics": "Tiselḍin", - "Error": "Tuccḍa", - "OK": "IH", "Permission Required": "Tasiregt tlaq", - "Continue": "Kemmel", "Sun": "Iṭij", "Mon": "Ari", "Tue": "Ara", @@ -41,9 +37,7 @@ "Someone": "Albaɛḍ", "Light": "Aceɛlal", "Dark": "Aberkan", - "Done": "Immed", "Add another word or two. Uncommon words are better.": "Rnu awal-nniḍen neɣ sin. Awalen imexḍa ad lhun.", - "No": "Uhu", "Review": "Senqed", "Later": "Ticki", "Notifications": "Ilɣa", @@ -51,8 +45,6 @@ "Ok": "Ih", "What's New": "D acu-t umaynut", "Font size": "Tuɣzi n tsefsit", - "Decline": "Agwi", - "Start": "Bdu", "Cat": "Amcic", "Lion": "Izem", "Rabbit": "Awtul", @@ -69,27 +61,22 @@ "Anchor": "Tamdeyt", "Headphones": "Wennez", "Folder": "Akaram", - "Remove": "Sfeḍ", "Show less": "Sken-d drus", "Show more": "Sken-d ugar", "Warning!": "Ɣur-k·m!", "Current password": "Awal uffir amiran", - "Password": "Awal uffir", "New Password": "Awal uffir amaynut", "Confirm password": "Sentem awal uffir", "Change Password": "Snifel Awal Uffir", "not found": "ulac-it", "Authentication": "Asesteb", "Manage": "Sefrek", - "Enable": "Rmed", "Off": "Insa", "Display Name": "Sken isem", - "Save": "Sekles", "Disconnect": "Ffeɣ seg tuqqna", "Go back": "Uɣal ɣer deffir", "Change": "Beddel", "Theme": "Asentel", - "Success": "Yedda", "Profile": "Amaɣnu", "Account": "Amiḍan", "General": "Amatu", @@ -120,13 +107,10 @@ "Phone Number": "Uṭṭun n tiliɣri", "Bold": "Azuran", "Strikethrough": "Derrer", - "Quote": "Tanebdurt", "Idle": "Arurmid", "Unknown": "Arussin", - "Settings": "Iɣewwaren", "Search": "Nadi", "Favourites": "Ismenyifen", - "People": "Imdanen", "Sign Up": "Jerred", "Sort by": "Semyizwer s", "Activity": "Armud", @@ -134,12 +118,7 @@ "Options": "Tixtiṛiyin", "Server error": "Tuccḍa n uqeddac", "Trusted": "Yettwattkal", - "Invite": "Nced", - "Unmute": "Rmed imesli", - "Mute": "Sens imesli", "Are you sure?": "Tebɣiḍ s tidet?", - "Security": "Taɣellist", - "Yes": "Ih", "Got it": "Awi-t", "Sunday": "Acer", "Monday": "Arim", @@ -150,9 +129,6 @@ "Saturday": "Sed", "Today": "Ass-a", "Yesterday": "Iḍelli", - "View Source": "Wali aɣbalu", - "Reply": "Err", - "Edit": "Ẓreg", "Attachment": "Taceqquft yeddan", "Error decrypting attachment": "Tuccḍa deg uwgelhen n tceqquft yeddan", "Show all": "Sken akk", @@ -165,7 +141,6 @@ "Flags": "Anayen", "Categories": "Taggayin", "More options": "Ugar n textiṛiyin", - "No results": "Ulac igmad", "collapse": "fneẓ", "Server name": "Isem n uqeddac", "Close dialog": "Mdel adiwenni", @@ -174,12 +149,10 @@ "Changelog": "Aɣmis n yisnifal", "Removing…": "Tukksa…", "Confirm Removal": "Sentem tukksa", - "Create": "Snulfu-d", "Name": "Isem", "Sign out": "Ffeɣ seg tuqqna", "Back": "Uɣal ɣer deffir", "Send": "Azen", - "Suggestions": "Isumar", "Go": "Ddu", "Session name": "Isem n tɣimit", "Send report": "Azen aneqqis", @@ -189,18 +162,15 @@ "Service": "Ameẓlu", "Summary": "Agzul", "Document": "Isemli", - "Next": "Γer sdat", "Upload files": "Sali-d ifuyla", "Appearance": "Arwes", "Source URL": "URL aɣbalu", - "Leave": "Ffeɣ", "Home": "Agejdan", "Sign in": "Qqen", "powered by Matrix": "s lmendad n Matrix", "Code": "Tangalt", "Submit": "Azen", "Email": "Imayl", - "Username": "Isem n useqdac", "Phone": "Tiliɣri", "Passwords don't match": "Awalen uffiren ur mṣadan ara", "Email (optional)": "Imayl (Afrayan)", @@ -219,11 +189,8 @@ "Export": "Sifeḍ", "Import": "Kter", "Restore": "Err-d", - "Copy": "Nɣel", "Download": "Sader", - "Retry": "Ɛreḍ tikkelt-nniḍen", "Success!": "Tammug akken iwata!", - "Disable": "Sens", "Navigation": "Tunigin", "Calls": "Isawalen", "Alt": "Alt", @@ -308,7 +275,6 @@ "Error upgrading room": "Tuccḍa deg uleqqem n texxamt", "Use an identity server": "Seqdec timagit n uqeddac", "Joins room with given address": "Kcem ɣer texxamt s tansa i d-yettunefken", - "Leave room": "Ffeɣ seg texxamt", "Ignores a user, hiding their messages from you": "Anef iuseqdac, ffer iznan-ines sɣur-k", "Ignored user": "Aseqdac yettunfen", "You are now ignoring %(userId)s": "Aql-ak tura tunfeḍ i %(userId)s", @@ -333,7 +299,6 @@ "Restricted": "Yesεa tilas", "Set up": "Sbadu", "Pencil": "Akeryun", - "Modern": "Atrar", "Online": "Srid", "Mention": "Abdar", "Verify session": "Asenqed n tɣimit", @@ -726,8 +691,6 @@ "Verification timed out.": "Yemmed wakud n usenqed.", "%(displayName)s cancelled verification.": "%(displayName)s isefsex asenqed.", "You cancelled verification.": "Tesfesxeḍ asenqed.", - "Verification cancelled": "Yefsex usenqed", - "Encryption enabled": "Awgelhen ur yeddi ara", "Decrypt %(text)s": "Wgelhen %(text)s", "Download %(text)s": "Sader %(text)s", "You verified %(name)s": "Tezsneqdeḍ %(name)s", @@ -807,7 +770,6 @@ "Unable to restore backup": "Tiririt n uḥraz tugi ad teddu", "Keys restored": "Tisura ttwaskelsent", "Reject invitation": "Agi tinnubga", - "Report Content": "Agbur n uneqqis", "Remove for everyone": "Kkes i meṛṛa", "Start authentication": "Bdu alɣu", "Sign in with SSO": "Anekcum s SSO", @@ -1112,7 +1074,6 @@ "Start verification again from their profile.": "Bdu asenqed daɣen seg umaɣnu-nsen.", "Encryption not enabled": "Awgelhen ur yermid ara", "The encryption used by this room isn't supported.": "Awgelhen yettusqedcen ur yettusefrak ara s texxamt-a.", - "React": "Sedmer", "Message Actions": "Tigawin n yizen", "Invalid file%(extra)s": "D afaylu %(extra)s arameɣtu", "Error decrypting image": "Tuccḍa deg uwgelhen n tugna", @@ -1151,7 +1112,6 @@ "Automatically replace plain text Emoji": "Semselsi iujit n uḍris aččuran s wudem awurman", "Use a system font": "Seqdec tasefsit n unagraw", "Size must be a number": "Teɣzi ilaq ad tili d uṭṭun", - "Message layout": "Talɣa n yizen", "Discovery": "Tagrut", "Help & About": "Tallalt & Ɣef", "Labs": "Tinarimin", @@ -1244,13 +1204,10 @@ "%(duration)sh": "%(duration)sh", "%(duration)sd": "%(duration)sd", "Unknown for %(duration)s": "D arussin azal n %(duration)s", - "Offline": "Beṛṛa n tuqqna", "Room %(name)s": "Taxxamt %(name)s", "No recently visited rooms": "Ulac taxxamt yemmeẓren melmi kan", "Unnamed room": "Taxxamt war isem", "Share room": "Bḍu taxxamt", - "Invites": "Inced-d", - "Start chat": "Bdu adiwenni", "Create new room": "Rnu taxxamt tamaynut", "Explore public rooms": "Snirem tixxamin tizuyaz", "Low priority": "Tazwart taddayt", @@ -1394,7 +1351,6 @@ "one": "Asali n %(filename)s d %(count)s wayeḍ-nniḍen" }, "Uploading %(filename)s": "Asali n %(filename)s", - "User menu": "Umuɣ n useqdac", "Could not load user profile": "Yegguma ad d-yali umaɣnu n useqdac", "New passwords must match each other.": "Awalen uffiren imaynuten ilaq ad mṣadan.", "Return to login screen": "Uɣal ɣer ugdil n tuqqna", @@ -1437,7 +1393,6 @@ "You cancelled verifying %(name)s": "Tesfesxeḍ asenqed n %(name)s", "You sent a verification request": "Tuzneḍ asuter n usenqed", "Error decrypting video": "Tuccḍa deg uwgelhen n tvidyut", - "Reactions": "Tisedmirin", "reacted with %(shortName)s": "issedmer s %(shortName)s", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s ibeddel avaṭar i %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s yekkes avaṭar n texxamt.", @@ -1673,7 +1628,6 @@ "Secure Backup": "Aklas aɣellsan", "Privacy": "Tabaḍnit", "Not encrypted": "Ur yettwawgelhen ara", - "About": "Ɣef", "Room settings": "Iɣewwaṛen n texxamt", "Take a picture": "Ṭṭef tawlaft", "not found in storage": "Ulac-it deg uklas", @@ -1695,7 +1649,6 @@ "Macedonia": "Masidunya", "Zimbabwe": "Zimbabwi", "Antigua & Barbuda": "Antigua & Barbuda", - "Forgot password?": "Tettuḍ awal uffir?", "Madagascar": "Madagaskaṛ", "Niue": "Niué", "Central African Republic": "Tafriqt Talemmast", @@ -1784,7 +1737,6 @@ "Belgium": "Biljik", "Senegal": "Sinigal", "Isle of Man": "Île de Man", - "Learn more": "Learn more", "Sierra Leone": "Sirra Lyun", "Seychelles": "Sicil", "Niger": "Nigir", @@ -1985,6 +1937,27 @@ "Could not connect to identity server": "Ur izmir ara ad yeqqen ɣer uqeddac n timagit", "Not a valid identity server (status code %(code)s)": "Aqeddac n timagit mačči d ameɣtu (status code %(code)s)", "Identity server URL must be HTTPS": "URL n uqeddac n timagit ilaq ad yili d HTTPS", + "common": { + "about": "Ɣef", + "analytics": "Tiselḍin", + "encryption_enabled": "Awgelhen ur yeddi ara", + "error": "Tuccḍa", + "message_layout": "Talɣa n yizen", + "modern": "Atrar", + "mute": "Sens imesli", + "no_results": "Ulac igmad", + "offline": "Beṛṛa n tuqqna", + "password": "Awal uffir", + "people": "Imdanen", + "reactions": "Tisedmirin", + "security": "Taɣellist", + "settings": "Iɣewwaren", + "success": "Yedda", + "suggestions": "Isumar", + "unmute": "Rmed imesli", + "username": "Isem n useqdac", + "verification_cancelled": "Yefsex usenqed" + }, "action": { "reject": "Agi", "confirm": "Sentem", @@ -2002,5 +1975,8 @@ "share": "Bḍu", "skip": "Zgel", "logout": "Tuffɣa" + }, + "a11y": { + "user_menu": "Umuɣ n useqdac" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 20f916196c27..a0d433671432 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -1,16 +1,9 @@ { "Create new room": "새 방 만들기", - "Error": "오류", - "Mute": "음소거", "Notifications": "알림", "powered by Matrix": "Matrix의 지원을 받음", - "Remove": "제거", "Search": "찾기", - "Settings": "설정", - "Start chat": "대화 시작", "unknown error code": "알 수 없는 오류 코드", - "OK": "네", - "Continue": "계속하기", "Account": "계정", "Add": "추가", "Admin": "관리자", @@ -61,7 +54,6 @@ "Current password": "현재 비밀번호", "Custom level": "맞춤 등급", "Deactivate Account": "계정 비활성화", - "Decline": "거절", "Decrypt %(text)s": "%(text)s 복호화", "Deops user with given id": "받은 ID로 사용자의 등급을 낮추기", "Displays action": "활동 표시하기", @@ -98,13 +90,11 @@ "Invalid Email Address": "잘못된 이메일 주소", "Invalid file%(extra)s": "잘못된 파일%(extra)s", "Invited": "초대받음", - "Invites": "초대", "Invites user with given id to current room": "받은 ID로 사용자를 현재 방에 초대하기", "Sign in with": "이것으로 로그인", "Join Room": "방에 참가", "Jump to first unread message.": "읽지 않은 첫 메시지로 건너뜁니다.", "Labs": "실험실", - "Leave room": "방 떠나기", "Low priority": "중요하지 않음", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s님이 이후 방 구성원 모두, 초대받은 시점부터 방의 기록을 볼 수 있게 했습니다.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s님이 이후 방 구성원 모두, 들어온 시점부터 방의 기록을 볼 수 있게 했습니다.", @@ -121,9 +111,7 @@ "": "<지원하지 않음>", "No display name": "표시 이름 없음", "No more results": "더 이상 결과 없음", - "No results": "결과 없음", "No users have specific privileges in this room": "모든 사용자가 이 방에 대한 특정 권한이 없음", - "Password": "비밀번호", "Passwords can't be empty": "비밀번호를 입력해주세요", "Permissions": "권한", "Phone": "전화", @@ -144,7 +132,6 @@ "%(roomName)s does not exist.": "%(roomName)s은 없는 방이에요.", "%(roomName)s is not accessible at this time.": "현재는 %(roomName)s에 들어갈 수 없습니다.", "Rooms": "방", - "Save": "저장", "Search failed": "검색 실패함", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s님이 사진을 보냈습니다.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "방에 들어오라고 %(senderName)s님이 %(targetDisplayName)s님에게 초대를 보냈습니다.", @@ -160,7 +147,6 @@ "Someone": "다른 사람", "Start authentication": "인증 시작", "Submit": "제출", - "Success": "성공", "This email address is already in use": "이 이메일 주소는 이미 사용 중입니다", "This email address was not found": "이 이메일 주소를 찾을 수 없음", "The email address linked to your account must be entered.": "계정에 연결한 이메일 주소를 입력해야 합니다.", @@ -176,7 +162,6 @@ "Unable to verify email address.": "이메일 주소를 인증할 수 없습니다.", "Unban": "출입 금지 풀기", "Unable to enable Notifications": "알림을 사용할 수 없음", - "Unmute": "음소거 끄기", "Unnamed Room": "이름 없는 방", "Uploading %(filename)s": "%(filename)s을(를) 올리는 중", "Uploading %(filename)s and %(count)s others": { @@ -234,7 +219,6 @@ }, "New Password": "새 비밀번호", "Start automatically after system login": "컴퓨터를 시작할 때 자동으로 실행하기", - "Analytics": "정보 분석", "Options": "옵션", "Passphrases must match": "암호가 일치해야 함", "Passphrase must not be empty": "암호를 입력해야 함", @@ -262,7 +246,6 @@ "Drop file here to upload": "업로드할 파일을 여기에 놓으세요", "Online": "접속 중", "Idle": "대기 중", - "Offline": "접속 없음", "Check for update": "업데이트 확인", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s님이 방 아바타를 (으)로 바꿈", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s님이 방 아바타를 제거했습니다.", @@ -273,7 +256,6 @@ "Authentication check failed: incorrect password?": "인증 확인 실패: 비밀번호를 틀리셨나요?", "Do you want to set an email address?": "이메일 주소를 설정하시겠어요?", "This will allow you to reset your password and receive notifications.": "이렇게 하면 비밀번호를 다시 설정하고 알림을 받을 수 있습니다.", - "Edit": "편집", "Sunday": "일요일", "Messages sent by bot": "봇에게 받은 메시지", "Notification targets": "알림 대상", @@ -283,7 +265,6 @@ "On": "켜기", "Changelog": "바뀐 점", "Waiting for response from server": "서버에서 응답을 기다리는 중", - "Leave": "떠나기", "Warning": "경고", "This Room": "방", "Resend": "다시 보내기", @@ -305,7 +286,6 @@ "Toolbox": "도구 상자", "Collecting logs": "로그 수집 중", "All Rooms": "모든 방", - "Quote": "인용", "Send logs": "로그 보내기", "All messages": "모든 메시지", "Call invitation": "전화 초대", @@ -324,7 +304,6 @@ "Failed to remove tag %(tagName)s from room": "방에 %(tagName)s 태그 제거에 실패함", "Wednesday": "수요일", "Thank you!": "감사합니다!", - "View Source": "소스 보기", "%(senderName)s changed the pinned messages for the room.": "%(senderName)s가 방의 고정된 메시지를 바꿨습니다.", "%(severalUsers)schanged their name %(count)s times": { "other": "%(severalUsers)s이 이름을 %(count)s번 바꿨습니다", @@ -379,7 +358,6 @@ "Send an encrypted message…": "암호화된 메시지를 보내세요…", "Send an encrypted reply…": "암호화된 메시지를 보내세요…", "Share Link to User": "사용자에게 링크 공유", - "Invite": "초대", "Mention": "언급", "Ignore": "무시", "Unignore": "그만 무시하기", @@ -486,13 +464,11 @@ "Preparing to send logs": "로그 보내려고 준비 중", "Logs sent": "로그 보내짐", "Failed to send logs: ": "로그 보내기에 실패함: ", - "Create": "만들기", "Refresh": "새로고침", "Share Room": "방 공유", "Share User": "사용자 공유", "Share Room Message": "방 메시지 공유", "Link to selected message": "선택한 메시지로 연결", - "Reply": "답장", "And %(count)s more...": { "other": "%(count)s개 더..." }, @@ -847,8 +823,6 @@ "reacted with %(shortName)s": "%(shortName)s으로 리액션함", "Edited at %(date)s. Click to view edits.": "%(date)s에 편집함. 클릭해서 편집 보기.", "edited": "편집됨", - "Yes": "네", - "No": "아니오", "Rotate Left": "왼쪽으로 회전", "Rotate Right": "오른쪽으로 회전", "%(severalUsers)shad their invitations withdrawn %(count)s times": { @@ -915,7 +889,6 @@ "Terms of Service": "서비스 약관", "Service": "서비스", "Summary": "개요", - "Next": "다음", "Upload files (%(current)s of %(total)s)": "파일 업로드 (총 %(total)s개 중 %(current)s개)", "Upload files": "파일 업로드", "Upload all": "전부 업로드", @@ -938,7 +911,6 @@ "This homeserver would like to make sure you are not a robot.": "이 홈서버는 당신이 로봇이 아닌지 확인하고 싶어합니다.", "Please review and accept all of the homeserver's policies": "모든 홈서버의 정책을 검토하고 수락해주세요", "Please review and accept the policies of this homeserver:": "이 홈서버의 정책을 검토하고 수락해주세요:", - "Username": "사용자 이름", "Use an email address to recover your account": "이메일 주소를 사용하여 계정을 복구", "Enter email address (required on this homeserver)": "이메일 주소를 입력 (이 홈서버에 필요함)", "Doesn't look like a valid email address": "올바른 이메일 주소가 아닙니다", @@ -999,7 +971,6 @@ "Your keys are being backed up (the first backup could take a few minutes).": "키를 백업했습니다 (처음 백업에는 시간이 걸릴 수 있습니다).", "Success!": "성공!", "Unable to create key backup": "키 백업을 만들 수 없음", - "Retry": "다시 시도", "Set up": "설정", "New Recovery Method": "새 복구 방식", "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "새 복구 방식을 설정하지 않으면, 공격자가 계정에 접근을 시도할 지도 모릅니다. 설정에서 계정 비밀번호를 바꾸고 즉시 새 복구 방식을 설정하세요.", @@ -1048,7 +1019,6 @@ "Report Content to Your Homeserver Administrator": "홈서버 관리자에게 내용 신고하기", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "이 메시지를 신고하면 고유 '이벤트 ID'를 홈서버의 관리자에게 보내게 됩니다. 이 방의 메시지가 암호화되어 있다면, 홈서버 관리자는 메시지 문자를 읽거나 파일 혹은 사진을 볼 수 없습니다.", "Send report": "신고 보내기", - "Report Content": "내용 신고", "Verify the link in your inbox": "메일함에 있는 링크로 확인", "Complete": "완료", "Read Marker lifetime (ms)": "이전 대화 경계선 표시 시간 (ms)", @@ -1102,7 +1072,6 @@ "Objects": "물건", "Symbols": "기호", "Flags": "깃발", - "React": "리액션", "Cancel search": "검색 취소", "Failed to deactivate user": "사용자 비활성화에 실패함", "This client does not support end-to-end encryption.": "이 클라이언트는 종단간 암호화를 지원하지 않습니다.", @@ -1156,7 +1125,6 @@ "Trusted": "신뢰함", "Not trusted": "신뢰하지 않음", "Messages in this room are end-to-end encrypted.": "이 방의 메시지는 종단간 암호화되었습니다.", - "Security": "보안", "You have ignored this user, so their message is hidden. Show anyways.": "이 사용자를 무시했습니다. 사용자의 메시지는 숨겨집니다. 무시하고 보이기.", "Any of the following data may be shared:": "다음 데이터가 공유됩니다:", "Your display name": "당신의 표시 이름", @@ -1277,18 +1245,13 @@ "Poll": "투표", "Send voice message": "음성 메세지 보내기", "Voice Message": "음성 메세지", - "Sticker": "스티커", "View source": "소스 보기", - "Report a bug": "버그 보고", "Report": "보고", - "Forward message": "전달 메세지", - "Forward": "전달", "about a day ago": "약 1일 전", "%(num)s days ago": "%(num)s일 전", "about an hour ago": "약 1 시간 전", "%(num)s minutes ago": "%(num)s분 전", "Or send invite link": "또는 초대 링크 보내기", - "Suggestions": "추천 목록", "Recent Conversations": "최근 대화 목록", "Start a conversation with someone using their name or username (like ).": "이름이나 사용자명( 형식)을 사용하는 사람들과 대화를 시작하세요.", "Direct Messages": "다이렉트 메세지", @@ -1296,7 +1259,6 @@ "Show %(count)s more": { "other": "%(count)s개 더 보기" }, - "People": "사람들", "If you can't see who you're looking for, send them your invite link below.": "찾으려는 사람이 보이지 않으면, 아래의 초대링크를 보내세요.", "Some suggestions may be hidden for privacy.": "일부 추천 목록은 개인 정보 보호를 위해 보이지 않을 수 있습니다.", "Start a conversation with someone using their name, email address or username (like ).": "이름, 이메일, 사용자명() 으로 대화를 시작하세요.", @@ -1376,6 +1338,24 @@ "Unverified session": "검증되지 않은 세션", "Favourited": "즐겨찾기 됨", "Other rooms": "다른 방 목록", + "common": { + "analytics": "정보 분석", + "error": "오류", + "forward_message": "전달 메세지", + "mute": "음소거", + "no_results": "결과 없음", + "offline": "접속 없음", + "password": "비밀번호", + "people": "사람들", + "report_a_bug": "버그 보고", + "security": "보안", + "settings": "설정", + "sticker": "스티커", + "success": "성공", + "suggestions": "추천 목록", + "unmute": "음소거 끄기", + "username": "사용자 이름" + }, "action": { "reject": "거절하기", "confirm": "확인", @@ -1395,4 +1375,4 @@ "skip": "건너뛰기", "logout": "로그아웃" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/lo.json b/src/i18n/strings/lo.json index 5d93805d972f..cf1749f4c3aa 100644 --- a/src/i18n/strings/lo.json +++ b/src/i18n/strings/lo.json @@ -248,7 +248,6 @@ "Unable to access webcam / microphone": "ບໍ່ສາມາດເຂົ້າເຖິງ webcam / microphone ໄດ້", "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "ໂທບໍ່ສຳເລັດ ເນື່ອງຈາກບໍ່ສາມາດເຂົ້າເຖິງໄມໂຄຣໂຟນໄດ້. ກວດເບິ່ງວ່າສຽບໄມໂຄຣໂຟນ ແລະ ຕັ້ງຄ່າໃຫ້ຖືກຕ້ອງ.", "Unable to access microphone": "ບໍ່ສາມາດເຂົ້າເຖິງໄມໂຄຣໂຟນໄດ້", - "OK": "ຕົກລົງ", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "ກະລຸນາຕິດຕໍ່ຜູ້ຄຸ້ມຄອງສະຖານີຂອງທ່ານ (%(homeserverDomain)s) ເພື່ອກໍານົດຄ່າຂອງ TURN Server ເພື່ອໃຫ້ການໂທເຮັດວຽກໄດ້ຢ່າງສະຖຽນ.", "Call failed due to misconfigured server": "ການໂທບໍ່ສຳເລັດເນື່ອງຈາກເຊີບເວີຕັ້ງຄ່າຜິດພາດ", "The call was answered on another device.": "ການຮັບສາຍຢູ່ໃນອຸປະກອນອື່ນ.", @@ -258,8 +257,6 @@ "User Busy": "ຜູ້ໃຊ້ບໍ່ຫວ່າງ", "Call Failed": "ໂທບໍ່ສຳເລັດ", "Unable to load! Check your network connectivity and try again.": "ບໍ່ສາມາດໂຫຼດໄດ້! ກະລຸນາກວດເບິ່ງການເຊື່ອມຕໍ່ເຄືອຂ່າຍຂອງທ່ານ ແລະ ລອງໃໝ່ອີກຄັ້ງ.", - "Error": "ມີບັນຫາ", - "Analytics": "ວິເຄາະ", "Calls are unsupported": "ບໍ່ຮອງຮັບການໂທ", "Room %(roomId)s not visible": "ບໍ່ເຫັນຫ້ອງ %(roomId)s", "Missing room_id in request": "ບໍ່ມີການຮ້ອງຂໍ room_id", @@ -595,7 +592,6 @@ "Workspace: ": "ພື້ນທີ່ເຮັດວຽກ: ", "This bridge is managed by .": "ຂົວນີ້ຖືກຄຸ້ມຄອງໂດຍ .", "This bridge was provisioned by .": "ຂົວນີ້ຖືກສະໜອງໃຫ້ໂດຍ .", - "Remove": "ເອົາອອກ", "Space options": "ຕົວເລືອກພື້ນທີ່", "Jump to first invite.": "ໄປຫາຄຳເຊີນທຳອິດ.", "Jump to first unread room.": "ໄປຫາຫ້ອງທໍາອິດທີ່ຍັງບໍ່ໄດ້ອ່ານ.", @@ -626,7 +622,6 @@ "Click to copy": "ກົດເພື່ອສຳເນົາ", "Options": "ທາງເລືອກ", "Show all rooms": "ສະແດງຫ້ອງທັງໝົດ", - "Create": "ສ້າງ", "You can change these anytime.": "ທ່ານສາມາດປ່ຽນສິ່ງເຫຼົ່ານີ້ໄດ້ທຸກເວລາ.", "Add some details to help people recognise it.": "ເພີ່ມລາຍລະອຽດບາງຢ່າງເພື່ອຊ່ວຍໃຫ້ຄົນຮັບຮູ້.", "Your private space": "ພື້ນທີ່ສ່ວນຕົວຂອງທ່ານ", @@ -643,7 +638,6 @@ "e.g. my-space": "ຕົວຢ່າງ: ພື້ນທີ່ຂອງຂ້ອຍ", "Please enter a name for the space": "ກະລຸນາໃສ່ຊື່ສໍາລັບຊ່ອງຫວ່າງ", "Search %(spaceName)s": "ຊອກຫາ %(spaceName)s", - "No results": "ບໍ່ເປັນຜົນ", "Description": "ລາຍລະອຽດ", "Name": "ຊື່", "Upload avatar": "ອັບໂຫຼດອາວາຕ້າ", @@ -651,7 +645,6 @@ "Space selection": "ການເລືອກພື້ນທີ່", "Theme": "ຫົວຂໍ້", "Match system": "ລະບົບການຈັບຄູ່", - "Settings": "ການຕັ້ງຄ່າ", "More options": "ທາງເລືອກເພີ່ມເຕີມ", "Pin to sidebar": "ປັກໝຸດໃສ່ແຖບດ້ານຂ້າງ", "Developer tools": "ເຄື່ອງມືພັດທະນາ", @@ -730,10 +723,8 @@ "Report": "ລາຍງານ", "Collapse reply thread": "ຫຍໍ້ກະທູ້ຕອບກັບ", "Source URL": "ແຫຼ່ງ URL", - "Copy link": "ສຳເນົາລິ້ງ", "Show preview": "ສະແດງຕົວຢ່າງ", "View source": "ເບິ່ງແຫຼ່ງທີ່ມາ", - "Forward": "ສົ່ງຕໍ່", "Open in OpenStreetMap": "ເປີດໃນ OpenStreetMap", "Hold": "ຖື", "Resume": "ປະຫວັດຫຍໍ້", @@ -847,7 +838,6 @@ "Export chat": "ສົ່ງການສົນທະນາອອກ", "Pinned": "ໄດ້ປັກໝຸດ", "Files": "ໄຟລ໌", - "About": "ກ່ຽວກັບ", "Not encrypted": "ບໍ່ໄດ້ເຂົ້າລະຫັດ", "Add widgets, bridges & bots": "ເພີ່ມວິດເຈັດ, ຂົວ ແລະບັອດ", "Edit widgets, bridges & bots": "ແກ້ໄຂວິດເຈັດ, ຂົວ ແລະບັອດ", @@ -925,7 +915,6 @@ "Original event source": "ແຫຼ່ງຕົ້ນສະບັບ", "Decrypted event source": "ບ່ອນທີ່ຖືກຖອດລະຫັດໄວ້", "Could not load user profile": "ບໍ່ສາມາດໂຫຼດໂປຣໄຟລ໌ຂອງຜູ້ໃຊ້ໄດ້", - "User menu": "ເມນູຜູ້ໃຊ້", "Switch theme": "ສະຫຼັບຫົວຂໍ້", "Switch to dark mode": "ສະຫຼັບໄປໂໝດມືດ", "Switch to light mode": "ສະຫຼັບໄປໂໝດແສງ", @@ -973,7 +962,6 @@ "What do you want to organise?": "ທ່ານຕ້ອງການຈັດບໍ?", "Skip for now": "ຂ້າມໄປດຽວນີ້", "Failed to create initial space rooms": "ການສ້າງພື້ນທີ່ຫ້ອງເບື້ອງຕົ້ນບໍ່ສຳເລັດ", - "Room name": "ຊື່ຫ້ອງ", "Support": "ສະຫນັບສະຫນູນ", "Random": "ສຸ່ມ", "Welcome to ": "ຍິນດີຕ້ອນຮັບສູ່ ", @@ -1058,7 +1046,6 @@ "Share Link to User": "ແບ່ງປັນລິ້ງໄປຫາຜູ້ໃຊ້", "Mention": "ກ່າວເຖິງ", "Jump to read receipt": "ຂ້າມເພື່ອອ່ານໃບຮັບເງິນ", - "Message": "ຂໍ້ຄວາມ", "Hide sessions": "ເຊື່ອງsessions", "%(count)s sessions": { "one": "%(count)s ລະບົບ", @@ -1165,8 +1152,6 @@ "one": "ຜູ້ເຂົ້າຮ່ວມ 1ຄົນ", "other": "ຜູ້ເຂົ້າຮ່ວມ %(count)s ຄົນ" }, - "Video": "ວິດີໂອ", - "Leave": "ອອກຈາກ", "Copy room link": "ສຳເນົາລິ້ງຫ້ອງ", "Low Priority": "ຄວາມສຳຄັນຕໍ່າ", "Favourite": "ສິ່ງທີ່ມັກ", @@ -1261,7 +1246,6 @@ "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s ກໍາລັງເກັບຂໍ້ຄວາມທີ່ຖືກເຂົ້າລະຫັດໄວ້ຢ່າງປອດໄພຢູ່ໃນເຄື່ອງເພື່ອໃຫ້ພວກເຂົາປາກົດໃນຜົນການຄົ້ນຫາ:", "Currently indexing: %(currentRoom)s": "ປະຈຸບັນກໍາລັງສ້າງດັດສະນີ: %(currentRoom)s", "Not currently indexing messages for any room.": "ຕອນນີ້ບໍ່ໄດ້ຈັດດັດສະນີຂໍ້ຄວາມສໍາລັບຫ້ອງໃດ.", - "Disable": "ປິດໃຊ້ງານ", "If disabled, messages from encrypted rooms won't appear in search results.": "ຖ້າປິດໃຊ້ງານ, ຂໍ້ຄວາມຈາກຫ້ອງທີ່ເຂົ້າລະຫັດຈະບໍ່ປາກົດຢູ່ໃນຜົນການຄົ້ນຫາ.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "ຖ້າທ່ານບໍ່ໄດ້ລືບຂະບວນການກູ້ຄືນ, ຜູ້ໂຈມຕີອາດຈະພະຍາຍາມເຂົ້າເຖິງບັນຊີຂອງທ່ານ. ປ່ຽນລະຫັດຜ່ານບັນຊີຂອງທ່ານ ແລະ ກຳນົດຂະບວນການກູ້ຄືນໃໝ່ທັນທີໃນການຕັ້ງຄ່າ.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "ຖ້າທ່ານດຳເນີນການສິ່ງນີ້ໂດຍບໍ່ໄດ້ຕັ້ງໃຈ, ທ່ານສາມາດຕັ້ງຄ່າຄວາມປອດໄພຂອງຂໍ້ຄວາມ ໃນລະບົບນີ້ ເຊິ່ງຈະມີການເຂົ້າລະຫັດປະຫວັດຂໍ້ຄວາມຂອງລະບົບນີ້ຄືນໃໝ່ດ້ວຍຂະບວນການກູ້ຂໍ້ມູນໃໝ່.", @@ -1516,10 +1500,8 @@ "Bans user with given id": "ຫ້າມຜູ້ໃຊ້ທີ່ມີ ID", "Removes user with given id from this room": "ລຶບຜູ້ໃຊ້ທີ່ມີ ID ໃຫ້ອອກຈາກຫ້ອງນີ້", "Unrecognised room address: %(roomAlias)s": "ບໍ່ຮູ້ຈັກທີ່ຢູ່ຫ້ອງ: %(roomAlias)s", - "Leave room": "ອອກຈາກຫ້ອງ", "Joins room with given address": "ເຂົ້າຮ່ວມຫ້ອງຕາມທີ່ຢູ່ໄດ້ລະບຸໃຫ້", "Use an identity server to invite by email. Manage in Settings.": "ໃຊ້ເຊີເວີລະບຸຕົວຕົນເພື່ອເຊີນທາງອີເມວ. ຈັດການໃນການຕັ້ງຄ່າ.", - "Continue": "ສືບຕໍ່", "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "ໃຊ້ເຊີບເວີລະບຸຕົວຕົນເພື່ອເຊີນທາງອີເມວ.ກົດສືບຕໍ່ໃຊ້ເຊີບເວີລິບຸຕົວຕົນເລີ່ມຕົ້ນ (%(defaultIdentityServerName)s) ຫຼືຈັດການ ການຕັ້ງຄ່າ.", "Use an identity server": "ໃຊ້ເຊີບເວີລະບຸຕົວຕົນ", "Invites user with given id to current room": "ເຊີນຜູ້ໃຊ້ທີ່ມີ ID ໃຫ້ໄປຫ້ອງປັດຈຸບັນ", @@ -1589,9 +1571,7 @@ "Error saving notification preferences": "ເກີດຄວາມຜິດພາດໃນການບັນທຶກການຕັ້ງຄ່າການແຈ້ງເຕືອນ", "Messages containing keywords": "ຂໍ້ຄວາມທີ່ມີຄໍາສໍາຄັນ", "Message bubbles": "ຟອງຂໍ້ຄວາມ", - "Modern": "ທັນສະໄຫມ", "IRC (Experimental)": "(ທົດລອງ)IRC", - "Message layout": "ຮູບແບບຂໍ້ຄວາມ", "Updating spaces... (%(progress)s out of %(count)s)": { "one": "ກຳລັງປັບປຸງພື້ນທີ່..", "other": "ກຳລັງຍົກລະດັບພື້ນທີ່... (%(progress)s ຈາກທັງໝົດ %(count)s)" @@ -1680,9 +1660,7 @@ "Use an email address to recover your account": "ໃຊ້ທີ່ຢູ່ອີເມວເພື່ອກູ້ຄືນບັນຊີຂອງທ່ານ", "Sign in": "ເຂົ້າສູ່ລະບົບ", "Sign in with": "ເຂົ້າສູ່ລະບົບດ້ວຍ", - "Forgot password?": "ລືມລະຫັດຜ່ານ?", "Phone": "ໂທລະສັບ", - "Username": "ຊື່ຜູ້ໃຊ້", "That phone number doesn't look quite right, please check and try again": "ເບີໂທລະສັບນັ້ນເບິ່ງຄືວ່າບໍ່ຖືກຕ້ອງ, ກະລຸນາກວດເບິ່ງແລ້ວລອງໃໝ່ອີກຄັ້ງ", "Enter phone number": "ໃສ່ເບີໂທລະສັບ", "Enter username": "ໃສ່ຊື່ຜູ້ໃຊ້", @@ -1699,7 +1677,6 @@ "Please review and accept the policies of this homeserver:": "ກະລຸນາກວດເບິ່ງ ແລະ ຍອມຮັບນະໂຍບາຍຂອງ homeserver ນີ້:", "Please review and accept all of the homeserver's policies": "ກະລຸນາກວດເບິ່ງ ແລະ ຍອມຮັບນະໂຍບາຍທັງໝົດຂອງ homeserver", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "ບໍ່ມີລະຫັດສາທາລະນະ captcha ໃນການຕັ້ງຄ່າ homeserver. ກະລຸນາລາຍງານນີ້ກັບຜູ້ຄຸູ້ມຄອງ homeserver ຂອງທ່ານ.", - "Password": "ລະຫັດຜ່ານ", "Confirm your identity by entering your account password below.": "ຢືນຢັນຕົວຕົນຂອງທ່ານໂດຍການໃສ່ລະຫັດຜ່ານບັນຊີຂອງທ່ານຂ້າງລຸ່ມນີ້.", "Doesn't look like a valid email address": "ເບິ່ງຄືວ່າທີ່ຢູ່ອີເມວບໍ່ຖືກຕ້ອງ", "Enter email address": "ໃສ່ທີ່ຢູ່ອີເມວ", @@ -1802,7 +1779,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) ເຂົ້າສູ່ລະບົບໃໝ່ໂດຍບໍ່ມີການຢັ້ງຢືນ:", "Verify your other session using one of the options below.": "ຢືນຢັນລະບົບອື່ນຂອງທ່ານໂດຍໃຊ້ໜຶ່ງໃນຕົວເລືອກຂ້າງລຸ່ມນີ້.", "You signed in to a new session without verifying it:": "ທ່ານເຂົ້າສູ່ລະບົບໃໝ່ໂດຍບໍ່ມີການຢັ້ງຢືນ:", - "Next": "ຕໍ່ໄປ", "Document": "ເອກະສານ", "Summary": "ສະຫຼຸບ", "Service": "ບໍລິການ", @@ -1850,7 +1826,6 @@ "Use an identity server to invite by email. Manage in Settings.": "ໃຊ້ເຊີບເວີທີ່ລະບຸຕົວຕົນເພື່ອເຊີນທາງອີເມວ. ຈັດການໃນ ການຕັ້ງຄ່າ.", "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "ໃຊ້ເຊີບເວີລະບຸຕົວຕົນເພື່ອເຊີນທາງອີເມວ. ໃຊ້ຄ່າເລີ່ມຕົ້ນ (%(defaultIdentityServerName)s) ຫຼືຈັດການໃນ Settings.", "Recently Direct Messaged": "ຂໍ້ຄວາມໂດຍກົງເມື່ອບໍ່ດົນມານີ້", - "Suggestions": "ຄຳແນະນຳ", "Recent Conversations": "ການສົນທະນາທີ່ຜ່ານມາ", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "ຜູ້ໃຊ້ຕໍ່ໄປນີ້ອາດຈະບໍ່ມີຢູ່ ຫຼືບໍ່ຖືກຕ້ອງ ແລະ ບໍ່ສາມາດເຊີນໄດ້: %(csvNames)s", "Failed to find the following users": "ການຊອກຫາຜູ້ໃຊ້ຕໍ່ໄປນີ້ບໍ່ສຳເລັດ", @@ -1875,14 +1850,12 @@ "Feedback sent! Thanks, we appreciate it!": "ສົ່ງຄຳຕິຊົມແລ້ວ! ຂອບໃຈ, ພວກເຮົາຂອບໃຈ!", "Search for rooms or people": "ຊອກຫາຫ້ອງ ຫຼື ຄົນ", "Message preview": "ສະເເດງຕົວຢ່າງຂໍ້ຄວາມ", - "Forward message": "ສົ່ງຂໍ້ຄວາມຕໍ່", "Send": "ສົ່ງ", "Sent": "ສົ່ງແລ້ວ", "Sending": "ກຳລັງສົ່ງ", "You don't have permission to do this": "ທ່ານບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ເຮັດສິ່ງນີ້", "Send feedback": "ສົ່ງຄໍາຄິດເຫັນ", "Please view existing bugs on Github first. No match? Start a new one.": "ກະລຸນາເບິ່ງ ຂໍ້ບົກຜ່ອງທີ່ມີຢູ່ແລ້ວໃນ Github ກ່ອນ. ບໍ່ກົງກັນບໍ? ເລີ່ມອັນໃໝ່.", - "Report a bug": "ລາຍງານຂໍ້ຜິດພາດ", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "PRO TIP: ຖ້າທ່ານເລີ່ມມີຂໍ້ຜິດພາດ, ກະລຸນາສົ່ງ ບັນທຶກການແກ້ບັນຫາ ເພື່ອຊ່ວຍພວກເຮົາຕິດຕາມບັນຫາ.", "You may contact me if you want to follow up or to let me test out upcoming ideas": "ທ່ານສາມາດຕິດຕໍ່ຫາຂ້ອຍໄດ້ ຖ້າທ່ານຕ້ອງການຕິດຕາມ ຫຼືໃຫ້ຂ້ອຍທົດສອບແນວຄວາມຄິດທີ່ເກີດຂື້ນ", "Feedback": "ຄໍາຕິຊົມ", @@ -1900,7 +1873,6 @@ "Video conference ended by %(senderName)s": "ກອງປະຊຸມວິດີໂອໄດ້ສິ້ນສຸດລົງໂດຍ %(senderName)s", "Join the conference from the room information card on the right": "ເຂົ້າຮ່ວມກອງປະຊຸມຈາກບັດຂໍ້ມູນຫ້ອງຢູ່ເບື້ອງຂວາ", "Join the conference at the top of this room": "ເຂົ້າຮ່ວມກອງປະຊຸມຢູ່ເທິງສຸດຂອງຫ້ອງນີ້", - "Image": "ຮູບພາບ", "Show image": "ສະແດງຮູບພາບ", "Error decrypting image": "ການຖອດລະຫັດຮູບພາບຜິດພາດ", "Invalid file%(extra)s": "ໄຟລ໌ບໍ່ຖືກຕ້ອງ%(extra)s", @@ -1910,10 +1882,7 @@ "Click": "ກົດ", "Expand quotes": "ຂະຫຍາຍວົງຢືມ", "Collapse quotes": "ຫຍໍ້ວົງຢືມ", - "Reply": "ຕອບ", - "Edit": "ແກ້ໄຂ", "Can't create a thread from an event with an existing relation": "ບໍ່ສາມາດສ້າງກະທູ້ຈາກເຫດການທີ່ມີຄວາມສໍາພັນທີ່ມີຢູ່ແລ້ວ", - "React": "ປະຕິກິລິຍາ", "View live location": "ເບິ່ງສະຖານທີ່ປັດຈຸບັນ", "Create options": "ສ້າງທາງເລືອກ", "Question or topic": "ຄໍາຖາມ ຫຼື ຫົວຂໍ້", @@ -1923,7 +1892,6 @@ "Poll type": "ປະເພດແບບສຳຫຼວດ", "Sorry, the poll you tried to create was not posted.": "ຂໍອະໄພ, ແບບສຳຫຼວດທີ່ທ່ານພະຍາຍາມສ້າງບໍ່ໄດ້ໂພສ.", "Failed to post poll": "ການໂພສແບບສຳຫຼວດບໍ່ສຳເລັດ", - "Done": "ສຳເລັດແລ້ວ", "Edit poll": "ແກ້ໄຂແບບສຳຫຼວດ", "Create Poll": "ສ້າງແບບສຳຫຼວດ", "Create poll": "ສ້າງແບບສຳຫຼວດ", @@ -2052,7 +2020,6 @@ "Use the Desktop app to search encrypted messages": "ໃຊ້ ແອັບເດັສທັອບ ເພື່ອຊອກຫາຂໍ້ຄວາມທີ່ເຂົ້າລະຫັດໄວ້", "Use the Desktop app to see all encrypted files": "ໃຊ້ ແອັບເດັສທັອບ ເພື່ອເບິ່ງໄຟລ໌ທີ່ຖືກເຂົ້າລະຫັດທັງໝົດ", "Message search initialisation failed, check your settings for more information": "ເລີ່ມຕົ້ນການຄົ້ນຫາຂໍ້ຄວາມບ່ສຳເລັດ, ໃຫ້ກວດເບິ່ງ ການຕັ້ງຄ່າຂອງທ່ານ ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ", - "Copy": "ສຳເນົາ", "Popout widget": "ວິດເຈັດ popout", "Error - Mixed content": "ຂໍ້ຜິດພາດ - ເນື້ອຫາມີການປະສົມປະສານ", "Error loading Widget": "ເກີດຄວາມຜິດພາດໃນການໂຫຼດ Widget", @@ -2131,7 +2098,6 @@ "Topic (optional)": "ຫົວຂໍ້ (ທາງເລືອກ)", "Create a private room": "ສ້າງຫ້ອງສ່ວນຕົວ", "Create a public room": "ສ້າງຫ້ອງສາທາລະນະ", - "Create a room": "ສ້າງຫ້ອງ", "Create a video room": "ສ້າງຫ້ອງວິດີໂອ", "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.": "ທ່ານອາດຈະປິດການທໍາງານນີ້ຖ້າຫ້ອງຈະຖືກໃຊ້ສໍາລັບການຮ່ວມມືກັບທີມງານພາຍນອກທີ່ມີ homeserver ເປັນຂອງຕົນເອງ. ອັນນີ້ບໍ່ສາມາດປ່ຽນແປງໄດ້ໃນພາຍຫຼັງ.", "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.": "ທ່ານອາດຈະເປີດໃຊ້ງານຫ້ອງນີ້ຖ້າຫາກຈະໃຊ້ເພື່ອຮ່ວມມືກັບທີມງານພາຍໃນຢູ່ໃນເຊີບເວີຂອງທ່ານເທົ່ານັ້ນ. ອັນນີ້ບໍ່ສາມາດປ່ຽນແປງໄດ້ໃນພາຍຫຼັງ.", @@ -2278,7 +2244,6 @@ "%(senderName)s joined the call": "%(senderName)s ເຂົ້າຮ່ວມການໂທ", "You joined the call": "ທ່ານເຂົ້າຮ່ວມການໂທ", "Other rooms": "ຫ້ອງອື່ນໆ", - "People": "ຄົນ", "Favourites": "ລາຍການທີ່ມັກ", "Replying": "ກຳລັງຕອບກັບ", "Recently viewed": "ເບິ່ງເມື່ອບໍ່ດົນມານີ້", @@ -2288,7 +2253,6 @@ }, "View": "ເບິ່ງ", "Unknown": "ບໍ່ຮູ້ຈັກ", - "Offline": "ອອບໄລນ໌", "Idle": "ບໍ່ເຮັດວຽກ", "Online": "ອອນລາຍ", "Unknown for %(duration)s": "ບໍ່ຮູ້ຈັກສໍາລັບ %(duration)s", @@ -2350,7 +2314,6 @@ "Message deleted on %(date)s": "ຂໍ້ຄວາມຖືກລຶບເມື່ອ %(date)s", "reacted with %(shortName)s": "ປະຕິກິລິຍາດ້ວຍ %(shortName)s", "%(reactors)s reacted with %(content)s": "%(reactors)sປະຕິກິລິຍາກັບ %(content)s", - "Reactions": "ປະຕິກິລິຍາ", "Show all": "ສະແດງທັງໝົດ", "Add reaction": "ເພີ່ມການຕອບໂຕ້", "Error processing voice message": "ການປະມວນຜົນຂໍ້ຄວາມສຽງຜິດພາດ", @@ -2418,7 +2381,6 @@ "Use app for a better experience": "ໃຊ້ແອັບເພື່ອປະສົບການທີ່ດີກວ່າ", "Silence call": "ປິດສຽງໂທ", "Sound on": "ເປີດສຽງ", - "Decline": "ຫຼຸດລົງ", "Video call": "ໂທດ້ວວິດີໂອ", "Voice call": "ໂທດ້ວຍສຽງ", "Unknown caller": "ບໍ່ຮູ້ຈັກຜູ້ທີ່ໂທ", @@ -2428,14 +2390,10 @@ "Later": "ຕໍ່ມາ", "Review": "ທົບທວນຄືນ", "Review to ensure your account is safe": "ກວດສອບໃຫ້ແນ່ໃຈວ່າບັນຊີຂອງທ່ານປອດໄພ", - "No": "ບໍ່", - "Yes": "ແມ່ນແລ້ວ", "Share anonymous data to help us identify issues. Nothing personal. No third parties. Learn More": "ແບ່ງປັນຂໍ້ມູນທີ່ບໍ່ເປີດເຜີຍຊື່ເພື່ອຊ່ວຍພວກເຮົາລະບຸບັນຫາ. ບໍ່ມີຫຍັງສ່ວນຕົວ. ບໍ່ມີຄົນທີສາມ. ສຶກສາເພີ່ມເຕີມ", - "Learn more": "ສຶກສາເພີ່ມເຕີມ", "You previously consented to share anonymous usage data with us. We're updating how that works.": "ກ່ອນໜ້ານີ້ທ່ານໄດ້ຍິນຍອມທີ່ຈະແບ່ງປັນຂໍ້ມູນການນຳໃຊ້ທີ່ບໍ່ເປີດເຜີຍຊື່ກັບພວກເຮົາ. ພວກເຮົາກຳລັງອັບເດດວິທີການເຮັດວຽກນັ້ນ.", "Help improve %(analyticsOwner)s": "ຊ່ວຍປັບປຸງ %(analyticsOwner)s", "That's fine": "ບໍ່ເປັນຫຍັງ", - "Enable": "ເປີດໃຊ້ງານ", "File Attached": "ແນບໄຟລ໌", "Exported %(count)s events in %(seconds)s seconds": { "one": "ສົ່ງອອກ %(count)s ເຫດການໃນ %(seconds)sວິນາທີ", @@ -2606,7 +2564,6 @@ "Historical": "ປະຫວັດ", "System Alerts": "ການແຈ້ງເຕືອນລະບົບ", "Low priority": "ບູລິມະສິດຕໍ່າ", - "Invites": "ເຊີນ", "Add room": "ເພີ່ມຫ້ອງ", "Explore public rooms": "ສຳຫຼວດຫ້ອງສາທາລະນະ", "You do not have permissions to add rooms to this space": "ທ່ານບໍ່ມີສິດໃນການເພີ່ມຫ້ອງໃສ່ພື້ນທີ່ນີ້", @@ -2615,7 +2572,6 @@ "You do not have permissions to create new rooms in this space": "ທ່ານບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ສ້າງຫ້ອງໃຫມ່ໃນພື້ນທີ່ນີ້", "New room": "ຫ້ອງໃຫມ່", "Explore rooms": "ການສຳຫຼວດຫ້ອງ", - "Start chat": "ເລີ່ມການສົນທະນາ", "Illegal Content": "ເນື້ອຫາທີ່ຜິດຕໍ່ກົດໝາຍ", "Toxic Behaviour": "ພຶດຕິກຳທີ່ບໍ່ເປັນມິດ", "Disagree": "ບໍ່ເຫັນດີ", @@ -2636,7 +2592,6 @@ "Sunday": "ວັນອາທິດ", "The call is in an unknown state!": "ການໂທຢູ່ໃນສະຖານະທີ່ບໍ່ຮູ້ຈັກ!", "Missed call": "ສາຍບໍ່ໄດ້ຮັບ", - "Retry": "ລອງໃໝ່", "Unknown failure: %(reason)s": "ຄວາມບໍ່ສຳເລັດ: %(reason)s", "An unknown error occurred": "ເກີດຄວາມຜິດພາດທີ່ບໍ່ຮູ້ຈັກຂຶ້ນ", "Their device couldn't start the camera or microphone": "ອຸປະກອນຂອງເຂົາເຈົ້າບໍ່ສາມາດເລີ່ມກ້ອງຖ່າຍຮູບ ຫຼື ໄມໂຄຣໂຟນໄດ້", @@ -2645,7 +2600,6 @@ "No answer": "ບໍ່ມີຄໍາຕອບ", "Call back": "ໂທກັບ", "Call declined": "ປະຕິເສດການໂທ", - "Verification cancelled": "ຍົກເລີກການຢັ້ງຢືນແລ້ວ", "You cancelled verification.": "ທ່ານໄດ້ຍົກເລີກການຢັ້ງຢືນແລ້ວ.", "%(displayName)s cancelled verification.": "%(displayName)s ຍົກເລີກການຢັ້ງຢືນ.", "You cancelled verification on your other device.": "ທ່ານໄດ້ຍົກເລີກການຢັ້ງຢືນໃນອຸປະກອນອື່ນຂອງທ່ານ.", @@ -2666,12 +2620,10 @@ "Ask %(displayName)s to scan your code:": "ໃຫ້ %(displayName)s ສະແກນລະຫັດຂອງທ່ານ:", "Verify by scanning": "ຢືນຢັນໂດຍການສະແກນ", "Verify this device by completing one of the following:": "ຢັ້ງຢືນອຸປະກອນນີ້ໂດຍການເຮັດສິ່ງໃດໜຶ່ງຕໍ່ໄປນີ້:", - "Start": "ເລີ່ມຕົ້ນ", "Compare a unique set of emoji if you don't have a camera on either device": "ປຽບທຽບຊຸດ emoji ທີ່ເປັນເອກະລັກຖ້າຫາກທ່ານບໍ່ມີກ້ອງຖ່າຍຮູບຢູ່ໃນອຸປະກອນໃດໜຶ່ງ", "Compare unique emoji": "ປຽບທຽບ emoji ທີ່ເປັນເອກະລັກ", "Scan this unique code": "ສະແກນລະຫັດສະເພາະນີ້", "The device you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "ອຸປະກອນທີ່ທ່ານພະຍາຍາມກວດສອບບໍ່ຮອງຮັບການສະແກນລະຫັດ QR ຫຼື ການຢັ້ງຢືນ emoji, ຊຶ່ງເປັນສິ່ງທີ່%(brand)sສະຫນັບສະຫນູນ. ລອງໃຊ້ກັບລູກຄ້າອື່ນ.", - "Security": "ຄວາມປອດໄພ", "Edit devices": "ແກ້ໄຂອຸປະກອນ", "This client does not support end-to-end encryption.": "ລູກຄ້ານີ້ບໍ່ຮອງຮັບການເຂົ້າລະຫັດແບບຕົ້ນທາງເຖິງປາຍທາງ.", "Role in ": "ບົດບາດໃນ ", @@ -2682,8 +2634,6 @@ "Are you sure?": "ທ່ານແນ່ໃຈບໍ່?", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "ທ່ານບໍ່ສາມາດຍົກເລີກການປ່ຽນແປງນີ້ໄດ້ເນື່ອງຈາກທ່ານກໍາລັງສົ່ງເສີມຜູ້ໃຊ້ໃຫ້ມີລະດັບພະລັງງານດຽວກັນກັບຕົວທ່ານເອງ.", "Failed to change power level": "ການປ່ຽນແປງລະດັບພະລັງງານບໍ່ສຳເລັດ", - "Mute": "ປິດສຽງ", - "Unmute": "ຍົກເລີກປິດສຽງ", "Failed to mute user": "ປິດສຽງຜູ້ໃຊ້ບໍ່ສຳເລັດ", "Remove them from specific things I'm able to": "ລຶບອອກບາງສິ່ງທີ່ທີ່ຂ້ອຍສາມາດເຮັດໄດ້", "Remove them from everything I'm able to": "ລຶບອອກຈາກທຸກສິ່ງທີ່ຂ້ອຍສາມາດເຮັດໄດ້", @@ -2820,7 +2770,6 @@ "Keyword": "ຄໍາສໍາຄັນ", "Phone numbers": "ເບີໂທລະສັບ", "Email addresses": "ທີ່ຢູ່ອີເມວ", - "Success": "ຄວາມສໍາເລັດ", "Your password was successfully changed.": "ລະຫັດຜ່ານຂອງທ່ານຖືກປ່ຽນສຳເລັດແລ້ວ.", "Failed to change password. Is your password correct?": "ປ່ຽນລະຫັດຜ່ານບໍ່ສຳເລັດ. ລະຫັດຜ່ານຂອງທ່ານຖືກຕ້ອງບໍ?", "Appearance Settings only affect this %(brand)s session.": "ການຕັ້ງຄ່າຮູບລັກສະນະມີຜົນກະທົບພຽງແຕ່ %(brand)s ໃນລະບົບ ນີ້.", @@ -2903,7 +2852,6 @@ "Unable to load key backup status": "ບໍ່ສາມາດໂຫຼດສະຖານະສຳຮອງລະຫັດໄດ້", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "ທ່ານແນ່ໃຈບໍ່? ທ່ານຈະສູນເສຍຂໍ້ຄວາມທີ່ເຂົ້າລະຫັດໄວ້ຫາກກະແຈຂອງທ່ານບໍ່ຖືກສຳຮອງຂໍ້ມູນຢ່າງຖືກຕ້ອງ.", "Delete Backup": "ລຶບການສຳຮອງຂໍ້ມູນ", - "Save": "ບັນທຶກ", "Profile picture": "ຮູບໂປຣໄຟລ໌", "The operation could not be completed": "ການດໍາເນີນງານບໍ່ສໍາເລັດ", "Failed to save your profile": "ບັນທຶກໂປຣໄຟລ໌ຂອງທ່ານບໍ່ສຳເລັດ", @@ -2967,9 +2915,7 @@ "The encryption used by this room isn't supported.": "ບໍ່ຮອງຮັບການເຂົ້າລະຫັດທີ່ໃຊ້ໂດຍຫ້ອງນີ້.", "Encryption not enabled": "ບໍ່ໄດ້ເປີດໃຊ້ການເຂົ້າລະຫັດ", "Ignored attempt to disable encryption": "ປະຕິເສດຄວາມພະຍາຍາມປິດການເຂົ້າລະຫັດ", - "Encryption enabled": "ເປີດໃຊ້ການເຂົ້າລະຫັດແລ້ວ", "Some encryption parameters have been changed.": "ບາງຕົວກໍານົດການເຂົ້າລະຫັດໄດ້ຖືກປ່ຽນແປງ.", - "View Source": "ເບິ່ງແຫຼ່ງ", "Download": "ດາວໂຫຼດ", "Decrypting": "ການຖອດລະຫັດ", "Downloading": "ກຳລັງດາວໂຫຼດ", @@ -3163,7 +3109,6 @@ "a device cross-signing signature": "ການ cross-signing ອຸປະກອນ", "a new cross-signing key signature": "ການລົງລາຍເຊັນ cross-signing ແບບໃໝ່", "Thank you!": "ຂອບໃຈ!", - "Report Content": "ລາຍງານເນື້ອຫາ", "Please pick a nature and describe what makes this message abusive.": "ກະລຸນາເລືອກລັກສະນະ ແລະ ການອະທິບາຍຂອງຂໍ້ຄວາມໃດໜຶ່ງທີ່ສຸພາບ.", "": "", "<%(count)s spaces>": { @@ -3209,7 +3154,6 @@ "Unban from room": "ຫ້າມຈາກຫ້ອງ", "Ban from space": "ພື້ນທີ່ຫ້າມຈາກ", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "ໃນຫ້ອງທີ່ເຂົ້າລະຫັດ, ເຊັ່ນດຽວກັບ, ການສະແດງຕົວຢ່າງ URLໄດ້ປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນເພື່ອຮັບປະກັນວ່າ homeserver ຂອງທ່ານ (ບ່ອນສະແດງຕົວຢ່າງ) ບໍ່ສາມາດລວບລວມຂໍ້ມູນກ່ຽວກັບການເຊື່ອມຕໍ່ທີ່ທ່ານເຫັນຢູ່ໃນຫ້ອງນີ້.", - "Invite": "ເຊີນ", "Search": "ຊອກຫາ", "Show Widgets": "ສະແດງ Widgets", "Hide Widgets": "ເຊື່ອງ Widgets", @@ -3227,11 +3171,9 @@ "%(duration)sm": "%(duration)sm", "%(duration)ss": "%(duration)s", "Insert link": "ໃສ່ລິ້ງ", - "Quote": "ວົງຢືມ", "Poll": "ການສໍາຫລວດ", "You do not have permission to start polls in this room.": "ທ່ານບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ເລີ່ມແບບສຳຫຼວດຢູ່ໃນຫ້ອງນີ້.", "Voice Message": "ຂໍ້ຄວາມສຽງ", - "Sticker": "ສະຕິກເກີ", "Hide stickers": "ເຊື່ອງສະຕິກເກີ", "Emoji": "ອີໂມຈິ", "Send voice message": "ສົ່ງຂໍ້ຄວາມສຽງ", @@ -3282,6 +3224,34 @@ "View related event": "ເບິ່ງເຫດການທີ່ກ່ຽວຂ້ອງ", "Read receipts": "ຢັ້ງຢືນອ່ານແລ້ວ", "Enable hardware acceleration (restart %(appName)s to take effect)": "ເພີ່ມຂີດຄວາມສາມາດຂອງອຸປະກອນ (ບູສແອັບ %(appName)s ນີ້ໃໝ່ເພື່ອເຫັນຜົນ)", + "common": { + "about": "ກ່ຽວກັບ", + "analytics": "ວິເຄາະ", + "encryption_enabled": "ເປີດໃຊ້ການເຂົ້າລະຫັດແລ້ວ", + "error": "ມີບັນຫາ", + "forward_message": "ສົ່ງຂໍ້ຄວາມຕໍ່", + "image": "ຮູບພາບ", + "message": "ຂໍ້ຄວາມ", + "message_layout": "ຮູບແບບຂໍ້ຄວາມ", + "modern": "ທັນສະໄຫມ", + "mute": "ປິດສຽງ", + "no_results": "ບໍ່ເປັນຜົນ", + "offline": "ອອບໄລນ໌", + "password": "ລະຫັດຜ່ານ", + "people": "ຄົນ", + "reactions": "ປະຕິກິລິຍາ", + "report_a_bug": "ລາຍງານຂໍ້ຜິດພາດ", + "room_name": "ຊື່ຫ້ອງ", + "security": "ຄວາມປອດໄພ", + "settings": "ການຕັ້ງຄ່າ", + "sticker": "ສະຕິກເກີ", + "success": "ຄວາມສໍາເລັດ", + "suggestions": "ຄຳແນະນຳ", + "unmute": "ຍົກເລີກປິດສຽງ", + "username": "ຊື່ຜູ້ໃຊ້", + "verification_cancelled": "ຍົກເລີກການຢັ້ງຢືນແລ້ວ", + "video": "ວິດີໂອ" + }, "action": { "reject": "ປະຕິເສດ", "confirm": "ຢືນຢັນ", @@ -3304,5 +3274,8 @@ "share": "ແບ່ງປັນ", "skip": "ຂ້າມ", "logout": "ອອກຈາກລະບົບ" + }, + "a11y": { + "user_menu": "ເມນູຜູ້ໃຊ້" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index 3be2d472cc30..fc2e04828feb 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -2,7 +2,6 @@ "This email address is already in use": "Šis el. pašto adresas jau naudojamas", "This phone number is already in use": "Šis telefono numeris jau naudojamas", "Failed to verify email address: make sure you clicked the link in the email": "Nepavyko patvirtinti el. pašto adreso: įsitikinkite, kad paspaudėte nuorodą el. laiške", - "Analytics": "Analitika", "Sunday": "Sekmadienis", "Notification targets": "Pranešimo objektai", "Today": "Šiandien", @@ -12,9 +11,7 @@ "Changelog": "Keitinių žurnalas", "Waiting for response from server": "Laukiama atsakymo iš serverio", "Failed to change password. Is your password correct?": "Nepavyko pakeisti slaptažodžio. Ar jūsų slaptažodis teisingas?", - "OK": "Gerai", "Operation failed": "Operacija nepavyko", - "Mute": "Nutildyti", "Warning": "Įspėjimas", "This Room": "Šis pokalbių kambarys", "Resend": "Siųsti iš naujo", @@ -29,7 +26,6 @@ "No update available.": "Nėra galimų atnaujinimų.", "Noisy": "Triukšmingas", "Collecting app version information": "Renkama programos versijos informacija", - "Remove": "Pašalinti", "When I'm invited to a room": "Kai mane pakviečia į kambarį", "Tuesday": "Antradienis", "Search…": "Paieška…", @@ -46,7 +42,6 @@ "What's New": "Kas naujo", "Wednesday": "Trečiadienis", "Send": "Siųsti", - "Error": "Klaida", "Send logs": "Siųsti žurnalus", "All messages": "Visos žinutės", "unknown error code": "nežinomas klaidos kodas", @@ -54,24 +49,18 @@ "Messages containing my display name": "Žinutės, kuriose yra mano rodomas vardas", "State Key": "Būklės raktas", "What's new?": "Kas naujo?", - "View Source": "Peržiūrėti šaltinį", "Invite to this room": "Pakviesti į šį kambarį", "You cannot delete this message. (%(code)s)": "Jūs negalite trinti šios žinutės. (%(code)s)", "Thursday": "Ketvirtadienis", "Back": "Atgal", - "Reply": "Atsakyti", "Show message in desktop notification": "Rodyti žinutę darbalaukio pranešime", - "Quote": "Cituoti", "Messages in group chats": "Žinutės grupiniuose pokalbiuose", "Yesterday": "Vakar", "Error encountered (%(errorDetail)s).": "Susidurta su klaida (%(errorDetail)s).", "Low Priority": "Žemo prioriteto", "Register": "Registruotis", "Off": "Išjungta", - "Edit": "Koreguoti", - "Continue": "Tęsti", "Event Type": "Įvykio tipas", - "Leave": "Išeiti", "Developer Tools": "Programuotojo Įrankiai", "Event Content": "Įvykio turinys", "Thank you!": "Ačiū!", @@ -130,7 +119,6 @@ "Unnamed Room": "Bevardis Kambarys", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Rodyti laiko žymes 12 valandų formatu (pvz. 2:30pm)", "Always show message timestamps": "Visada rodyti žinučių laiko žymes", - "Decline": "Atmesti", "Incorrect verification code": "Neteisingas patvirtinimo kodas", "Submit": "Pateikti", "Phone": "Telefonas", @@ -141,7 +129,6 @@ "Warning!": "Įspėjimas!", "Do you want to set an email address?": "Ar norite nustatyti el. pašto adresą?", "Current password": "Dabartinis slaptažodis", - "Password": "Slaptažodis", "New Password": "Naujas slaptažodis", "Failed to set display name": "Nepavyko nustatyti rodomo vardo", "Drop file here to upload": "Norėdami įkelti, vilkite failą čia", @@ -149,7 +136,6 @@ "Failed to mute user": "Nepavyko nutildyti vartotojo", "Are you sure?": "Ar tikrai?", "Ignore": "Ignoruoti", - "Invite": "Pakviesti", "Admin Tools": "Administratoriaus įrankiai", "Attachment": "Priedas", "Voice call": "Balso skambutis", @@ -159,13 +145,11 @@ "Server error": "Serverio klaida", "Command error": "Komandos klaida", "Unknown": "Nežinoma", - "Save": "Išsaugoti", "(~%(count)s results)": { "other": "(~%(count)s rezultatų(-ai))", "one": "(~%(count)s rezultatas)" }, "Upload avatar": "Įkelti pseudoportretą", - "Settings": "Nustatymai", "%(roomName)s does not exist.": "%(roomName)s neegzistuoja.", "%(roomName)s is not accessible at this time.": "%(roomName)s šiuo metu nėra pasiekiamas.", "Muted Users": "Nutildyti naudotojai", @@ -202,7 +186,6 @@ "one": "Įkeliamas %(filename)s ir dar %(count)s failas" }, "Uploading %(filename)s": "Įkeliamas %(filename)s", - "Success": "Pavyko", "Unable to remove contact information": "Nepavyko pašalinti kontaktinės informacijos", "": "", "Check for update": "Tikrinti, ar yra atnaujinimų", @@ -273,7 +256,6 @@ "Idle for %(duration)s": "Neveiklus %(duration)s", "Offline for %(duration)s": "Atsijungęs %(duration)s", "Idle": "Neveiklus", - "Offline": "Atsijungęs", "Forget room": "Pamiršti kambarį", "Share room": "Bendrinti kambarį", "Usage": "Naudojimas", @@ -303,7 +285,6 @@ "Sign in with": "Prisijungti naudojant", "Sign in": "Prisijungti", "Create new room": "Sukurti naują kambarį", - "No results": "Jokių rezultatų", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(oneUser)schanged their name %(count)s times": { "one": "%(oneUser)s pasikeitė vardą", @@ -311,11 +292,9 @@ }, "collapse": "suskleisti", "expand": "išskleisti", - "Start chat": "Pradėti pokalbį", "Logs sent": "Žurnalai išsiųsti", "Failed to send logs: ": "Nepavyko išsiųsti žurnalų: ", "Submit debug logs": "Pateikti derinimo žurnalus", - "Create": "Sukurti", "Unknown error": "Nežinoma klaida", "Incorrect password": "Neteisingas slaptažodis", "An error has occurred.": "Įvyko klaida.", @@ -328,7 +307,6 @@ "Invalid Email Address": "Neteisingas el. pašto adresas", "You cannot place a call with yourself.": "Negalite skambinti patys sau.", "Missing roomId.": "Trūksta kambario ID.", - "Leave room": "Išeiti iš kambario", "This homeserver has hit its Monthly Active User limit.": "Šis serveris pasiekė savo mėnesinį aktyvių vartotojų limitą.", "This homeserver has exceeded one of its resource limits.": "Šis serveris viršijo vieno iš savo išteklių limitą.", "Enable widget screenshots on supported widgets": "Įjungti valdiklių ekrano kopijas palaikomuose valdikliuose", @@ -369,7 +347,6 @@ "Moderator": "Moderatorius", "Ignores a user, hiding their messages from you": "Ignoruoja vartotoją, slepiant nuo jūsų jo žinutes", "Stops ignoring a user, showing their messages going forward": "Sustabdo vartotojo ignoravimą, rodant jums jo tolimesnes žinutes", - "Invites": "Pakvietimai", "Historical": "Istoriniai", "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s nustatė pagrindinį šio kambario adresą į %(address)s.", "%(senderName)s removed the main address for this room.": "%(senderName)s pašalino pagrindinį šio kambario adresą.", @@ -419,14 +396,12 @@ "Unable to restore backup": "Nepavyko atkurti atsarginės kopijos", "No backup found!": "Nerasta jokios atsarginės kopijos!", "Failed to decrypt %(failedCount)s sessions!": "Nepavyko iššifruoti %(failedCount)s seansų!", - "Next": "Toliau", "Description": "Aprašas", "Signed Out": "Atsijungta", "For security, this session has been signed out. Please sign in again.": "Saugumo sumetimais, šis seansas buvo atjungtas. Prisijunkite dar kartą.", "Failed to perform homeserver discovery": "Nepavyko atlikti serverio radimo", "This server does not support authentication with a phone number.": "Šis serveris nepalaiko tapatybės nustatymo telefono numeriu.", "Download": "Atsisiųsti", - "Retry": "Bandyti dar kartą", "Add Email Address": "Pridėti El. Pašto Adresą", "Add Phone Number": "Pridėti Telefono Numerį", "Chat with %(brand)s Bot": "Kalbėtis su %(brand)s Botu", @@ -546,7 +521,6 @@ "General failure": "Bendras triktis", "Messages containing my username": "Žinutės, kuriose yra mano vartotojo vardas", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (galia %(powerLevelNumber)s)", - "Username": "Vartotojo vardas", "Enter username": "Įveskite vartotojo vardą", "Create account": "Sukurti paskyrą", "Change identity server": "Pakeisti tapatybės serverį", @@ -694,7 +668,6 @@ "Warning: you should only set up key backup from a trusted computer.": "Įspėjimas: atsarginę raktų kopiją sukurkite tik iš patikimo kompiuterio.", "Add room": "Sukurti kambarį", "If you've joined lots of rooms, this might take a while": "Jei esate prisijungę prie daug kambarių, tai gali užtrukti", - "Copy": "Kopijuoti", "Later": "Vėliau", "Go back": "Grįžti", "This room is end-to-end encrypted": "Šis kambarys visapusiškai užšifruotas", @@ -767,13 +740,10 @@ "one": "%(count)s seansas" }, "Hide sessions": "Slėpti seansus", - "Security": "Saugumas", "Verify by scanning": "Patvirtinti nuskaitant", "Verify all users in a room to ensure it's secure.": "Patvirtinkite visus vartotojus kambaryje, kad užtikrintumėte jo saugumą.", "%(displayName)s cancelled verification.": "%(displayName)s atšaukė patvirtinimą.", "You cancelled verification.": "Jūs atšaukėte patvirtinimą.", - "Verification cancelled": "Patvirtinimas atšauktas", - "Encryption enabled": "Šifravimas įjungtas", "Encryption not enabled": "Šifravimas neįjungtas", "More options": "Daugiau parinkčių", "Enable end-to-end encryption": "Įjungti visapusį šifravimą", @@ -784,7 +754,6 @@ "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Pranešant apie šią netinkamą žinutę, serverio administratoriui bus nusiųstas unikalus 'įvykio ID'. Jei žinutės šiame kambaryje yra šifruotos, serverio administratorius negalės perskaityti žinutės teksto ar peržiūrėti failų arba paveikslėlių.", "Send report": "Siųsti pranešimą", "Are you sure you want to reject the invitation?": "Ar tikrai norite atmesti pakvietimą?", - "Report Content": "Pranešti", "Nice, strong password!": "Puiku, stiprus slaptažodis!", "Old cryptography data detected": "Aptikti seni kriptografijos duomenys", "Registration has been disabled on this homeserver.": "Registracija šiame serveryje išjungta.", @@ -917,7 +886,6 @@ "Cross-signing public keys:": "Kryžminio pasirašymo vieši raktai:", "Cross-signing private keys:": "Kryžminio pasirašymo privatūs raktai:", "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Individualiai patikrinkite kiekvieną vartotojo naudojamą seansą, kad pažymėtumėte jį kaip patikimą, nepasitikint kryžminiu pasirašymu patvirtintais įrenginiais.", - "Enable": "Įjungti", "Enable desktop notifications for this session": "Įjungti darbalaukio pranešimus šiam seansui", "Enable audible notifications for this session": "Įjungti garsinius pranešimus šiam seansui", "wait and try again later": "palaukti ir bandyti vėliau dar kartą", @@ -952,11 +920,8 @@ "a new cross-signing key signature": "naujas kryžminio pasirašymo rakto parašas", "a device cross-signing signature": "įrenginio kryžminio pasirašymo parašas", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Neįmanoma prisijungti prie serverio per HTTP, kai naršyklės juostoje yra HTTPS URL. Naudokite HTTPS arba įjunkite nesaugias rašmenas.", - "Done": "Atlikta", "No media permissions": "Nėra medijos leidimų", "Almost there! Is %(displayName)s showing the same shield?": "Beveik atlikta! Ar %(displayName)s rodo tokį patį skydą?", - "No": "Ne", - "Yes": "Taip", "Show a placeholder for removed messages": "Rodyti pašalintų žinučių žymeklį", "Send typing notifications": "Siųsti spausdinimo pranešimus", "Automatically replace plain text Emoji": "Automatiškai pakeisti paprasto teksto Jaustukus", @@ -1179,7 +1144,6 @@ "Modify widgets": "Keisti valdiklius", "%(brand)s now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "%(brand)s dabar naudoja 3-5 kartus mažiau atminties, įkeliant vartotojų informaciją tik prireikus. Palaukite, kol mes iš naujo sinchronizuosime su serveriu!", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Jūs būsite nukreipti į trečiosios šalies svetainę, kad galėtumėte patvirtinti savo paskyrą naudojimui su %(integrationsUrl)s. Ar norite tęsti?", - "About": "Apie", "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Įjungus kambario šifravimą jo išjungti negalima. Žinutės, siunčiamos šifruotame kambaryje, nėra matomos serverio. Jas gali matyti tik kambario dalyviai. Įjungus šifravimą, daugelis botų ir tiltų gali veikti netinkamai. Sužinoti daugiau apie šifravimą.", "about a day from now": "apie dieną nuo dabar", "about an hour from now": "apie valandą nuo dabar", @@ -1222,7 +1186,6 @@ "Please fill why you're reporting.": "Įrašykite kodėl pranešate.", "Put a link back to the old room at the start of the new room so people can see old messages": "Naujojo kambario pradžioje įdėkite nuorodą į senąjį kambarį, kad žmonės galėtų matyti senas žinutes", "Smileys & People": "Šypsenėlės ir Žmonės", - "People": "Žmonės", "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "Žmonių ignoravimas atliekamas naudojant draudimų sąrašus, kuriuose yra taisyklės, nurodančios kas turi būti draudžiami. Užsiprenumeravus draudimų sąrašą, vartotojai/serveriai, užblokuoti šio sąrašo, bus nuo jūsų paslėpti.", "The call was answered on another device.": "Į skambutį buvo atsiliepta kitame įrenginyje.", "Answered Elsewhere": "Atsiliepta Kitur", @@ -1321,8 +1284,6 @@ "Appearance Settings only affect this %(brand)s session.": "Išvaizdos nustatymai įtakoja tik šį %(brand)s seansą.", "Customise your appearance": "Tinkinti savo išvaizdą", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Nustatykite sistemoje įdiegto šrifto pavadinimą ir %(brand)s bandys jį naudoti.", - "Modern": "Modernus", - "Message layout": "Žinutės išdėstymas", "Use between %(min)s pt and %(max)s pt": "Naudokite dydį tarp %(min)s pt ir %(max)s pt", "Custom font size can only be between %(min)s pt and %(max)s pt": "Pasirinktinis šrifto dydis gali būti tik tarp %(min)s pt ir %(max)s pt", "Size must be a number": "Dydis turi būti skaičius", @@ -1376,7 +1337,6 @@ "This bridge was provisioned by .": "Šis tiltas buvo parūpintas .", "Your server isn't responding to some requests.": "Jūsų serveris neatsako į kai kurias užklausas.", "Unable to find a supported verification method.": "Nepavyko rasti palaikomo patvirtinimo metodo.", - "Start": "Pradėti", "Unknown caller": "Nežinomas skambintojas", "Downloading logs": "Parsiunčiami žurnalai", "Uploading logs": "Įkeliami žurnalai", @@ -1432,7 +1392,6 @@ "Please review and accept all of the homeserver's policies": "Peržiūrėkite ir sutikite su visa serverio politika", "Please view existing bugs on Github first. No match? Start a new one.": "Pirmiausia peržiūrėkite Github'e esančius pranešimus apie klaidas. Jokio atitikmens? Pradėkite naują pranešimą.", "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "Paprastai tai turi įtakos tik kambario apdorojimui serveryje. Jei jūs turite problemų su savo %(brand)s, praneškite apie klaidą.", - "Report a bug": "Pranešti apie klaidą", "Invite someone using their name, email address, username (like ) or share this room.": "Pakviesti ką nors, naudojant jų vardą, el. pašto adresą, vartotojo vardą (pvz.: ) arba bendrinti šį kambarį.", "Azerbaijan": "Azerbaidžanas", "Austria": "Austrija", @@ -1476,7 +1435,6 @@ "Forgotten your password?": "Pamiršote savo slaptažodį?", "Homeserver": "Serveris", "New? Create account": "Naujas vartotojas? Sukurkite paskyrą", - "Forgot password?": "Pamiršote slaptažodį?", "Preparing to download logs": "Ruošiamasi parsiųsti žurnalus", "Server Options": "Serverio Parinktys", "Your homeserver": "Jūsų serveris", @@ -1488,20 +1446,17 @@ "Add an Integration": "Pridėti Integraciją", "Message deleted on %(date)s": "Žinutė buvo ištrinta %(date)s", "reacted with %(shortName)s": "reagavo su %(shortName)s", - "Reactions": "Reakcijos", "Add reaction": "Pridėti reakciją", "Error processing voice message": "Klaida apdorojant balso pranešimą", "Ignored attempt to disable encryption": "Bandymas išjungti šifravimą buvo ignoruotas", "Verification timed out.": "Pasibaigė laikas patikrinimui.", "Ask %(displayName)s to scan your code:": "Paprašykite %(displayName)s nuskaityti jūsų kodą:", - "Unmute": "Atšaukti nutildymą", "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Dideliam žinučių kiekiui tai gali užtrukti kurį laiką. Prašome neperkrauti savo kliento.", "No recent messages by %(user)s found": "Nerasta jokių naujesnių %(user)s žinučių", "You cancelled": "Jūs atšaukėte", "You declined": "Jūs atsisakėte", "You accepted": "Jūs priėmėte", "Message Actions": "Žinutės veiksmai", - "React": "Reaguoti", "Edit devices": "Redaguoti įrenginius", "Not encrypted": "Neužšifruota", "Pinned messages": "Prisegtos žinutės", @@ -1538,7 +1493,6 @@ "Generate a Security Key": "Generuoti Saugumo Raktą", "Save your Security Key": "Išsaugoti savo Saugumo Raktą", "Go to Settings": "Eiti į Nustatymus", - "Disable": "Išjungti", "Search (must be enabled)": "Paieška (turi būti įjungta)", "The user you called is busy.": "Vartotojas kuriam skambinate yra užsiėmęs.", "User Busy": "Vartotojas Užsiėmęs", @@ -1629,7 +1583,6 @@ "You most likely do not want to reset your event index store": "Tikriausiai nenorite iš naujo nustatyti įvykių indekso saugyklos", "Reset event store?": "Iš naujo nustatyti įvykių saugyklą?", "About homeservers": "Apie namų serverius", - "Learn more": "Sužinokite daugiau", "Use your preferred Matrix homeserver if you have one, or host your own.": "Naudokite pageidaujamą Matrix namų serverį, jei tokį turite, arba talpinkite savo.", "Other homeserver": "Kitas namų serveris", "Sign into your homeserver": "Prisijunkite prie savo namų serverio", @@ -1673,7 +1626,6 @@ "Go": "Eiti", "Start a conversation with someone using their name or username (like ).": "Pradėkite pokalbį su asmeniu naudodami jo vardą arba vartotojo vardą (pvz., ).", "Start a conversation with someone using their name, email address or username (like ).": "Pradėkite pokalbį su kažkuo naudodami jų vardą, el. pašto adresą arba vartotojo vardą (pvz., ).", - "Suggestions": "Pasiūlymai", "Recent Conversations": "Pastarieji pokalbiai", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Toliau išvardyti vartotojai gali neegzistuoti arba būti negaliojantys, todėl jų negalima pakviesti: %(csvNames)s", "Failed to find the following users": "Nepavyko rasti šių vartotojų", @@ -1689,7 +1641,6 @@ "Terms of Service": "Paslaugų Teikimo Sąlygos", "Search for rooms or people": "Ieškoti kambarių ar žmonių", "Message preview": "Žinutės peržiūra", - "Forward message": "Persiųsti žinutę", "Sent": "Išsiųsta", "Sending": "Siunčiama", "You don't have permission to do this": "Jūs neturite leidimo tai daryti", @@ -1908,7 +1859,6 @@ "Remove from space": "Pašalinti iš erdvės", "Disinvite from space": "Atšaukti kvietimą iš erdvės", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.": "Negalėsite atšaukti šio pakeitimo, nes pažeminsite save, o jei esate paskutinis privilegijuotas naudotojas erdvėje, bus neįmanoma susigrąžinti privilegijų.", - "Message": "Žinutė", "Export chat": "Eksportuoti pokalbį", "Pinned": "Prisegta", "Files": "Failai", @@ -1961,7 +1911,6 @@ }, "Joined": "Prisijungta", "Joining…": "Prisijungiama…", - "Video": "Vaizdo įrašas", "Unread messages.": "Neperskaitytos žinutės.", "%(count)s unread messages.": { "one": "1 neperskaityta žinutė.", @@ -2408,7 +2357,6 @@ "You do not have permission to start polls in this room.": "Jūs neturite leidimo pradėti apklausas šiame kambaryje.", "Voice Message": "Balso žinutė", "Voice broadcast": "Balso transliacija", - "Sticker": "Lipdukas", "Hide stickers": "Slėpti lipdukus", "Send voice message": "Siųsti balso žinutę", "%(seconds)ss left": "%(seconds)ss liko", @@ -2468,7 +2416,6 @@ "Search for": "Ieškoti", "Original event source": "Originalus įvykio šaltinis", "View source": "Peržiūrėti šaltinį", - "Forward": "Persiųsti", "Unable to copy a link to the room to the clipboard.": "Nepavyko nukopijuoti nuorodos į kambarį į iškarpinę.", "Unable to copy room link": "Nepavyko nukopijuoti kambario nurodos", "Copy room link": "Kopijuoti kambario nuorodą", @@ -2497,6 +2444,32 @@ "Yes, stop broadcast": "Taip, sustabdyti transliaciją", "JSON": "JSON", "HTML": "HTML", + "common": { + "about": "Apie", + "analytics": "Analitika", + "encryption_enabled": "Šifravimas įjungtas", + "error": "Klaida", + "forward_message": "Persiųsti žinutę", + "message": "Žinutė", + "message_layout": "Žinutės išdėstymas", + "modern": "Modernus", + "mute": "Nutildyti", + "no_results": "Jokių rezultatų", + "offline": "Atsijungęs", + "password": "Slaptažodis", + "people": "Žmonės", + "reactions": "Reakcijos", + "report_a_bug": "Pranešti apie klaidą", + "security": "Saugumas", + "settings": "Nustatymai", + "sticker": "Lipdukas", + "success": "Pavyko", + "suggestions": "Pasiūlymai", + "unmute": "Atšaukti nutildymą", + "username": "Vartotojo vardas", + "verification_cancelled": "Patvirtinimas atšauktas", + "video": "Vaizdo įrašas" + }, "action": { "reject": "Atmesti", "confirm": "Patvirtinti", @@ -2520,4 +2493,4 @@ "skip": "Praleisti", "logout": "Atsijungti" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index e4765eebe8fd..66fa0f3228b9 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -34,12 +34,10 @@ "Command error": "Komandas kļūda", "Commands": "Komandas", "Confirm password": "Apstipriniet paroli", - "Continue": "Turpināt", "Cryptography": "Kriptogrāfija", "Current password": "Pašreizējā parole", "Custom level": "Pielāgots līmenis", "Deactivate Account": "Deaktivizēt kontu", - "Decline": "Noraidīt", "Decrypt %(text)s": "Atšifrēt %(text)s", "Deops user with given id": "Atceļ operatora statusu lietotājam ar norādīto Id", "Default": "Noklusējuma", @@ -49,7 +47,6 @@ "Email address": "Epasta adrese", "Emoji": "Emocijzīmes", "Enter passphrase": "Ievadiet frāzveida paroli", - "Error": "Kļūda", "Error decrypting attachment": "Kļūda atšifrējot pielikumu", "Export": "Eksportēt", "Export E2E room keys": "Eksportēt istabas šifrēšanas atslēgas", @@ -84,13 +81,11 @@ "Invalid Email Address": "Nepareiza epasta adrese", "Invalid file%(extra)s": "Nederīgs fails %(extra)s", "Invited": "Uzaicināts/a", - "Invites": "Uzaicinājumi", "Invites user with given id to current room": "Uzaicina lietotāju ar norādīto id uz pašreizējo istabu", "Sign in with": "Pierakstīties ar", "Join Room": "Pievienoties istabai", "Jump to first unread message.": "Pāriet uz pirmo neizlasīto ziņu.", "Labs": "Izmēģinājumu lauciņš", - "Leave room": "Pamest istabu", "Low priority": "Zema prioritāte", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu visiem istabas dalībniekiem no brīža, kad tie tika uzaicināti.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu visiem istabas dalībniekiem ar brīdi, kad tie pievienojās.", @@ -100,7 +95,6 @@ "Missing room_id in request": "Iztrūkstošs room_id pieprasījumā", "Missing user_id in request": "Iztrūkstošs user_id pieprasījumā", "Moderator": "Moderators", - "Mute": "Apklusināt", "Name": "Nosaukums", "New passwords don't match": "Jaunās paroles nesakrīt", "New passwords must match each other.": "Jaunajām parolēm ir jāsakrīt vienai ar otru.", @@ -109,11 +103,8 @@ "": "", "No display name": "Nav parādāmā vārda", "No more results": "Vairāk nekādu rezultātu nav", - "No results": "Nav rezultātu", "No users have specific privileges in this room": "Šajā istabā nav lietotāju ar īpašām privilēģijām", - "OK": "Labi", "Operation failed": "Darbība neizdevās", - "Password": "Parole", "Passwords can't be empty": "Paroles nevar būt tukšas", "Permissions": "Atļaujas", "Phone": "Telefons", @@ -123,7 +114,6 @@ "Reason": "Iemesls", "Register": "Reģistrēties", "Reject invitation": "Noraidīt uzaicinājumu", - "Remove": "Dzēst", "Return to login screen": "Atgriezties uz pierakstīšanās lapu", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s nav atļauts nosūtīt jums paziņojumus. Lūdzu pārbaudi sava pārlūka iestatījumus", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s nav piešķirta atļauja nosūtīt paziņojumus. Lūdzu mēģini vēlreiz", @@ -153,7 +143,6 @@ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s dzēsa istabas avataru.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s nomainīja %(roomName)s istabas avataru", "Rooms": "Istabas", - "Save": "Saglabāt", "Search": "Meklēt", "Search failed": "Meklēšana neizdevās", "Server error": "Servera kļūda", @@ -161,7 +150,6 @@ "Server may be unavailable, overloaded, or you hit a bug.": "Serveris ir nesasniedzams, pārslogots, vai arī esat saskārties ar kļūdu programmā.", "Server unavailable, overloaded, or something else went wrong.": "Serveris ir nesasniedzams, pārslogots, vai arī esi uzdūries kļūdai.", "Session ID": "Sesijas ID", - "Settings": "Iestatījumi", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Rādīt laiku 12 stundu formātā (piemēram 2:30pm)", "Signed Out": "Izrakstījās", "Sign in": "Pierakstīties", @@ -169,7 +157,6 @@ "Someone": "Kāds", "Start authentication": "Sākt autentifikāciju", "Submit": "Iesniegt", - "Success": "Izdevās", "This email address is already in use": "Šī epasta adrese jau tiek izmantota", "This email address was not found": "Šāda epasta adrese nav atrasta", "The email address linked to your account must be entered.": "Ir jāievada jūsu kontam piesaistītā epasta adrese.", @@ -185,7 +172,6 @@ "Unable to verify email address.": "Neizdevās apstiprināt epasta adresi.", "Unban": "Atcelt pieejas liegumu", "unknown error code": "nezināms kļūdas kods", - "Unmute": "Pārtraukt apklusināšanu", "Unnamed Room": "Istaba bez nosaukuma", "Create new room": "Izveidot jaunu istabu", "You have enabled URL previews by default.": "URL priekšskatījumi pēc noklusējuma jums iriespējoti .", @@ -231,10 +217,8 @@ "Room": "Istaba", "Connectivity to the server has been lost.": "Savienojums ar serveri pārtrūka.", "Sent messages will be stored until your connection has returned.": "Sūtītās ziņas tiks saglabātas līdz brīdim, kad savienojums tiks atjaunots.", - "Start chat": "Uzsākt čatu", "New Password": "Jaunā parole", "Start automatically after system login": "Startēt pie ierīces ielādes", - "Analytics": "Analītika", "Options": "Opcijas", "Passphrases must match": "Frāzveida parolēm ir jāsakrīt", "Passphrase must not be empty": "Frāzveida parole nevar būt tukša", @@ -262,7 +246,6 @@ "Drop file here to upload": "Ievelc šeit failu augšupielādei", "Online": "Tiešsaistē", "Idle": "Dīkstāvē", - "Offline": "Bezsaistē", "Check for update": "Pārbaudīt atjauninājumus", "Something went wrong!": "Kaut kas nogāja greizi!", "Your browser does not support the required cryptography extensions": "Jūsu pārlūks neatbalsta vajadzīgos kriptogrāfijas paplašinājumus", @@ -275,7 +258,6 @@ }, "Delete widget": "Dzēst vidžetu", "Define the power level of a user": "Definē lietotāja statusu", - "Edit": "Rediģēt", "Enable automatic language detection for syntax highlighting": "Iespējot automātisko valodas noteikšanu sintakses iezīmējumiem", "Publish this room to the public in %(domain)s's room directory?": "Publicēt šo istabu publiskajā %(domain)s katalogā?", "AM": "AM", @@ -283,13 +265,11 @@ "Unable to create widget.": "Neizdevās izveidot widžetu.", "You are not in this room.": "Tu neatrodies šajā istabā.", "You do not have permission to do that in this room.": "Tev nav atļaujas šai darbībai šajā istabā.", - "Create": "Izveidot", "Automatically replace plain text Emoji": "Automātiski aizstāt vienkāršā teksta emocijzīmes", "%(widgetName)s widget added by %(senderName)s": "%(senderName)s pievienoja %(widgetName)s vidžetu", "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s dzēsa vidžetu %(widgetName)s", "Warning": "Brīdinājums", "Send": "Sūtīt", - "Leave": "Pamest", "Unnamed room": "Nenosaukta istaba", "Call Failed": "Zvans neizdevās", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", @@ -310,7 +290,6 @@ "Ignore": "Ignorēt", "Jump to read receipt": "Pāriet uz pēdējo skatīto ziņu", "Mention": "Pieminēt", - "Invite": "Uzaicināt", "Send an encrypted reply…": "Sūtīt šifrētu atbildi…", "Send an encrypted message…": "Sūtīt šifrētu ziņu…", "%(duration)ss": "%(duration)s sek", @@ -470,7 +449,6 @@ "All Rooms": "Visās istabās", "Wednesday": "Trešdiena", "You cannot delete this message. (%(code)s)": "Tu nevari dzēst šo ziņu. (%(code)s)", - "Quote": "Citēt", "Send logs": "Nosūtīt logfailus", "All messages": "Visas ziņas", "Call invitation": "Uzaicinājuma zvans", @@ -481,7 +459,6 @@ "Thursday": "Ceturtdiena", "Logs sent": "Logfaili nosūtīti", "Back": "Atpakaļ", - "Reply": "Atbildēt", "Show message in desktop notification": "Parādīt ziņu darbvirsmas paziņojumos", "Messages in group chats": "Ziņas grupas čatos", "Yesterday": "Vakardien", @@ -490,7 +467,6 @@ "Off": "Izslēgt", "Event Type": "Notikuma tips", "Developer Tools": "Izstrādātāja rīki", - "View Source": "Skatīt pirmkodu", "Event Content": "Notikuma saturs", "Thank you!": "Tencinam!", "Sign In": "Pieteikties", @@ -523,7 +499,6 @@ "%(displayName)s is typing …": "%(displayName)s raksta…", "Got it": "Sapratu", "Got It": "Sapratu", - "Verification cancelled": "Verificēšana atcelta", "Waiting for %(displayName)s to accept…": "Gaida, kamēr %(displayName)s akceptēs…", "Waiting for answer": "Tiek gaidīta atbilde", "To be secure, do this in person or use a trusted way to communicate.": "Lai tas būtu droši, dariet to klātienē vai lietojiet kādu uzticamu saziņas veidu.", @@ -542,7 +517,6 @@ }, "Once enabled, encryption cannot be disabled.": "Šifrēšana nevar tikt atspējota, ja reiz tikusi iespējota.", "Encryption not enabled": "Šifrēšana nav iespējota", - "Encryption enabled": "Šifrēšana iespējota", "Only the two of you are in this conversation, unless either of you invites anyone to join.": "Tikai jūs abi esat šajā sarakstē, ja vien kāds no jums neuzaicina citus pievienoties.", "This is the beginning of your direct message history with .": "Šis ir sākums jūsu tiešās sarakstes vēsturei ar .", "Use the Desktop app to search encrypted messages": "Izmantojiet lietotni, lai veiktu šifrētu ziņu meklēšanu", @@ -575,13 +549,10 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Saziņa ar šo lietotāju ir nodrošināta ar pilnīgu šifrēšanu un nav nolasāma trešajām pusēm.", "Encrypted by a deleted session": "Šifrēts ar dzēstu sesiju", "reacted with %(shortName)s": "reaģēja ar %(shortName)s", - "Reactions": "Reaģēšana", "Quick Reactions": "Ātra reaģēšana", - "React": "Reaģēt", "Messages in this room are not end-to-end encrypted.": "Ziņām šajā istabā netiek piemērota pilnīga šifrēšana.", "This room is end-to-end encrypted": "Šajā istabā tiek veikta pilnīga šifrēšana", "Room information": "Informācija par istabu", - "Security": "Drošība", "The server is offline.": "Serveris bezsaistē.", "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Ja ir aizmirsta slepenā frāze, jūs varat izmantot drošības atslēgu vaiiestatīt jaunus atkopšanas veidus", "If you've forgotten your Security Key you can ": "Ja ir aizmirsta drošības atslēga, jūs varat ", @@ -639,14 +610,12 @@ "Welcome %(name)s": "Laipni lūdzam %(name)s", "Welcome to %(appName)s": "Laipni lūdzam %(appName)s", "%(doneRooms)s out of %(totalRooms)s": "%(doneRooms)s no %(totalRooms)s", - "Done": "Gatavs", "Great! This Security Phrase looks strong enough.": "Lieliski! Šī slepenā frāze šķiet pietiekami sarežgīta.", "Confirm your Security Phrase": "Apstipriniet savu slepeno frāzi", "Set a Security Phrase": "Iestatiet slepeno frāzi", "Enter a Security Phrase": "Ievadiet slepeno frāzi", "Incorrect Security Phrase": "Nepareiza slepenā frāze", "Security Phrase": "Slepenā frāze", - "Forgot password?": "Aizmirsi paroli?", "No homeserver URL provided": "Nav iestatīts bāzes servera URL", "Cannot reach homeserver": "Neizdodas savienoties ar bāzes serveri", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Fails '%(fileName)s pārsniedz augšupielādējama faila izmēra ierobežojumu šajā bāzes serverī", @@ -654,11 +623,9 @@ "Join millions for free on the largest public server": "Pievienojieties bez maksas miljoniem lietotāju lielākajā publiskajā serverī", "Server Options": "Servera parametri", "%(ssoButtons)s Or %(usernamePassword)s": "%(ssoButtons)s vai %(usernamePassword)s", - "Username": "Lietotājvārds", " invited you": " uzaicināja jūs", " wants to chat": " vēlas sarakstīties", "Smileys & People": "Smaidiņi & cilvēki", - "People": "Cilvēki", "Add a photo, so people can easily spot your room.": "Pievienojiet foto, lai padarītu istabu vieglāk pamanāmu citiem cilvēkiem.", "Add a topic to help people know what it is about.": "Pievienot tematu, lai dotu cilvēkiem priekšstatu.", "You do not have permission to invite people to this room.": "Jums nav atļaujas uzaicināt cilvēkus šajā istabā.", @@ -755,8 +722,6 @@ "Set a new custom sound": "Iestatīt jaunu pielāgotu skaņas signālu", "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Šifrētās istabās, ieskaitot arī šo, URL priekšskatījumi pēc noklusējuma ir atspējoti, lai nodrošinātu, ka jūsu bāzes serveris, kurā notiek priekšskatījumu ģenerēšana, nevar apkopot informāciju par saitēm, kuras redzat šajā istabā.", "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Kad kāds savā ziņā ievieto URL, priekšskatījums ar virsrakstu, aprakstu un vietnes attēlu var tikt parādīts, tādējādi sniedzot vairāk informācijas par šo vietni.", - "No": "Nē", - "Yes": "Jā", "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "Iestatiet istabai adresi, lai lietotāji var atrast šo istabu jūsu bāzes serverī (%(localDomain)s)", "Local Addresses": "Lokālās adreses", "New published address (e.g. #alias:server)": "Jauna publiska adrese (piemēram, #alias:server)", @@ -808,7 +773,6 @@ "Share room": "Dalīties ar istabu", "Help & About": "Palīdzība un par lietotni", "About homeservers": "Par bāzes serveriem", - "About": "Par", "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s uzsāka balss zvanu. (Netiek atbalstīts šajā pārlūkā)", "%(senderName)s placed a voice call.": "%(senderName)s uzsāka balss zvanu.", "Enable message search in encrypted rooms": "Iespējot ziņu meklēšanu šifrētās istabās", @@ -881,7 +845,6 @@ "If you've joined lots of rooms, this might take a while": "Ja esat pievienojies daudzām istabām, tas var aizņemt kādu laiku", "Your password has been reset.": "Jūsu parole ir atiestatīta.", "Could not load user profile": "Nevarēja ielādēt lietotāja profilu", - "User menu": "Lietotāja izvēlne", "New here? Create an account": "Pirmo reizi šeit? Izveidojiet kontu", "Got an account? Sign in": "Vai jums ir konts? Pierakstieties", "You have %(count)s unread notifications in a prior version of this room.": { @@ -941,7 +904,6 @@ "Contact your server admin.": "Sazinieties ar servera administratoru.", "Your homeserver has exceeded one of its resource limits.": "Jūsu bāzes serverī ir pārsniegts limits kādam no resursiem.", "Your homeserver has exceeded its user limit.": "Jūsu bāzes serverī ir pārsniegts lietotāju limits.", - "Enable": "Iespējot", "Enable desktop notifications": "Iespējot darbvirsmas paziņojumus", "Don't miss a reply": "Nepalaidiet garām atbildi", "Later": "Vēlāk", @@ -980,7 +942,6 @@ "%(name)s is requesting verification": "%(name)s pieprasa verifikāciju", "Verification Request": "Verifikācijas pieprasījums", "Download": "Lejupielādēt", - "Copy": "Kopēt", "Activate selected button": "Aktivizēt izvēlēto pogu", "Currently indexing: %(currentRoom)s": "Pašlaik indeksē: %(currentRoom)s", "A private space for you and your teammates": "Privāta vieta jums un jūsu komandas dalībniekiem", @@ -1111,7 +1072,6 @@ }, "Save Changes": "Saglabāt izmaiņas", "Welcome to ": "Laipni lūdzam uz ", - "Room name": "Istabas nosaukums", "Room List": "Istabu saraksts", "Send as message": "Nosūtīt kā ziņu", "%(brand)s URL": "%(brand)s URL", @@ -1531,7 +1491,6 @@ "Explore Public Rooms": "Pārlūkot publiskas istabas", "Show preview": "Rādīt priekšskatījumu", "View source": "Skatīt pirmkodu", - "Forward": "Pārsūtīt", "Forgotten or lost all recovery methods? Reset all": "Aizmirsāt vai pazaudējāt visas atkopšanās iespējas? Atiestatiet visu", "Link to most recent message": "Saite uz jaunāko ziņu", "Share Room": "Dalīties ar istabu", @@ -1544,7 +1503,6 @@ "Some suggestions may be hidden for privacy.": "Daži ieteikumi var būt slēpti dēļ privātuma.", "Search for rooms or people": "Meklēt istabas vai cilvēkus", "Message preview": "Ziņas priekšskatījums", - "Forward message": "Pārsūtīt ziņu", "Public room": "Publiska istaba", "Private room (invite only)": "Privāta istaba (tikai ar ielūgumiem)", "Only people invited will be able to find and join this room.": "Tikai uzaicinātās cilvēki varēs atrast un pievienoties šai istabai.", @@ -1749,7 +1707,6 @@ "Create a video room": "Izveidot video istabu", "%(creatorName)s created this room.": "%(creatorName)s izveidoja šo istabu.", "Create room": "Izveidot istabu", - "Create a room": "Izveidot istabu", "Create video room": "Izveidot video istabu", "Update any local room aliases to point to the new room": "Atjaunināt jebkurus vietējās istabas aizstājvārdus, lai tie norādītu uz jauno istabu", "Unrecognised room address: %(roomAlias)s": "Neatpazīta istabas adrese: %(roomAlias)s", @@ -1791,7 +1748,6 @@ "Show: %(instance)s rooms (%(server)s)": "Rādīt: %(instance)s istabas (%(server)s)", "Show: Matrix rooms": "Rādīt: Matrix istabas", "Show:": "Rādīt:", - "Suggestions": "Ieteikumi", "Other options": "Citas iespējas", "Use \"%(query)s\" to search": "Izmantot \"%(query)s\" meklēšanai", "Try scrolling up in the timeline to see if there are any earlier ones.": "Mēģiniet ritināt laika joslu uz augšu, lai redzētu, vai ir kādas agrākas ziņas.", @@ -1810,6 +1766,27 @@ "Export Chat": "Eksportēt čatu", "Export chat": "Eksportēt čatu", "Back to chat": "Atgriezties uz čatu", + "common": { + "about": "Par", + "analytics": "Analītika", + "encryption_enabled": "Šifrēšana iespējota", + "error": "Kļūda", + "forward_message": "Pārsūtīt ziņu", + "mute": "Apklusināt", + "no_results": "Nav rezultātu", + "offline": "Bezsaistē", + "password": "Parole", + "people": "Cilvēki", + "reactions": "Reaģēšana", + "room_name": "Istabas nosaukums", + "security": "Drošība", + "settings": "Iestatījumi", + "success": "Izdevās", + "suggestions": "Ieteikumi", + "unmute": "Pārtraukt apklusināšanu", + "username": "Lietotājvārds", + "verification_cancelled": "Verificēšana atcelta" + }, "action": { "reject": "Noraidīt", "confirm": "Apstiprināt", @@ -1828,5 +1805,8 @@ "share": "Dalīties", "skip": "Izlaist", "logout": "Izrakstīties" + }, + "a11y": { + "user_menu": "Lietotāja izvēlne" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/ml.json b/src/i18n/strings/ml.json index e523a6839271..62f231ce295f 100644 --- a/src/i18n/strings/ml.json +++ b/src/i18n/strings/ml.json @@ -1,20 +1,13 @@ { "Create new room": "പുതിയ റൂം സൃഷ്ടിക്കുക", - "Error": "എറര്‍", "Failed to forget room %(errCode)s": "%(errCode)s റൂം ഫോര്‍ഗെറ്റ് ചെയ്യുവാന്‍ സാധിച്ചില്ല", "Favourite": "പ്രിയപ്പെട്ടവ", - "Mute": "നിശ്ശബ്ദം", "Notifications": "നോട്ടിഫിക്കേഷനുകള്‍", "Operation failed": "ശ്രമം പരാജയപ്പെട്ടു", "powered by Matrix": "മാട്രിക്സില്‍ പ്രവര്‍ത്തിക്കുന്നു", - "Remove": "നീക്കം ചെയ്യുക", "Search": "തിരയുക", - "Settings": "സജ്ജീകരണങ്ങള്‍", - "Start chat": "ചാറ്റ് തുടങ്ങുക", "unknown error code": "അപരിചിത എറര്‍ കോഡ്", - "OK": "ശരി", "Failed to change password. Is your password correct?": "രഹസ്യവാക്ക് മാറ്റാന്‍ സാധിച്ചില്ല. രഹസ്യവാക്ക് ശരിയാണോ ?", - "Continue": "മുന്നോട്ട്", "Microphone": "മൈക്രോഫോൺ", "Camera": "ക്യാമറ", "Sunday": "ഞായര്‍", @@ -26,7 +19,6 @@ "On": "ഓണ്‍", "Changelog": "മാറ്റങ്ങളുടെ നാള്‍വഴി", "Waiting for response from server": "സെര്‍വറില്‍ നിന്നുള്ള പ്രതികരണത്തിന് കാക്കുന്നു", - "Leave": "വിടവാങ്ങുക", "Warning": "മുന്നറിയിപ്പ്", "This Room": "ഈ മുറി", "Noisy": "ഉച്ചത്തില്‍", @@ -46,7 +38,6 @@ "All Rooms": "എല്ലാ മുറികളും കാണുക", "Wednesday": "ബുധന്‍", "You cannot delete this message. (%(code)s)": "നിങ്ങള്‍ക്ക് ഈ സന്ദേശം നീക്കം ചെയ്യാനാകില്ല. (%(code)s)", - "Quote": "ഉദ്ധരിക്കുക", "Send": "അയയ്ക്കുക", "Send logs": "നാള്‍വഴി അയയ്ക്കുക", "All messages": "എല്ലാ സന്ദേശങ്ങളും", @@ -63,12 +54,16 @@ "Low Priority": "താഴ്ന്ന പരിഗണന", "Off": "ഓഫ്", "Failed to remove tag %(tagName)s from room": "റൂമില്‍ നിന്നും %(tagName)s ടാഗ് നീക്കം ചെയ്യുവാന്‍ സാധിച്ചില്ല", - "View Source": "സോഴ്സ് കാണുക", "Explore rooms": "മുറികൾ കണ്ടെത്തുക", "Sign In": "പ്രവേശിക്കുക", "Create Account": "അക്കൗണ്ട് സൃഷ്ടിക്കുക", "Integration manager": "സംയോജക മാനേജർ", "Identity server": "തിരിച്ചറിയൽ സെർവർ", + "common": { + "error": "എറര്‍", + "mute": "നിശ്ശബ്ദം", + "settings": "സജ്ജീകരണങ്ങള്‍" + }, "action": { "reject": "നിരസിക്കുക", "dismiss": "ഒഴിവാക്കുക", @@ -76,4 +71,4 @@ "close": "അടയ്ക്കുക", "update": "പുതുക്കുക" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json index 8643f1d5f01b..adc71ad462b3 100644 --- a/src/i18n/strings/nb_NO.json +++ b/src/i18n/strings/nb_NO.json @@ -9,7 +9,6 @@ "Friday": "Fredag", "Notifications": "Varsler", "On": "På", - "Leave": "Forlat", "Source URL": "Kilde URL", "Resend": "Send på nytt", "Messages in one-to-one chats": "Meldinger i en-til-en samtaler", @@ -22,12 +21,10 @@ "Monday": "Mandag", "Failed to forget room %(errCode)s": "Kunne ikke glemme rommet %(errCode)s", "Wednesday": "Onsdag", - "Error": "Feil", "unknown error code": "ukjent feilkode", "Call invitation": "Anropsinvitasjon", "Messages containing my display name": "Meldinger som inneholder mitt visningsnavn", "powered by Matrix": "Drevet av Matrix", - "View Source": "Vis kilde", "Invite to this room": "Inviter til dette rommet", "You cannot delete this message. (%(code)s)": "Du kan ikke slette denne meldingen. (%(code)s)", "Thursday": "Torsdag", @@ -37,10 +34,7 @@ "Low Priority": "Lav Prioritet", "Off": "Av", "Failed to remove tag %(tagName)s from room": "Kunne ikke fjerne tagg %(tagName)s fra rommet", - "Remove": "Fjern", - "Quote": "Sitat", "Saturday": "Lørdag", - "Analytics": "Statistikk", "Call Failed": "Oppringning mislyktes", "You cannot place a call with yourself.": "Du kan ikke ringe deg selv.", "Permission Required": "Tillatelse kreves", @@ -107,8 +101,6 @@ "Changes your display nickname in the current room only": "Endrer visningsnavnet ditt kun i det nåværende rommet", "Call failed due to misconfigured server": "Oppringingen feilet på grunn av feil-konfigurert tjener", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Vennligst be administratoren av din hjemmetjener (%(homeserverDomain)s) til å konfigurere en TURN tjener slik at samtaler vil fungere best mulig.", - "OK": "OK", - "Continue": "Fortsett", "The file '%(fileName)s' failed to upload.": "Filen '%(fileName)s' kunne ikke lastes opp.", "The server does not support the room version specified.": "Tjeneren støtter ikke rom versjonen som ble spesifisert.", "Messages": "Meldinger", @@ -121,7 +113,6 @@ "This room has no topic.": "Dette rommet har ingen overskrift.", "Sets the room name": "Setter rommets navn", "Invites user with given id to current room": "Inviterer brukeren med gitt id til dette rommet", - "Leave room": "Forlat rommet", "Bans user with given id": "Nekter tilgang til bruker med gitt id", "Unbans user with given ID": "Gir tilbake tilgang til bruker med gitt ID", "Ignores a user, hiding their messages from you": "Ignorerer en bruker og skjuler meldingene deres hos deg", @@ -149,7 +140,6 @@ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sendte et bilde.", "Someone": "Noen", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sendte en invitasjon til %(targetDisplayName)s om å bli med i rommet.", - "Done": "Fullført", "%(displayName)s is typing …": "%(displayName)s skriver …", "%(names)s and %(count)s others are typing …": { "other": "%(names)s og %(count)s andre skriver …", @@ -159,8 +149,6 @@ "%(num)s minutes ago": "%(num)s minutter siden", "%(num)s hours ago": "%(num)s timer siden", "This is a very common password": "Dette er et veldig vanlig passord", - "Decline": "Avslå", - "Start": "Begynn", "Dog": "Hund", "Cat": "Katt", "Horse": "Hest", @@ -195,18 +183,14 @@ "Review": "Gjennomgang", "Show less": "Vis mindre", "Current password": "Nåværende passord", - "Password": "Passord", "New Password": "Nytt passord", "Confirm password": "Bekreft passord", "Change Password": "Endre passordet", "Manage": "Administrér", - "Enable": "Slå på", "Display Name": "Visningsnavn", - "Save": "Lagre", "Disconnect": "Koble fra", "Go back": "Gå tilbake", "Change": "Endre", - "Success": "Vellykket", "Profile": "Profil", "Email addresses": "E-postadresser", "Phone numbers": "Telefonnumre", @@ -244,9 +228,6 @@ "Phone Number": "Telefonnummer", "Mod": "Mod", "Are you sure?": "Er du sikker?", - "Invite": "Inviter", - "Unmute": "Opphev demp", - "Mute": "Demp", "Admin Tools": "Adminverktøy", "Invited": "Invitert", "Send an encrypted reply…": "Send et kryptert svar …", @@ -257,9 +238,7 @@ "Strikethrough": "Gjennomstreking", "Online": "Tilkoblet", "Idle": "Rolig", - "Offline": "Frakoblet", "Unknown": "Ukjent", - "Settings": "Innstillinger", "Search": "Søk", "Direct Messages": "Direktemeldinger", "Rooms": "Rom", @@ -267,14 +246,10 @@ "Options": "Innstillinger", "All Rooms": "Alle rom", "Search…": "Søk …", - "Security": "Sikkerhet", "Got it": "Jeg forstår", - "Reply": "Svar", - "Edit": "Rediger", "Attachment": "Vedlegg", "Download %(text)s": "Last ned %(text)s", "Show all": "Vis alt", - "Reactions": "Reaksjoner", "Copied!": "Kopiert!", "What's New": "Hva er nytt", "Frequently Used": "Ofte brukte", @@ -289,8 +264,6 @@ "Quick Reactions": "Hurtigreaksjoner", "Cancel search": "Avbryt søket", "More options": "Flere alternativer", - "Yes": "Ja", - "No": "Nei", "collapse": "skjul", "expand": "utvid", "All rooms": "Alle rom", @@ -299,7 +272,6 @@ "Unavailable": "Ikke tilgjengelig", "Changelog": "Endringslogg", "Confirm Removal": "Bekreft fjerning", - "Create": "Lag", "Name": "Navn", "Sign out": "Logg ut", "Unknown error": "Ukjent feil", @@ -309,7 +281,6 @@ "Filter results": "Filtrerresultater", "Toolbox": "Verktøykasse", "An error has occurred.": "En feil har oppstått.", - "Suggestions": "Forslag", "Go": "Gå", "Refresh": "Oppdater", "Email address": "E-postadresse", @@ -318,15 +289,12 @@ "Service": "Tjeneste", "Summary": "Oppsummering", "Document": "Dokument", - "Next": "Neste", "Cancel All": "Avbryt alt", - "Report Content": "Rapporter innhold", "Home": "Hjem", "Sign in": "Logg inn", "Code": "Kode", "Submit": "Send", "Email": "E-post", - "Username": "Brukernavn", "Phone": "Telefon", "Enter password": "Skriv inn passord", "Enter username": "Skriv inn brukernavn", @@ -344,12 +312,9 @@ "Export": "Eksporter", "Import": "Importer", "Restore": "Gjenopprett", - "Copy": "Kopier", "Download": "Nedlastning", - "Retry": "Prøv igjen", "Success!": "Suksess!", "Set up": "Sett opp", - "Disable": "Slå av", "Identity server has no terms of service": "Identitetstjeneren har ingen brukervilkår", "Enable Emoji suggestions while typing": "Skru på emoji-forslag mens du skriver", "Show a placeholder for removed messages": "Vis en stattholder for fjernede meldinger", @@ -480,7 +445,6 @@ "Join Room": "Bli med i rommet", "Forget room": "Glem rommet", "Share room": "Del rommet", - "Invites": "Invitasjoner", "Low priority": "Lavprioritet", "Historical": "Historisk", "Forget this room": "Glem dette rommet", @@ -513,7 +477,6 @@ "Widget ID": "Modul-ID", "Delete Widget": "Slett modul", "Delete widget": "Slett modul", - "No results": "Ingen treff", "Rotate Left": "Roter til venstre", "Rotate Right": "Roter til høyre", "were invited %(count)s times": { @@ -647,7 +610,6 @@ "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Når noen legger til en URL i meldingene deres, kan en URL-forhåndsvisning bli vist for å gi mere informasjonen om den lenken, f.eks. tittelen, beskrivelsen, og et bilde fra nettstedet.", "Trusted": "Betrodd", "Not trusted": "Ikke betrodd", - "Encryption enabled": "Kryptering er skrudd på", "Encryption not enabled": "Kryptering er ikke skrudd på", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s endret rommets avatar til ", "Something went wrong!": "Noe gikk galt!", @@ -921,7 +883,6 @@ "Remove %(phone)s?": "Vil du fjerne %(phone)s?", "Online for %(duration)s": "På nett i %(duration)s", "Favourites": "Favoritter", - "People": "Folk", "Sort by": "Sorter etter", "Activity": "Aktivitet", "A-Z": "A-Å", @@ -993,7 +954,6 @@ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gjorde fremtidig romhistorikk synlig for alle rommedlemmer (%(visibility)s).", "To help us prevent this in future, please send us logs.": "For å hjelpe oss med å forhindre dette i fremtiden, vennligst send oss loggfiler.", "Lock": "Lås", - "Modern": "Moderne", "Server or user ID to ignore": "Tjener- eller bruker-ID-en som skal ignoreres", "Show %(count)s more": { "other": "Vis %(count)s til", @@ -1002,7 +962,6 @@ "Notification options": "Varselsinnstillinger", "Room options": "Rominnstillinger", "Your messages are not secure": "Dine meldinger er ikke sikre", - "Verification cancelled": "Verifiseringen ble avbrutt", "Edited at %(date)s": "Redigert den %(date)s", "Click to view edits": "Klikk for å vise redigeringer", "This widget may use cookies.": "Denne modulen bruker kanskje infokapsler.", @@ -1010,7 +969,6 @@ "The server is offline.": "Denne tjeneren er offline.", "Wrong file type": "Feil filtype", "Looks good!": "Ser bra ut!", - "User menu": "Brukermeny", "Your message was sent": "Meldingen ble sendt", "The authenticity of this encrypted message can't be guaranteed on this device.": "Autentisiteten av denne krypterte meldingen kan ikke garanteres på denne enheten.", "Encrypted by a deleted session": "Kryptert av en slettet sesjon", @@ -1151,7 +1109,6 @@ "Setting:": "Innstilling:", "Caution:": "Advarsel:", "Level": "Nivå", - "Room name": "Rommets navn", "Skip for now": "Hopp over for nå", "Share %(name)s": "Del %(name)s", "Just me": "Bare meg selv", @@ -1176,7 +1133,6 @@ "%(ssoButtons)s Or %(usernamePassword)s": "%(ssoButtons)s eller %(usernamePassword)s", "New here? Create an account": "Er du ny her? Opprett en konto", "Now, let's help you get started": "Nå, la oss hjelpe deg med å komme i gang", - "Forgot password?": "Glemt passord?", "Enter email address": "Legg inn e-postadresse", "Enter phone number": "Skriv inn telefonnummer", "Please enter the code it contains:": "Vennligst skriv inn koden den inneholder:", @@ -1195,7 +1151,6 @@ "Generate a Security Key": "Generer en sikkerhetsnøkkel", "Confirm your Security Phrase": "Bekreft sikkerhetsfrasen din", "Use app": "Bruk app", - "Learn more": "Lær mer", "Use app for a better experience": "Bruk appen for en bedre opplevelse", "Continue with %(provider)s": "Fortsett med %(provider)s", "This address is already in use": "Denne adressen er allerede i bruk", @@ -1228,7 +1183,6 @@ "Failed to ban user": "Mislyktes i å bannlyse brukeren", "Room settings": "Rominnstillinger", "Not encrypted": "Ikke kryptert", - "About": "Om", "Widgets": "Komponenter", "Favourited": "Favorittmerket", "Forget Room": "Glem rommet", @@ -1238,7 +1192,6 @@ "Are you sure you want to sign out?": "Er du sikker på at du vil logge av?", "Transfer": "Overfør", "Invite by email": "Inviter gjennom E-post", - "Report a bug": "Rapporter en feil", "Comment": "Kommentar", "Active Widgets": "Aktive moduler", "Reason (optional)": "Årsak (valgfritt)", @@ -1258,7 +1211,6 @@ "ready": "klar", "Algorithm:": "Algoritme:", "Away": "Borte", - "Start chat": "Start chat", "Show Widgets": "Vis moduler", "Hide Widgets": "Skjul moduler", "Unknown for %(duration)s": "Ukjent i %(duration)s", @@ -1496,8 +1448,6 @@ "Pause": "Pause", "Beta": "Beta", "Report": "Rapporter", - "Forward": "Videresend", - "Forward message": "Videresend melding", "Sent": "Sendt", "Sending": "Sender", "Format": "Format", @@ -1505,12 +1455,9 @@ "Zoom in": "Forstørr", "Zoom out": "Forminske", "Add reaction": "Legg til reaksjon", - "Image": "Bilde", - "Sticker": "Klistremerke", "Thread": "Tråd", "Downloading": "Laster ned", "Connection failed": "Tilkobling mislyktes", - "Message": "Melding", "Threads": "Tråder", "Send a sticker": "Send et klistremerke", "Keyboard shortcuts": "Tastatursnarveier", @@ -1564,6 +1511,32 @@ "No other application is using the webcam": "Ingen andre applikasjoner bruker webkameraet", "A microphone and webcam are plugged in and set up correctly": "En mikrofon og webkamera er koblet til og satt opp riktig", "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Samtalen mislyktes fordi mikrofonen ikke var tilgjengelig. Sjekk at en mikrofon er koblet til og satt opp riktig.", + "common": { + "about": "Om", + "analytics": "Statistikk", + "encryption_enabled": "Kryptering er skrudd på", + "error": "Feil", + "forward_message": "Videresend melding", + "image": "Bilde", + "message": "Melding", + "modern": "Moderne", + "mute": "Demp", + "no_results": "Ingen treff", + "offline": "Frakoblet", + "password": "Passord", + "people": "Folk", + "reactions": "Reaksjoner", + "report_a_bug": "Rapporter en feil", + "room_name": "Rommets navn", + "security": "Sikkerhet", + "settings": "Innstillinger", + "sticker": "Klistremerke", + "success": "Vellykket", + "suggestions": "Forslag", + "unmute": "Opphev demp", + "username": "Brukernavn", + "verification_cancelled": "Verifiseringen ble avbrutt" + }, "action": { "reject": "Avvis", "confirm": "Bekreft", @@ -1585,5 +1558,8 @@ "share": "Del", "skip": "Hopp over", "logout": "Logg ut" + }, + "a11y": { + "user_menu": "Brukermeny" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 7414bb820aa4..b1025fb64e96 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -25,7 +25,6 @@ "Command error": "Opdrachtfout", "Commands": "Opdrachten", "Confirm password": "Bevestig wachtwoord", - "Continue": "Doorgaan", "Add": "Toevoegen", "Admin Tools": "Beheerdersgereedschap", "No Microphones detected": "Geen microfoons gevonden", @@ -38,19 +37,13 @@ "Anyone": "Iedereen", "Are you sure you want to leave the room '%(roomName)s'?": "Weet je zeker dat je de kamer ‘%(roomName)s’ wil verlaten?", "Create new room": "Nieuwe kamer aanmaken", - "Error": "Fout", "Failed to forget room %(errCode)s": "Vergeten van kamer is mislukt %(errCode)s", "Favourite": "Favoriet", - "Mute": "Dempen", "Notifications": "Meldingen", "Operation failed": "Handeling is mislukt", "powered by Matrix": "draait op Matrix", - "Remove": "Verwijderen", - "Settings": "Instellingen", - "Start chat": "Gesprek beginnen", "unknown error code": "onbekende foutcode", "Search": "Zoeken", - "OK": "Oké", "Failed to change password. Is your password correct?": "Wijzigen van wachtwoord is mislukt. Is je wachtwoord juist?", "Moderator": "Moderator", "Name": "Naam", @@ -58,9 +51,7 @@ "": "", "No display name": "Geen weergavenaam", "No more results": "Geen resultaten meer", - "No results": "Geen resultaten", "No users have specific privileges in this room": "Geen enkele persoon heeft specifieke bevoegdheden in deze kamer", - "Password": "Wachtwoord", "Passwords can't be empty": "Wachtwoorden kunnen niet leeg zijn", "Permissions": "Rechten", "Phone": "Telefoonnummer", @@ -71,7 +62,6 @@ "Reject invitation": "Uitnodiging weigeren", "Start authentication": "Authenticatie starten", "Submit": "Bevestigen", - "Success": "Klaar", "Sun": "Zo", "Mon": "Ma", "Tue": "Di", @@ -99,7 +89,6 @@ "Current password": "Huidig wachtwoord", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s heeft de kamernaam verwijderd.", "Deactivate Account": "Account Sluiten", - "Decline": "Weigeren", "Decrypt %(text)s": "%(text)s ontsleutelen", "Download %(text)s": "%(text)s downloaden", "Email": "E-mailadres", @@ -139,13 +128,11 @@ "Invalid Email Address": "Ongeldig e-mailadres", "Invalid file%(extra)s": "Ongeldig bestand %(extra)s", "Invited": "Uitgenodigd", - "Invites": "Uitnodigingen", "Invites user with given id to current room": "Nodigt een persoon met de gegeven ID uit in de huidige kamer", "Sign in with": "Inloggen met", "Join Room": "Kamer toetreden", "Jump to first unread message.": "Spring naar het eerste ongelezen bericht.", "Labs": "Labs", - "Leave room": "Kamer verlaten", "Low priority": "Lage prioriteit", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s heeft de toekomstige kamergeschiedenis zichtbaar gemaakt voor alle leden, vanaf het moment dat ze uitgenodigd zijn.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s heeft de toekomstige kamergeschiedenis zichtbaar gemaakt voor alle leden, vanaf het moment dat ze toegetreden zijn.", @@ -166,7 +153,6 @@ "%(roomName)s does not exist.": "%(roomName)s bestaat niet.", "%(roomName)s is not accessible at this time.": "%(roomName)s is op dit moment niet toegankelijk.", "Rooms": "Kamers", - "Save": "Opslaan", "Search failed": "Zoeken mislukt", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s heeft een afbeelding gestuurd.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s heeft %(targetDisplayName)s in deze kamer uitgenodigd.", @@ -195,7 +181,6 @@ "Unable to verify email address.": "Kan e-mailadres niet verifiëren.", "Unban": "Ontbannen", "Unable to enable Notifications": "Kan meldingen niet inschakelen", - "Unmute": "Niet dempen", "Unnamed Room": "Naamloze Kamer", "Uploading %(filename)s": "%(filename)s wordt geüpload", "Uploading %(filename)s and %(count)s others": { @@ -233,7 +218,6 @@ }, "New Password": "Nieuw wachtwoord", "Start automatically after system login": "Automatisch starten na systeemlogin", - "Analytics": "Gebruiksgegevens", "Options": "Opties", "Passphrases must match": "Wachtwoorden moeten overeenkomen", "Passphrase must not be empty": "Wachtwoord mag niet leeg zijn", @@ -262,7 +246,6 @@ "Drop file here to upload": "Versleep het bestand naar hier om het te uploaden", "Online": "Online", "Idle": "Afwezig", - "Offline": "Offline", "Check for update": "Controleren op updates", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s heeft de kamerafbeelding aangepast naar ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s heeft de kamerafbeelding verwijderd.", @@ -275,7 +258,6 @@ "This will allow you to reset your password and receive notifications.": "Zo kan je een nieuw wachtwoord instellen en meldingen ontvangen.", "Define the power level of a user": "Bepaal het machtsniveau van een persoon", "Delete widget": "Widget verwijderen", - "Edit": "Bewerken", "Enable automatic language detection for syntax highlighting": "Automatische taaldetectie voor zinsbouwmarkeringen inschakelen", "Publish this room to the public in %(domain)s's room directory?": "Deze kamer vermelden in de publieke kamersgids van %(domain)s?", "AM": "AM", @@ -283,7 +265,6 @@ "Unable to create widget.": "Kan widget niet aanmaken.", "You are not in this room.": "Je maakt geen deel uit van deze kamer.", "You do not have permission to do that in this room.": "Je hebt geen rechten om dat in deze kamer te doen.", - "Create": "Aanmaken", "Automatically replace plain text Emoji": "Tekst automatisch vervangen door emoji", "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s-widget toegevoegd door %(senderName)s", "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s-widget verwijderd door %(senderName)s", @@ -311,7 +292,6 @@ "Ignore": "Negeren", "Jump to read receipt": "Naar het laatst gelezen bericht gaan", "Mention": "Vermelden", - "Invite": "Uitnodigen", "Send an encrypted reply…": "Verstuur een versleuteld antwoord…", "Send an encrypted message…": "Verstuur een versleuteld bericht…", "%(duration)ss": "%(duration)ss", @@ -419,11 +399,9 @@ }, "collapse": "dichtvouwen", "expand": "uitvouwen", - "Quote": "Citeren", "And %(count)s more...": { "other": "En %(count)s meer…" }, - "Leave": "Verlaten", "Description": "Omschrijving", "Old cryptography data detected": "Oude cryptografiegegevens gedetecteerd", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Er zijn gegevens van een oudere versie van %(brand)s gevonden, die problemen veroorzaakt hebben met de eind-tot-eind-versleuteling in de oude versie. Onlangs vanuit de oude versie verzonden eind-tot-eind-versleutelde berichten zijn mogelijk onontsleutelbaar in deze versie. Ook kunnen berichten die met deze versie uitgewisseld zijn falen. Mocht je problemen ervaren, log dan opnieuw in. Exporteer je sleutels en importeer ze weer om je berichtgeschiedenis te behouden.", @@ -479,7 +457,6 @@ "You cannot delete this message. (%(code)s)": "Je kan dit bericht niet verwijderen. (%(code)s)", "Thursday": "Donderdag", "Back": "Terug", - "Reply": "Beantwoorden", "Show message in desktop notification": "Bericht in bureaubladmelding tonen", "Messages in group chats": "Berichten in groepsgesprekken", "Yesterday": "Gisteren", @@ -489,7 +466,6 @@ "Wednesday": "Woensdag", "Event Type": "Gebeurtenistype", "Event sent!": "Gebeurtenis verstuurd!", - "View Source": "Bron bekijken", "Event Content": "Gebeurtenisinhoud", "Thank you!": "Bedankt!", "Logs sent": "Logs verstuurd", @@ -671,8 +647,6 @@ "Headphones": "Koptelefoon", "Folder": "Map", "Pin": "Vastmaken", - "Yes": "Ja", - "No": "Nee", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "We hebben je een e-mail gestuurd om je adres te verifiëren. Gelieve de daarin gegeven aanwijzingen op te volgen en dan op de knop hieronder te klikken.", "Email Address": "E-mailadres", "Delete Backup": "Back-up verwijderen", @@ -789,11 +763,9 @@ "No backup found!": "Geen back-up gevonden!", "Failed to decrypt %(failedCount)s sessions!": "Ontsleutelen van %(failedCount)s sessies is mislukt!", "Warning: you should only set up key backup from a trusted computer.": "Let op: stel sleutelback-up enkel in op een vertrouwde computer.", - "Next": "Volgende", "This homeserver would like to make sure you are not a robot.": "Deze homeserver wil graag weten of je geen robot bent.", "Please review and accept all of the homeserver's policies": "Gelieve het beleid van de homeserver door te nemen en te aanvaarden", "Please review and accept the policies of this homeserver:": "Gelieve het beleid van deze homeserver door te nemen en te aanvaarden:", - "Username": "Inlognaam", "Change": "Wijzigen", "Email (optional)": "E-mailadres (optioneel)", "Phone (optional)": "Telefoonnummer (optioneel)", @@ -822,7 +794,6 @@ "Your keys are being backed up (the first backup could take a few minutes).": "Er wordt een back-up van je sleutels gemaakt (de eerste back-up kan enkele minuten duren).", "Success!": "Klaar!", "Unable to create key backup": "Kan sleutelback-up niet aanmaken", - "Retry": "Opnieuw proberen", "Set up": "Instellen", "New Recovery Method": "Nieuwe herstelmethode", "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Als je deze nieuwe herstelmethode niet hebt ingesteld, is het mogelijk dat een aanvaller toegang tot jouw account probeert te krijgen. Wijzig onmiddellijk je wachtwoord en stel bij instellingen een nieuwe herstelmethode in.", @@ -1052,7 +1023,6 @@ "Report Content to Your Homeserver Administrator": "Inhoud melden aan de beheerder van jouw homeserver", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Dit bericht melden zal zijn unieke ‘gebeurtenis-ID’ versturen naar de beheerder van jouw homeserver. Als de berichten in deze kamer versleuteld zijn, zal de beheerder van jouw homeserver het bericht niet kunnen lezen, noch enige bestanden of afbeeldingen zien.", "Send report": "Rapport versturen", - "Report Content": "Inhoud melden", "View": "Bekijken", "Explore rooms": "Kamers ontdekken", "Show previews/thumbnails for images": "Miniaturen voor afbeeldingen tonen", @@ -1162,9 +1132,7 @@ "Scan this unique code": "Scan deze unieke code", "Compare unique emoji": "Vergelijk unieke emoji", "Compare a unique set of emoji if you don't have a camera on either device": "Vergelijk een unieke lijst met emoji als geen van beide apparaten een camera heeft", - "Start": "Start", "Securely cache encrypted messages locally for them to appear in search results.": "Sla versleutelde berichten veilig lokaal op om ze doorzoekbaar te maken.", - "Enable": "Inschakelen", "Cannot connect to integration manager": "Kan geen verbinding maken met de integratiebeheerder", "The integration manager is offline or it cannot reach your homeserver.": "De integratiebeheerder is offline of kan je homeserver niet bereiken.", "not stored": "niet opgeslagen", @@ -1270,7 +1238,6 @@ "Not Trusted": "Niet vertrouwd", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s%(userId)s heeft zich aangemeld bij een nieuwe sessie zonder deze te verifiëren:", "Ask this user to verify their session, or manually verify it below.": "Vraag deze persoon de sessie te verifiëren, of verifieer het handmatig hieronder.", - "Done": "Klaar", "Trusted": "Vertrouwd", "Not trusted": "Niet vertrouwd", "%(count)s verified sessions": { @@ -1285,7 +1252,6 @@ "Hide sessions": "Sessies verbergen", "This client does not support end-to-end encryption.": "Deze cliënt biedt geen ondersteuning voor eind-tot-eind-versleuteling.", "Messages in this room are not end-to-end encrypted.": "De berichten in deze kamer worden niet eind-tot-eind-versleuteld.", - "Security": "Beveiliging", "Verify by scanning": "Verifiëren met scan", "Ask %(displayName)s to scan your code:": "Vraag %(displayName)s om jouw code te scannen:", "Verify by emoji": "Verifiëren met emoji", @@ -1293,10 +1259,8 @@ "Verify by comparing unique emoji.": "Verifieer door unieke emoji te vergelijken.", "You've successfully verified %(displayName)s!": "Je hebt %(displayName)s geverifieerd!", "Got it": "Ik snap het", - "Encryption enabled": "Versleuteling ingeschakeld", "Encryption not enabled": "Versleuteling niet ingeschakeld", "The encryption used by this room isn't supported.": "De versleuteling gebruikt in deze kamer wordt niet ondersteund.", - "React": "Reageren", "Message Actions": "Berichtacties", "You have ignored this user, so their message is hidden. Show anyways.": "Je hebt deze persoon genegeerd, dus de berichten worden verborgen. Toch tonen?", "You verified %(name)s": "Je hebt %(name)s geverifieerd", @@ -1310,7 +1274,6 @@ "%(name)s cancelled": "%(name)s heeft geannuleerd", "%(name)s wants to verify": "%(name)s wil verifiëren", "You sent a verification request": "Je hebt een verificatieverzoek verstuurd", - "Reactions": "Reacties", "Frequently Used": "Vaak gebruikt", "Smileys & People": "Smileys & Personen", "Animals & Nature": "Dieren en natuur", @@ -1353,7 +1316,6 @@ "Failed to find the following users": "Kon volgende personen niet vinden", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Volgende personen bestaan mogelijk niet of zijn ongeldig, en kunnen niet uitgenodigd worden: %(csvNames)s", "Recent Conversations": "Recente gesprekken", - "Suggestions": "Suggesties", "Recently Direct Messaged": "Recente directe gesprekken", "Go": "Start", "Upgrade private room": "Privékamer upgraden", @@ -1374,13 +1336,11 @@ "Restore": "Herstellen", "You'll need to authenticate with the server to confirm the upgrade.": "Je zal moeten inloggen bij de server om het upgraden te bevestigen.", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Upgrade deze sessie om er andere sessies mee te verifiëren. Hiermee krijgen de andere sessies toegang tot je versleutelde berichten en is het voor andere personen als vertrouwd gemarkeerd .", - "Copy": "Kopiëren", "Upgrade your encryption": "Upgrade je versleuteling", "Unable to set up secret storage": "Kan sleutelopslag niet instellen", "Create key backup": "Sleutelback-up aanmaken", "This session is encrypting history using the new recovery method.": "Deze sessie versleutelt je geschiedenis aan de hand van de nieuwe herstelmethode.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Als je dit per ongeluk hebt gedaan, kan je beveiligde berichten op deze sessie instellen, waarmee de berichtgeschiedenis van deze sessie opnieuw zal versleuteld worden aan de hand van een nieuwe herstelmethode.", - "Disable": "Uitschakelen", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s bewaart versleutelde berichten veilig in het lokale cachegeheugen om ze in je zoekresultaten te laten verschijnen:", "Space used:": "Gebruikte Space:", "Indexed messages:": "Geïndexeerde berichten:", @@ -1429,7 +1389,6 @@ "Ok": "Oké", "Light": "Helder", "Dark": "Donker", - "People": "Personen", "Unable to access microphone": "Je microfoon lijkt niet beschikbaar", "The call was answered on another device.": "De oproep werd op een ander toestel beantwoord.", "Answered Elsewhere": "Ergens anders beantwoord", @@ -1470,7 +1429,6 @@ "A-Z": "A-Z", "Activity": "Activiteit", "Sort by": "Sorteer op", - "Verification cancelled": "Verificatie geannuleerd", "You cancelled verification.": "Je hebt de verificatie geannuleerd.", "%(displayName)s cancelled verification.": "%(displayName)s heeft de verificatie geannuleerd.", "Verification timed out.": "Verificatie verlopen.", @@ -1751,7 +1709,6 @@ "Privacy": "Privacy", "Appearance Settings only affect this %(brand)s session.": "Weergave-instellingen zijn alleen van toepassing op deze %(brand)s sessie.", "Customise your appearance": "Weergave aanpassen", - "Modern": "Modern", "Use between %(min)s pt and %(max)s pt": "Gebruik een getal tussen %(min)s pt en %(max)s pt", "Custom font size can only be between %(min)s pt and %(max)s pt": "Aangepaste lettergrootte kan alleen een getal tussen %(min)s pt en %(max)s pt zijn", "Size must be a number": "Grootte moet een getal zijn", @@ -1835,7 +1792,6 @@ "You've successfully verified your device!": "Je hebt je apparaat geverifieerd!", "Almost there! Is %(displayName)s showing the same shield?": "Bijna klaar! Toont %(displayName)s hetzelfde schild?", "Room settings": "Kamerinstellingen", - "About": "Over", "Not encrypted": "Niet versleuteld", "Widgets": "Widgets", "Unpin": "Losmaken", @@ -1864,7 +1820,6 @@ "Invite by email": "Via e-mail uitnodigen", "Click the button below to confirm your identity.": "Druk op de knop hieronder om je identiteit te bevestigen.", "Confirm to continue": "Bevestig om door te gaan", - "Report a bug": "Een bug rapporteren", "Comment": "Opmerking", "Active Widgets": "Ingeschakelde widgets", "Manually verify all remote sessions": "Handmatig alle externe sessies verifiëren", @@ -2020,7 +1975,6 @@ "New? Create account": "Nieuw? Maak een account aan", "If you've joined lots of rooms, this might take a while": "Als je bij veel kamers bent aangesloten kan dit een tijdje duren", "There was a problem communicating with the homeserver, please try again later.": "Er was een communicatieprobleem met de homeserver, probeer het later opnieuw.", - "User menu": "Persoonsmenu", "Switch theme": "Thema wisselen", "New here? Create an account": "Nieuw hier? Maak een account", "Got an account? Sign in": "Heb je een account? Inloggen", @@ -2035,7 +1989,6 @@ "Use email to optionally be discoverable by existing contacts.": "Optioneel kan je jouw e-mail ook gebruiken om ontdekt te worden door al bestaande contacten.", "Use email or phone to optionally be discoverable by existing contacts.": "Gebruik e-mail of telefoon om optioneel ontdekt te kunnen worden door bestaande contacten.", "Add an email to be able to reset your password.": "Voeg een e-mail toe om je wachtwoord te kunnen resetten.", - "Forgot password?": "Wachtwoord vergeten?", "That phone number doesn't look quite right, please check and try again": "Dat telefoonnummer ziet er niet goed uit, controleer het en probeer het opnieuw", "Enter phone number": "Telefoonnummer invoeren", "Enter email address": "E-mailadres invoeren", @@ -2105,7 +2058,6 @@ "There was a problem communicating with the server. Please try again.": "Er was een communicatie probleem met de server. Probeer het opnieuw.", "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.": "Je zou dit kunnen uitschakelen als deze kamer gebruikt zal worden om samen te werken met externe teams die hun eigen homeserver hebben. Dit kan later niet meer veranderd worden.", "About homeservers": "Over homeservers", - "Learn more": "Lees verder", "Other homeserver": "Andere homeserver", "Sign into your homeserver": "Login op jouw homeserver", "Specify a homeserver": "Specificeer een homeserver", @@ -2131,7 +2083,6 @@ "Room ID or address of ban list": "Kamer-ID of het adres van de banlijst", "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Voeg hier personen en servers toe die je wil negeren. Gebruik asterisken om %(brand)s met alle tekens te laten overeenkomen. Bijvoorbeeld, @bot:* zou alle personen negeren die de naam 'bot' hebben op elke server.", "Please verify the room ID or address and try again.": "Controleer het kamer-ID of het adres en probeer het opnieuw.", - "Message layout": "Berichtlayout", "Custom theme URL": "Aangepaste thema-URL", "Error downloading theme information.": "Fout bij het downloaden van de thema-informatie.", "Invalid theme schema.": "Ongeldig themaschema.", @@ -2199,7 +2150,6 @@ "Who are you working with?": "Met wie werk je samen?", "Skip for now": "Voorlopig overslaan", "Failed to create initial space rooms": "Het maken van de Space kamers is mislukt", - "Room name": "Kamernaam", "Support": "Ondersteuning", "Random": "Willekeurig", "Welcome to ": "Welkom in ", @@ -2372,7 +2322,6 @@ "Some suggestions may be hidden for privacy.": "Sommige suggesties kunnen om privacyredenen verborgen zijn.", "Search for rooms or people": "Zoek naar kamers of personen", "Message preview": "Voorbeeld van bericht", - "Forward message": "Bericht doorsturen", "Sent": "Verstuurd", "You don't have permission to do this": "Je hebt geen rechten om dit te doen", "Error - Mixed content": "Fout - Gemengde inhoud", @@ -2386,7 +2335,6 @@ "Collapse reply thread": "Antwoorddraad invouwen", "Show preview": "Preview weergeven", "View source": "Bron bekijken", - "Forward": "Doorsturen", "Settings - %(spaceName)s": "Instellingen - %(spaceName)s", "Report the entire room": "Rapporteer het hele kamer", "Spam or propaganda": "Spam of propaganda", @@ -2514,8 +2462,6 @@ "Private (invite only)": "Privé (alleen op uitnodiging)", "This upgrade will allow members of selected spaces access to this room without an invite.": "Deze upgrade maakt het mogelijk voor leden van geselecteerde spaces om toegang te krijgen tot deze kamer zonder een uitnodiging.", "Everyone in will be able to find and join this room.": "Iedereen in kan deze kamer vinden en aan deelnemen.", - "Image": "Afbeelding", - "Sticker": "Sticker", "Access": "Toegang", "People with supported clients will be able to join the room without having a registered account.": "Personen met geschikte apps zullen aan de kamer kunnen deelnemen zonder een account te hebben.", "Decide who can join %(roomName)s.": "Kies wie kan deelnemen aan %(roomName)s.", @@ -2524,7 +2470,6 @@ "Visible to space members": "Zichtbaar voor Space leden", "Public room": "Publieke kamer", "Private room (invite only)": "Privékamer (alleen op uitnodiging)", - "Create a room": "Kamer aanmaken", "Only people invited will be able to find and join this room.": "Alleen uitgenodigde personen kunnen deze kamer vinden en aan deelnemen.", "Anyone will be able to find and join this room, not just members of .": "Iedereen kan deze kamer vinden en aan deelnemen, niet alleen leden van .", "You can change this at any time from room settings.": "Je kan dit op elk moment wijzigen vanuit de kamerinstellingen.", @@ -2620,7 +2565,6 @@ "Change space avatar": "Space-afbeelding wijzigen", "Anyone in can find and join. You can select other spaces too.": "Iedereen in kan hem vinden en deelnemen. Je kan ook andere spaces selecteren.", "Message didn't send. Click for info.": "Bericht is niet verstuur. Klik voor meer info.", - "Message": "Bericht", "To join a space you'll need an invite.": "Om te kunnen deelnemen aan een space heb je een uitnodiging nodig.", "%(reactors)s reacted with %(content)s": "%(reactors)s reageerde met %(content)s", "Would you like to leave the rooms in this space?": "Wil je de kamers verlaten in deze Space?", @@ -2739,7 +2683,6 @@ "Someone already has that username. Try another or if it is you, sign in below.": "Iemand heeft die inlognaam al. Probeer een andere of als je het bent, log dan hieronder in.", "Copy link to thread": "Kopieer link naar draad", "Thread options": "Draad opties", - "Copy link": "Link kopieren", "Mentions only": "Alleen vermeldingen", "Forget": "Vergeet", "We call the places where you can host your account 'homeservers'.": "Wij noemen de plaatsen waar je jouw account kunt hosten 'homeservers'.", @@ -3134,7 +3077,6 @@ "one": "1 deelnemer", "other": "%(count)s deelnemers" }, - "Video": "Video", "%(errcode)s was returned while trying to access the room or space. If you think you're seeing this message in error, please submit a bug report.": "%(errcode)s is geretourneerd tijdens een poging om toegang te krijgen tot de kamer of space. Als je denkt dat je dit bericht ten onrechte ziet, dien dan een bugrapport in.", "Try again later, or ask a room or space admin to check if you have access.": "Probeer het later opnieuw of vraag een kamer- of space beheerder om te controleren of je toegang hebt.", "This room or space is not accessible at this time.": "Deze kamer of space is op dit moment niet toegankelijk.", @@ -3557,6 +3499,34 @@ "Video call started in %(roomName)s. (not supported by this browser)": "Videogesprek gestart in %(roomName)s. (niet ondersteund door deze browser)", "Video call started in %(roomName)s.": "Videogesprek gestart in %(roomName)s.", "You need to be able to kick users to do that.": "U moet in staat zijn om gebruikers te verwijderen om dit te doen.", + "common": { + "about": "Over", + "analytics": "Gebruiksgegevens", + "encryption_enabled": "Versleuteling ingeschakeld", + "error": "Fout", + "forward_message": "Bericht doorsturen", + "image": "Afbeelding", + "message": "Bericht", + "message_layout": "Berichtlayout", + "modern": "Modern", + "mute": "Dempen", + "no_results": "Geen resultaten", + "offline": "Offline", + "password": "Wachtwoord", + "people": "Personen", + "reactions": "Reacties", + "report_a_bug": "Een bug rapporteren", + "room_name": "Kamernaam", + "security": "Beveiliging", + "settings": "Instellingen", + "sticker": "Sticker", + "success": "Klaar", + "suggestions": "Suggesties", + "unmute": "Niet dempen", + "username": "Inlognaam", + "verification_cancelled": "Verificatie geannuleerd", + "video": "Video" + }, "action": { "reject": "Weigeren", "confirm": "Bevestigen", @@ -3579,5 +3549,8 @@ "share": "Delen", "skip": "Overslaan", "logout": "Uitloggen" + }, + "a11y": { + "user_menu": "Persoonsmenu" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json index 4d86008c9dbf..499dc56d538d 100644 --- a/src/i18n/strings/nn.json +++ b/src/i18n/strings/nn.json @@ -55,7 +55,6 @@ "Usage": "Bruk", "Changes your display nickname": "Forandrar kallenamnet ditt", "Invites user with given id to current room": "Inviter brukarar med fylgjande ID inn i gjeldande rom", - "Leave room": "Forlat rommet", "Bans user with given id": "Stengjer brukarar med den gjevne IDen ute", "Ignores a user, hiding their messages from you": "Overser ein brukar, slik at meldingane deira ikkje synast for deg", "Ignored user": "Oversedd brukar", @@ -66,7 +65,6 @@ "Define the power level of a user": "Sett tilgangsnivået til ein brukar", "This email address is already in use": "Denne e-postadressa er allereie i bruk", "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å stadfesta e-postadressa: sjå til at du klikka på den rette lenkja i e-posten", - "Analytics": "Statistikk", "Deops user with given id": "AvOPar brukarar med den gjevne IDen", "Opens the Developer Tools dialog": "Opnar Utviklarverktøy-tekstboksen", "Verified key": "Godkjend nøkkel", @@ -114,8 +112,6 @@ "When I'm invited to a room": "Når eg blir invitert til eit rom", "Call invitation": "Samtaleinvitasjonar", "Messages sent by bot": "Meldingar sendt frå ein bot", - "Decline": "Sei nei", - "Error": "Noko gjekk gale", "Incorrect verification code": "Urett stadfestingskode", "Submit": "Send inn", "Phone": "Telefon", @@ -124,16 +120,13 @@ "New passwords don't match": "Dei nye passorda samsvarar ikkje", "Passwords can't be empty": "Passordsfelta kan ikkje vera tomme", "Warning!": "Åtvaring!", - "Continue": "Fortset", "Do you want to set an email address?": "Vil du setja ei epostadresse?", "Current password": "Gjeldande passord", - "Password": "Passord", "New Password": "Nytt passord", "Confirm password": "Stadfest passord", "Change Password": "Endra passord", "Authentication": "Authentisering", "Failed to set display name": "Fekk ikkje til å setja visningsnamn", - "OK": "Greitt", "Notification targets": "Varselmål", "Show message in desktop notification": "Vis meldinga i eit skriverbordsvarsel", "Off": "Av", @@ -154,11 +147,8 @@ "Unignore": "Slutt å ignorer", "Ignore": "Ignorer", "Mention": "Nemn", - "Invite": "Inviter", "Enable inline URL previews by default": "Skru URL-førehandsvising i tekstfeltet på", "Share Link to User": "Del ei lenke til brukaren", - "Unmute": "Fjern demping", - "Mute": "Demp", "Admin Tools": "Administratorverktøy", "and %(count)s others...": { "other": "og %(count)s andre...", @@ -186,22 +176,18 @@ "Unknown for %(duration)s": "Ukjend i %(duration)s", "Online": "Tilkopla", "Idle": "Fråverande", - "Offline": "Fråkopla", "Unknown": "Ukjend", "Replying": "Svarar", "Unnamed room": "Rom utan namn", - "Save": "Lagra", "(~%(count)s results)": { "other": "(~%(count)s resultat)", "one": "(~%(count)s resultat)" }, "Join Room": "Bli med i rom", "Upload avatar": "Last avatar opp", - "Settings": "Innstillingar", "Forget room": "Gløym rom", "Search": "Søk", "Share room": "Del rom", - "Invites": "Invitasjonar", "Favourites": "Yndlingar", "Rooms": "Rom", "Low priority": "Låg prioritet", @@ -268,7 +254,6 @@ "Email address": "Epostadresse", "Sign in": "Logg inn", "Register": "Meld deg inn", - "Remove": "Fjern", "Something went wrong!": "Noko gjekk gale!", "What's New": "Kva er nytt", "What's new?": "Kva er nytt?", @@ -278,9 +263,7 @@ "Delete Widget": "Slett Widgeten", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Å sletta ein widget fjernar den for alle brukarane i rommet. Er du sikker på at du vil sletta denne widgeten?", "Delete widget": "Slett widgeten", - "Edit": "Gjer om", "Create new room": "Lag nytt rom", - "No results": "Ingen resultat", "Home": "Heim", "%(severalUsers)sjoined %(count)s times": { "other": "%(severalUsers)s har kome inn %(count)s gonger", @@ -370,7 +353,6 @@ "collapse": "Slå saman", "expand": "Utvid", "In reply to ": "Som svar til ", - "Start chat": "Start samtale", "And %(count)s more...": { "other": "Og %(count)s til..." }, @@ -382,7 +364,6 @@ "Send logs": "Send loggar inn", "Unavailable": "Utilgjengeleg", "Changelog": "Endringslogg", - "Create": "Lag", "not specified": "Ikkje spesifisert", "Confirm Removal": "Godkjenn Fjerning", "Unknown error": "Noko ukjend gjekk galt", @@ -420,12 +401,8 @@ "Are you sure you want to reject the invitation?": "Er du sikker på at du vil seia nei til innbydinga?", "You cannot delete this message. (%(code)s)": "Du kan ikkje sletta meldinga. (%(code)s)", "Resend": "Send på nytt", - "Reply": "Svar", - "View Source": "Sjå Kjelda", - "Quote": "Sitat", "Source URL": "Kjelde-URL", "All messages": "Alle meldingar", - "Leave": "Forlat", "Low Priority": "Lågrett", "Name": "Namn", "You must register to use this functionality": "Du må melda deg inn for å bruka denne funksjonen", @@ -462,7 +439,6 @@ "one": "Lastar opp %(filename)s og %(count)s andre" }, "Uploading %(filename)s": "Lastar opp %(filename)s", - "Success": "Suksess", "Unable to remove contact information": "Klarte ikkje å fjerna kontaktinfo", "": "", "Import E2E room keys": "Hent E2E-romnøklar inn", @@ -582,7 +558,6 @@ "Your keys are being backed up (the first backup could take a few minutes).": "Nøklane dine blir sikkerheitskopiert (den første kopieringa kan ta nokre minutt).", "Success!": "Suksess!", "Unable to create key backup": "Klarte ikkje å lage sikkerheitskopi av nøkkelen", - "Retry": "Prøv om att", "Set up": "Sett opp", "New Recovery Method": "Ny gjenopprettingsmetode", "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Har du ikkje satt opp den nye gjenopprettingsmetoden, kan ein angripar prøve å bryte seg inn på kontoen din. Endre ditt kontopassord og sett opp gjenoppretting umiddelbart under instillingane.", @@ -903,9 +878,7 @@ "You'll lose access to your encrypted messages": "Du vil miste tilgangen til dine krypterte meldingar", "Join millions for free on the largest public server": "Kom ihop med millionar av andre på den største offentlege tenaren", "Show rooms with unread messages first": "Vis rom med ulesne meldingar fyrst", - "People": "Folk", "Always show the window menu bar": "Vis alltid menyfeltet i toppen av vindauget", - "Report a bug": "Send inn feilrapport", "Feedback": "Tilbakemeldingar", "All settings": "Alle innstillingar", "Delete Backup": "Slett sikkerheitskopi", @@ -995,9 +968,7 @@ "Messages containing keywords": "Meldingar som inneheld nøkkelord", "Mentions & keywords": "Nemningar & nøkkelord", "Enable email notifications for %(email)s": "Aktiver varsel på epost for %(email)s", - "Modern": "Moderne", "Message bubbles": "Snakkebobler", - "Message layout": "Utforming for meldingar", "IRC (Experimental)": "IRC (eksperimentell)", "Keyboard shortcuts": "Tastatursnarvegar", "Keyboard": "Tastatur", @@ -1026,7 +997,6 @@ "Expand map": "Utvid kart", "Expand quotes": "Utvid sitat", "Expand code blocks by default": "Utvid kodeblokker til vanleg", - "Enable": "Aktiver", "All rooms you're in will appear in Home.": "Alle romma du er i vil vere synlege i Heim.", "To view all keyboard shortcuts, click here.": "For å sjå alle tastatursnarvegane, klikk her.", "Deactivate account": "Avliv brukarkontoen", @@ -1077,6 +1047,21 @@ "%(seconds)ss left": "%(seconds)ss att", "%(minutes)sm %(seconds)ss left": "%(minutes)sm %(seconds)ss att", "%(hours)sh %(minutes)sm %(seconds)ss left": "%(hours)st %(minutes)sm %(seconds)ss att", + "common": { + "analytics": "Statistikk", + "error": "Noko gjekk gale", + "message_layout": "Utforming for meldingar", + "modern": "Moderne", + "mute": "Demp", + "no_results": "Ingen resultat", + "offline": "Fråkopla", + "password": "Passord", + "people": "Folk", + "report_a_bug": "Send inn feilrapport", + "settings": "Innstillingar", + "success": "Suksess", + "unmute": "Fjern demping" + }, "action": { "reject": "Avslå", "confirm": "Stadfest", @@ -1095,4 +1080,4 @@ "skip": "Hopp over", "logout": "Logg ut" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/oc.json b/src/i18n/strings/oc.json index 3b938b9545fb..d47cbca1f405 100644 --- a/src/i18n/strings/oc.json +++ b/src/i18n/strings/oc.json @@ -1,8 +1,6 @@ { "Add Email Address": "Ajustar una adreça electronica", "Add Phone Number": "Ajustar un numèro de telefòn", - "Unmute": "Restablir lo son", - "Mute": "Copar lo son", "Admin Tools": "Aisinas d’administrator", "Invite to this room": "Convidar a aquesta sala", "Invited": "Convidat", @@ -13,27 +11,22 @@ "Send an encrypted message…": "Enviar un messatge chifrat…", "Send a message…": "Enviar un messatge…", "Bold": "Gras", - "Quote": "Citacion", "Online for %(duration)s": "En linha dempuèi %(duration)s", "Idle for %(duration)s": "Inactiu dempuèi %(duration)s", "Offline for %(duration)s": "Fòra linha dempuèi %(duration)s", "Unknown for %(duration)s": "Desconegut dempuèi %(duration)s", "Online": "En linha", "Idle": "Inactiu", - "Offline": "Fòra linha", "Unknown": "Desconegut", "Unnamed room": "Sala sens nom", - "Settings": "Paramètres", "Search": "Recercar", "Share room": "Partejar la sala", "Favourites": "Favorits", - "Start chat": "Començar una discussion", "Rooms": "Salas", "Low priority": "Febla prioritat", "System Alerts": "Alèrtas sistèma", "Reason: %(reason)s": "Rason : %(reason)s", "Forget this room": "Oblidar aquesta sala", - "Disable": "Desactivar", "Do you want to chat with %(user)s?": "Volètz charrar amb %(user)s ?", " wants to chat": " vòl charrar", "Start chatting": "Començar de charrar", @@ -47,8 +40,6 @@ "Search…": "Cercar…", "Server error": "Error servidor", "Single Sign On": "Autentificacion unica", - "OK": "D’acòrdi", - "Continue": "Contunhar", "Go Back": "En arrièr", "Sun": "Dg", "Mon": "Dl", @@ -90,7 +81,6 @@ "Ok": "Validar", "Set up": "Parametrar", "Font size": "Talha de poliça", - "Start": "Començament", "Cancelling…": "Anullacion…", "Fish": "Pes", "Butterfly": "Parpalhòl", @@ -120,16 +110,13 @@ "exists": "existís", "Authentication": "Autentificacion", "Manage": "Manage", - "Enable": "Activar", "Restore from Backup": "Restablir a partir de l'archiu", "Off": "Atudat", "Display Name": "Nom d'afichatge", - "Save": "Salvagardar", "Disconnect": "Se desconnectar", "Go back": "Precedent", "Change": "Cambiar", "Theme": "Tèma", - "Success": "Succès", "Profile": "Perfil", "Account": "Compte", "General": "General", @@ -164,8 +151,6 @@ "Hangup": "Penjar", "Italics": "Italicas", "Strikethrough": "Raiat", - "Invites": "Convits", - "People": "Gent", "Historical": "Istoric", "Sign Up": "S’inscriure", "Appearance": "Aparéncia", @@ -178,11 +163,8 @@ "Mark all as read": "Tot marcar coma legit", "Trusted": "Fisable", "Not trusted": "Pas securizat", - "Invite": "Convidar", "Demote": "Retrogradar", "Are you sure?": "O volètz vertadièrament ?", - "Security": "Seguretat", - "Yes": "Òc", "Got it": "Ai comprés", "Sunday": "Dimenge", "Monday": "Diluns", @@ -193,9 +175,6 @@ "Saturday": "Dissabte", "Today": "Uèi", "Yesterday": "Ièr", - "View Source": "Veire la font", - "Reply": "Respondre", - "Edit": "Editar", "Attachment": "Pèça junta", "Show image": "Afichar l'imatge", "Show all": "O mostrar tot", @@ -211,7 +190,6 @@ "Categories": "Categorias", "Cancel search": "Anullar la recèrca", "More options": "Autras opcions", - "No results": "Pas cap de resultat", "Rotate Left": "Pivotar cap a èrra", "Rotate Right": "Pivotar cap a drecha", "Matrix": "Matritz", @@ -220,7 +198,6 @@ "Unavailable": "Pas disponible", "Changelog": "Istoric dels cambiaments (Changelog)", "Removing…": "Supression en cors…", - "Create": "Crear", "Name": "Escais", "Sign out": "Se desconnectar", "Back": "Precedenta", @@ -228,26 +205,21 @@ "Toolbox": "Bóstia d'aisinas", "Developer Tools": "Aisinas de desvolopament", "An error has occurred.": "Una error s'es producha.", - "Suggestions": "Prepausicions", "Go": "Validar", "Session name": "Nom de session", "Refresh": "Actualizada", "Email address": "Adreça de corrièl", - "Copy": "Copiar", "Terms of Service": "Terms of Service", "Service": "Servici", "Summary": "Resumit", "Document": "Document", - "Next": "Seguent", "Upload files": "Mandar de fichièrs", - "Leave": "Quitar", "Home": "Dorsièr personal", "Sign in": "Connexion", "Away": "Absent", "Submit": "Mandar", "Enter password": "Sasissètz lo senhal", "Email": "Corrièl", - "Username": "Nom d'_utilizaire", "Phone": "Telefòn", "Passwords don't match": "Los senhals correspondon pas", "Register": "S'enregistrar", @@ -265,7 +237,6 @@ "Import": "Importar", "Restore": "Restablir", "Download": "Telecargament", - "Retry": "Tornar ensajar", "Success!": "Capitada !", "Navigation": "Navigacion", "Alt": "Alt", @@ -286,6 +257,18 @@ "Use Single Sign On to continue": "Utilizar l'autentificacion unica (SSO) per contunhar", "This phone number is already in use": "Aquel numèro de telefòn es ja utilizat", "This email address is already in use": "Aquela adreça e-mail es ja utilizada", + "common": { + "mute": "Copar lo son", + "no_results": "Pas cap de resultat", + "offline": "Fòra linha", + "people": "Gent", + "security": "Seguretat", + "settings": "Paramètres", + "success": "Succès", + "suggestions": "Prepausicions", + "unmute": "Restablir lo son", + "username": "Nom d'_utilizaire" + }, "action": { "reject": "Regetar", "confirm": "Confirmar", @@ -304,4 +287,4 @@ "skip": "Ignorar", "logout": "Desconnexion" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index 77f1210cc374..8fbb3ac7ffcb 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -6,7 +6,6 @@ "Unknown error": "Nieznany błąd", "Options": "Opcje", "New Password": "Nowe hasło", - "Start chat": "Rozpocznij rozmowę", "Create new room": "Utwórz nowy pokój", "Room": "Pokój", "Jan": "Sty", @@ -42,20 +41,14 @@ "Banned users": "Zbanowani użytkownicy", "Change Password": "Zmień Hasło", "Confirm password": "Potwierdź hasło", - "Continue": "Kontynuuj", "Cryptography": "Kryptografia", "Current password": "Aktualne hasło", - "Error": "Błąd", "Notifications": "Powiadomienia", "Operation failed": "Operacja nie udała się", - "Remove": "Usuń", "Search": "Szukaj", - "Settings": "Ustawienia", "unknown error code": "nieznany kod błędu", - "OK": "OK", "Failed to forget room %(errCode)s": "Nie mogłem zapomnieć o pokoju %(errCode)s", "Favourite": "Ulubiony", - "Mute": "Wycisz", "powered by Matrix": "napędzany przez Matrix", "Failed to change password. Is your password correct?": "Zmiana hasła nie powiodła się. Czy Twoje hasło jest poprawne?", "Admin": "Administrator", @@ -90,14 +83,12 @@ "Commands": "Polecenia", "Custom level": "Własny poziom", "Deactivate Account": "Dezaktywuj konto", - "Decline": "Odrzuć", "Decrypt %(text)s": "Odszyfruj %(text)s", "Delete widget": "Usuń widżet", "Default": "Zwykły", "Define the power level of a user": "Określ poziom uprawnień użytkownika", "Displays action": "Wyświetla akcję", "Download %(text)s": "Pobierz %(text)s", - "Edit": "Edytuj", "Email": "E-mail", "Email address": "Adres e-mail", "Emoji": "Emoji", @@ -132,13 +123,11 @@ "Invalid Email Address": "Nieprawidłowy adres e-mail", "Invalid file%(extra)s": "Nieprawidłowy plik %(extra)s", "Invited": "Zaproszeni", - "Invites": "Zaproszenia", "Invites user with given id to current room": "Zaprasza użytkownika o danym ID do obecnego pokoju", "Sign in with": "Zaloguj się używając", "Join Room": "Dołącz do pokoju", "Jump to first unread message.": "Przeskocz do pierwszej nieprzeczytanej wiadomości.", "Labs": "Laboratoria", - "Leave room": "Opuść pokój", "Publish this room to the public in %(domain)s's room directory?": "Czy opublikować ten pokój dla ogółu w spisie pokojów domeny %(domain)s?", "Low priority": "Niski priorytet", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla wszystkich członków pokoju, od momentu ich zaproszenia.", @@ -158,9 +147,7 @@ "PM": "PM", "No display name": "Brak nazwy ekranowej", "No more results": "Nie ma więcej wyników", - "No results": "Brak wyników", "No users have specific privileges in this room": "Żadni użytkownicy w tym pokoju nie mają specyficznych uprawnień", - "Password": "Hasło", "Passwords can't be empty": "Hasła nie mogą być puste", "Permissions": "Uprawnienia", "Phone": "Telefon", @@ -180,7 +167,6 @@ "%(roomName)s does not exist.": "%(roomName)s nie istnieje.", "%(roomName)s is not accessible at this time.": "%(roomName)s nie jest dostępny w tym momencie.", "Rooms": "Pokoje", - "Save": "Zapisz", "Search failed": "Wyszukiwanie nie powiodło się", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s wysłał obraz.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s wysłał zaproszenie do %(targetDisplayName)s do dołączenia do pokoju.", @@ -196,7 +182,6 @@ "Someone": "Ktoś", "Start authentication": "Rozpocznij uwierzytelnienie", "Submit": "Wyślij", - "Success": "Sukces", "This email address is already in use": "Podany adres e-mail jest już w użyciu", "This email address was not found": "Podany adres e-mail nie został znaleziony", "The email address linked to your account must be entered.": "Musisz wpisać adres e-mail połączony z twoim kontem.", @@ -210,7 +195,6 @@ "Unable to remove contact information": "Nie można usunąć informacji kontaktowych", "Unable to verify email address.": "Weryfikacja adresu e-mail nie powiodła się.", "Unable to enable Notifications": "Nie można włączyć powiadomień", - "Unmute": "Wyłącz wyciszenie", "Unnamed Room": "Pokój bez nazwy", "Uploading %(filename)s": "Przesyłanie %(filename)s", "Uploading %(filename)s and %(count)s others": { @@ -236,9 +220,7 @@ "You seem to be uploading files, are you sure you want to quit?": "Wygląda na to, że jesteś w trakcie przesyłania plików; jesteś pewien, że chcesz wyjść?", "This server does not support authentication with a phone number.": "Ten serwer nie wspiera autentykacji za pomocą numeru telefonu.", "Connectivity to the server has been lost.": "Połączenie z serwerem zostało utracone.", - "Create": "Utwórz", "Online": "Dostępny", - "Offline": "Niedostępny", "Add an Integration": "Dodaj integrację", "Token incorrect": "Niepoprawny token", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Nie będziesz mógł cofnąć tej zmiany, ponieważ nadajesz użytkownikowi uprawnienia administratorskie równe Twoim.", @@ -251,7 +233,6 @@ "other": "(~%(count)s wyników)" }, "Start automatically after system login": "Uruchom automatycznie po zalogowaniu się do systemu", - "Analytics": "Analityka", "Passphrases must match": "Hasła szyfrujące muszą być identyczne", "Passphrase must not be empty": "Hasło szyfrujące nie może być puste", "Export room keys": "Eksportuj klucze pokoju", @@ -304,7 +285,6 @@ "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Nie będziesz mógł cofnąć tej zmiany, ponieważ degradujesz swoje uprawnienia. Jeśli jesteś ostatnim użytkownikiem uprzywilejowanym w tym pokoju, nie będziesz mógł ich odzyskać.", "Ignore": "Ignoruj", "Mention": "Wzmianka", - "Invite": "Zaproś", "Send an encrypted reply…": "Wyślij zaszyfrowaną odpowiedź…", "Send an encrypted message…": "Wyślij zaszyfrowaną wiadomość…", "Online for %(duration)s": "Online przez %(duration)s", @@ -322,7 +302,6 @@ "On": "Włącz", "Changelog": "Dziennik zmian", "Waiting for response from server": "Czekam na odpowiedź serwera", - "Leave": "Opuść", "Failed to send logs: ": "Nie udało się wysłać dzienników: ", "Warning": "Ostrzeżenie", "This Room": "Ten pokój", @@ -346,7 +325,6 @@ "All Rooms": "Wszystkie pokoje", "Wednesday": "Środa", "You cannot delete this message. (%(code)s)": "Nie możesz usunąć tej wiadomości. (%(code)s)", - "Quote": "Cytuj", "Send logs": "Wyślij logi", "All messages": "Wszystkie wiadomości", "Call invitation": "Zaproszenie do rozmowy", @@ -358,7 +336,6 @@ "Search…": "Szukaj…", "Logs sent": "Wysłano dzienniki", "Back": "Powrót", - "Reply": "Odpowiedz", "Show message in desktop notification": "Pokaż wiadomość w notyfikacji na pulpicie", "Messages in group chats": "Wiadomości w czatach grupowych", "Yesterday": "Wczoraj", @@ -368,7 +345,6 @@ "Failed to remove tag %(tagName)s from room": "Nie udało się usunąć tagu %(tagName)s z pokoju", "Event Type": "Typ wydarzenia", "Event sent!": "Wydarzenie wysłane!", - "View Source": "Wyświetl źródło", "Event Content": "Zawartość wydarzenia", "Thank you!": "Dziękujemy!", "Send analytics data": "Wysyłaj dane analityczne", @@ -562,10 +538,8 @@ "Capitalization doesn't help very much": "Kapitalizacja nie pomaga bardzo", "This is a top-10 common password": "To jest 10 najpopularniejszych haseł", "This is a top-100 common password": "To jest 100 najpopularniejszych haseł", - "Retry": "Ponów", "Unable to create key backup": "Nie można utworzyć kopii zapasowej klucza", "Download": "Pobierz", - "Next": "Dalej", "No backup found!": "Nie znaleziono kopii zapasowej!", "Create a new room with the same name, description and avatar": "Utwórz nowy pokój o tej samej nazwie, opisie i awatarze", "was unbanned %(count)s times": { @@ -932,9 +906,6 @@ "End": "End", "Sign In or Create Account": "Zaloguj się lub utwórz konto", "Use your account or create a new one to continue.": "Użyj konta lub utwórz nowe, aby kontynuować.", - "No": "Nie", - "Yes": "Tak", - "React": "Dodaj reakcję", "Edited at %(date)s. Click to view edits.": "Edytowano w %(date)s. Kliknij, aby zobaczyć zmiany.", "Frequently Used": "Często używane", "Smileys & People": "Buźki i osoby", @@ -960,14 +931,11 @@ "Hide advanced": "Ukryj zaawansowane", "Show advanced": "Pokaż zaawansowane", "Recent Conversations": "Najnowsze rozmowy", - "Suggestions": "Propozycje", "Upload files (%(current)s of %(total)s)": "Prześlij pliki (%(current)s z %(total)s)", "Upload files": "Prześlij pliki", "Upload all": "Prześlij wszystko", "Cancel All": "Anuluj wszystko", - "Report Content": "Zgłoś treść", "Remove for everyone": "Usuń dla wszystkich", - "Username": "Nazwa użytkownika", "Enter password": "Wprowadź hasło", "Password is allowed, but unsafe": "Hasło jest dozwolone, ale niebezpieczne", "Nice, strong password!": "Ładne, silne hasło!", @@ -977,9 +945,7 @@ "Go Back": "Wróć", "Forgotten your password?": "Nie pamiętasz hasła?", "Restore": "Przywróć", - "Copy": "Kopiuj", "Success!": "Sukces!", - "Disable": "Wyłącz", "Manage integrations": "Zarządzaj integracjami", "%(count)s verified sessions": { "other": "%(count)s zweryfikowanych sesji", @@ -991,11 +957,9 @@ "one": "%(count)s sesja" }, "Hide sessions": "Ukryj sesje", - "Security": "Bezpieczeństwo", "Integrations are disabled": "Integracje są wyłączone", "Encryption upgrade available": "Dostępne ulepszenie szyfrowania", "Manage": "Zarządzaj", - "Enable": "Włącz", "Session ID:": "Identyfikator sesji:", "Session key:": "Klucz sesji:", "Accept all %(invitedRooms)s invites": "Zaakceptuj wszystkie zaproszenia do %(invitedRooms)s", @@ -1027,7 +991,6 @@ "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s wykonał połączenie głosowe. (nie wspierane przez tę przeglądarkę)", "%(senderName)s placed a video call.": "%(senderName)s wykonał połączenie wideo.", "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s wykonał połączenie wideo. (nie obsługiwane przez tę przeglądarkę)", - "Done": "Gotowe", "about a minute ago": "około minuty temu", "about an hour ago": "około godziny temu", "about a day ago": "około dzień temu", @@ -1076,7 +1039,6 @@ "Light": "Jasny", "Dark": "Ciemny", "Font size": "Rozmiar czcionki", - "People": "Ludzie", "Appearance": "Wygląd", "Show rooms with unread messages first": "Pokazuj najpierw pokoje z nieprzeczytanymi wiadomościami", "Show previews of messages": "Pokazuj podglądy wiadomości", @@ -1147,7 +1109,6 @@ "Other published addresses:": "Inne opublikowane adresy:", "Room settings": "Ustawienia pokoju", "Messages in this room are not end-to-end encrypted.": "Wiadomości w tym pokoju nie są szyfrowane end-to-end.", - "About": "Informacje", "Add a topic to help people know what it is about.": "Dodaj temat, aby poinformować ludzi czego dotyczy.", "Show info about bridges in room settings": "Pokazuj informacje o mostkach w ustawieniach pokoju", "about a day from now": "około dnia od teraz", @@ -1350,12 +1311,10 @@ "Cancelling…": "Anulowanie…", "Algorithm:": "Algorytm:", "Bulk options": "Masowe działania", - "Modern": "Współczesny", "Approve": "Zatwierdź", "Incompatible Database": "Niekompatybilna baza danych", "Information": "Informacje", "Categories": "Kategorie", - "Reactions": "Reakcje", "Trusted": "Zaufane", "Accepting…": "Akceptowanie…", "Re-join": "Dołącz ponownie", @@ -1529,7 +1488,6 @@ "Unable to access webcam / microphone": "Nie można uzyskać dostępu do kamery / mikrofonu", "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Nie udało się zestawić połączenia z powodu braku dostępu do mikrofonu. Sprawdź czy mikrofon jest podłączony i poprawnie skonfigurowany.", "Unable to access microphone": "Nie można uzyskać dostępu do mikrofonu", - "Forgot password?": "Nie pamiętasz hasła?", "Use an identity server to invite by email. Manage in Settings.": "Użyj serwera tożsamości, aby zapraszać przez e-mail. Zarządzaj w Ustawieniach.", "Got it": "Rozumiem", "Space used:": "Użyta powierzchnia:", @@ -1610,7 +1568,6 @@ "Your server isn't responding to some requests.": "Twój serwer nie odpowiada na niektóre zapytania.", "Waiting for %(displayName)s to verify…": "Oczekiwanie na weryfikację przez %(displayName)s…", "To be secure, do this in person or use a trusted way to communicate.": "Aby było to bezpieczne, wykonaj to przy tej osobie, lub używając zaufanego sposobu komunikacji.", - "Start": "Rozpocznij", "Compare a unique set of emoji if you don't have a camera on either device": "Porównaj unikatowy zestaw emoji, jeżeli nie masz aparatu na jednym z urządzeń", "Compare unique emoji": "Porównaj unikatowe emoji", "Scan this unique code": "Zeskanuj ten unikatowy kod", @@ -1677,7 +1634,6 @@ "Add an email to be able to reset your password.": "Dodaj adres e-mail, aby zresetować swoje hasło.", "Host account on": "Przechowuj konto na", "Already have an account? Sign in here": "Masz już konto? Zaloguj się tutaj", - "Learn more": "Dowiedz się więcej", "New? Create account": "Nowy? Utwórz konto", "New here? Create an account": "Nowy? Utwórz konto", "Server Options": "Opcje serwera", @@ -1698,12 +1654,10 @@ "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Zweryfikuj tego użytkownika, aby oznaczyć go jako zaufanego. Użytkownicy zaufani dodają większej pewności, gdy korzystasz z wiadomości szyfrowanych end-to-end.", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "PRO TIP: Jeżeli zgłaszasz błąd, wyślij dzienniki debugowania, aby pomóc nam znaleźć problem.", "Please view existing bugs on Github first. No match? Start a new one.": "Najpierw zobacz istniejące zgłoszenia na GitHubie. Nic nie znalazłeś? Utwórz nowe.", - "Report a bug": "Zgłoś błąd", "Comment": "Komentarz", "There was an error finding this widget.": "Wystąpił błąd podczas próby odnalezienia tego widżetu.", "Active Widgets": "Aktywne widżety", "Encryption not enabled": "Nie włączono szyfrowania", - "Encryption enabled": "Włączono szyfrowanie", "Try again": "Spróbuj ponownie", "We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.": "Poprosiliśmy przeglądarkę o zapamiętanie, z którego serwera domowego korzystasz, aby umożliwić Ci logowanie, ale niestety Twoja przeglądarka o tym zapomniała. Przejdź do strony logowania i spróbuj ponownie.", "We couldn't log you in": "Nie mogliśmy Cię zalogować", @@ -1765,7 +1719,6 @@ "Error - Mixed content": "Błąd — zawartość mieszana", "You don't have permission to do this": "Nie masz uprawnień aby to zrobić", "Sent": "Wysłano", - "Forward message": "Przekaż wiadomość", "Message preview": "Podgląd wiadomości", "Search for rooms or people": "Szukaj pokojów i ludzi", "Some suggestions may be hidden for privacy.": "Niektóre propozycje mogą być ukryte z uwagi na prywatność.", @@ -1954,7 +1907,6 @@ "Not trusted": "Nie zaufane", "Empty room": "Pusty pokój", "Hold": "Wstrzymaj", - "Message": "Wiadomość", "ready": "gotowy", "Disagree": "Nie zgadzam się", "Create a new room": "Utwórz nowy pokój", @@ -1979,7 +1931,6 @@ "Stop recording": "Skończ nagrywanie", "We didn't find a microphone on your device. Please check your settings and try again.": "Nie udało się znaleźć żadnego mikrofonu w twoim urządzeniu. Sprawdź ustawienia i spróbuj ponownie.", "No microphone found": "Nie znaleziono mikrofonu", - "Sticker": "Naklejka", "Rooms outside of a space": "Pokoje poza przestrzenią", "Autoplay videos": "Auto odtwarzanie filmów", "Connect this session to Key Backup": "Połącz tę sesję z kopią zapasową kluczy", @@ -1996,7 +1947,6 @@ "Messages containing keywords": "Wiadomości zawierające słowa kluczowe", "Message bubbles": "Dymki wiadomości", "IRC (Experimental)": "IRC (eksperymentalny)", - "Message layout": "Wygląd wiadomości", "Updating spaces... (%(progress)s out of %(count)s)": { "one": "Aktualizowanie przestrzeni...", "other": "Aktualizowanie przestrzeni... (%(progress)s z %(count)s)" @@ -2435,7 +2385,6 @@ "You attempted to join using a room ID without providing a list of servers to join through. Room IDs are internal identifiers and cannot be used to join a room without additional information.": "Spróbowałeś dołączyć za pomocą ID pokoju bez podania listy serwerów, z których można dołączyć. ID pokojów to wewnętrzne identyfikatory, których nie da się użyć bez dodatkowych informacji.", "Yes, it was me": "Tak, to byłem ja", "Notifications silenced": "Wyciszono powiadomienia", - "Video": "Wideo", "Video call started": "Rozpoczęto rozmowę wideo", "Unknown room": "Nieznany pokój", "You have unverified sessions": "Masz niezweryfikowane sesje", @@ -2817,7 +2766,6 @@ "Loading preview": "Wczytywanie podglądu", "Join the room to participate": "Dołącz do pokoju, aby uczestniczyć", "Rejecting invite…": "Odrzucanie zaproszenia…", - "Loading…": "Wczytywanie…", "Joining…": "Dołączanie…", "Joining room…": "Dołączanie do pokoju…", "Joining space…": "Dołączanie do przestrzeni…", @@ -2940,7 +2888,6 @@ "Join the conference at the top of this room": "Dołącz do konferencji na górze tego pokoju", "Error downloading image": "Wystąpił błąd w trakcie pobierania zdjęcia", "Unable to show image due to error": "Nie można pokazać zdjęcia z powodu błędu", - "Image": "Obraz", "Click": "Kliknij", "Expand quotes": "Rozwiń cytaty", "Collapse quotes": "Zwiń cytaty", @@ -3009,7 +2956,6 @@ "one": "%(count)s głos", "other": "%(count)s głosów" }, - "Verification cancelled": "Weryfikacja anulowana", "You cancelled verification.": "Anulowałeś weryfikację.", "%(displayName)s cancelled verification.": "%(displayName)s anulował weryfikację.", "You cancelled verification on your other device.": "Anulowałeś weryfikację na swoim drugim urządzeniu.", @@ -3117,7 +3063,6 @@ "%(name)s cancelled": "%(name)s anulował", "Report": "Zgłoś", "What this user is writing is wrong.\nThis will be reported to the room moderators.": "To co pisze ten użytkownik jest złe.\nZostanie to zgłoszone moderatorom pokoju.", - "Forward": "Przekaż", "Modal Widget": "Widżet modalny", "Your homeserver doesn't seem to support this feature.": "Wygląda na to, że Twój serwer domowy nie wspiera tej funkcji.", "If they don't match, the security of your communication may be compromised.": "Jeśli nie pasują, bezpieczeństwo twojego konta mogło zostać zdradzone.", @@ -3238,7 +3183,6 @@ }, "Private room (invite only)": "Pokój prywatny (tylko na zaproszenie)", "Room visibility": "Widoczność pokoju", - "Create a room": "Utwórz pokój", "Create a video room": "Utwórz pokój wideo", "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.": "Możesz wyłączyć tę opcję, jeśli pokój będzie wykorzystywany jedynie do współpracy z wewnętrznymi zespołami, które posiadają swój serwer domowy. Nie będzie można zmienić tej opcji.", "Your server requires encryption to be enabled in private rooms.": "Twój serwer wymaga włączenia szyfrowania w pokojach prywatnych.", @@ -3591,7 +3535,6 @@ "Forget Room": "Zapomnij pokój", "Mentions only": "Tylko wzmianki", "Forget": "Zapomnij", - "Copy link": "Kopiuj link", "View related event": "Wyświetl powiązane wydarzenie", "Collapse reply thread": "Zwiń wątek odpowiedzi", "Show preview": "Pokaż podgląd", @@ -3779,7 +3722,6 @@ "Original event source": "Oryginalne źródło wydarzenia", "Decrypted source unavailable": "Rozszyfrowane źródło niedostępne", "Decrypted event source": "Rozszyfrowane wydarzenie źródłowe", - "User menu": "Menu użytkownika", "Got an account? Sign in": "Posiadasz już konto? Zaloguj się", "Thread": "Wątek", "Keep discussions organised with threads": "Organizuj dyskusje za pomocą wątków", @@ -3814,7 +3756,6 @@ "Creating rooms…": "Tworzenie pokojów…", "Skip for now": "Pomiń na razie", "Failed to create initial space rooms": "Nie udało się utworzyć początkowych pokoi przestrzeni", - "Room name": "Nazwa pokoju", "Support": "Wsparcie", "Random": "Losowe", "Welcome to ": "Witamy w ", @@ -3929,6 +3870,35 @@ "User read up to (m.read.private;ignoreSynthetic): ": "Użytkownik przeczytał do (m.read.private;ignoreSynthetic): ", "Upgrade room": "Ulepsz pokój", "See history": "Pokaż historię", + "common": { + "about": "Informacje", + "analytics": "Analityka", + "encryption_enabled": "Włączono szyfrowanie", + "error": "Błąd", + "forward_message": "Przekaż wiadomość", + "image": "Obraz", + "loading": "Wczytywanie…", + "message": "Wiadomość", + "message_layout": "Wygląd wiadomości", + "modern": "Współczesny", + "mute": "Wycisz", + "no_results": "Brak wyników", + "offline": "Niedostępny", + "password": "Hasło", + "people": "Ludzie", + "reactions": "Reakcje", + "report_a_bug": "Zgłoś błąd", + "room_name": "Nazwa pokoju", + "security": "Bezpieczeństwo", + "settings": "Ustawienia", + "sticker": "Naklejka", + "success": "Sukces", + "suggestions": "Propozycje", + "unmute": "Wyłącz wyciszenie", + "username": "Nazwa użytkownika", + "verification_cancelled": "Weryfikacja anulowana", + "video": "Wideo" + }, "action": { "reject": "Odrzuć", "confirm": "Potwierdź", @@ -3953,5 +3923,8 @@ "share": "Udostępnij", "skip": "Pomiń", "logout": "Wyloguj" + }, + "a11y": { + "user_menu": "Menu użytkownika" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index e1c4949cdd05..d6fff15ded2d 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -11,7 +11,6 @@ "Changes your display nickname": "Troca o seu apelido", "Commands": "Comandos", "Confirm password": "Confirmar palavra-passe", - "Continue": "Continuar", "Cryptography": "Criptografia", "Current password": "Palavra-passe atual", "Deactivate Account": "Desativar conta", @@ -19,7 +18,6 @@ "Deops user with given id": "Retirar função de moderador do usuário com o identificador informado", "Displays action": "Visualizar atividades", "Emoji": "Emoji", - "Error": "Erro", "Export E2E room keys": "Exportar chaves ponta-a-ponta da sala", "Failed to change password. Is your password correct?": "Falha ao alterar a palavra-passe. A sua palavra-passe está correta?", "Failed to reject invitation": "Falha ao tentar rejeitar convite", @@ -33,11 +31,9 @@ "Historical": "Histórico", "Import E2E room keys": "Importar chave de criptografia ponta-a-ponta (E2E) da sala", "Invalid Email Address": "Endereço de email inválido", - "Invites": "Convidar", "Invites user with given id to current room": "Convidar usuários com um dado identificador para esta sala", "Sign in with": "Quero entrar", "Labs": "Laboratório", - "Leave room": "Sair da sala", "Low priority": "Baixa prioridade", "Moderator": "Moderador/a", "Name": "Nome", @@ -45,7 +41,6 @@ "Notifications": "Notificações", "": "", "No users have specific privileges in this room": "Nenhum/a usuário/a possui privilégios específicos nesta sala", - "Password": "Palavra-Passe", "Passwords can't be empty": "As palavras-passe não podem estar vazias", "Permissions": "Permissões", "Phone": "Telefone", @@ -53,17 +48,14 @@ "Privileged Users": "Usuárias/os privilegiadas/os", "Profile": "Perfil", "Reject invitation": "Rejeitar convite", - "Remove": "Remover", "Return to login screen": "Retornar à tela de login", "Rooms": "Salas", "Server may be unavailable, overloaded, or you hit a bug.": "O servidor pode estar indisponível ou sobrecarregado, ou então você encontrou uma falha no sistema.", "Session ID": "Identificador de sessão", - "Settings": "Configurações", "Signed Out": "Deslogar", "Sign in": "Entrar", "Sign out": "Sair", "Someone": "Alguém", - "Success": "Sucesso", "The email address linked to your account must be entered.": "O endereço de email relacionado a sua conta precisa ser informado.", "This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de email válido", "This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos", @@ -158,8 +150,6 @@ "Jump to first unread message.": "Ir diretamente para a primeira das mensagens não lidas.", "not specified": "não especificado", "No more results": "Não há mais resultados", - "No results": "Sem resultados", - "OK": "OK", "Search": "Pesquisar", "Search failed": "Busca falhou", "Server error": "Erro no servidor", @@ -180,14 +170,11 @@ "Email address": "Endereço de email", "Error decrypting attachment": "Erro ao descriptografar o anexo", "Invalid file%(extra)s": "Arquivo inválido %(extra)s", - "Mute": "Silenciar", "Operation failed": "A operação falhou", "%(brand)s version:": "versão do %(brand)s:", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar os horários em formato de 12h (p.ex: 2:30pm)", - "Unmute": "Tirar do mudo", "Warning!": "Atenção!", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s apagou o nome da sala.", - "Analytics": "Análise", "Options": "Opções", "Passphrases must match": "As frases-passe devem coincidir", "Passphrase must not be empty": "A frase-passe não pode estar vazia", @@ -216,7 +203,6 @@ "Drop file here to upload": "Arraste um arquivo aqui para enviar", "Online": "Online", "Idle": "Ocioso", - "Offline": "Offline", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este processo faz com que você possa importar as chaves de criptografia que tinha previamente exportado de outro cliente Matrix. Você poderá então descriptografar todas as mensagens que o outro cliente pôde criptografar.", "Start automatically after system login": "Iniciar automaticamente ao iniciar o sistema", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Você será levado agora a um site de terceiros para poder autenticar a sua conta para uso com o serviço %(integrationsUrl)s. Você quer continuar?", @@ -239,7 +225,6 @@ "Are you sure you want to leave the room '%(roomName)s'?": "Você tem certeza que deseja sair da sala '%(roomName)s'?", "Custom level": "Nível personalizado", "Register": "Registar", - "Save": "Salvar", "You have disabled URL previews by default.": "Você desabilitou pré-visualizações de links por padrão.", "You have enabled URL previews by default.": "Você habilitou pré-visualizações de links por padrão.", "Create new room": "Criar nova sala", @@ -259,17 +244,14 @@ "Start authentication": "Iniciar autenticação", "New Password": "Nova Palavra-Passe", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.", - "Decline": "Recusar", "Add": "Adicionar", "Unnamed Room": "Sala sem nome", "Home": "Início", "Something went wrong!": "Algo deu errado!", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nível de permissão %(powerLevelNumber)s)", - "Start chat": "Iniciar conversa", "%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento.", "Delete widget": "Apagar widget", "Define the power level of a user": "Definir o nível de privilégios de um utilizador", - "Edit": "Editar", "Enable automatic language detection for syntax highlighting": "Ativar deteção automática da linguagem para realce da sintaxe", "Publish this room to the public in %(domain)s's room directory?": "Publicar esta sala ao público no diretório de salas de %(domain)s's?", "AM": "AM", @@ -285,7 +267,6 @@ "Authentication check failed: incorrect password?": "Erro de autenticação: palavra-passe incorreta?", "Do you want to set an email address?": "Deseja definir um endereço de e-mail?", "This will allow you to reset your password and receive notifications.": "Isto irá permitir-lhe redefinir a sua palavra-passe e receber notificações.", - "Create": "Criar", "Automatically replace plain text Emoji": "Substituir Emoji de texto automaticamente", "%(widgetName)s widget added by %(senderName)s": "Widget %(widgetName)s adicionado por %(senderName)s", "%(widgetName)s widget removed by %(senderName)s": "Widget %(widgetName)s removido por %(senderName)s", @@ -293,7 +274,6 @@ "Ignore": "Ignorar", "Ignored user": "Utilizador ignorado", "Description": "Descrição", - "Leave": "Sair", "Unknown": "Desconhecido", "Unignore": "Deixar de ignorar", "You are now ignoring %(userId)s": "Está agora a ignorar %(userId)s", @@ -351,10 +331,8 @@ "Wednesday": "Quarta-feira", "Event Type": "Tipo de evento", "Event sent!": "Evento enviado!", - "View Source": "Ver a fonte", "Event Content": "Conteúdo do evento", "Thank you!": "Obrigado!", - "Quote": "Citar", "Add Email Address": "Adicione adresso de e-mail", "Add Phone Number": "Adicione número de telefone", "Call Failed": "A chamada falhou", @@ -580,7 +558,6 @@ "Use your account or create a new one to continue.": "Use a sua conta ou crie uma nova conta para continuar.", "Restricted": "Restrito", "Latvia": "Letónia", - "Username": "Nome de utilizador", "Libya": "Líbia", "Lithuania": "Lituânia", "Malawi": "Malawi", @@ -754,6 +731,18 @@ "Failed to send event": "Falha no envio do evento", "Failed to read events": "Falha ao ler eventos", "Setting up keys": "A configurar chaves", + "common": { + "analytics": "Análise", + "error": "Erro", + "mute": "Silenciar", + "no_results": "Sem resultados", + "offline": "Offline", + "password": "Palavra-Passe", + "settings": "Configurações", + "success": "Sucesso", + "unmute": "Tirar do mudo", + "username": "Nome de utilizador" + }, "action": { "reject": "Rejeitar", "confirm": "Confirmar", @@ -767,4 +756,4 @@ "skip": "Saltar", "logout": "Sair" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index b6ef53eae5cf..85c8565415b9 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -11,7 +11,6 @@ "Changes your display nickname": "Altera o seu nome e sobrenome", "Commands": "Comandos", "Confirm password": "Confirme a nova senha", - "Continue": "Continuar", "Cryptography": "Criptografia", "Current password": "Senha atual", "Deactivate Account": "Desativar minha conta", @@ -19,7 +18,6 @@ "Deops user with given id": "Retira o nível de moderador do usuário com o ID informado", "Displays action": "Visualizar atividades", "Emoji": "Emoji", - "Error": "Erro", "Export E2E room keys": "Exportar chaves ponta-a-ponta da sala", "Failed to change password. Is your password correct?": "Não foi possível alterar a senha. A sua senha está correta?", "Failed to reject invitation": "Falha ao tentar recusar o convite", @@ -33,11 +31,9 @@ "Historical": "Histórico", "Import E2E room keys": "Importar chave de criptografia ponta-a-ponta (E2E) da sala", "Invalid Email Address": "Endereço de e-mail inválido", - "Invites": "Convidar", "Invites user with given id to current room": "Convida o usuário com o ID especificado para esta sala", "Sign in with": "Entrar com", "Labs": "Laboratório", - "Leave room": "Sair da sala", "Low priority": "Baixa prioridade", "Moderator": "Moderador/a", "Name": "Nome", @@ -45,7 +41,6 @@ "Notifications": "Notificações", "": "", "No users have specific privileges in this room": "Nenhum usuário possui privilégios específicos nesta sala", - "Password": "Senha", "Passwords can't be empty": "As senhas não podem estar em branco", "Permissions": "Permissões", "Phone": "Telefone", @@ -53,17 +48,14 @@ "Privileged Users": "Usuárias/os privilegiadas/os", "Profile": "Perfil", "Reject invitation": "Recusar o convite", - "Remove": "Apagar", "Return to login screen": "Retornar à tela de login", "Rooms": "Salas", "Server may be unavailable, overloaded, or you hit a bug.": "O servidor pode estar indisponível ou sobrecarregado, ou então você encontrou uma falha no sistema.", "Session ID": "Identificador de sessão", - "Settings": "Configurações", "Signed Out": "Deslogar", "Sign in": "Entrar", "Sign out": "Sair", "Someone": "Alguém", - "Success": "Sucesso", "The email address linked to your account must be entered.": "O e-mail vinculado à sua conta precisa ser informado.", "This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de e-mail válido", "This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos", @@ -158,8 +150,6 @@ "Jump to first unread message.": "Ir diretamente para a primeira das mensagens não lidas.", "not specified": "não especificado", "No more results": "Não há mais resultados", - "No results": "Nenhum resultado", - "OK": "Ok", "Search": "Buscar", "Search failed": "Busca falhou", "Server error": "Erro no servidor", @@ -180,14 +170,11 @@ "Email address": "Endereço de e-mail", "Error decrypting attachment": "Erro ao descriptografar o anexo", "Invalid file%(extra)s": "Arquivo inválido %(extra)s", - "Mute": "Mudo", "Operation failed": "A operação falhou", "%(brand)s version:": "versão do %(brand)s:", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar os horários em formato de 12h (p.ex: 2:30pm)", - "Unmute": "Tirar do mudo", "Warning!": "Atenção!", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s apagou o nome da sala.", - "Analytics": "Análise", "Options": "Opções", "Passphrases must match": "As senhas têm que ser iguais", "Passphrase must not be empty": "A frase não pode estar em branco", @@ -216,7 +203,6 @@ "Drop file here to upload": "Arraste um arquivo aqui para enviar", "Online": "Conectada/o", "Idle": "Ocioso", - "Offline": "Offline", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este processo faz com que você possa importar as chaves de criptografia que tinha previamente exportado de outro cliente Matrix. Você poderá então descriptografar todas as mensagens que o outro cliente pôde criptografar.", "Start automatically after system login": "Iniciar automaticamente ao iniciar o sistema", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Você será redirecionado para um site de terceiros para poder autenticar a sua conta, tendo em vista usar o serviço %(integrationsUrl)s. Deseja prosseguir?", @@ -239,7 +225,6 @@ "Are you sure you want to leave the room '%(roomName)s'?": "Tem certeza de que deseja sair da sala '%(roomName)s'?", "Custom level": "Nível personalizado", "Register": "Registre-se", - "Save": "Salvar", "You have disabled URL previews by default.": "Você desativou pré-visualizações de links por padrão.", "You have enabled URL previews by default.": "Você ativou pré-visualizações de links por padrão.", "Add": "Adicionar", @@ -251,12 +236,10 @@ }, "You must register to use this functionality": "Você deve se registrar para usar este recurso", "Create new room": "Criar nova sala", - "Start chat": "Iniciar conversa", "New Password": "Nova senha", "Something went wrong!": "Não foi possível carregar!", "Admin Tools": "Ferramentas de administração", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.", - "Decline": "Recusar", "No display name": "Nenhum nome e sobrenome", "%(roomName)s does not exist.": "%(roomName)s não existe.", "%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento.", @@ -277,7 +260,6 @@ "You do not have permission to do that in this room.": "Você não tem permissão para fazer isso nesta sala.", "Ignored user": "Usuário bloqueado", "You are no longer ignoring %(userId)s": "Você não está mais bloqueando %(userId)s", - "Edit": "Editar", "Call Failed": "A chamada falhou", "PM": "PM", "AM": "AM", @@ -302,7 +284,6 @@ "Ignore": "Bloquear", "Jump to read receipt": "Ir para a confirmação de leitura", "Mention": "Mencionar", - "Invite": "Convidar", "Send an encrypted reply…": "Digite sua resposta criptografada…", "Send an encrypted message…": "Digite uma mensagem criptografada…", "%(duration)ss": "%(duration)ss", @@ -420,8 +401,6 @@ "And %(count)s more...": { "other": "E %(count)s mais..." }, - "Create": "Criar", - "Leave": "Sair", "Description": "Descrição", "This room is not public. You will not be able to rejoin without an invite.": "Esta sala não é pública. Você não poderá voltar sem ser convidada/o.", "Old cryptography data detected": "Dados de criptografia antigos foram detectados", @@ -472,7 +451,6 @@ "You cannot delete this message. (%(code)s)": "Você não pode apagar esta mensagem. (%(code)s)", "Thursday": "Quinta-feira", "Back": "Voltar", - "Reply": "Responder", "Show message in desktop notification": "Mostrar a mensagem na notificação da área de trabalho", "Messages in group chats": "Mensagens em salas", "Yesterday": "Ontem", @@ -482,10 +460,8 @@ "Wednesday": "Quarta-feira", "Event Type": "Tipo do Evento", "Event sent!": "Evento enviado!", - "View Source": "Ver código-fonte", "Event Content": "Conteúdo do Evento", "Thank you!": "Obrigado!", - "Quote": "Citar", "Permission Required": "Permissão necessária", "You do not have permission to start a conference call in this room": "Você não tem permissão para iniciar uma chamada em grupo nesta sala", "Unable to load! Check your network connectivity and try again.": "Não foi possível carregar! Verifique sua conexão de rede e tente novamente.", @@ -590,7 +566,6 @@ "Unable to load backup status": "Não foi possível carregar o status do backup", "Unable to restore backup": "Não foi possível restaurar o backup", "No backup found!": "Nenhum backup encontrado!", - "Next": "Próximo", "Popout widget": "Widget Popout", "Send Logs": "Enviar relatórios", "Failed to decrypt %(failedCount)s sessions!": "Falha ao descriptografar as sessões de %(failedCount)s!", @@ -616,7 +591,6 @@ "Go back to set it again.": "Voltar para configurar novamente.", "Download": "Baixar", "Unable to create key backup": "Não foi possível criar backup da chave", - "Retry": "Tentar novamente", "New Recovery Method": "Nova opção de recuperação", "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Se você não definiu a nova opção de recuperação, um invasor pode estar tentando acessar sua conta. Altere a senha da sua conta e defina uma nova opção de recuperação imediatamente nas Configurações.", "Set up Secure Messages": "Configurar mensagens seguras", @@ -727,8 +701,6 @@ "Headphones": "Fones de ouvido", "Folder": "Pasta", "Pin": "Alfinete", - "Yes": "Sim", - "No": "Não", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Enviamos um e-mail para você confirmar seu endereço. Por favor, siga as instruções e clique no botão abaixo.", "Email Address": "Endereço de e-mail", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Tem certeza? Você perderá suas mensagens criptografadas se não tiver feito o backup de suas chaves.", @@ -876,7 +848,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) entrou em uma nova sessão sem confirmá-la:", "Ask this user to verify their session, or manually verify it below.": "Peça a este usuário para confirmar a sessão dele, ou confirme-a manualmente abaixo.", "Not Trusted": "Não confiável", - "Done": "Fechar", "Cannot reach homeserver": "Não consigo acessar o servidor", "Ensure you have a stable internet connection, or get in touch with the server admin": "Verifique se está com uma conexão de internet estável, ou entre em contato com os administradores do servidor", "Your %(brand)s is misconfigured": "O %(brand)s está mal configurado", @@ -950,7 +921,6 @@ "Scan this unique code": "Escaneie este código único", "Compare unique emoji": "Comparar emojis únicos", "Compare a unique set of emoji if you don't have a camera on either device": "Compare um conjunto único de emojis se você não tem uma câmera em nenhum dos dois aparelhos", - "Start": "Iniciar", "Waiting for %(displayName)s to verify…": "Aguardando %(displayName)s confirmar…", "Cancelling…": "Cancelando…", "They match": "São coincidentes", @@ -982,7 +952,6 @@ "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verifique individualmente cada sessão usada por um usuário para marcá-la como confiável, em vez de confirmar em aparelhos autoverificados.", "Manage": "Gerenciar", "Securely cache encrypted messages locally for them to appear in search results.": "Armazene mensagens criptografadas de forma segura localmente para que possam aparecer nos resultados das buscas.", - "Enable": "Ativar", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s precisa de componentes adicionais para pesquisar as mensagens criptografadas armazenadas localmente. Se quiser testar esse recurso, construa uma versão do %(brand)s para Computador com componentes de busca ativados.", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s não consegue pesquisar as mensagens criptografadas armazenadas localmente em um navegador de internet. Use o %(brand)s para Computador para que as mensagens criptografadas sejam exibidas nos resultados de buscas.", "Cannot connect to integration manager": "Não foi possível conectar ao gerenciador de integrações", @@ -1011,7 +980,6 @@ "Unencrypted": "Descriptografada", "Encrypted by a deleted session": "Criptografada por uma sessão já apagada", "The authenticity of this encrypted message can't be guaranteed on this device.": "A autenticidade desta mensagem criptografada não pode ser garantida neste aparelho.", - "People": "Pessoas", "Start chatting": "Começar a conversa", "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Atualizar esta sala irá fechar a instância atual da sala e criar uma sala atualizada com o mesmo nome.", "Hint: Begin your message with // to start it with a slash.": "Dica: Inicie sua mensagem com // para iniciar com uma barra.", @@ -1029,7 +997,6 @@ "Verify all users in a room to ensure it's secure.": "Verifique todos os usuários em uma sala para se certificar de que ela está segura.", "Start verification again from the notification.": "Iniciar a confirmação novamente, após a notificação.", "Start verification again from their profile.": "Iniciar a confirmação novamente, a partir do perfil deste usuário.", - "Encryption enabled": "Criptografia ativada", "Encryption not enabled": "Criptografia desativada", "The encryption used by this room isn't supported.": "A criptografia usada nesta sala não é suportada.", "%(name)s wants to verify": "%(name)s solicita confirmação", @@ -1097,7 +1064,6 @@ "%(name)s cancelled": "%(name)s cancelou", "You sent a verification request": "Você enviou uma solicitação de confirmação", "Show all": "Mostrar tudo", - "Reactions": "Reações", "reacted with %(shortName)s": "reagiu com %(shortName)s", "Message deleted": "Mensagem apagada", "Message deleted by %(name)s": "Mensagem apagada por %(name)s", @@ -1206,7 +1172,6 @@ "Server did not require any authentication": "O servidor não exigiu autenticação", "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Se você confirmar esse usuário, a sessão será marcada como confiável para você e para ele.", "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Confirmar este aparelho o marcará como confiável para você e para os usuários que se confirmaram com você.", - "Username": "Nome de usuário", "Use an email address to recover your account": "Use um endereço de e-mail para recuperar sua conta", "Enter email address (required on this homeserver)": "Digite o endereço de e-mail (necessário neste servidor)", "Doesn't look like a valid email address": "Este não parece ser um endereço de e-mail válido", @@ -1257,8 +1222,6 @@ "Theme added!": "Tema adicionado!", "Custom theme URL": "Link do tema personalizado", "Add theme": "Adicionar tema", - "Message layout": "Aparência da mensagem", - "Modern": "Moderno", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Defina o nome de uma fonte instalada no seu sistema e o %(brand)s tentará usá-la.", "Customise your appearance": "Personalize sua aparência", "Appearance Settings only affect this %(brand)s session.": "As configurações de aparência afetam apenas esta sessão do %(brand)s.", @@ -1309,7 +1272,6 @@ "You can use /help to list available commands. Did you mean to send this as a message?": "Você pode usar /help para listar os comandos disponíveis. Você quis enviar isso como uma mensagem?", "Send as message": "Enviar como mensagem", "Room Topic": "Descrição da sala", - "React": "Adicionar reação", "Resend %(unsentCount)s reaction(s)": "Reenviar %(unsentCount)s reações", "Switch to light mode": "Alternar para o modo claro", "Switch to dark mode": "Alternar para o modo escuro", @@ -1430,12 +1392,10 @@ "Deactivate user?": "Desativar usuário?", "Deactivate user": "Desativar usuário", "Failed to deactivate user": "Falha ao desativar o usuário", - "Security": "Segurança", "You've successfully verified your device!": "Você confirmou o seu aparelho com êxito!", "Verification timed out.": "O tempo de confirmação se esgotou.", "%(displayName)s cancelled verification.": "%(displayName)s cancelou a confirmação.", "You cancelled verification.": "Você cancelou a confirmação.", - "Verification cancelled": "Confirmação cancelada", "Show image": "Mostrar imagem", "You have ignored this user, so their message is hidden. Show anyways.": "Você bloqueou este usuário, portanto, a mensagem dele foi escondida. Mostrar mesmo assim.", "You verified %(name)s": "Você confirmou %(name)s", @@ -1449,7 +1409,6 @@ "Failed to find the following users": "Falha ao encontrar os seguintes usuários", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Os seguintes usuários não puderam ser convidados porque não existem ou são inválidos: %(csvNames)s", "Recent Conversations": "Conversas recentes", - "Suggestions": "Sugestões", "Room Settings - %(roomName)s": "Configurações da sala - %(roomName)s", "Upgrade private room": "Atualizar a sala privada", "Upgrade public room": "Atualizar a sala pública", @@ -1481,7 +1440,6 @@ "Verification Request": "Solicitação de confirmação", "Remember my selection for this widget": "Lembrar minha escolha para este widget", "Wrong file type": "Tipo errado de arquivo", - "Report Content": "Denunciar conteúdo", "Remove for everyone": "Remover para todos", "This homeserver would like to make sure you are not a robot.": "Este servidor local quer se certificar de que você não é um robô.", "Confirm your identity by entering your account password below.": "Confirme sua identidade digitando sua senha abaixo.", @@ -1496,7 +1454,6 @@ "one": "Você tem %(count)s notificações não lidas em uma versão anterior desta sala." }, "Feedback": "Fale conosco", - "User menu": "Menu do usuário", "Could not load user profile": "Não foi possível carregar o perfil do usuário", "Your password has been reset.": "Sua senha foi alterada.", "Invalid base_url for m.homeserver": "base_url inválido para m.homeserver", @@ -1504,9 +1461,7 @@ "This account has been deactivated.": "Esta conta foi desativada.", "Forgotten your password?": "Esqueceu sua senha?", "Restore": "Restaurar", - "Copy": "Copiar", "Success!": "Pronto!", - "Disable": "Desativar", "Space used:": "Espaço usado:", "Navigation": "Navegação", "Calls": "Chamadas", @@ -1652,7 +1607,6 @@ "To link to this room, please add an address.": "Para criar um link para esta sala, antes adicione um endereço.", "Explore public rooms": "Explorar salas públicas", "Not encrypted": "Não criptografada", - "About": "Sobre a sala", "Ignored attempt to disable encryption": "A tentativa de desativar a criptografia foi ignorada", "Message Actions": "Ações da mensagem", "Join the conference at the top of this room": "Entre na chamada em grupo no topo desta sala", @@ -1721,7 +1675,6 @@ "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "DICA: se você nos informar um erro, envie relatórios de erro para nos ajudar a rastrear o problema.", "Please view existing bugs on Github first. No match? Start a new one.": "Por favor, consulte os erros conhecidos no Github antes de enviar o seu. Se ninguém tiver mencionado o seu erro, informe-nos sobre um erro novo .", "Feedback sent": "Comentário enviado", - "Report a bug": "Reportar um erro", "Comment": "Comentário", "%(senderName)s ended the call": "%(senderName)s encerrou a chamada", "You ended the call": "Você encerrou a chamada", @@ -2085,10 +2038,8 @@ "Use email to optionally be discoverable by existing contacts.": "Seja encontrado por seus contatos a partir de um e-mail.", "Use email or phone to optionally be discoverable by existing contacts.": "Seja encontrado por seus contatos a partir de um e-mail ou número de telefone.", "Add an email to be able to reset your password.": "Adicione um e-mail para depois poder redefinir sua senha.", - "Forgot password?": "Esqueceu a senha?", "That phone number doesn't look quite right, please check and try again": "Esse número de telefone não é válido, verifique e tente novamente", "About homeservers": "Sobre os servidores locais", - "Learn more": "Saiba mais", "Use your preferred Matrix homeserver if you have one, or host your own.": "Use o seu servidor local Matrix preferido, ou hospede o seu próprio servidor.", "Other homeserver": "Outro servidor local", "Sign into your homeserver": "Faça login em seu servidor local", @@ -2193,7 +2144,6 @@ "Add existing room": "Adicionar sala existente", "Send message": "Enviar mensagem", "Skip for now": "Ignorar por enquanto", - "Room name": "Nome da sala", "Random": "Aleatório", "Welcome to ": "Boas-vindas ao ", "Private": "Privado", @@ -2371,7 +2321,6 @@ "%(senderName)s pinned a message to this room. See all pinned messages.": "%(senderName)s fixou uma mensagens nesta sala. Veja todas as mensagens fixadas.", "You may contact me if you have any follow up questions": "Vocês podem me contactar se tiverem quaisquer perguntas subsequentes", "Search for rooms or people": "Procurar por salas ou pessoas", - "Forward message": "Encaminhar", "Sent": "Enviado", "Sending": "Enviando", "You don't have permission to do this": "Você não tem permissão para fazer isso", @@ -2386,7 +2335,6 @@ "Public room": "Sala pública", "Private room (invite only)": "Sala privada (apenas com convite)", "Room visibility": "Visibilidade da sala", - "Create a room": "Criar uma sala", "Only people invited will be able to find and join this room.": "Apenas convidados poderão encontrar e entrar nesta sala.", "Anyone will be able to find and join this room.": "Qualquer um poderá encontrar e entrar nesta sala.", "Anyone will be able to find and join this room, not just members of .": "Qualquer um poderá encontrar e entrar nesta sala, não somente membros de .", @@ -2419,8 +2367,6 @@ "%(reactors)s reacted with %(content)s": "%(reactors)s reagiram com %(content)s", "Add reaction": "Adicionar reação", "Error processing voice message": "Erro ao processar a mensagem de voz", - "Image": "Imagem", - "Sticker": "Figurinha", "Error processing audio message": "Erro ao processar a mensagem de áudio", "Some encryption parameters have been changed.": "Alguns parâmetros de criptografia foram modificados.", "Decrypting": "Decriptando", @@ -2437,7 +2383,6 @@ "Edit devices": "Editar dispositivos", "Role in ": "Cargo em ", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.": "Você não poderá desfazer esta mudança, já que está tirando seu próprio cargo, e se você for o último usuário com privilégios neste espaço será impossível ganhá-los novamente.", - "Message": "Mensagem", "Pinned messages": "Mensagens fixadas", "If you have permissions, open the menu on any message and select Pin to stick them here.": "Caso você tenha a permissão para isso, abra o menu em qualquer mensagem e selecione Fixar para fixá-la aqui.", "Nothing pinned, yet": "Nada fixado ainda", @@ -2793,7 +2738,6 @@ "The person who invited you has already left, or their server is offline.": "A pessoa que o convidou já saiu ou o servidor dela está offline.", "The person who invited you has already left.": "A pessoa que o convidou já saiu.", "There was an error joining.": "Ocorreu um erro ao entrar.", - "Video": "Vídeo", "Video call started": "Videochamada iniciada", "Unknown room": "Sala desconhecida", "Location not available": "Local não disponível", @@ -2873,6 +2817,34 @@ "Create a link": "Criar uma ligação", "Italic": "Itálico", "View in room": "Ver na sala", + "common": { + "about": "Sobre a sala", + "analytics": "Análise", + "encryption_enabled": "Criptografia ativada", + "error": "Erro", + "forward_message": "Encaminhar", + "image": "Imagem", + "message": "Mensagem", + "message_layout": "Aparência da mensagem", + "modern": "Moderno", + "mute": "Mudo", + "no_results": "Nenhum resultado", + "offline": "Offline", + "password": "Senha", + "people": "Pessoas", + "reactions": "Reações", + "report_a_bug": "Reportar um erro", + "room_name": "Nome da sala", + "security": "Segurança", + "settings": "Configurações", + "sticker": "Figurinha", + "success": "Sucesso", + "suggestions": "Sugestões", + "unmute": "Tirar do mudo", + "username": "Nome de usuário", + "verification_cancelled": "Confirmação cancelada", + "video": "Vídeo" + }, "action": { "reject": "Recusar", "confirm": "Confirmar", @@ -2894,5 +2866,8 @@ "share": "Compartilhar", "skip": "Pular", "logout": "Sair" + }, + "a11y": { + "user_menu": "Menu do usuário" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/ro.json b/src/i18n/strings/ro.json index 1564c73d8f9f..43db96432a86 100644 --- a/src/i18n/strings/ro.json +++ b/src/i18n/strings/ro.json @@ -2,7 +2,6 @@ "This email address is already in use": "Această adresă de email este deja utilizată", "This phone number is already in use": "Acest număr de telefon este deja utilizat", "Failed to verify email address: make sure you clicked the link in the email": "Adresa de e-mail nu a putut fi verificată: asigurați-vă că ați făcut click pe linkul din e-mail", - "Analytics": "Analizarea", "Call Failed": "Apel eșuat", "You cannot place a call with yourself.": "Nu poți apela cu tine însuți.", "Permission Required": "Permisul Obligatoriu", @@ -49,7 +48,6 @@ "Unable to access webcam / microphone": "Imposibil de accesat camera web / microfonul", "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Apelul nu a reușit deoarece microfonul nu a putut fi accesat. Verificați dacă un microfon este conectat și configurați corect.", "Unable to access microphone": "Nu se poate accesa microfonul", - "OK": "OK", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Vă rugăm să cereți administratorului serverului dvs. (%(homeserverDomain)s) să configureze un server TURN pentru ca apelurile să funcționeze în mod fiabil.", "Call failed due to misconfigured server": "Apelul nu a reușit din cauza serverului configurat greșit", "The call was answered on another device.": "Apelul a primit răspuns pe un alt dispozitiv.", @@ -58,7 +56,6 @@ "The user you called is busy.": "Utilizatorul pe care l-ați sunat este ocupat.", "User Busy": "Utilizator ocupat", "Unable to load! Check your network connectivity and try again.": "Imposibil de incarcat! Verificați conectivitatea rețelei și încercați din nou.", - "Error": "Eroare", "Add Phone Number": "Adaugă numărul de telefon", "Click the button below to confirm adding this phone number.": "Faceți clic pe butonul de mai jos pentru a confirma adăugarea acestui număr de telefon.", "Confirm adding phone number": "Confirmați adăugarea numărului de telefon", @@ -69,8 +66,12 @@ "Single Sign On": "Single Sign On", "Confirm adding this email address by using Single Sign On to prove your identity.": "Confirmați adăugarea acestei adrese de e-mail utilizând Single Sign On pentru a vă dovedi identitatea.", "Use Single Sign On to continue": "Utilizați Single Sign On pentru a continua", + "common": { + "analytics": "Analizarea", + "error": "Eroare" + }, "action": { "confirm": "Confirmă", "dismiss": "Închide" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index e90164abea19..324e747ab192 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -8,14 +8,12 @@ "Bans user with given id": "Блокирует пользователя с заданным ID", "Changes your display nickname": "Изменяет ваш псевдоним", "Commands": "Команды", - "Continue": "Продолжить", "Cryptography": "Криптография", "Deactivate Account": "Деактивировать учётную запись", "Default": "По умолчанию", "Deops user with given id": "Снимает полномочия оператора с пользователя с заданным ID", "Displays action": "Отображение действий", "Emoji": "Смайлы", - "Error": "Ошибка", "Export E2E room keys": "Экспорт ключей шифрования", "Failed to change password. Is your password correct?": "Не удалось сменить пароль. Вы правильно ввели текущий пароль?", "Failed to reject invitation": "Не удалось отклонить приглашение", @@ -29,11 +27,9 @@ "Historical": "Архив", "Import E2E room keys": "Импорт ключей шифрования", "Invalid Email Address": "Недопустимый email", - "Invites": "Приглашения", "Invites user with given id to current room": "Приглашает пользователя с заданным ID в текущую комнату", "Sign in with": "Войти с помощью", "Labs": "Лаборатория", - "Leave room": "Покинуть комнату", "Low priority": "Маловажные", "Moderator": "Модератор", "Name": "Название", @@ -41,12 +37,9 @@ "Notifications": "Уведомления", "": "<не поддерживается>", "No users have specific privileges in this room": "Ни один пользователь не имеет особых прав в этой комнате", - "Password": "Пароль", "Permissions": "Права доступа", "Phone": "Телефон", - "Remove": "Удалить", "Return to login screen": "Вернуться к экрану входа", - "Settings": "Настройки", "Unable to add email address": "Не удается добавить email", "Unable to remove contact information": "Не удалось удалить контактную информацию", "Unable to verify email address.": "Не удалось проверить email.", @@ -133,8 +126,6 @@ "New passwords don't match": "Новые пароли не совпадают", "not specified": "не задан", "No more results": "Больше никаких результатов", - "No results": "Нет результатов", - "OK": "OK", "Passwords can't be empty": "Пароли не могут быть пустыми", "Please check your email and click on the link it contains. Once this is done, click continue.": "Проверьте свою электронную почту и нажмите на ссылку в письме. После этого нажмите кнопку Продолжить.", "Power level must be positive integer.": "Уровень прав должен быть положительным целым числом.", @@ -154,7 +145,6 @@ "Sign out": "Выйти", "Someone": "Кто-то", "Submit": "Отправить", - "Success": "Успех", "This email address is already in use": "Этот адрес электронной почты уже используется", "This email address was not found": "Этот адрес электронной почты не найден", "The email address linked to your account must be entered.": "Введите адрес электронной почты, связанный с вашей учётной записью.", @@ -166,7 +156,6 @@ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", "Room": "Комната", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Не удается подключиться к домашнему серверу через HTTP, так как в адресной строке браузера указан адрес HTTPS. Используйте HTTPS или включите небезопасные скрипты.", - "Mute": "Приглушить", "Operation failed": "Сбой операции", "powered by Matrix": "основано на Matrix", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Отображать время в 12-часовом формате (напр. 2:30 ПП)", @@ -174,7 +163,6 @@ "Camera": "Камера", "Microphone": "Микрофон", "Start automatically after system login": "Автозапуск при входе в систему", - "Analytics": "Аналитика", "Default Device": "Устройство по умолчанию", "No Webcams detected": "Веб-камера не обнаружена", "No media permissions": "Нет разрешённых носителей", @@ -193,7 +181,6 @@ "Jump to first unread message.": "Перейти к первому непрочитанному сообщению.", "Privileged Users": "Привилегированные пользователи", "Register": "Зарегистрироваться", - "Save": "Сохранить", "Server error": "Ошибка сервера", "Server may be unavailable, overloaded, or search timed out :(": "Сервер может быть недоступен, перегружен или поиск прекращен по тайм-ауту :(", "Server may be unavailable, overloaded, or you hit a bug.": "Возможно, сервер недоступен, перегружен или случилась ошибка.", @@ -203,7 +190,6 @@ "This room is not accessible by remote Matrix servers": "Это комната недоступна из других серверов Matrix", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Попытка загрузить выбранный интервал истории чата этой комнаты не удалась, так как у вас нет разрешений на просмотр.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Попытка загрузить выбранный интервал истории чата этой комнаты не удалась, так как запрошенный элемент не найден.", - "Unmute": "Вернуть право речи", "Verified key": "Ключ проверен", "You have disabled URL previews by default.": "Предпросмотр ссылок по умолчанию выключен для вас.", "You have enabled URL previews by default.": "Предпросмотр ссылок по умолчанию включен для вас.", @@ -238,12 +224,10 @@ "Drop file here to upload": "Перетащите файл сюда для отправки", "Online": "Онлайн", "Idle": "Неактивен", - "Offline": "Не в сети", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s изменил(а) аватар комнаты на ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s удалил(а) аватар комнаты.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s изменил(а) аватар комнаты %(roomName)s", "Create new room": "Создать комнату", - "Start chat": "Отправить личное сообщение", "Add": "Добавить", "Uploading %(filename)s": "Отправка %(filename)s", "Uploading %(filename)s and %(count)s others": { @@ -261,7 +245,6 @@ "other": "(~%(count)s результатов)", "one": "(~%(count)s результат)" }, - "Decline": "Отклонить", "%(roomName)s does not exist.": "%(roomName)s не существует.", "%(roomName)s is not accessible at this time.": "%(roomName)s на данный момент недоступна.", "Unnamed Room": "Комната без названия", @@ -275,14 +258,12 @@ "Check for update": "Проверить наличие обновлений", "Delete widget": "Удалить виджет", "Define the power level of a user": "Определить уровень прав пользователя", - "Edit": "Изменить", "Enable automatic language detection for syntax highlighting": "Автоопределение языка подсветки синтаксиса", "AM": "ДП", "PM": "ПП", "Unable to create widget.": "Не удалось создать виджет.", "You are not in this room.": "Вас сейчас нет в этой комнате.", "You do not have permission to do that in this room.": "У вас нет разрешения на это в данной комнате.", - "Create": "Создать", "Automatically replace plain text Emoji": "Автоматически заменять текстовые смайлики на графические", "%(widgetName)s widget added by %(senderName)s": "Виджет %(widgetName)s был добавлен %(senderName)s", "%(widgetName)s widget removed by %(senderName)s": "Виджет %(widgetName)s был удален %(senderName)s", @@ -300,7 +281,6 @@ "Ignores a user, hiding their messages from you": "Игнорирует пользователя, скрывая сообщения от вас", "Banned by %(displayName)s": "Заблокирован(а) %(displayName)s", "Description": "Описание", - "Leave": "Покинуть", "Jump to read receipt": "Перейти к последнему прочтённому", "Message Pinning": "Закреплённые сообщения", "%(senderName)s changed the pinned messages for the room.": "%(senderName)s изменил(а) закреплённые сообщения в этой комнате.", @@ -312,7 +292,6 @@ "Delete Widget": "Удалить виджет", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Удаление виджета действует для всех участников этой комнаты. Вы действительно хотите удалить этот виджет?", "Mirror local video feed": "Зеркально отражать видео со своей камеры", - "Invite": "Пригласить", "Mention": "Упомянуть", "Members only (since the point in time of selecting this option)": "Только участники (с момента выбора этого параметра)", "Members only (since they were invited)": "Только участники (с момента их приглашения)", @@ -460,7 +439,6 @@ "No update available.": "Нет доступных обновлений.", "Resend": "Переотправить", "Collecting app version information": "Сбор информации о версии приложения", - "View Source": "Исходный код", "Tuesday": "Вторник", "Search…": "Поиск…", "Developer Tools": "Инструменты разработчика", @@ -481,7 +459,6 @@ "Thursday": "Четверг", "Logs sent": "Журналы отправлены", "Back": "Назад", - "Reply": "Ответить", "Show message in desktop notification": "Показывать текст сообщения в уведомлениях на рабочем столе", "Messages in group chats": "Сообщения в конференциях", "Yesterday": "Вчера", @@ -493,7 +470,6 @@ "Event sent!": "Событие отправлено!", "Event Content": "Содержимое события", "Thank you!": "Спасибо!", - "Quote": "Цитировать", "Missing roomId.": "Отсутствует идентификатор комнаты.", "You don't currently have any stickerpacks enabled": "У вас ещё нет наклеек", "Popout widget": "Всплывающий виджет", @@ -597,8 +573,6 @@ "You've successfully verified this user.": "Вы успешно подтвердили этого пользователя.", "Got It": "Понятно", "Verify this user by confirming the following number appears on their screen.": "Подтвердите пользователя, убедившись, что на его экране отображается следующее число.", - "Yes": "Да", - "No": "Нет", "Email Address": "Адрес электронной почты", "Delete Backup": "Удалить резервную копию", "Unable to verify phone number.": "Невозможно проверить номер телефона.", @@ -658,7 +632,6 @@ "Unable to restore backup": "Невозможно восстановить резервную копию", "No backup found!": "Резервных копий не найдено!", "Download": "Скачать", - "Username": "Псевдоним", "Email (optional)": "Адрес электронной почты (не обязательно)", "Phone (optional)": "Телефон (не обязательно)", "Other": "Другие", @@ -867,7 +840,6 @@ "Remember my selection for this widget": "Запомнить мой выбор для этого виджета", "Failed to decrypt %(failedCount)s sessions!": "Не удалось расшифровать сеансы (%(failedCount)s)!", "Warning: you should only set up key backup from a trusted computer.": "Предупреждение: вам следует настроить резервное копирование ключей только с доверенного компьютера.", - "Next": "Далее", "This homeserver would like to make sure you are not a robot.": "Этот сервер хотел бы убедиться, что вы не робот.", "Please review and accept all of the homeserver's policies": "Пожалуйста, просмотрите и примите все правила сервера", "Please review and accept the policies of this homeserver:": "Пожалуйста, просмотрите и примите политику этого сервера:", @@ -917,7 +889,6 @@ "Go back to set it again.": "Задать другой пароль.", "Success!": "Успешно!", "Unable to create key backup": "Невозможно создать резервную копию ключа", - "Retry": "Попробуйте снова", "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Если вы не задали новый способ восстановления, злоумышленник может получить доступ к вашей учётной записи. Смените пароль учётной записи и сразу же задайте новый способ восстановления в настройках.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Если вы не убрали метод восстановления, злоумышленник может получить доступ к вашей учётной записи. Смените пароль учётной записи и сразу задайте новый способ восстановления в настройках.", "Cannot reach homeserver": "Не удаётся связаться с сервером", @@ -1069,7 +1040,6 @@ "Command Help": "Помощь команды", "To continue you need to accept the terms of this service.": "Для продолжения Вам необходимо принять условия данного сервиса.", "Document": "Документ", - "Report Content": "Пожаловаться на сообщение", "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?": "Деактивация этого пользователя приведет к его выходу из системы и запрету повторного входа. Кроме того, они оставит все комнаты, в которых он участник. Это действие безповоротно. Вы уверены, что хотите деактивировать этого пользователя?", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Приглашение в %(roomName)s было отправлено на %(email)s, но этот адрес не связан с вашей учётной записью", "Link this email with your account in Settings to receive invites directly in %(brand)s.": "Свяжите этот адрес с вашей учетной записью в настройках, чтобы получать приглашения непосредственно в %(brand)s.", @@ -1106,7 +1076,6 @@ "Objects": "Объекты", "Symbols": "Символы", "Flags": "Флаги", - "React": "Отреагировать", "Cancel search": "Отменить поиск", "Room %(name)s": "Комната %(name)s", "Jump to first unread room.": "Перейти в первую непрочитанную комнату.", @@ -1174,7 +1143,6 @@ "Scan this unique code": "Отсканируйте этот уникальный код", "Compare unique emoji": "Сравнитe уникальныe смайлики", "Compare a unique set of emoji if you don't have a camera on either device": "Сравните уникальный набор смайликов, если у вас нет камеры ни на одном из устройств", - "Start": "Начать", "Waiting for %(displayName)s to verify…": "Ожидание %(displayName)s для проверки…", "Cancelling…": "Отмена…", "They match": "Они совпадают", @@ -1223,7 +1191,6 @@ "Not Trusted": "Недоверенное", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) произвел(а) вход через новый сеанс без подтверждения:", "Ask this user to verify their session, or manually verify it below.": "Попросите этого пользователя подтвердить сеанс или подтвердите его вручную ниже.", - "Done": "Готово", "Support adding custom themes": "Поддержка сторонних тем", "Show shortcuts to recently viewed rooms above the room list": "Показывать ссылки на недавние комнаты над списком комнат", "Manually verify all remote sessions": "Подтверждать вручную все сеансы на других устройствах", @@ -1240,7 +1207,6 @@ "in account data": "в данных учётной записи", "Homeserver feature support:": "Поддержка со стороны домашнего сервера:", "exists": "существует", - "Enable": "Разрешить", "Cannot connect to integration manager": "Не удалось подключиться к менеджеру интеграций", "The integration manager is offline or it cannot reach your homeserver.": "Менеджер интеграций не работает или не может подключиться к вашему домашнему серверу.", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Это сеанс не сохраняет ваши ключи, но у вас есть резервная копия, из которой вы можете их восстановить.", @@ -1262,7 +1228,6 @@ "Unsubscribe": "Отписаться", "View rules": "Посмотреть правила", "You are currently subscribed to:": "Вы подписаны на:", - "Security": "Безопасность", "Verify by scanning": "Подтверждение сканированием", "Ask %(displayName)s to scan your code:": "Попросите %(displayName)s отсканировать ваш код:", "Verify by emoji": "Подтверждение с помощью смайлов", @@ -1343,8 +1308,6 @@ "Hide verified sessions": "Свернуть заверенные сеансы", "Verification timed out.": "Таймаут подтверждения.", "You cancelled verification.": "Вы отменили подтверждение.", - "Verification cancelled": "Подтверждение отменено", - "Encryption enabled": "Шифрование включено", "Error removing ignored user/server": "Ошибка при удалении игнорируемого пользователя/сервера", "Please try again or view your console for hints.": "Попробуйте снова или посмотрите сообщения в консоли.", "Ban list rules - %(roomName)s": "Правила блокировки — %(roomName)s", @@ -1370,7 +1333,6 @@ "%(name)s cancelled": "%(name)s отменил(а)", "%(name)s wants to verify": "%(name)s желает подтвердить", "You sent a verification request": "Вы отправили запрос подтверждения", - "Reactions": "Реакции", "Your display name": "Отображаемое имя", "One of the following may be compromised:": "Что-то из этого может быть скомпрометировано:", "%(name)s cancelled verifying": "%(name)s отменил(а) подтверждение", @@ -1414,7 +1376,6 @@ "Light": "Светлая", "Dark": "Темная", "Recent Conversations": "Недавние Диалоги", - "Suggestions": "Предложения", "a key signature": "отпечаток ключа", "Upload completed": "Отправка успешно завершена", "Cancelled signature upload": "Отправка отпечатка отменена", @@ -1448,8 +1409,6 @@ "Size must be a number": "Размер должен быть числом", "Custom font size can only be between %(min)s pt and %(max)s pt": "Пользовательский размер шрифта может быть только между %(min)s pt и %(max)s pt", "Use between %(min)s pt and %(max)s pt": "Введите значение между %(min)s pt и %(max)s pt", - "Message layout": "Макет сообщения", - "Modern": "Новый", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Установите имя шрифта, установленного в вашей системе, и %(brand)s попытается его использовать.", "Customise your appearance": "Настройка внешнего вида", "Remove for everyone": "Убрать для всех", @@ -1463,7 +1422,6 @@ "System font name": "Название системного шрифта", "Please verify the room ID or address and try again.": "Проверьте ID комнаты или адрес и попробуйте снова.", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Администратор вашего сервера отключил сквозное шифрование по умолчанию в приватных комнатах и диалогах.", - "People": "Люди", "Explore Public Rooms": "Просмотреть публичные комнаты", "Appearance": "Внешний вид", "Show rooms with unread messages first": "Комнаты с непрочитанными сообщениями в начале", @@ -1584,7 +1542,6 @@ "Confirm your identity by entering your account password below.": "Подтвердите свою личность, введя пароль учетной записи ниже.", "Sign in with SSO": "Вход с помощью SSO", "Switch theme": "Сменить тему", - "User menu": "Меню пользователя", "If you've joined lots of rooms, this might take a while": "Если вы присоединились к большому количеству комнат, это может занять некоторое время", "Confirm encryption setup": "Подтвердите настройку шифрования", "Click the button below to confirm setting up encryption.": "Нажмите кнопку ниже, чтобы подтвердить настройку шифрования.", @@ -1598,7 +1555,6 @@ "You'll need to authenticate with the server to confirm the upgrade.": "Вам нужно будет пройти аутентификацию на сервере,чтобы подтвердить обновление.", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Модернизируйте этот сеанс, чтобы через него можно было подтвердить другие сеансы, предоставляя им доступ к зашифрованным сообщениям и помечая их как доверенные для других пользователей.", "Use a different passphrase?": "Использовать другую кодовую фразу?", - "Copy": "Копировать", "Unable to query secret storage status": "Невозможно запросить состояние секретного хранилища", "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "Если вы отмените сейчас, вы можете потерять зашифрованные сообщения и данные, если потеряете доступ к своим логинам.", "You can also set up Secure Backup & manage your keys in Settings.": "Вы также можете настроить безопасное резервное копирование и управлять своими ключами в настройках.", @@ -1611,7 +1567,6 @@ "This session is encrypting history using the new recovery method.": "Этот сеанс шифрует историю с помощью нового метода восстановления.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Если вы сделали это по ошибке, вы можете настроить защищённые сообщения в этом сеансе, что снова зашифрует историю сообщений в этом сеансе с помощью нового метода восстановления.", "If disabled, messages from encrypted rooms won't appear in search results.": "Если этот параметр отключен, сообщения из зашифрованных комнат не будут отображаться в результатах поиска.", - "Disable": "Отключить", "Not currently indexing messages for any room.": "В настоящее время не индексируются сообщения ни для одной комнаты.", "Currently indexing: %(currentRoom)s": "В настоящее время идёт индексация: %(currentRoom)s", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s надежно кэширует зашифрованные сообщения локально, чтобы они появлялись в результатах поиска:", @@ -1665,7 +1620,6 @@ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Добавляет ( ͡° ͜ʖ ͡°) в начало сообщения", "Unknown App": "Неизвестное приложение", "Not encrypted": "Не зашифровано", - "About": "О комнате", "Room settings": "Настройки комнаты", "Take a picture": "Сделать снимок", "Unpin": "Открепить", @@ -1721,7 +1675,6 @@ "Send feedback": "Отправить отзыв", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "СОВЕТ ДЛЯ ПРОФЕССИОНАЛОВ: если вы запустите ошибку, отправьте журналы отладки, чтобы помочь нам отследить проблему.", "Please view existing bugs on Github first. No match? Start a new one.": "Пожалуйста, сначала просмотрите существующие ошибки на Github. Нет совпадений? Сообщите о новой.", - "Report a bug": "Сообщить об ошибке", "Comment": "Комментарий", "Feedback sent": "Отзыв отправлен", "%(senderName)s ended the call": "%(senderName)s завершил(а) звонок", @@ -1782,9 +1735,7 @@ "sends confetti": "отправляет конфетти", "Invalid URL": "Неправильный URL-адрес", "Reason (optional)": "Причина (необязательно)", - "Forgot password?": "Забыли пароль?", "About homeservers": "О домашних серверах", - "Learn more": "Узнать больше", "Other homeserver": "Другой домашний сервер", "Server Options": "Параметры сервера", "Decline All": "Отклонить все", @@ -2265,7 +2216,6 @@ "Share %(name)s": "Поделиться %(name)s", "Skip for now": "Пропустить сейчас", "Failed to create initial space rooms": "Не удалось создать первоначальные комнаты пространства", - "Room name": "Название комнаты", "Support": "Поддержка", "Random": "Случайный", "Welcome to ": "Добро пожаловать в ", @@ -2333,7 +2283,6 @@ "Collapse reply thread": "Свернуть ответы обсуждения", "Show preview": "Предпросмотр", "View source": "Исходный код", - "Forward": "Переслать", "If you reset everything, you will restart with no trusted sessions, no trusted users, and might not be able to see past messages.": "Если вы сбросите все настройки, вы перезагрузитесь без доверенных сеансов, без доверенных пользователей, и скорее всего не сможете просматривать прошлые сообщения.", "Only do this if you have no other device to complete verification with.": "Делайте это только в том случае, если у вас нет другого устройства для завершения проверки.", "Reset everything": "Сбросить всё", @@ -2378,7 +2327,6 @@ "Your platform and username will be noted to help us use your feedback as much as we can.": "Ваша платформа и имя пользователя будут отмечены, чтобы мы могли максимально использовать ваш отзыв.", "Search for rooms or people": "Поиск комнат или людей", "Message preview": "Просмотр сообщения", - "Forward message": "Переслать сообщение", "Sent": "Отправлено", "Sending": "Отправка", "You don't have permission to do this": "У вас нет на это разрешения", @@ -2393,7 +2341,6 @@ "Public room": "Публичная комната", "Private room (invite only)": "Приватная комната (только по приглашению)", "Room visibility": "Видимость комнаты", - "Create a room": "Создать комнату", "Only people invited will be able to find and join this room.": "Только приглашенные люди смогут найти и присоединиться к этой комнате.", "Anyone will be able to find and join this room.": "Любой желающий сможет найти эту комнату и присоединиться к ней.", "This upgrade will allow members of selected spaces access to this room without an invite.": "Это обновление позволит участникам выбранных пространств получить доступ в эту комнату без приглашения.", @@ -2443,8 +2390,6 @@ "Error loading Widget": "Ошибка загрузки виджета", "Add reaction": "Отреагировать", "Error processing voice message": "Ошибка при обработке голосового сообщения", - "Image": "Изображение", - "Sticker": "Наклейка", "Error processing audio message": "Ошибка обработки звукового сообщения", "Decrypting": "Расшифровка", "The call is in an unknown state!": "Вызов в неизвестном состоянии!", @@ -2622,7 +2567,6 @@ "Would you like to leave the rooms in this space?": "Хотите ли вы покинуть комнаты в этом пространстве?", "You are about to leave .": "Вы собираетесь покинуть .", "%(reactors)s reacted with %(content)s": "%(reactors)s отреагировали %(content)s", - "Message": "Отправить личное сообщение", "Message didn't send. Click for info.": "Сообщение не отправлено. Нажмите для получения информации.", "To join a space you'll need an invite.": "Чтобы присоединиться к пространству, вам нужно получить приглашение.", "Include Attachments": "Включить вложения", @@ -3192,7 +3136,6 @@ "Updated %(humanizedUpdateTime)s": "Обновлено %(humanizedUpdateTime)s", "Joining the beta will reload %(brand)s.": "Присоединение к бета-тестированию перезагрузит %(brand)s.", "Leaving the beta will reload %(brand)s.": "Выход из бета-тестирования перезагрузит %(brand)s.", - "Copy link": "Копировать ссылку", "View related event": "Посмотреть связанное событие", "Cameras": "Камеры", "Output devices": "Устройства вывода", @@ -3291,7 +3234,6 @@ "other": "%(count)s участников" }, "Joining…": "Присоединение…", - "Video": "Видео", "Show Labs settings": "Показать настройки лаборатории", "To join, please enable video rooms in Labs first": "Чтобы присоединиться, сначала включите видеокомнаты в лаборатории", "To view, please enable video rooms in Labs first": "Для просмотра сначала включите видеокомнаты в лаборатории", @@ -3625,7 +3567,6 @@ "There are no active polls in this room": "В этой комнате нет активных опросов", "Temporary implementation. Locations persist in room history.": "Временная реализация. Местоположения сохраняются в истории комнаты.", "Downloading update…": "Загрузка обновления…", - "Loading…": "Загрузка…", "Rust cryptography implementation": "Реализация криптографии Rust", "View poll in timeline": "Посмотреть опрос в ленте сообщений", "Your language": "Ваш язык", @@ -3637,6 +3578,35 @@ "Set a new account password…": "Установите новый пароль…", "%(senderName)s started a voice broadcast": "%(senderName)s начал(а) голосовую трансляцию", "Room directory": "Каталог комнат", + "common": { + "about": "О комнате", + "analytics": "Аналитика", + "encryption_enabled": "Шифрование включено", + "error": "Ошибка", + "forward_message": "Переслать сообщение", + "image": "Изображение", + "loading": "Загрузка…", + "message": "Отправить личное сообщение", + "message_layout": "Макет сообщения", + "modern": "Новый", + "mute": "Приглушить", + "no_results": "Нет результатов", + "offline": "Не в сети", + "password": "Пароль", + "people": "Люди", + "reactions": "Реакции", + "report_a_bug": "Сообщить об ошибке", + "room_name": "Название комнаты", + "security": "Безопасность", + "settings": "Настройки", + "sticker": "Наклейка", + "success": "Успех", + "suggestions": "Предложения", + "unmute": "Вернуть право речи", + "username": "Псевдоним", + "verification_cancelled": "Подтверждение отменено", + "video": "Видео" + }, "action": { "reject": "Отклонить", "confirm": "Подтвердить", @@ -3660,5 +3630,8 @@ "share": "Поделиться", "skip": "Пропустить", "logout": "Выйти" + }, + "a11y": { + "user_menu": "Меню пользователя" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 13853ec4b09b..710fe920cd55 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -80,8 +80,6 @@ "Your browser does not support the required cryptography extensions": "Váš prehliadač nepodporuje požadované kryptografické rozšírenia", "Not a valid %(brand)s keyfile": "Toto nie je správny súbor s kľúčmi %(brand)s", "Authentication check failed: incorrect password?": "Kontrola overenia zlyhala: Nesprávne heslo?", - "Decline": "Odmietnuť", - "Error": "Chyba", "Incorrect verification code": "Nesprávny overovací kód", "Submit": "Odoslať", "Phone": "Telefón", @@ -89,11 +87,9 @@ "No display name": "Žiadne zobrazované meno", "New passwords don't match": "Nové heslá sa nezhodujú", "Passwords can't be empty": "Heslá nemôžu byť prázdne", - "Continue": "Pokračovať", "Export E2E room keys": "Exportovať end-to-end šifrovacie kľúče miestnosti", "Do you want to set an email address?": "Želáte si nastaviť emailovú adresu?", "Current password": "Súčasné heslo", - "Password": "Heslo", "New Password": "Nové heslo", "Confirm password": "Potvrdiť heslo", "Change Password": "Zmeniť heslo", @@ -111,9 +107,6 @@ "Ignore": "Ignorovať", "Jump to read receipt": "Preskočiť na potvrdenie o prečítaní", "Mention": "Zmieniť sa", - "Invite": "Pozvať", - "Unmute": "Zrušiť stlmenie", - "Mute": "Umlčať", "Admin Tools": "Nástroje správcu", "and %(count)s others...": { "other": "a ďalších %(count)s…", @@ -132,20 +125,16 @@ "Command error": "Chyba príkazu", "Online": "Pripojený", "Idle": "Nečinný", - "Offline": "Nedostupný", "Unknown": "Neznámy", "Unnamed room": "Nepomenovaná miestnosť", - "Save": "Uložiť", "(~%(count)s results)": { "other": "(~%(count)s výsledkov)", "one": "(~%(count)s výsledok)" }, "Join Room": "Vstúpiť do miestnosti", "Upload avatar": "Nahrať obrázok", - "Settings": "Nastavenia", "Forget room": "Zabudnúť miestnosť", "Search": "Hľadať", - "Invites": "Pozvánky", "Favourites": "Obľúbené", "Rooms": "Miestnosti", "Low priority": "Nízka priorita", @@ -160,7 +149,6 @@ "No users have specific privileges in this room": "Žiadny používatelia nemajú v tejto miestnosti pridelené konkrétne poverenia", "Banned users": "Používatelia, ktorým bol zakázaný vstup", "This room is not accessible by remote Matrix servers": "Táto miestnosť nie je prístupná zo vzdialených Matrix serverov", - "Leave room": "Opustiť miestnosť", "Favourite": "Obľúbiť", "Publish this room to the public in %(domain)s's room directory?": "Uverejniť túto miestnosť v adresári miestností na serveri %(domain)s?", "Who can read history?": "Kto môže čítať históriu?", @@ -198,14 +186,11 @@ "Email address": "Emailová adresa", "Sign in": "Prihlásiť sa", "Register": "Zaregistrovať", - "Remove": "Odstrániť", "Something went wrong!": "Niečo sa pokazilo!", "Delete Widget": "Vymazať widget", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Týmto vymažete widget pre všetkých používateľov v tejto miestnosti. Ste si istí, že chcete vymazať tento widget?", "Delete widget": "Vymazať widget", - "Edit": "Upraviť", "Create new room": "Vytvoriť novú miestnosť", - "No results": "Žiadne výsledky", "Home": "Domov", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(severalUsers)sjoined %(count)s times": { @@ -294,17 +279,14 @@ }, "%(items)s and %(lastItem)s": "%(items)s a tiež %(lastItem)s", "Custom level": "Vlastná úroveň", - "Start chat": "Začať konverzáciu", "And %(count)s more...": { "other": "A %(count)s ďalších…" }, "Confirm Removal": "Potvrdiť odstránenie", - "Create": "Vytvoriť", "Unknown error": "Neznáma chyba", "Incorrect password": "Nesprávne heslo", "Deactivate Account": "Deaktivovať účet", "An error has occurred.": "Vyskytla sa chyba.", - "OK": "OK", "Unable to restore session": "Nie je možné obnoviť reláciu", "Invalid Email Address": "Nesprávna emailová adresa", "This doesn't appear to be a valid email address": "Toto nevyzerá ako platná e-mailová adresa", @@ -316,7 +298,6 @@ "Name": "Názov", "You must register to use this functionality": "Aby ste mohli použiť túto vlastnosť, musíte byť zaregistrovaný", "You must join the room to see its files": "Aby ste si mohli zobraziť zoznam súborov, musíte vstúpiť do miestnosti", - "Leave": "Opustiť", "Description": "Popis", "Reject invitation": "Odmietnuť pozvanie", "Are you sure you want to reject the invitation?": "Ste si istí, že chcete odmietnuť toto pozvanie?", @@ -348,12 +329,10 @@ "Mirror local video feed": "Zrkadliť lokálne video", "Sign out": "Odhlásiť sa", "Failed to change password. Is your password correct?": "Nepodarilo sa zmeniť heslo. Zadali ste správne heslo?", - "Success": "Úspech", "Unable to remove contact information": "Nie je možné odstrániť kontaktné informácie", "": "", "Import E2E room keys": "Importovať end-to-end šifrovacie kľúče miestnosti", "Cryptography": "Kryptografia", - "Analytics": "Analytické údaje", "Labs": "Experimenty", "Check for update": "Skontrolovať dostupnosť aktualizácie", "Reject all %(invitedRooms)s invites": "Odmietnuť všetky %(invitedRooms)s pozvania", @@ -468,7 +447,6 @@ "All Rooms": "Vo všetkých miestnostiach", "State Key": "Stavový kľúč", "Wednesday": "Streda", - "Quote": "Citovať", "Send logs": "Odoslať záznamy", "All messages": "Všetky správy", "Call invitation": "Pozvánka na telefonát", @@ -480,7 +458,6 @@ "Thursday": "Štvrtok", "Logs sent": "Záznamy boli odoslané", "Back": "Naspäť", - "Reply": "Odpovedať", "Show message in desktop notification": "Zobraziť text správy v oznámení na pracovnej ploche", "Messages in group chats": "Správy v skupinových konverzáciách", "Yesterday": "Včera", @@ -490,7 +467,6 @@ "What's New": "Čo Je Nové", "Off": "Zakázané", "Developer Tools": "Vývojárske nástroje", - "View Source": "Zobraziť zdroj", "Event Content": "Obsah Udalosti", "Thank you!": "Ďakujeme!", "Popout widget": "Otvoriť widget v novom okne", @@ -610,7 +586,6 @@ "Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?": "Nie je možné nájsť používateľský profil pre Matrix ID zobrazené nižšie. Chcete ich napriek tomu pozvať?", "Invite anyway and never warn me again": "Napriek tomu pozvať a viac neupozorňovať", "Invite anyway": "Napriek tomu pozvať", - "Next": "Ďalej", "Invalid homeserver discovery response": "Neplatná odpoveď pri zisťovaní domovského servera", "Invalid identity server discovery response": "Neplatná odpoveď pri zisťovaní servera totožností", "General failure": "Všeobecná chyba", @@ -621,7 +596,6 @@ "Go back to set it again.": "Vráťte sa späť a nastavte to znovu.", "Download": "Stiahnuť", "Unable to create key backup": "Nie je možné vytvoriť zálohu šifrovacích kľúčov", - "Retry": "Skúsiť znovu", "New Recovery Method": "Nový spôsob obnovy", "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Ak ste si nenastavili nový spôsob obnovenia, je možné, že útočník sa pokúša dostať k vášmu účtu. Radšej si ihneď zmeňte vaše heslo a nastavte si nový spôsob obnovenia v Nastaveniach.", "Set up Secure Messages": "Nastavenie zabezpečených správ", @@ -726,8 +700,6 @@ "Headphones": "Slúchadlá", "Folder": "Fascikel", "Pin": "Špendlík", - "Yes": "Áno", - "No": "Nie", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Poslali sme vám email, aby sme mohli overiť vašu adresu. Postupujte podľa odoslaných inštrukcií a potom kliknite na nižšie zobrazené tlačidlo.", "Email Address": "Emailová adresa", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Ste si istí? Ak nemáte správne zálohované šifrovacie kľúče, prídete o históriu šifrovaných konverzácií.", @@ -810,7 +782,6 @@ "Room Settings - %(roomName)s": "Nastavenia miestnosti - %(roomName)s", "Warning: you should only set up key backup from a trusted computer.": "Varovanie: zálohovanie šifrovacích kľúčov by ste mali nastavovať na dôveryhodnom počítači.", "This homeserver would like to make sure you are not a robot.": "Tento domovský server by sa rád uistil, že nie ste robot.", - "Username": "Meno používateľa", "Change": "Zmeniť", "Email (optional)": "Email (nepovinné)", "Phone (optional)": "Telefón (nepovinné)", @@ -984,7 +955,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) sa prihlásil do novej relácie bez jej overenia:", "Ask this user to verify their session, or manually verify it below.": "Poproste tohto používateľa, aby si overil svoju reláciu alebo ju nižšie manuálne overte.", "Not Trusted": "Nedôveryhodné", - "Done": "Hotovo", "a few seconds ago": "pred pár sekundami", "about a minute ago": "približne pred minútou", "about an hour ago": "približne pred hodinou", @@ -1036,7 +1006,6 @@ "Notification Autocomplete": "Automatické dopĺňanie oznámení", "Room Autocomplete": "Automatické dopĺňanie miestností", "User Autocomplete": "Automatické dopĺňanie používateľov", - "Start": "Začať", "Waiting for %(displayName)s to verify…": "Čakám na %(displayName)s, kým nás overí…", "Cancelling…": "Rušenie…", "They match": "Zhodujú sa", @@ -1065,7 +1034,6 @@ "exists": "existuje", "Manage": "Spravovať", "Securely cache encrypted messages locally for them to appear in search results.": "Bezpečne lokálne ukladať zašifrované správy do vyrovnávacej pamäte, aby sa zobrazovali vo výsledkoch vyhľadávania.", - "Enable": "Povoliť", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)su chýbajú niektoré komponenty potrebné na bezpečné cachovanie šifrovaných správ lokálne. Pokiaľ chcete experimentovať s touto funkciou, spravte si svoj vlastný %(brand)s Desktop s pridanými vyhľadávacími komponentami.", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Táto relácia nezálohuje vaše kľúče, ale máte jednu existujúcu zálohu, ktorú môžete obnoviť a pridať do budúcnosti.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Pred odhlásením pripojte túto reláciu k zálohe kľúčov, aby ste predišli strate kľúčov, ktoré môžu byť len v tejto relácii.", @@ -1110,8 +1078,6 @@ "Theme added!": "Vzhľad pridaný!", "Custom theme URL": "URL adresa vlastného vzhľadu", "Add theme": "Pridať vzhľad", - "Message layout": "Rozloženie správy", - "Modern": "Moderný", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Nastavte názov písma, ktoré máte nainštalované na vašom systéme & %(brand)s sa ho pokúsi použiť.", "Customise your appearance": "Upravte svoj vzhľad", "Appearance Settings only affect this %(brand)s session.": "Nastavenia vzhľadu ovplyvnia len túto reláciu %(brand)s.", @@ -1193,7 +1159,6 @@ "Discovery options will appear once you have added an email above.": "Možnosti nastavenia verejného profilu sa objavia po pridaní e-mailovej adresy vyššie.", "Discovery options will appear once you have added a phone number above.": "Možnosti nastavenia verejného profilu sa objavia po pridaní telefónneho čísla vyššie.", "No recently visited rooms": "Žiadne nedávno navštívené miestnosti", - "People": "Ľudia", "Appearance": "Vzhľad", "Show rooms with unread messages first": "Najprv ukázať miestnosti s neprečítanými správami", "All rooms": "Všetky miestnosti", @@ -1209,9 +1174,7 @@ "Bold": "Tučné", "Italics": "Kurzíva", "Strikethrough": "Preškrtnuté", - "Security": "Zabezpečenie", "Send a Direct Message": "Poslať priamu správu", - "User menu": "Používateľské menu", "Toggle Italics": "Prepnúť kurzíva", "Zimbabwe": "Zimbabwe", "Zambia": "Zambia", @@ -1494,7 +1457,6 @@ "View source": "Zobraziť zdroj", "Your server requires encryption to be enabled in private rooms.": "Váš server vyžaduje zapnuté šifrovanie v súkromných miestnostiach.", "Encryption not enabled": "Šifrovanie nie je zapnuté", - "Encryption enabled": "Šifrovanie zapnuté", "End-to-end encryption isn't enabled": "End-to-end šifrovanie nie je zapnuté", "Unencrypted": "Nešifrované", "%(creator)s created this DM.": "%(creator)s vytvoril/a túto priamu správu.", @@ -1546,7 +1508,6 @@ "%(senderName)s set a profile picture": "%(senderName)s nastavil/a svoj profilový obrázok", "You sent a verification request": "Odoslali ste žiadosť o overenie", "%(oldDisplayName)s changed their display name to %(displayName)s": "%(oldDisplayName)s zmenil/a svoje meno na %(displayName)s", - "Message": "Správa", "Remove %(count)s messages": { "other": "Odstrániť %(count)s správ", "one": "Odstrániť 1 správu" @@ -1585,7 +1546,6 @@ "Got an account? Sign in": "Máte účet? Prihláste sa", "Go to my space": "Prejsť do môjho priestoru", "Go to my first room": "Prejsť do mojej prvej miestnosti", - "Forgot password?": "Zabudli ste heslo?", "Looks good!": "Vyzerá to super!", "Go": "Spustiť", "Looks good": "Vyzerá to super", @@ -1594,7 +1554,6 @@ "Algorithm:": "Algoritmus:", "If you can't see who you're looking for, send them your invite link below.": "Ak nevidíte, koho hľadáte, pošlite mu odkaz na pozvánku nižšie.", "Or send invite link": "Alebo pošlite pozvánku", - "Suggestions": "Návrhy", "Recent Conversations": "Nedávne konverzácie", "Start a conversation with someone using their name or username (like ).": "Začnite s niekým konverzáciu pomocou jeho mena alebo používateľského mena (ako napr. ).", "Start a conversation with someone using their name, email address or username (like ).": "Začnite s niekým konverzáciu pomocou jeho mena, e-mailovej adresy alebo používateľského mena (ako napr. ).", @@ -1653,7 +1612,6 @@ "%(displayName)s cancelled verification.": "%(displayName)s zrušil/a overenie.", "Verification timed out.": "Čas overovania vypršal.", "Verification requested": "Vyžiadané overenie", - "Verification cancelled": "Overovanie zrušené", "Room List": "Zoznam miestností", "Server name": "Názov servera", "Your server": "Váš server", @@ -1701,8 +1659,6 @@ "Results": "Výsledky", "More": "Viac", "Decrypting": "Dešifrovanie", - "Image": "Obrázok", - "Sticker": "Nálepka", "Visibility": "Viditeľnosť", "Sent": "Odoslané", "Beta": "Beta", @@ -1734,10 +1690,6 @@ "Navigation": "Navigácia", "Matrix": "Matrix", "Accepting…": "Akceptovanie…", - "Copy": "Kopírovať", - "Disable": "Nepovoliť", - "Reactions": "Reakcie", - "React": "Reagovať", "Symbols": "Symboly", "Objects": "Objekty", "Activities": "Aktivity", @@ -1826,7 +1778,6 @@ "other": "%(count)s relácie" }, "About homeservers": "O domovských serveroch", - "About": "Informácie", "Add a topic to help people know what it is about.": "Pridajte tému, aby ľudia vedeli, o čo ide.", "Attach files from chat or just drag and drop them anywhere in a room.": "Pripojte súbory z konverzácie alebo ich jednoducho pretiahnite kamkoľvek do miestnosti.", "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.": "Tento súbor je príliš veľký na odoslanie. Limit veľkosti súboru je %(limit)s, ale tento súbor má %(sizeOfThisFile)s.", @@ -1883,14 +1834,10 @@ "Upload files": "Nahrať súbory", "Use the Desktop app to see all encrypted files": "Použite desktopovú aplikáciu na zobrazenie všetkých zašifrovaných súborov", "Files": "Súbory", - "Forward": "Preposlať", - "Forward message": "Preposlať správu", "Report": "Nahlásiť", "Report Content to Your Homeserver Administrator": "Nahlásenie obsahu správcovi domovského serveru", "Send report": "Odoslať hlásenie", "Report the entire room": "Nahlásiť celú miestnosť", - "Report Content": "Nahlásiť obsah", - "Report a bug": "Nahlásiť chybu", "e.g. my-space": "napr. moj-priestor", "not ready": "nie je pripravené", "ready": "pripravené", @@ -2079,7 +2026,6 @@ "Space visibility": "Viditeľnosť priestoru", "Anyone will be able to find and join this room.": "Ktokoľvek môže nájsť túto miestnosť a pripojiť sa k nej.", "Room visibility": "Viditeľnosť miestnosti", - "Create a room": "Vytvoriť miestnosť", "Reason (optional)": "Dôvod (voliteľný)", "Confirm your Security Phrase": "Potvrďte svoju bezpečnostnú frázu", "Set a Security Phrase": "Nastaviť bezpečnostnú frázu", @@ -2095,7 +2041,6 @@ "Preparing to download logs": "Príprava na prevzatie záznamov", "Downloading logs": "Sťahovanie záznamov", "This room isn't bridging messages to any platforms. Learn more.": "Táto miestnosť nepremosťuje správy so žiadnymi platformami. Viac informácií", - "Learn more": "Zistiť viac", "Share anonymous data to help us identify issues. Nothing personal. No third parties.": "Zdieľajte anonymné údaje, ktoré nám pomôžu identifikovať problémy. Nič osobné. Žiadne tretie strany.", "Share anonymous data to help us identify issues. Nothing personal. No third parties. Learn More": "Zdieľajte anonymné údaje, ktoré nám pomôžu identifikovať problémy. Nič osobné. Žiadne tretie strany. Zistite viac", "Backup key cached:": "Záložný kľúč v medzipamäti:", @@ -2334,7 +2279,6 @@ "Me and my teammates": "Ja a moji kolegovia z tímu", "Who are you working with?": "S kým spolupracujete?", "Skip for now": "Zatiaľ preskočiť", - "Room name": "Názov miestnosti", "%(count)s members": { "one": "%(count)s člen", "other": "%(count)s členov" @@ -3112,7 +3056,6 @@ "Next recently visited room or space": "Ďalšia nedávno navštívená miestnosť alebo priestor", "Previous recently visited room or space": "Predchádzajúca nedávno navštívená miestnosť alebo priestor", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Ladiace záznamy obsahujú údaje o používaní aplikácie vrátane vášho používateľského mena, ID alebo aliasov navštívených miestností alebo skupín, prvkov používateľského rozhrania, s ktorými ste naposledy interagovali, a používateľských mien iných používateľov. Neobsahujú správy.", - "Video": "Video", "Event ID: %(eventId)s": "ID udalosti: %(eventId)s", "No verification requests found": "Nenašli sa žiadne žiadosti o overenie", "Observe only": "Iba pozorovať", @@ -3212,7 +3155,6 @@ "Unban from space": "Zrušiť zákaz vstupu do priestoru", "Ban from space": "Zakázať vstup do priestoru", "Jump to the given date in the timeline": "Prejsť na zadaný dátum na časovej osi", - "Copy link": "Kopírovať odkaz", "Disinvite from room": "Zrušiť pozvánku z miestnosti", "Remove from space": "Odstrániť z priestoru", "Disinvite from space": "Zrušiť pozvánku z priestoru", @@ -3734,7 +3676,6 @@ "Adding…": "Pridávanie…", "Write something…": "Napíšte niečo…", "Rejecting invite…": "Odmietnutie pozvania …", - "Loading…": "Načítavanie…", "Joining room…": "Pripájanie do miestnosti …", "Joining space…": "Pripájanie sa do priestoru …", "Encrypting your message…": "Šifrovanie vašej správy…", @@ -3947,6 +3888,35 @@ "This server is using an older version of Matrix. Upgrade to Matrix %(version)s to use %(brand)s without errors.": "Tento server používa staršiu verziu systému Matrix. Ak chcete používať %(brand)s bez chýb, aktualizujte na Matrix %(version)s.", "Your homeserver is too old and does not support the minimum API version required. Please contact your server owner, or upgrade your server.": "Váš domovský server je príliš starý a nepodporuje minimálnu požadovanú verziu API. Obráťte sa na vlastníka servera alebo aktualizujte svoj server.", "Your server is unsupported": "Váš server nie je podporovaný", + "common": { + "about": "Informácie", + "analytics": "Analytické údaje", + "encryption_enabled": "Šifrovanie zapnuté", + "error": "Chyba", + "forward_message": "Preposlať správu", + "image": "Obrázok", + "loading": "Načítavanie…", + "message": "Správa", + "message_layout": "Rozloženie správy", + "modern": "Moderný", + "mute": "Umlčať", + "no_results": "Žiadne výsledky", + "offline": "Nedostupný", + "password": "Heslo", + "people": "Ľudia", + "reactions": "Reakcie", + "report_a_bug": "Nahlásiť chybu", + "room_name": "Názov miestnosti", + "security": "Zabezpečenie", + "settings": "Nastavenia", + "sticker": "Nálepka", + "success": "Úspech", + "suggestions": "Návrhy", + "unmute": "Zrušiť stlmenie", + "username": "Meno používateľa", + "verification_cancelled": "Overovanie zrušené", + "video": "Video" + }, "action": { "reject": "Odmietnuť", "confirm": "Potvrdiť", @@ -3971,5 +3941,8 @@ "share": "Zdieľať", "skip": "Preskočiť", "logout": "Odhlásiť sa" + }, + "a11y": { + "user_menu": "Používateľské menu" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/sl.json b/src/i18n/strings/sl.json index 301e870a1537..f6e3396c9a4d 100644 --- a/src/i18n/strings/sl.json +++ b/src/i18n/strings/sl.json @@ -15,7 +15,6 @@ "Confirm adding phone number": "Potrdi dodajanje telefonske številke", "Click the button below to confirm adding this phone number.": "Pritisnite gumb spodaj da potrdite dodajanje te telefonske številke.", "Add Phone Number": "Dodaj telefonsko številko", - "Analytics": "Analitika", "Call Failed": "Klic ni uspel", "End": "Konec", "Change": "Sprememba", @@ -59,9 +58,12 @@ "The file '%(fileName)s' failed to upload.": "Datoteka '%(fileName)s' se ni uspešno naložila.", "Attachment": "Priponka", "Unable to load! Check your network connectivity and try again.": "Napaka pri nalaganju! Preverite vašo povezavo in poskusite ponovno.", - "Error": "Napaka", + "common": { + "analytics": "Analitika", + "error": "Napaka" + }, "action": { "confirm": "Potrdi", "dismiss": "Opusti" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index cce9e1afcba3..88492f470599 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2,7 +2,6 @@ "This email address is already in use": "Kjo adresë email është tashmë në përdorim", "This phone number is already in use": "Ky numër telefoni është tashmë në përdorim", "Failed to verify email address: make sure you clicked the link in the email": "S’u arrit të verifikohej adresë email: sigurohuni se keni klikuar lidhjen te email-i", - "Analytics": "Analiza", "Call Failed": "Thirrja Dështoi", "You cannot place a call with yourself.": "S’mund të bëni thirrje me vetveten.", "Warning!": "Sinjalizim!", @@ -66,9 +65,7 @@ "Changelog": "Regjistër ndryshimesh", "Waiting for response from server": "Po pritet për përgjigje nga shërbyesi", "Failed to change password. Is your password correct?": "S’u arrit të ndryshohej fjalëkalimi. A është i saktë fjalëkalimi juaj?", - "OK": "OK", "Failed to send logs: ": "S’u arrit të dërgoheshin regjistra: ", - "Mute": "Pa Zë", "Warning": "Sinjalizim", "This Room": "Këtë Dhomë", "Resend": "Ridërgoje", @@ -83,7 +80,6 @@ "No update available.": "S’ka përditësim gati.", "Noisy": "I zhurmshëm", "Collecting app version information": "Po grumbullohen të dhëna versioni aplikacioni", - "Remove": "Hiqe", "Search…": "Kërkoni…", "Tuesday": "E martë", "Event sent!": "Akti u dërgua!", @@ -98,8 +94,6 @@ "Failed to forget room %(errCode)s": "S’u arrit të harrohej dhoma %(errCode)s", "Submit debug logs": "Parashtro regjistra diagnostikimi", "Wednesday": "E mërkurë", - "Quote": "Citim", - "Error": "Gabim", "Send logs": "Dërgo regjistra", "All messages": "Krejt mesazhet", "unknown error code": "kod gabimi të panjohur", @@ -114,7 +108,6 @@ "Thursday": "E enjte", "Logs sent": "Regjistrat u dërguan", "Back": "Mbrapsht", - "Reply": "Përgjigje", "Show message in desktop notification": "Shfaq mesazh në njoftim për desktop", "Messages in group chats": "Mesazhe në fjalosje në grup", "Yesterday": "Dje", @@ -124,11 +117,7 @@ "What's New": "Ç’ka të Re", "Register": "Regjistrohuni", "Off": "Off", - "Edit": "Përpuno", - "Continue": "Vazhdo", - "Leave": "Dilni", "Developer Tools": "Mjete Zhvilluesi", - "View Source": "Shihini Burimin", "Event Content": "Lëndë Akti", "Rooms": "Dhoma", "PM": "PM", @@ -141,7 +130,6 @@ "%(senderName)s made future room history visible to all room members.": "%(senderName)s e bëri historikun e ardhshëm të dhomës të dukshëm për krejt anëtarët e dhomës.", "%(senderName)s made future room history visible to anyone.": "%(senderName)s e bëri historikun e ardhshëm të dhomës të dukshëm për këdo.", "Always show message timestamps": "Shfaq përherë vula kohore për mesazhet", - "Decline": "Hidhe poshtë", "Incorrect verification code": "Kod verifikimi i pasaktë", "Submit": "Parashtroje", "Phone": "Telefon", @@ -152,7 +140,6 @@ "Export E2E room keys": "Eksporto kyçe dhome E2E", "Do you want to set an email address?": "Doni të caktoni një adresë email?", "Current password": "Fjalëkalimi i tanishëm", - "Password": "Fjalëkalim", "New Password": "Fjalëkalim i Ri", "Confirm password": "Ripohoni frazëkalimin", "Change Password": "Ndryshoni Fjalëkalimin", @@ -168,7 +155,6 @@ "Unignore": "Shpërfille", "Ignore": "Shpërfille", "Mention": "Përmendje", - "Invite": "Ftoje", "Admin Tools": "Mjete Përgjegjësi", "and %(count)s others...": { "other": "dhe %(count)s të tjerë…", @@ -191,21 +177,16 @@ "Idle for %(duration)s": "I plogësht për %(duration)s", "Offline for %(duration)s": "Jo në linjë për %(duration)s", "Idle": "I plogësht", - "Offline": "Jo në linjë", "Unknown": "I panjohur", - "Save": "Ruaje", "Join Room": "Hyni në dhomë", "Upload avatar": "Ngarkoni avatar", - "Settings": "Rregullime", "Forget room": "Harroje dhomën", - "Invites": "Ftesa", "Favourites": "Të parapëlqyer", "Low priority": "Me përparësi të ulët", "%(roomName)s does not exist.": "%(roomName)s s’ekziston.", "Banned by %(displayName)s": "Dëbuar nga %(displayName)s", "Privileged Users": "Përdorues të Privilegjuar", "Banned users": "Përdorues të dëbuar", - "Leave room": "Dilni nga dhomë", "Who can read history?": "Kush mund të lexojë historikun?", "Anyone": "Cilido", "Permissions": "Leje", @@ -221,7 +202,6 @@ "Sign in": "Hyni", "Something went wrong!": "Diçka shkoi ters!", "Create new room": "Krijoni dhomë të re", - "No results": "S’ka përfundime", "Home": "Kreu", "were invited %(count)s times": { "one": "janë ftuar", @@ -256,9 +236,7 @@ "expand": "zgjeroje", "Custom level": "Nivel vetjak", "In reply to ": "Në Përgjigje të ", - "Start chat": "Filloni fjalosje", "Confirm Removal": "Ripohoni Heqjen", - "Create": "Krijoje", "Unknown error": "Gabim i panjohur", "Incorrect password": "Fjalëkalim i pasaktë", "Deactivate Account": "Çaktivizoje Llogarinë", @@ -284,7 +262,6 @@ }, "Uploading %(filename)s": "Po ngarkohet %(filename)s", "Sign out": "Dilni", - "Success": "Sukses", "Cryptography": "Kriptografi", "Check for update": "Kontrollo për përditësime", "No media permissions": "S’ka leje mediash", @@ -324,7 +301,6 @@ "Failed to ban user": "S’u arrit të dëbohej përdoruesi", "Failed to mute user": "S’u arrit t’i hiqej zëri përdoruesit", "Failed to change power level": "S’u arrit të ndryshohej shkalla e pushtetit", - "Unmute": "Ktheji zërin", "Invited": "I ftuar", "Hangup": "Mbylle Thirrjen", "Replying": "Po përgjigjet", @@ -565,13 +541,11 @@ "Forces the current outbound group session in an encrypted room to be discarded": "E detyron të hidhet tej sesionin e tanishëm outbound grupi në një dhomë të fshehtëzuar", "Delete Backup": "Fshije Kopjeruajtjen", "Unable to load key backup status": "S’arrihet të ngarkohet gjendje kopjeruajtjeje kyçesh", - "Next": "Pasuesja", "That matches!": "U përputhën!", "That doesn't match.": "S’përputhen.", "Go back to set it again.": "Shkoni mbrapsht që ta ricaktoni.", "Download": "Shkarkoje", "Unable to create key backup": "S’arrihet të krijohet kopjeruajtje kyçesh", - "Retry": "Riprovo", "Unable to load backup status": "S’arrihet të ngarkohet gjendje kopjeruajtjeje", "Unable to restore backup": "S’arrihet të rikthehet kopjeruajtje", "No backup found!": "S’u gjet kopjeruajtje!", @@ -646,8 +620,6 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Mesazhet e sigurt me këtë përdorues fshehtëzohen skaj-më-skaj dhe të palexueshëm nga palë të treta.", "Got It": "E Mora Vesh", "Verify this user by confirming the following number appears on their screen.": "Verifikojeni këtë përdorues duke ripohuar shfaqjen e numrit vijues në skenën e tyre.", - "Yes": "Po", - "No": "Jo", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Ju kemi dërguar një email që të verifikoni adresën tuaj. Ju lutemi, ndiqni udhëzimet e atjeshme dhe mandej klikoni butonin më poshtë.", "Email Address": "Adresë Email", "All keys backed up": "U kopjeruajtën krejt kyçet", @@ -696,7 +668,6 @@ "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Verifikojeni këtë përdorues që t’i vihet shenjë si i besuar. Përdoruesit e besuar ju më tepër siguri kur përdorni mesazhe të fshehtëzuar skaj-më-skaj.", "Incoming Verification Request": "Kërkesë Verifikimi e Ardhur", "Go back": "Kthehu mbrapsht", - "Username": "Emër përdoruesi", "Email (optional)": "Email (në daçi)", "Phone (optional)": "Telefoni (në daçi)", "Join millions for free on the largest public server": "Bashkojuni milionave, falas, në shërbyesin më të madh publik", @@ -1061,7 +1032,6 @@ "Send report": "Dërgoje njoftimin", "To continue you need to accept the terms of this service.": "Që të vazhdohet, lypset të pranoni kushtet e këtij shërbimi.", "Document": "Dokument", - "Report Content": "Raportoni Lëndë", "Add Email Address": "Shtoni Adresë Email", "Add Phone Number": "Shtoni Numër Telefoni", "Show previews/thumbnails for images": "Shfaq për figurat paraparje/miniatura", @@ -1097,7 +1067,6 @@ "Failed to deactivate user": "S’u arrit të çaktivizohet përdorues", "This client does not support end-to-end encryption.": "Ky klient nuk mbulon fshehtëzim skaj-më-skaj.", "Messages in this room are not end-to-end encrypted.": "Mesazhet në këtë dhomë nuk janë të fshehtëzuara skaj-më-skaj.", - "React": "Reagoni", "Message Actions": "Veprime Mesazhesh", "You verified %(name)s": "Verifikuat %(name)s", "You cancelled verifying %(name)s": "Anuluat verifikimin e %(name)s", @@ -1155,7 +1124,6 @@ "Trusted": "E besuar", "Not trusted": "Jo e besuar", "Messages in this room are end-to-end encrypted.": "Mesazhet në këtë dhomë janë të fshehtëzuara skaj-më-skaj.", - "Security": "Siguri", "Any of the following data may be shared:": "Mund të ndahen me të tjerët cilado prej të dhënave vijuese:", "Your display name": "Emri juaj në ekran", "Your user ID": "ID-ja juaj e përdoruesit", @@ -1191,7 +1159,6 @@ "Unencrypted": "Të pafshehtëzuara", " wants to chat": " dëshiron të bisedojë", "Start chatting": "Filloni të bisedoni", - "Reactions": "Reagime", "Upgrade private room": "Përmirëso dhomë private", "Upgrade public room": "Përmirëso dhomë publike", "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "Përmirësimi i një dhome është një veprim i thelluar dhe zakonisht rekomandohet kur një dhomë është e papërdorshme, për shkak të metash, veçorish që i mungojnë ose cenueshmëri sigurie.", @@ -1266,9 +1233,6 @@ "We couldn't invite those users. Please check the users you want to invite and try again.": "S’i ftuam dot këta përdorues. Ju lutemi, kontrolloni përdoruesit që doni të ftoni dhe riprovoni.", "Failed to find the following users": "S’u arrit të gjendeshin përdoruesit vijues", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Përdoruesit vijues mund të mos ekzistojnë ose janë të pavlefshëm, dhe s’mund të ftohen: %(csvNames)s", - "Suggestions": "Sugjerime", - "Start": "Nise", - "Done": "U bë", "Go Back": "Shko Mbrapsht", "Restore": "Riktheje", "Enter your account password to confirm the upgrade:": "Që të ripohohet përmirësimi, jepni fjalëkalimin e llogarisë tuaj:", @@ -1280,11 +1244,9 @@ "Enable message search in encrypted rooms": "Aktivizo kërkim mesazhesh në dhoma të fshehtëzuara", "Manage": "Administroni", "Securely cache encrypted messages locally for them to appear in search results.": "Ruaj lokalisht në mënyrë të sigurt në fshehtinë mesazhet që të shfaqen në përfundime kërkimi.", - "Enable": "Aktivizoje", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s-it i mungojnë disa përbërës të domosdoshëm për ruajtje lokalisht në mënyrë të sigurt në fshehtinë mesazhe. Nëse do të donit të eksperimentonit me këtë veçori, montoni një Desktop vetjak %(brand)s Desktop me shtim përbërësish kërkimi.", "Message search": "Kërkim mesazhesh", "If disabled, messages from encrypted rooms won't appear in search results.": "Në u çaktivizoftë, mesazhet prej dhomash të fshehtëzuara s’do të duken në përfundime kërkimi.", - "Disable": "Çaktivizoje", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s-i po ruan lokalisht në mënyrë të sigurt në fshehtinë mesazhet që të shfaqen në përfundime kërkimi:", "Space used:": "Hapësirë e përdorur:", "Indexed messages:": "Mesazhe të indeksuar:", @@ -1339,7 +1301,6 @@ "If you can't scan the code above, verify by comparing unique emoji.": "Nëse s’e skanoni dot kodin më sipër, verifikojeni duke krahasuar emoji unik.", "You've successfully verified %(displayName)s!": "E verifikuat me sukses %(displayName)s!", "Got it": "E mora vesh", - "Encryption enabled": "Fshehtëzim i aktivizuar", "Encryption not enabled": "Fshehtëzim jo i aktivizuar", "The encryption used by this room isn't supported.": "Fshehtëzimi i përdorur nga kjo dhomë nuk mbulohet.", "Clear all data in this session?": "Të pastrohen krejt të dhënat në këtë sesion?", @@ -1353,7 +1314,6 @@ "Confirm your identity by entering your account password below.": "Ripohoni identitetin tuaj duke dhënë më poshtë fjalëkalimin e llogarisë tuaj.", "Restore your key backup to upgrade your encryption": "Që të përmirësoni fshehtëzimin tuaj, riktheni kopjeruajtjen e kyçeve tuaj", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Përmirësojeni këtë sesion për ta lejuar të verifikojë sesione të tjerë, duke u akorduar hyrje te mesazhe të fshehtëzuar dhe duke u vënë shenjë si të besuar për përdorues të tjerë.", - "Copy": "Kopjoje", "Create key backup": "Krijo kopjeruajtje kyçesh", "This session is encrypting history using the new recovery method.": "Ky sesion e fshehtëzon historikun duke përdorur metodë të re rimarrjesh.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Nëse këtë e keni bërë pa dashje, mund të ujdisni Mesazhe të Sigurt në këtë sesion, gjë që do të sjellë rifshehtëzimin e historikut të mesazheve të sesionit me një metodë të re rimarrjesh.", @@ -1469,7 +1429,6 @@ "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verifikoni individualisht çdo sesion të përdorur nga një përdorues, për t’i vënë shenjë si i besuar, duke mos besuar pajisje cross-signed.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Në dhoma të fshehtëzuara, mesazhet tuaj sigurohen dhe vetëm ju dhe marrësi ka kyçet unikë për shkyçjen e tyre.", "Verify all users in a room to ensure it's secure.": "Verifiko krejt përdoruesit në dhomë, për të garantuar se është e sigurt.", - "Verification cancelled": "Verifikimi u anulua", "Use Single Sign On to continue": "Që të vazhdohet, përdorni Hyrje Njëshe", "Confirm adding this email address by using Single Sign On to prove your identity.": "Ripohoni shtimin e kësaj adrese email duke përdorur Hyrje Njëshe për të provuar identitetin tuaj.", "Single Sign On": "Hyrje Njëshe", @@ -1562,7 +1521,6 @@ "Use a different passphrase?": "Të përdoret një frazëkalim tjetër?", "New version available. Update now.": "Version i ri gati. Përditësojeni tani.", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "Përgjegjësi i shërbyesit tuaj ka çaktivizuar fshehtëzimin skaj-më-skaj, si parazgjedhje, në dhoma private & Mesazhe të Drejtpërdrejtë.", - "People": "Persona", "Recently Direct Messaged": "Me Mesazhe të Drejtpërdrejtë Së Fundi", "Switch to light mode": "Kalo nën mënyrën e çelët", "Switch to dark mode": "Kalo nën mënyrën e errët", @@ -1587,8 +1545,6 @@ "Looks good!": "Mirë duket!", "Use custom size": "Përdor madhësi vetjake", "Hey you. You're the best!": "Hej, ju. S’u ka kush shokun!", - "Message layout": "Skemë mesazhesh", - "Modern": "Moderne", "Use a system font": "Përdor një palë shkronja sistemi", "System font name": "Emër shkronjash sistemi", "You joined the call": "U bëtë pjesë e thirrjes", @@ -1629,7 +1585,6 @@ "Away": "I larguar", "Edited at %(date)s": "Përpunuar më %(date)s", "Click to view edits": "Klikoni që të shihni përpunime", - "User menu": "Menu përdoruesi", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Change notification settings": "Ndryshoni rregullime njoftimesh", "Your server isn't responding to some requests.": "Shërbyesi juaj s’po u përgjigjet ca kërkesave.", @@ -1659,7 +1614,6 @@ "Unknown App": "Aplikacion i Panjohur", "Privacy": "Privatësi", "Not encrypted": "Jo e fshehtëzuar", - "About": "Mbi", "Room settings": "Rregullime dhome", "Take a picture": "Bëni një foto", "Information": "Informacion", @@ -1719,7 +1673,6 @@ "Send feedback": "Dërgoni përshtypjet", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "NDIHMËZ PROFESIONISTËSH: Nëse nisni një njoftim të mete, ju lutemi, parashtroni regjistra diagnostikimi, që të na ndihmoni të gjejmë problemin.", "Please view existing bugs on Github first. No match? Start a new one.": "Ju lutemi, shihni të meta ekzistuese në Github së pari. S’ka përputhje? Nisni një të re.", - "Report a bug": "Njoftoni një të metë", "Comment": "Koment", "Feedback sent": "Përshtypjet u dërguan", "Now, let's help you get started": "Tani, le t’ju ndihmojmë për t’ia filluar", @@ -2082,10 +2035,8 @@ "Use email to optionally be discoverable by existing contacts.": "Përdorni email që, nëse doni, të mund t’ju gjejnë kontaktet ekzistues.", "Use email or phone to optionally be discoverable by existing contacts.": "Përdorni email ose telefon që, nëse doni, të mund t’ju gjejnë kontaktet ekzistues.", "Add an email to be able to reset your password.": "Shtoni një email, që të jeni në gjendje të ricaktoni fjalëkalimin tuaj.", - "Forgot password?": "Harruat fjalëkalimin?", "That phone number doesn't look quite right, please check and try again": "Ai numër telefoni s’duket i saktë, ju lutemi, rikontrollojeni dhe riprovojeni", "About homeservers": "Mbi shërbyesit Home", - "Learn more": "Mësoni më tepër", "Use your preferred Matrix homeserver if you have one, or host your own.": "Përdorni shërbyesin tuaj Home të parapëlqyer Matrix, nëse keni një të tillë, ose strehoni një tuajin.", "Other homeserver": "Tjetër shërbyes home", "Sign into your homeserver": "Bëni hyrjen te shërbyesi juaj Home", @@ -2193,7 +2144,6 @@ "Who are you working with?": "Me cilët po punoni?", "Skip for now": "Hëpërhë anashkaloje", "Failed to create initial space rooms": "S’u arrit të krijohen dhomat fillestare të hapësirës", - "Room name": "Emër dhome", "Support": "Asistencë", "Random": "Kuturu", "Welcome to ": "Mirë se vini te ", @@ -2366,7 +2316,6 @@ "Or send invite link": "Ose dërgoni një lidhje ftese", "Some suggestions may be hidden for privacy.": "Disa sugjerime mund të jenë fshehur, për arsye privatësie.", "Search for rooms or people": "Kërkoni për dhoma ose persona", - "Forward message": "Përcille mesazhin", "You don't have permission to do this": "S’keni leje ta bëni këtë", "Error - Mixed content": "Gabim - Lëndë e përzierë", "Error loading Widget": "Gabim në ngarkim Widget-i", @@ -2445,7 +2394,6 @@ "Some invites couldn't be sent": "S’u dërguan dot disa nga ftesat", "We sent the others, but the below people couldn't be invited to ": "I dërguam të tjerat, por personat më poshtë s’u ftuan dot te ", "Unnamed audio": "Audio pa emër", - "Forward": "Përcille", "Sent": "U dërgua", "Error processing audio message": "Gabim në përpunim mesazhi audio", "Show %(count)s other previews": { @@ -2504,13 +2452,10 @@ "Visible to space members": "I dukshëm për anëtarë të hapësirë", "Public room": "Dhomë publike", "Private room (invite only)": "Dhomë private (vetëm me ftesa)", - "Create a room": "Krijoni një dhomë", "Only people invited will be able to find and join this room.": "Vetëm personat e ftuar do të jenë në gjendje ta gjejnë dhe hyjnë në këtë dhomë.", "Anyone will be able to find and join this room, not just members of .": "Cilido do të jetë në gjendje të gjejë dhe hyjë në këtë dhomë, jo thjesht vetëm anëtarët e .", "You can change this at any time from room settings.": "Këtë mund ta ndryshoni kurdo, që nga rregullimet e dhomës.", "Everyone in will be able to find and join this room.": "Cilido te do të jetë në gjendje të gjejë dhe hyjë në këtë dhomë.", - "Image": "Figurë", - "Sticker": "Ngjitës", "Access": "Hyrje", "People with supported clients will be able to join the room without having a registered account.": "Persona me klientë të mbuluar do të jenë në gjendje të hyjnë te dhoma pa pasur ndonjë llogari të regjistruar.", "Decide who can join %(roomName)s.": "Vendosni se cilët mund të hyjnë te %(roomName)s.", @@ -2614,7 +2559,6 @@ "Change main address for the space": "Ndryshoni adresë kryesore për hapësirën", "Change space name": "Ndryshoni emër hapësire", "Change space avatar": "Ndryshoni avatar hapësire", - "Message": "Mesazh", "Message didn't send. Click for info.": "Mesazhi s’u dërgua. Klikoni për hollësi.", "To join a space you'll need an invite.": "Që të hyni në një hapësirë, do t’ju duhet një ftesë.", "%(reactors)s reacted with %(content)s": "%(reactors)s reagoi me %(content)s", @@ -2765,7 +2709,6 @@ "Spaces to show": "Hapësira për shfaqje", "Sidebar": "Anështyllë", "Other rooms": "Dhoma të tjera", - "Copy link": "Kopjoji vendndodhjen", "Mentions only": "Vetëm përmendje", "Forget": "Harroje", "Files": "Kartela", @@ -3108,7 +3051,6 @@ "Previous recently visited room or space": "Dhoma ose hapësira e mëparshme vizituar së fundi", "%(timeRemaining)s left": "Edhe %(timeRemaining)s", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Regjistrat e diagnostikimit përmbajnë të dhëna përdorimi aplikacioni, përfshi emrin tuaj të përdoruesit, ID-të ose aliaset e dhomave që keni vizituar, me cilët elementë të UI-t keni ndërvepruar së fundi dhe emrat e përdoruesve të përdoruesve të tjerë. Ata s’përmbajnë mesazhe.", - "Video": "Video", "Accessibility": "Përdorim nga persona me aftësi të kufizuara", "Event ID: %(eventId)s": "ID Veprimtarie: %(eventId)s", "No verification requests found": "S’u gjetën kërkesa verifikimi", @@ -3721,7 +3663,6 @@ "Write something…": "Shkruani diçka…", "Declining…": "Po hidhet poshtë…", "Rejecting invite…": "Po hidhet poshtë ftesa…", - "Loading…": "Po ngarkohet…", "Joining room…": "Po hyhet në dhomë…", "Joining space…": "Po hyhet në hapësirë…", "Encrypting your message…": "Po fshehtëzohet meszhi juaj…", @@ -3840,6 +3781,35 @@ "Waiting for users to join %(brand)s": "Po pritet që përdorues të vijnë në %(brand)s", "You do not have permission to invite users": "S’keni leje të ftoni përdorues", "%(oldDisplayName)s changed their display name and profile picture": "%(oldDisplayName)s ndryshoi emrin e vet në ekran dhe foton e profilit", + "common": { + "about": "Mbi", + "analytics": "Analiza", + "encryption_enabled": "Fshehtëzim i aktivizuar", + "error": "Gabim", + "forward_message": "Përcille mesazhin", + "image": "Figurë", + "loading": "Po ngarkohet…", + "message": "Mesazh", + "message_layout": "Skemë mesazhesh", + "modern": "Moderne", + "mute": "Pa Zë", + "no_results": "S’ka përfundime", + "offline": "Jo në linjë", + "password": "Fjalëkalim", + "people": "Persona", + "reactions": "Reagime", + "report_a_bug": "Njoftoni një të metë", + "room_name": "Emër dhome", + "security": "Siguri", + "settings": "Rregullime", + "sticker": "Ngjitës", + "success": "Sukses", + "suggestions": "Sugjerime", + "unmute": "Ktheji zërin", + "username": "Emër përdoruesi", + "verification_cancelled": "Verifikimi u anulua", + "video": "Video" + }, "action": { "reject": "Hidheni tej", "confirm": "Ripohojeni", @@ -3864,5 +3834,8 @@ "share": "Ndaje me të tjerë", "skip": "Anashkaloje", "logout": "Dalje" + }, + "a11y": { + "user_menu": "Menu përdoruesi" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index d6cb14843475..676df602316f 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -92,8 +92,6 @@ "Enable inline URL previews by default": "Подразумевано укључи УРЛ прегледе", "Enable URL previews for this room (only affects you)": "Укључи УРЛ прегледе у овој соби (утиче само на вас)", "Enable URL previews by default for participants in this room": "Подразумевано омогући прегледе адреса за чланове ове собе", - "Decline": "Одбиј", - "Error": "Грешка", "Incorrect verification code": "Нетачни потврдни код", "Submit": "Пошаљи", "Phone": "Телефон", @@ -101,11 +99,9 @@ "No display name": "Нема приказног имена", "New passwords don't match": "Нове лозинке се не подударају", "Passwords can't be empty": "Лозинке не могу бити празне", - "Continue": "Настави", "Export E2E room keys": "Извези E2E кључеве собе", "Do you want to set an email address?": "Да ли желите да поставите мејл адресу?", "Current password": "Тренутна лозинка", - "Password": "Лозинка", "New Password": "Нова лозинка", "Confirm password": "Потврди лозинку", "Change Password": "Промени лозинку", @@ -124,9 +120,6 @@ "Ignore": "Занемари", "Jump to read receipt": "Скочи на потврду о прочитаности", "Mention": "Спомени", - "Invite": "Позови", - "Unmute": "Појачај", - "Mute": "Утишај", "Admin Tools": "Админ алатке", "and %(count)s others...": { "other": "и %(count)s других...", @@ -155,21 +148,17 @@ "Unknown for %(duration)s": "Непознато већ %(duration)s", "Online": "На мрежи", "Idle": "У мировању", - "Offline": "Ван мреже", "Unknown": "Непознато", "Replying": "Одговара", "Unnamed room": "Неименована соба", - "Save": "Сачувај", "(~%(count)s results)": { "other": "(~%(count)s резултата)", "one": "(~%(count)s резултат)" }, "Join Room": "Приступи соби", "Upload avatar": "Отпреми аватар", - "Settings": "Подешавања", "Forget room": "Заборави собу", "Search": "Претрага", - "Invites": "Позивнице", "Favourites": "Омиљено", "Rooms": "Собе", "Low priority": "Ниска важност", @@ -184,7 +173,6 @@ "No users have specific privileges in this room": "Нема корисника са посебним овлашћењима у овој соби", "Banned users": "Корисници са забраном приступа", "This room is not accessible by remote Matrix servers": "Ова соба није доступна са удаљених Матрикс сервера", - "Leave room": "Напусти собу", "Favourite": "Омиљено", "Publish this room to the public in %(domain)s's room directory?": "Објавити ову собу у јавној фасцикли соба на домену %(domain)s?", "Who can read history?": "Ко може читати историјат?", @@ -224,14 +212,11 @@ "Email address": "Мејл адреса", "Sign in": "Пријави се", "Register": "Регистровање", - "Remove": "Уклони", "Something went wrong!": "Нешто је пошло наопако!", "Delete Widget": "Обриши виџет", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Брисање виџета уклања виџет за све чланове ове собе. Да ли сте сигурни да желите обрисати овај виџет?", "Delete widget": "Обриши виџет", - "Edit": "Уреди", "Create new room": "Направи нову собу", - "No results": "Нема резултата", "Home": "Почетна", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", "%(severalUsers)sjoined %(count)s times": { @@ -322,18 +307,14 @@ "collapse": "скупи", "expand": "рашири", "Custom level": "Прилагођени ниво", - "Quote": "Цитат", - "Start chat": "Започни разговор", "And %(count)s more...": { "other": "И %(count)s других..." }, "Confirm Removal": "Потврди уклањање", - "Create": "Направи", "Unknown error": "Непозната грешка", "Incorrect password": "Нетачна лозинка", "Deactivate Account": "Деактивирај налог", "An error has occurred.": "Догодила се грешка.", - "OK": "У реду", "Unable to restore session": "Не могу да повратим сесију", "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ако сте претходно користили новије издање апликације %(brand)s, ваша сесија може бити некомпатибилна са овим издањем. Затворите овај прозор и вратите се на новије издање.", "Invalid Email Address": "Неисправна мејл адреса", @@ -346,7 +327,6 @@ "Name": "Име", "You must register to use this functionality": "Морате се регистровати да бисте користили ову могућност", "You must join the room to see its files": "Морате приступити соби да бисте видели њене датотеке", - "Leave": "Напусти", "Description": "Опис", "Reject invitation": "Одбиј позивницу", "Are you sure you want to reject the invitation?": "Да ли сте сигурни да желите одбити позивницу?", @@ -355,7 +335,6 @@ "Signed Out": "Одјављен", "For security, this session has been signed out. Please sign in again.": "Зарад безбедности, одјављени сте из ове сесије. Пријавите се поново.", "Old cryptography data detected": "Нађени су стари криптографски подаци", - "Analytics": "Аналитика", "Failed to remove tag %(tagName)s from room": "Нисам успео да скинем ознаку %(tagName)s са собе", "Failed to add tag %(tagName)s to room": "Нисам успео да додам ознаку %(tagName)s на собу", "In reply to ": "Као одговор за ", @@ -381,7 +360,6 @@ "Uploading %(filename)s": "Отпремам датотеку %(filename)s", "Sign out": "Одјави ме", "Failed to change password. Is your password correct?": "Нисам успео да променим лозинку. Да ли је ваша лозинка тачна?", - "Success": "Успех", "Unable to remove contact information": "Не могу да уклоним контакт податке", "": "<није подржано>", "Import E2E room keys": "Увези E2E кључеве собе", @@ -474,7 +452,6 @@ "You cannot delete this message. (%(code)s)": "Не можете обрисати ову поруку. (%(code)s)", "Thursday": "Четвртак", "Back": "Назад", - "Reply": "Одговори", "Show message in desktop notification": "Прикажи поруку у стоном обавештењу", "Messages in group chats": "Поруке у групним ћаскањима", "Yesterday": "Јуче", @@ -484,7 +461,6 @@ "What's New": "Шта је ново", "Resend": "Поново пошаљи", "Developer Tools": "Програмерске алатке", - "View Source": "Погледај извор", "Event Content": "Садржај догађаја", "Thank you!": "Хвала вам!", "Popout widget": "Виџет за искакање", @@ -534,12 +510,10 @@ "Forces the current outbound group session in an encrypted room to be discarded": "Присиљава одбацивање тренутне одлазне сесије групе у шифрованој соби", "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s је надоградио ову собу.", "Join millions for free on the largest public server": "Придружите се милионима других бесплатно на највећем јавном серверу", - "Next": "Следеће", "Create account": "Направи налог", "Email (optional)": "Мејл (изборно)", "Change": "Промени", "Messages containing my username": "Поруке које садрже моје корисничко", - "Username": "Корисничко име", "Are you sure you want to sign out?": "Заиста желите да се одјавите?", "Call failed due to misconfigured server": "Позив неуспешан због лоше подешеног сервера", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Замолите администратора вашег сервера (%(homeserverDomain)s) да подеси „TURN“ сервер како би позиви радили поуздано.", @@ -581,7 +555,6 @@ "Scroll to most recent messages": "Пребаци на најновије поруке", "Send a message…": "Пошаљи поруку…", "Direct Messages": "Директне поруке", - "People": "Људи", "Forget this room": "Заборави ову собу", "Start chatting": "Започни ћаскање", "List options": "Прикажи опције", @@ -600,17 +573,13 @@ "Hide verified sessions": "Сакриј потврђене сесије", "Remove recent messages by %(user)s": "Уклони недавне поруке корисника %(user)s", "Remove recent messages": "Уклони недавне поруке", - "Encryption enabled": "Шифровање омогућено", "Encryption not enabled": "Шифровање није омогућено", "The encryption used by this room isn't supported.": "Начин шифровања унутар ове собе није подржан.", - "React": "Реагуј", - "Reactions": "Реакције", "reacted with %(shortName)s": "реаговали са %(shortName)s", "Smileys & People": "Смешци и особе", "Quick Reactions": "Брзе реакције", "Widgets do not use message encryption.": "Виџети не користе шифровање порука.", "Enable end-to-end encryption": "Омогући шифровање с краја на крај", - "Suggestions": "Предлози", "Report Content to Your Homeserver Administrator": "Пријави садржај администратору вашег домаћег сервера", "Room Settings - %(roomName)s": "Подешавања собе - %(roomName)s", "Terms of Service": "Услови коришћења", @@ -619,14 +588,12 @@ "Summary": "Сажетак", "Document": "Документ", "Resend %(unsentCount)s reaction(s)": "Поново пошаљи укупно %(unsentCount)s реакција", - "Report Content": "Пријави садржај", "%(creator)s created and configured the room.": "Корисник %(creator)s је направио и подесио собу.", "Switch to light mode": "Пребаци на светлу тему", "Switch to dark mode": "Пребаци на тамну тему", "All settings": "Сва подешавања", "Feedback": "Повратни подаци", "General failure": "Општа грешка", - "Copy": "Копирај", "Go Back": "Назад", "Send a bug report with logs": "Пошаљи извештај о грешци са записницима", "Light": "Светла", @@ -970,7 +937,6 @@ "Click the button below to confirm adding this phone number.": "Кликните на дугме испод за потврду додавања броја телефона.", "Confirm adding phone number": "Потврда додавања броја телефона", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Потврдите додавање броја телефона помоћу јединствене пријаве да докажете свој идентитет.", - "About": "О програму", "Homeserver": "Домаћи сервер", "Your homeserver": "Ваш домаћи сервер", "Your homeserver does not support cross-signing.": "Ваш домаћи сервер не подржава међу-потписивање.", @@ -1016,7 +982,6 @@ "Removing…": "Уклањам…", "Clear all data in this session?": "Да очистим све податке у овој сесији?", "Reason (optional)": "Разлог (опционо)", - "Disable": "Искључи", "If disabled, messages from encrypted rooms won't appear in search results.": "Ако је искључено, поруке из шифрованих соба неће се приказивати у резултатима.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Ако нисте ви уклонили начин опоравка, нападач можда покушава да приступи вашем налогу. Промените своју лозинку и поставите нови начин опоравка у поставкама, одмах.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Ако сте то случајно учинили, безбедне поруке можете подесити у овој сесији, која ће поново шифровати историју порука сесије помоћу новог начина опоравка.", @@ -1234,7 +1199,6 @@ "Other users can invite you to rooms using your contact details": "Други корисници могу да вас позову у собе користећи ваше контакт податке", "Enter email address (required on this homeserver)": "Унесите адресу е-поште (захтева на овом кућном серверу)", "Use an email address to recover your account": "Користите адресу е-поште за опоравак налога", - "Forgot password?": "Заборавили сте лозинку?", "That phone number doesn't look quite right, please check and try again": "Тај телефонски број не изгледа сасвим у реду, проверите и покушајте поново", "Enter phone number": "Унесите број телефона", "Enter email address": "Унесите адресу е-поште", @@ -1289,7 +1253,6 @@ "Upload a file": "Отпремите датотеку", "Jump to oldest unread message": "Скочите на најстарију непрочитану поруку", "Dismiss read marker and jump to bottom": "Одбаците ознаку за читање и скочите до дна", - "Done": "Готово", "Not Trusted": "Није поуздано", "Ask this user to verify their session, or manually verify it below.": "Питајте овог корисника да потврди његову сесију или ручно да потврди у наставку.", "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) се улоговао у нову сесију без потврђивања:", @@ -1325,6 +1288,23 @@ "You're already in a call with this person.": "Већ разговарате са овом особом.", "Already in call": "Већ у позиву", "Using this widget may share data with %(widgetDomain)s & your integration manager.": "Коришћење овог виџета може да дели податке са %(widgetDomain)s и вашим интеграционим менаџером.", + "common": { + "about": "О програму", + "analytics": "Аналитика", + "encryption_enabled": "Шифровање омогућено", + "error": "Грешка", + "mute": "Утишај", + "no_results": "Нема резултата", + "offline": "Ван мреже", + "password": "Лозинка", + "people": "Људи", + "reactions": "Реакције", + "settings": "Подешавања", + "success": "Успех", + "suggestions": "Предлози", + "unmute": "Појачај", + "username": "Корисничко име" + }, "action": { "reject": "Одбаци", "confirm": "Потврди", @@ -1340,4 +1320,4 @@ "skip": "Прескочи", "logout": "Одјава" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/sr_Latn.json b/src/i18n/strings/sr_Latn.json index 64628ebfd23e..352522283686 100644 --- a/src/i18n/strings/sr_Latn.json +++ b/src/i18n/strings/sr_Latn.json @@ -32,7 +32,6 @@ "PM": "poslepodne", "AM": "prepodne", "Unnamed Room": "Soba bez imena", - "Error": "Greška", "Unable to load! Check your network connectivity and try again.": "Neuspelo učitavanje! Proverite vašu mrežu i pokušajte ponovo.", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s nema dozvolu da vam šalje obaveštenja. Molim proverite podešavanja vašeg internet pregledača", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s nije dobio dozvolu da šalje obaveštenja. Molim pokušajte ponovo", @@ -92,9 +91,12 @@ "Stop the camera": "Zaustavi kameru", "Use Ctrl + Enter to send a message": "Koristi Ctrl + Enter za slanje poruke", "User is already in the room": "Korisnik je već u sobi", + "common": { + "error": "Greška" + }, "action": { "confirm": "Potvrdi", "dismiss": "Odbaci", "trust": "Vjeruj" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 2306cfced0ef..763e5d2dc3aa 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -34,7 +34,6 @@ "Command error": "Kommandofel", "Commands": "Kommandon", "Confirm password": "Bekräfta lösenord", - "Continue": "Fortsätt", "Cryptography": "Kryptografi", "Current password": "Nuvarande lösenord", "Custom level": "Anpassad nivå", @@ -47,7 +46,6 @@ "Email": "E-post", "Email address": "E-postadress", "Emoji": "Emoji", - "Error": "Fel", "Error decrypting attachment": "Fel vid avkryptering av bilagan", "Export": "Exportera", "Export E2E room keys": "Exportera krypteringsrumsnycklar", @@ -68,7 +66,6 @@ "Admin Tools": "Admin-verktyg", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Kan inte ansluta till hemservern - vänligen kolla din nätverksanslutning, se till att hemserverns SSL-certifikat är betrott, och att inget webbläsartillägg blockerar förfrågningar.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ändrade behörighetsnivå för %(powerLevelDiffText)s.", - "Decline": "Avvisa", "Enter passphrase": "Ange lösenfras", "Failure to create room": "Misslyckades att skapa rummet", "Favourites": "Favoriter", @@ -86,13 +83,11 @@ "Invalid Email Address": "Ogiltig e-postadress", "Invalid file%(extra)s": "Felaktig fil%(extra)s", "Invited": "Inbjuden", - "Invites": "Inbjudningar", "Invites user with given id to current room": "Bjuder in användare med givet ID till detta rum", "Sign in with": "Logga in med", "Join Room": "Gå med i rum", "Jump to first unread message.": "Hoppa till första olästa meddelandet.", "Labs": "Experiment", - "Leave room": "Lämna rummet", "Low priority": "Låg prioritet", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s gjorde framtida rumshistorik synligt för alla rumsmedlemmar från att de bjöds in.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s gjorde framtida rumshistorik synligt för alla rumsmedlemmar fr.o.m. att de gick med som medlem.", @@ -101,7 +96,6 @@ "Missing room_id in request": "room_id saknas i förfrågan", "Missing user_id in request": "user_id saknas i förfrågan", "Moderator": "Moderator", - "Mute": "Tysta", "Name": "Namn", "New passwords don't match": "De nya lösenorden matchar inte", "New passwords must match each other.": "De nya lösenorden måste matcha.", @@ -110,11 +104,8 @@ "": "", "No display name": "Inget visningsnamn", "No more results": "Inga fler resultat", - "No results": "Inga resultat", "No users have specific privileges in this room": "Inga användare har specifika privilegier i det här rummet", - "OK": "OK", "Operation failed": "Handlingen misslyckades", - "Password": "Lösenord", "Passwords can't be empty": "Lösenorden kan inte vara tomma", "Permissions": "Behörigheter", "Phone": "Telefon", @@ -125,7 +116,6 @@ "Reason": "Orsak", "Register": "Registrera", "Reject invitation": "Avböj inbjudan", - "Remove": "Ta bort", "Return to login screen": "Tillbaka till inloggningsskärmen", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s har inte tillstånd att skicka aviseringar - kontrollera webbläsarens inställningar", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s fick inte tillstånd att skicka aviseringar - försök igen", @@ -134,7 +124,6 @@ "%(roomName)s does not exist.": "%(roomName)s finns inte.", "%(roomName)s is not accessible at this time.": "%(roomName)s är inte tillgängligt för tillfället.", "Rooms": "Rum", - "Save": "Spara", "Search": "Sök", "Search failed": "Sökning misslyckades", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s skickade en bild.", @@ -144,7 +133,6 @@ "Server may be unavailable, overloaded, or you hit a bug.": "Servern kan vara otillgänglig eller överbelastad, eller så stötte du på en bugg.", "Server unavailable, overloaded, or something else went wrong.": "Servern är otillgänglig eller överbelastad, eller så gick något annat fel.", "Session ID": "Sessions-ID", - "Settings": "Inställningar", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Visa tidsstämplar i 12-timmarsformat (t.ex. 2:30em)", "Signed Out": "Loggade ut", "Sign in": "Logga in", @@ -153,11 +141,9 @@ "Start authentication": "Starta autentisering", "Create new room": "Skapa nytt rum", "powered by Matrix": "drivs av Matrix", - "Start chat": "Starta chatt", "unknown error code": "okänd felkod", "Delete widget": "Radera widget", "Define the power level of a user": "Definiera behörighetsnivå för en användare", - "Edit": "Ändra", "Enable automatic language detection for syntax highlighting": "Aktivera automatisk språkdetektering för syntaxmarkering", "Publish this room to the public in %(domain)s's room directory?": "Publicera rummet i den offentliga rumskatalogen på %(domain)s?", "AM": "FM", @@ -207,7 +193,6 @@ "On": "På", "Changelog": "Ändringslogg", "Waiting for response from server": "Väntar på svar från servern", - "Leave": "Lämna", "Warning": "Varning", "This Room": "Det här rummet", "Noisy": "Högljudd", @@ -237,7 +222,6 @@ "Invite to this room": "Bjud in till rummet", "Thursday": "torsdag", "Back": "Tillbaka", - "Reply": "Svara", "Show message in desktop notification": "Visa meddelande i skrivbordsavisering", "Messages in group chats": "Meddelanden i gruppchattar", "Yesterday": "igår", @@ -245,9 +229,7 @@ "Low Priority": "Låg prioritet", "Off": "Av", "Failed to remove tag %(tagName)s from room": "Misslyckades att radera etiketten %(tagName)s från rummet", - "View Source": "Visa källa", "Thank you!": "Tack!", - "Quote": "Citera", "Who can read history?": "Vilka kan läsa historik?", "Members only (since the point in time of selecting this option)": "Endast medlemmar (från tidpunkten för när denna inställning valdes)", "Members only (since they were invited)": "Endast medlemmar (från när de blev inbjudna)", @@ -265,7 +247,6 @@ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s-widget har tagits bort av %(senderName)s", "Unnamed Room": "Namnlöst rum", "Your browser does not support the required cryptography extensions": "Din webbläsare stödjer inte nödvändiga kryptografitillägg", - "Invite": "Bjud in", "Unignore": "Avignorera", "Ignore": "Ignorera", "Mention": "Nämn", @@ -282,7 +263,6 @@ "Idle for %(duration)s": "Inaktiv i %(duration)s", "Offline for %(duration)s": "Offline i %(duration)s", "Idle": "Inaktiv", - "Offline": "Offline", "(~%(count)s results)": { "other": "(~%(count)s resultat)", "one": "(~%(count)s resultat)" @@ -358,7 +338,6 @@ "Room": "Rum", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Försökte ladda en viss punkt i det här rummets tidslinje, men du är inte behörig att visa det aktuella meddelandet.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Försökte ladda en specifik punkt i det här rummets tidslinje, men kunde inte hitta den.", - "Success": "Lyckades", "Unable to remove contact information": "Kunde inte ta bort kontaktuppgifter", "Please note you are logging into the %(hs)s server, not matrix.org.": "Observera att du loggar in på servern %(hs)s, inte matrix.org.", "Copied!": "Kopierat!", @@ -385,7 +364,6 @@ "Event sent!": "Händelse skickad!", "Event Type": "Händelsetyp", "Event Content": "Händelseinnehåll", - "Create": "Skapa", "Unknown error": "Okänt fel", "Incorrect password": "Felaktigt lösenord", "State Key": "Lägesnyckel", @@ -486,7 +464,6 @@ "URL Previews": "URL-förhandsgranskning", "Enable widget screenshots on supported widgets": "Aktivera widget-skärmdumpar för widgets som stöder det", "Unban": "Avblockera", - "Unmute": "Avtysta", "You don't currently have any stickerpacks enabled": "Du har för närvarande inga dekalpaket aktiverade", "Stickerpack": "Dekalpaket", "Error decrypting image": "Fel vid avkryptering av bild", @@ -502,7 +479,6 @@ "other": "blev avbannad %(count)s gånger", "one": "blev avbannad" }, - "Analytics": "Statistik", "Send analytics data": "Skicka statistik", "Passphrases must match": "Lösenfraser måste matcha", "Passphrase must not be empty": "Lösenfrasen får inte vara tom", @@ -708,9 +684,7 @@ "Room version": "Rumsversion", "Room version:": "Rumsversion:", "Room Addresses": "Rumsadresser", - "Next": "Nästa", "This homeserver would like to make sure you are not a robot.": "Denna hemserver vill se till att du inte är en robot.", - "Username": "Användarnamn", "Change": "Ändra", "Email (optional)": "E-post (valfritt)", "Phone (optional)": "Telefon (valfritt)", @@ -722,13 +696,10 @@ "Create account": "Skapa konto", "Registration has been disabled on this homeserver.": "Registrering har inaktiverats på denna hemserver.", "Unable to query for supported registration methods.": "Kunde inte fråga efter stödda registreringsmetoder.", - "Retry": "Försök igen", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Lägger till ¯\\_(ツ)_/¯ i början på ett textmeddelande", "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s begränsade rummet till endast inbjudna.", "The user must be unbanned before they can be invited.": "Användaren behöver avbannas innan den kan bjudas in.", "Render simple counters in room header": "Rendera enkla räknare i rumsrubriken", - "Yes": "Ja", - "No": "Nej", "Missing media permissions, click the button below to request.": "Saknar mediebehörigheter, klicka på knappen nedan för att begära.", "Request media permissions": "Begär mediebehörigheter", "Change room avatar": "Byt rumsavatar", @@ -949,7 +920,6 @@ "You're previewing %(roomName)s. Want to join it?": "Du förhandsgranskar %(roomName)s. Vill du gå med i det?", "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s kan inte förhandsgranskas. Vill du gå med i det?", "Failed to connect to integration manager": "Kunde inte ansluta till integrationshanterare", - "React": "Reagera", "Message Actions": "Meddelandeåtgärder", "Show image": "Visa bild", "You have ignored this user, so their message is hidden. Show anyways.": "Du har ignorerat den här användaren, så dess meddelande är dolt. Visa ändå.", @@ -962,7 +932,6 @@ "%(name)s cancelled": "%(name)s avbröt", "%(name)s wants to verify": "%(name)s vill verifiera", "You sent a verification request": "Du skickade en verifieringsbegäran", - "Reactions": "Reaktioner", "Frequently Used": "Ofta använda", "Smileys & People": "Smileys & personer", "Animals & Nature": "Djur & natur", @@ -1005,7 +974,6 @@ "Close dialog": "Stäng dialogrutan", "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Berätta vad som gick fel, eller skapa ännu hellre ett GitHub-ärende som beskriver problemet.", "Recent Conversations": "Senaste konversationerna", - "Suggestions": "Förslag", "Show more": "Visa mer", "Direct Messages": "Direktmeddelanden", "Go": "Gå", @@ -1127,7 +1095,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) loggade in i en ny session utan att verifiera den:", "Ask this user to verify their session, or manually verify it below.": "Be den här användaren att verifiera sin session, eller verifiera den manuellt nedan.", "Not Trusted": "Inte betrodd", - "Done": "Klar", "a few seconds ago": "några sekunder sedan", "about a minute ago": "cirka en minut sedan", "%(num)s minutes ago": "%(num)s minuter sedan", @@ -1187,7 +1154,6 @@ "Scan this unique code": "Skanna den här unika koden", "Compare unique emoji": "Jämför unika emojier", "Compare a unique set of emoji if you don't have a camera on either device": "Jämför en unik uppsättning emojier om du inte har en kamera på någon av enheterna", - "Start": "Starta", "Waiting for %(displayName)s to verify…": "Väntar på att %(displayName)s ska verifiera…", "Cancelling…": "Avbryter…", "They match": "De matchar", @@ -1218,7 +1184,6 @@ "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "Verifiera individuellt varje session som används av en användare för att markera den som betrodd, och lita inte på korssignerade enheter.", "Manage": "Hantera", "Securely cache encrypted messages locally for them to appear in search results.": "Cachar krypterade meddelanden säkert lokalt för att de ska visas i sökresultat.", - "Enable": "Aktivera", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s saknar vissa komponenter som krävs som krävs för att säkert cacha krypterade meddelanden lokalt. Om du vill experimentera med den här funktionen, bygg en anpassad %(brand)s Skrivbord med sökkomponenter tillagda.", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kan inte säkert cacha krypterade meddelanden lokalt när den kör i en webbläsare. Använd %(brand)s Skrivbord för att krypterade meddelanden ska visas i sökresultaten.", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Den här servern säkerhetskopierar inte dina nycklar, men du har en existerande säkerhetskopia du kan återställa ifrån och lägga till till i framtiden.", @@ -1248,8 +1213,6 @@ "Theme added!": "Tema tillagt!", "Custom theme URL": "Anpassad tema-URL", "Add theme": "Lägg till tema", - "Message layout": "Meddelandearrangemang", - "Modern": "Modernt", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Sätt namnet för ett teckensnitt installerat på ditt system så kommer %(brand)s att försöka använda det.", "Customise your appearance": "Anpassa ditt utseende", "Appearance Settings only affect this %(brand)s session.": "Utseende inställningar påverkar bara den här %(brand)s-sessionen.", @@ -1315,7 +1278,6 @@ "Send a reply…": "Skicka ett svar…", "Send a message…": "Skicka ett meddelande…", "No recently visited rooms": "Inga nyligen besökta rum", - "People": "Personer", "Add room": "Lägg till rum", "Explore public rooms": "Utforska offentliga rum", "Reason: %(reason)s": "Anledning: %(reason)s", @@ -1403,7 +1365,6 @@ "Hide sessions": "Dölj sessioner", "Failed to deactivate user": "Misslyckades att inaktivera användaren", "This client does not support end-to-end encryption.": "Den här klienten stöder inte totalsträckskryptering.", - "Security": "Säkerhet", "Verify by scanning": "Verifiera med skanning", "Ask %(displayName)s to scan your code:": "Be %(displayName)s att skanna din kod:", "If you can't scan the code above, verify by comparing unique emoji.": "Om du inte kan skanna koden ovan, verifiera genom att jämföra unika emojier.", @@ -1420,8 +1381,6 @@ "Verification timed out.": "Verifieringen löpte ut.", "%(displayName)s cancelled verification.": "%(displayName)s avbröt verifiering.", "You cancelled verification.": "Du avbröt verifiering.", - "Verification cancelled": "Verifiering avbruten", - "Encryption enabled": "Kryptering aktiverad", "Encryption not enabled": "Kryptering är inte aktiverad", "The encryption used by this room isn't supported.": "Krypteringen som används i det här rummet stöds inte.", "You declined": "Du avslog", @@ -1522,7 +1481,6 @@ "A connection error occurred while trying to contact the server.": "Ett fel inträffade vid försök att kontakta servern.", "The server is not configured to indicate what the problem is (CORS).": "Servern är inte inställd på att indikera vad problemet är (CORS).", "Recent changes that have not yet been received": "Nyliga ändringar har inte mottagits än", - "Copy": "Kopiera", "Command Help": "Kommandohjälp", "Upload all": "Ladda upp alla", "Verification Request": "Verifikationsförfrågan", @@ -1540,7 +1498,6 @@ "Successfully restored %(sessionCount)s keys": "Återställde framgångsrikt %(sessionCount)s nycklar", "Warning: you should only set up key backup from a trusted computer.": "Varning: Du bör endast sätta upp nyckelsäkerhetskopiering från en betrodd dator.", "Resend %(unsentCount)s reaction(s)": "Skicka %(unsentCount)s reaktion(er) igen", - "Report Content": "Rapportera innehåll", "This room is public": "Det här rummet är offentligt", "Away": "Borta", "Country Dropdown": "Land-dropdown", @@ -1576,7 +1533,6 @@ "Switch to light mode": "Byt till ljust läge", "Switch to dark mode": "Byt till mörkt läge", "Switch theme": "Byt tema", - "User menu": "Användarmeny", "Invalid homeserver discovery response": "Ogiltigt hemserverupptäcktssvar", "Failed to get autodiscovery configuration from server": "Misslyckades att få konfiguration för autoupptäckt från servern", "Invalid base_url for m.homeserver": "Ogiltig base_url för m.homeserver", @@ -1643,7 +1599,6 @@ "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Om du gjorde det av misstag kan du ställa in säkra meddelanden på den här sessionen som krypterar sessionens meddelandehistorik igen med en ny återställningsmetod.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Om du inte tog bort återställningsmetoden kan en angripare försöka komma åt ditt konto. Byt ditt kontolösenord och ställ in en ny återställningsmetod omedelbart i inställningarna.", "If disabled, messages from encrypted rooms won't appear in search results.": "Om den är inaktiverad visas inte meddelanden från krypterade rum i sökresultaten.", - "Disable": "Inaktivera", "Not currently indexing messages for any room.": "Indexerar för närvarande inte meddelanden för något rum.", "Currently indexing: %(currentRoom)s": "Indexerar för närvarande: %(currentRoom)s", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s cachar säkert krypterade meddelanden lokalt för att de ska visas i sökresultat:", @@ -1664,7 +1619,6 @@ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Lägger till ( ͡° ͜ʖ ͡°) i början på ett textmeddelande", "Unknown App": "Okänd app", "Not encrypted": "Inte krypterad", - "About": "Om", "Room settings": "Rumsinställningar", "Take a picture": "Ta en bild", "Unpin": "Avfäst", @@ -1720,7 +1674,6 @@ "Send feedback": "Skicka återkoppling", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "TIPS: Om du startar en bugg, vänligen inkludera avbuggninsloggar för att hjälpa oss att hitta problemet.", "Please view existing bugs on Github first. No match? Start a new one.": "Vänligen se existerade buggar på GitHub först. Finns det ingen som matchar? Starta en ny.", - "Report a bug": "Rapportera en bugg", "Comment": "Kommentera", "Feedback sent": "Återkoppling skickad", "Canada": "Kanada", @@ -2090,7 +2043,6 @@ "Use email to optionally be discoverable by existing contacts.": "Använd e-post för att valfritt kunna upptäckas av existerande kontakter.", "Use email or phone to optionally be discoverable by existing contacts.": "Använd e-post eller telefon för att valfritt kunna upptäckas av existerande kontakter.", "Add an email to be able to reset your password.": "Lägg till en e-postadress för att kunna återställa ditt lösenord.", - "Forgot password?": "Glömt lösenordet?", "That phone number doesn't look quite right, please check and try again": "Det telefonnumret ser inte korrekt ut, vänligen kolla det och försök igen", "Enter phone number": "Ange telefonnummer", "Enter email address": "Ange e-postadress", @@ -2101,7 +2053,6 @@ "This widget would like to:": "Den här widgeten skulle vilja:", "Approve widget permissions": "Godta widgetbehörigheter", "About homeservers": "Om hemservrar", - "Learn more": "Läs mer", "Use your preferred Matrix homeserver if you have one, or host your own.": "Använd din föredragna hemserver om du har en, eller driv din egen.", "Other homeserver": "Annan hemserver", "Sign into your homeserver": "Logga in på din hemserver", @@ -2198,7 +2149,6 @@ "Who are you working with?": "Vem arbetar du med?", "Skip for now": "Hoppa över för tillfället", "Failed to create initial space rooms": "Misslyckades att skapa initiala utrymmesrum", - "Room name": "Rumsnamn", "Support": "Hjälp", "Random": "Slumpmässig", "Welcome to ": "Välkommen till ", @@ -2372,7 +2322,6 @@ "Some suggestions may be hidden for privacy.": "Vissa förslag kan vara dolda av sekretesskäl.", "Search for rooms or people": "Sök efter rum eller personer", "Message preview": "Meddelandeförhandsgranskning", - "Forward message": "Vidarebefordra meddelande", "Sent": "Skickat", "You don't have permission to do this": "Du har inte behörighet att göra detta", "Error - Mixed content": "Fel - blandat innehåll", @@ -2497,8 +2446,6 @@ "Private (invite only)": "Privat (endast inbjudan)", "This upgrade will allow members of selected spaces access to this room without an invite.": "Den här uppgraderingen kommer att låta medlemmar i valda utrymmen komma åt det här rummet utan en inbjudan.", "This space has no local addresses": "Det här utrymmet har inga lokala adresser", - "Image": "Bild", - "Sticker": "Dekal", "Error processing audio message": "Fel vid hantering av ljudmeddelande", "Decrypting": "Avkrypterar", "The call is in an unknown state!": "Det här samtalet är i ett okänt läge!", @@ -2543,7 +2490,6 @@ "Collapse reply thread": "Kollapsa svarstråd", "Show preview": "Visa förhandsgranskning", "View source": "Visa källkod", - "Forward": "Vidarebefordra", "Settings - %(spaceName)s": "Inställningar - %(spaceName)s", "Please note upgrading will make a new version of the room. All current messages will stay in this archived room.": "Observera att en uppgradering kommer att skapa en ny version av rummet. Alla nuvarande meddelanden kommer att stanna i det arkiverade rummet.", "Automatically invite members from this room to the new one": "Bjud automatiskt in medlemmar från det här rummet till det nya", @@ -2581,7 +2527,6 @@ "Public room": "Offentligt rum", "Private room (invite only)": "Privat rum (endast inbjudan)", "Room visibility": "Rumssynlighet", - "Create a room": "Skapa ett rum", "Only people invited will be able to find and join this room.": "Bara inbjudna personer kommer kunna hitta och gå med i det här rummet.", "Anyone will be able to find and join this room.": "Vem som helst kommer kunna hitta och gå med i det här rummet.", "Anyone will be able to find and join this room, not just members of .": "Vem som helst kommer kunna hitta och gå med i det här rummet, inta bara medlemmar i .", @@ -2620,7 +2565,6 @@ "Change space avatar": "Byt utrymmesavatar", "Anyone in can find and join. You can select other spaces too.": "Vem som helst i kan hitta och gå med. Du kan välja andra utrymmen också.", "%(reactors)s reacted with %(content)s": "%(reactors)s reagerade med %(content)s", - "Message": "Meddelande", "Message didn't send. Click for info.": "Meddelande skickades inte. Klicka för info.", "To join a space you'll need an invite.": "För att gå med i ett utrymme så behöver du en inbjudan.", "Would you like to leave the rooms in this space?": "Vill du lämna rummen i det här utrymmet?", @@ -3057,7 +3001,6 @@ "Switches to this room's virtual room, if it has one": "Byter till det här rummets virtuella rum, om det har ett", "Match system": "Matcha systemet", "Developer tools": "Utvecklarverktyg", - "Video": "Video", "Insert a trailing colon after user mentions at the start of a message": "Infoga kolon efter användaromnämnande på början av ett meddelande", "Show polls button": "Visa omröstningsknapp", "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.": "%(brand)s är experimentell i mobila webbläsare. För en bättre upplevelse och de senaste funktionerna använd våran nativa app.", @@ -3161,7 +3104,6 @@ "Live location ended": "Realtidsposition avslutad", "Live until %(expiryTime)s": "Realtid tills %(expiryTime)s", "Updated %(humanizedUpdateTime)s": "Uppdaterade %(humanizedUpdateTime)s", - "Copy link": "Kopiera länk", "No verification requests found": "Inga verifieringsförfrågningar hittade", "Observe only": "Bara kolla", "Requester": "Den som skickat förfrågan", @@ -3744,7 +3686,6 @@ "Adding…": "Lägger till …", "Write something…": "Skriv nånting …", "Rejecting invite…": "Nekar inbjudan …", - "Loading…": "Laddar …", "Joining room…": "Går med i rum …", "Joining space…": "Går med i utrymme …", "Encrypting your message…": "Krypterar ditt meddelande …", @@ -3887,6 +3828,35 @@ "Views room with given address": "Visar rum med den angivna adressen", "Something went wrong.": "Nånting gick snett.", "New Notification Settings": "Nya aviseringsinställningar", + "common": { + "about": "Om", + "analytics": "Statistik", + "encryption_enabled": "Kryptering aktiverad", + "error": "Fel", + "forward_message": "Vidarebefordra meddelande", + "image": "Bild", + "loading": "Laddar …", + "message": "Meddelande", + "message_layout": "Meddelandearrangemang", + "modern": "Modernt", + "mute": "Tysta", + "no_results": "Inga resultat", + "offline": "Offline", + "password": "Lösenord", + "people": "Personer", + "reactions": "Reaktioner", + "report_a_bug": "Rapportera en bugg", + "room_name": "Rumsnamn", + "security": "Säkerhet", + "settings": "Inställningar", + "sticker": "Dekal", + "success": "Lyckades", + "suggestions": "Förslag", + "unmute": "Avtysta", + "username": "Användarnamn", + "verification_cancelled": "Verifiering avbruten", + "video": "Video" + }, "action": { "reject": "Avböj", "confirm": "Bekräfta", @@ -3911,5 +3881,8 @@ "share": "Dela", "skip": "Hoppa över", "logout": "Logga ut" + }, + "a11y": { + "user_menu": "Användarmeny" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/ta.json b/src/i18n/strings/ta.json index 24eb6eda7961..d34bcc8c7bcf 100644 --- a/src/i18n/strings/ta.json +++ b/src/i18n/strings/ta.json @@ -5,16 +5,13 @@ "Collecting app version information": "செயலியின் பதிப்பு தகவல்கள் சேகரிக்கப்படுகிறது", "Collecting logs": "பதிவுகள் சேகரிக்கப்படுகிறது", "Call invitation": "அழைப்பிற்கான விண்ணப்பம்", - "Error": "பிழை", "Failed to add tag %(tagName)s to room": "%(tagName)s எனும் குறிச்சொல்லை அறையில் சேர்ப்பதில் தோல்வி", "Failed to forget room %(errCode)s": "அறையை மறப்பதில் தோல்வி %(errCode)s", "Favourite": "விருப்பமான", "Invite to this room": "இந்த அறைக்கு அழை", - "Leave": "வெளியேறு", "Low Priority": "குறைந்த முன்னுரிமை", "Failed to remove tag %(tagName)s from room": "அறையில் இருந்து குறிச்சொல் %(tagName)s களை அகற்றுவது தோல்வியடைந்தது", "Messages containing my display name": "என் காட்சி பெயர் கொண்ட செய்திகள்", - "Mute": "முடக்கு", "Messages in group chats": "குழு அரட்டைகளில் உள்ள செய்திகள்", "Messages in one-to-one chats": "ஒரு-க்கு-ஒரு அரட்டைகளில் உள்ள செய்திகள்", "Messages sent by bot": "bot மூலம் அனுப்பிய செய்திகள்", @@ -25,8 +22,6 @@ "On": "மீது", "Operation failed": "செயல்பாடு தோல்வியுற்றது", "powered by Matrix": "Matrix-ஆல் ஆனது", - "Quote": "மேற்கோள்", - "Remove": "நீக்கு", "Resend": "மீண்டும் அனுப்பு", "Search": "தேடு", "Search…": "தேடு…", @@ -37,13 +32,11 @@ "Unavailable": "இல்லை", "unknown error code": "தெரியாத பிழை குறி", "Unnamed room": "பெயரிடப்படாத அறை", - "View Source": "மூலத்தைக் காட்டு", "What's New": "புதிதாக வந்தவை", "What's new?": "புதிதாக என்ன?", "Waiting for response from server": "வழங்கியின் பதிலுக்காக காத்திருக்கிறது", "When I'm invited to a room": "நான் அறைக்கு அழைக்கப்பட்ட போது", "You cannot delete this message. (%(code)s)": "இந்த செய்தியை நீங்கள் அழிக்க முடியாது. (%(code)s)", - "OK": "சரி", "Show message in desktop notification": "திரை அறிவிப்புகளில் செய்தியை காண்பிக்கவும்", "Sunday": "ஞாயிறு", "Monday": "திங்கள்", @@ -61,8 +54,6 @@ "Event sent!": "நிகழ்வு அனுப்பப்பட்டது", "Event Type": "நிகழ்வு வகை", "Event Content": "நிகழ்வு உள்ளடக்கம்", - "Edit": "தொகு", - "Continue": "தொடரவும்", "Register": "பதிவு செய்", "Rooms": "அறைகள்", "This email address is already in use": "இந்த மின்னஞ்சல் முகவரி முன்னதாகவே பயன்பாட்டில் உள்ளது", @@ -70,7 +61,6 @@ "Failed to verify email address: make sure you clicked the link in the email": "மின்னஞ்சல் முகவரியை சரிபார்க்க முடியவில்லை: மின்னஞ்சலில் உள்ள இணைப்பை அழுத்தியுள்ளீர்களா என்பதை உறுதிப்படுத்தவும்", "Your %(brand)s is misconfigured": "உங்கள் %(brand)s தவறாக உள்ளமைக்கப்பட்டுள்ளது", "Sign In": "உள்நுழைக", - "Analytics": "பகுப்பாய்வு", "Call Failed": "அழைப்பு தோல்வியுற்றது", "You cannot place a call with yourself.": "நீங்கள் உங்களுடனே அழைப்பை மேற்கொள்ள முடியாது.", "Permission Required": "அனுமதி தேவை", @@ -139,6 +129,11 @@ "Use Single Sign On to continue": "தொடர ஒற்றை உள்நுழைவைப் பயன்படுத்தவும்", "The user you called is busy.": "நீங்கள் அழைத்தவர் தற்போது வேளையாக இருக்கிறார்.", "User Busy": "பயன்படுத்துபவர் தற்போது வேளையாக இருக்கிறார்", + "common": { + "analytics": "பகுப்பாய்வு", + "error": "பிழை", + "mute": "முடக்கு" + }, "action": { "reject": "நிராகரி", "confirm": "உறுதிப்படுத்தவும்", @@ -147,4 +142,4 @@ "close": "மூடு", "update": "புதுப்பி" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/te.json b/src/i18n/strings/te.json index 901ff07f677a..41dfea3a7d16 100644 --- a/src/i18n/strings/te.json +++ b/src/i18n/strings/te.json @@ -31,12 +31,10 @@ "Command error": "కమాండ్ లోపం", "Commands": "కమ్మండ్స్", "Confirm password": "పాస్వర్డ్ని నిర్ధారించండి", - "Continue": "కొనసాగించు", "Cryptography": "క్రిప్టోగ్రఫీ", "Current password": "ప్రస్తుత పాస్వర్డ్", "Custom level": "అనుకూల స్థాయి", "Deactivate Account": "ఖాతాను డీయాక్టివేట్ చేయండి", - "Decline": "డిక్లైన్", "Deops user with given id": "ఇచ్చిన ID తో వినియోగదారుని విడదీస్తుంది", "Default": "డిఫాల్ట్", "Sun": "ఆదివారం", @@ -73,15 +71,11 @@ "unknown error code": "తెలియని కోడ్ లోపం", "Please enter the code it contains:": "దయచేసి దాన్ని కలిగి ఉన్న కోడ్ను నమోదు చేయండి:", "Unable to restore session": "సెషన్ను పునరుద్ధరించడానికి సాధ్యపడలేదు", - "Remove": "తొలగించు", "Create new room": "క్రొత్త గది సృష్టించండి", - "Error": "లోపం", "Favourite": "గుర్తుంచు", - "Mute": "నిశబ్ధము", "Notifications": "ప్రకటనలు", "Operation failed": "కార్యం విఫలమైంది", "Search": "శోధన", - "Settings": "అమరికలు", "Sunday": "ఆదివారం", "Messages sent by bot": "బాట్ పంపిన సందేశాలు", "Notification targets": "తాఖీదు లక్ష్యాలు", @@ -89,7 +83,6 @@ "Friday": "శుక్రువారం", "On": "వేయుము", "Changelog": "మార్పు వివరణ", - "Leave": "వదిలి", "Source URL": "మూల URL", "Warning": "హెచ్చరిక", "Noisy": "శబ్దం", @@ -124,6 +117,11 @@ "Call Failed": "కాల్ విఫలమయింది", "Confirm adding email": "ఈమెయిల్ చేర్చుటకు ధ్రువీకరించు", "Single Sign On": "సింగిల్ సైన్ ఆన్", + "common": { + "error": "లోపం", + "mute": "నిశబ్ధము", + "settings": "అమరికలు" + }, "action": { "reject": "తిరస్కరించు", "dismiss": "రద్దుచేసే", @@ -131,4 +129,4 @@ "close": "ముసివెయండి", "accept": "అంగీకరించు" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json index 6dd1fbe5993c..ef2e79c62f77 100644 --- a/src/i18n/strings/th.json +++ b/src/i18n/strings/th.json @@ -11,23 +11,17 @@ "Decrypt %(text)s": "ถอดรหัส %(text)s", "Download %(text)s": "ดาวน์โหลด %(text)s", "Emoji": "อีโมจิ", - "Error": "ข้อผิดพลาด", "Low priority": "ความสำคัญต่ำ", "Name": "ชื่อ", - "OK": "ตกลง", - "Password": "รหัสผ่าน", "Profile": "โปรไฟล์", "Reason": "เหตุผล", "Register": "ลงทะเบียน", "%(brand)s version:": "เวอร์ชัน %(brand)s:", - "Mute": "เงียบ", "Notifications": "การแจ้งเตือน", "Operation failed": "การดำเนินการล้มเหลว", "powered by Matrix": "ใช้เทคโนโลยี Matrix", "Search": "ค้นหา", - "Settings": "การตั้งค่า", "unknown error code": "รหัสข้อผิดพลาดที่ไม่รู้จัก", - "Remove": "ลบ", "Favourite": "รายการโปรด", "Failed to forget room %(errCode)s": "การลืมห้องล้มเหลว %(errCode)s", "Admin": "ผู้ดูแล", @@ -54,7 +48,6 @@ "Command error": "คำสั่งผิดพลาด", "Commands": "คำสั่ง", "Confirm password": "ยืนยันรหัสผ่าน", - "Continue": "ดำเนินการต่อ", "Cryptography": "วิทยาการเข้ารหัส", "Current password": "รหัสผ่านปัจจุบัน", "Deactivate Account": "ปิดการใช้งานบัญชี", @@ -83,13 +76,11 @@ "Invalid Email Address": "ที่อยู่อีเมลไม่ถูกต้อง", "Invalid file%(extra)s": "ไฟล์ %(extra)s ไม่ถูกต้อง", "Invited": "เชิญแล้ว", - "Invites": "คำเชิญ", "Invites user with given id to current room": "เชิญผู้ใช้ พร้อม id ของห้องปัจจุบัน", "Sign in with": "เข้าสู่ระบบด้วย", "Join Room": "เข้าร่วมห้อง", "Jump to first unread message.": "ข้ามไปยังข้อความแรกที่ยังไม่ได้อ่าน", "Labs": "ห้องทดลอง", - "Leave room": "ออกจากห้อง", "Missing user_id in request": "ไม่พบ user_id ในคำขอ", "Moderator": "ผู้ช่วยดูแล", "New passwords don't match": "รหัสผ่านใหม่ไม่ตรงกัน", @@ -97,7 +88,6 @@ "not specified": "ไม่ได้ระบุ", "": "<ไม่รองรับ>", "No more results": "ไม่มีผลลัพธ์อื่น", - "No results": "ไม่มีผลลัพธ์", "Passwords can't be empty": "รหัสผ่านต้องไม่ว่าง", "Permissions": "สิทธิ์", "Phone": "โทรศัพท์", @@ -108,7 +98,6 @@ "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s ไม่มีสิทธิ์ส่งการแจ้งเตือน - กรุณาตรวจสอบการตั้งค่าเบราว์เซอร์ของคุณ", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s ไม่ได้รับสิทธิ์ส่งการแจ้งเตือน - กรุณาลองใหม่อีกครั้ง", "Rooms": "ห้องสนทนา", - "Save": "บันทึก", "Search failed": "การค้นหาล้มเหลว", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s ได้ส่งรูป", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s ได้ส่งคำเชิญให้ %(targetDisplayName)s เข้าร่วมห้อง", @@ -123,12 +112,10 @@ "Always show message timestamps": "แสดงเวลาในแชทเสมอ", "Show timestamps in 12 hour format (e.g. 2:30pm)": "แสดงเวลาในแชทในรูปแบบ 12 ชั่วโมง (เช่น 2:30pm)", "Submit": "ส่ง", - "Success": "สำเร็จ", "This email address is already in use": "ที่อยู่อีเมลถูกใช้แล้ว", "This email address was not found": "ไม่พบที่อยู่อีเมล", "This phone number is already in use": "หมายเลขโทรศัพท์นี้ถูกใช้งานแล้ว", "Create new room": "สร้างห้องใหม่", - "Start chat": "เริ่มแชท", "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "ไม่สามารถเชื่อมต่อไปยังเซิร์ฟเวอร์บ้านผ่านทาง HTTP ได้เนื่องจาก URL ที่อยู่บนเบราว์เซอร์เป็น HTTPS กรุณาใช้ HTTPS หรือเปิดใช้งานสคริปต์ที่ไม่ปลอดภัย.", "Export E2E room keys": "ส่งออกกุญแจถอดรหัส E2E", "Failed to change power level": "การเปลี่ยนระดับอำนาจล้มเหลว", @@ -185,7 +172,6 @@ "Unknown error": "ข้อผิดพลาดที่ไม่รู้จัก", "Incorrect password": "รหัสผ่านไม่ถูกต้อง", "Add": "เพิ่ม", - "Decline": "ปฏิเสธ", "Home": "เมนูหลัก", "Unnamed Room": "ห้องที่ยังไม่ได้ตั้งชื่อ", "(~%(count)s results)": { @@ -214,7 +200,6 @@ "On": "เปิด", "Changelog": "บันทึกการเปลี่ยนแปลง", "Waiting for response from server": "กำลังรอการตอบสนองจากเซิร์ฟเวอร์", - "Leave": "ออกจากห้อง", "Warning": "คำเตือน", "This Room": "ห้องนี้", "Resend": "ส่งใหม่", @@ -227,7 +212,6 @@ "No update available.": "ไม่มีอัปเดตที่ใหม่กว่า", "Noisy": "เสียงดัง", "Collecting app version information": "กำลังรวบรวมข้อมูลเวอร์ชันแอป", - "View Source": "ดูซอร์ส", "Tuesday": "วันอังคาร", "Search…": "ค้นหา…", "Unnamed room": "ห้องที่ไม่มีชื่อ", @@ -250,7 +234,6 @@ "Low Priority": "ความสำคัญต่ำ", "Off": "ปิด", "Failed to remove tag %(tagName)s from room": "การลบแท็ก %(tagName)s จากห้องล้มเหลว", - "Quote": "อ้างอิง", "Explore rooms": "สำรวจห้อง", "Sign In": "ลงชื่อเข้า", "Create Account": "สร้างบัญชี", @@ -359,7 +342,6 @@ "Current session": "เซสชันปัจจุบัน", "Your server requires encryption to be enabled in private rooms.": "เซิร์ฟเวอร์ของคุณกำหนดให้เปิดใช้งานการเข้ารหัสในห้องส่วนตัว.", "Encryption not enabled": "ไม่ได้เปิดใช้งานการเข้ารหัส", - "Encryption enabled": "เปิดใช้งานการเข้ารหัส", "End-to-end encryption isn't enabled": "ไม่ได้เปิดใช้งานการเข้ารหัสจากต้นทางถึงปลายทาง", "You won't be able to participate in rooms where encryption is enabled when using this session.": "คุณจะไม่สามารถเข้าร่วมในห้องที่เปิดใช้งานการเข้ารหัสเมื่อใช้เซสชันนี้.", "Once enabled, encryption cannot be disabled.": "เมื่อเปิดใช้งานแล้ว จะไม่สามารถปิดใช้งานการเข้ารหัสได้.", @@ -368,7 +350,6 @@ "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?": "การปิดใช้งานผู้ใช้รายนี้จะออกจากระบบและป้องกันไม่ให้กลับเข้าสู่ระบบ นอกจากนี้ ผู้ใช้จะออกจากห้องทั้งหมดที่พวกเขาอยู่ การดำเนินการนี้ไม่สามารถย้อนกลับได้ คุณแน่ใจหรือไม่ว่าต้องการปิดใช้งานผู้ใช้รายนี้?", "Deactivate user?": "ปิดการใช้งานผู้ใช้?", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "คุณจะไม่สามารถเลิกทำการเปลี่ยนแปลงนี้ได้ เนื่องจากคุณกำลังส่งเสริมผู้ใช้ให้มีระดับพลังเดียวกันกับตัวคุณเอง.", - "Unmute": "เปิดเสียง", "Failed to mute user": "ไม่สามารถปิดเสียงผู้ใช้", "Ban from %(roomName)s": "แบนจาก %(roomName)s", "Unban from %(roomName)s": "ปลดแบนจาก %(roomName)s", @@ -452,19 +433,25 @@ "Failed to connect to integration manager": "ไม่สามารถเชื่อมต่อกับตัวจัดการการรวม", "General failure": "ข้อผิดพลาดทั่วไป", "General": "ทั่วไป", - "Retry": "ลองใหม่", "Download": "ดาวน์โหลด", - "Next": "ถัดไป", "collapse": "ยุบ", - "Invite": "เชิญ", "Ignore": "เพิกเฉย", - "Create": "สร้าง", - "Offline": "ออฟไลน์", "Idle": "ว่าง", "Online": "ออนไลน์", "Your email address does not appear to be associated with a Matrix ID on this homeserver.": "ที่อยู่อีเมลของคุณไม่ได้เชื่อมโยงกับ Matrix ID บนโฮมเซิร์ฟเวอร์นี้", - "Username": "ชื่อผู้ใช้", "Timeline": "เส้นเวลา", + "common": { + "encryption_enabled": "เปิดใช้งานการเข้ารหัส", + "error": "ข้อผิดพลาด", + "mute": "เงียบ", + "no_results": "ไม่มีผลลัพธ์", + "offline": "ออฟไลน์", + "password": "รหัสผ่าน", + "settings": "การตั้งค่า", + "success": "สำเร็จ", + "unmute": "เปิดเสียง", + "username": "ชื่อผู้ใช้" + }, "action": { "reject": "ปฏิเสธ", "confirm": "ยืนยัน", @@ -480,4 +467,4 @@ "skip": "ข้าม", "logout": "ออกจากระบบ" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 97ea5233ec50..3862f06e1aad 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -38,12 +38,10 @@ "Command error": "Komut Hatası", "Commands": "Komutlar", "Confirm password": "Şifreyi Onayla", - "Continue": "Devam Et", "Cryptography": "Kriptografi", "Current password": "Şimdiki Şifre", "Custom level": "Özel seviye", "Deactivate Account": "Hesabı Devre Dışı Bırakma", - "Decline": "Reddet", "Decrypt %(text)s": "%(text)s metninin şifresini çöz", "Deops user with given id": "ID'leriyle birlikte , düşürülmüş kullanıcılar", "Default": "Varsayılan", @@ -53,7 +51,6 @@ "Email address": "E-posta Adresi", "Emoji": "Emoji (Karakter)", "Enter passphrase": "Şifre deyimi Girin", - "Error": "Hata", "Error decrypting attachment": "Ek şifresini çözme hatası", "Export": "Dışa Aktar", "Export E2E room keys": "Uçtan uca Oda anahtarlarını Dışa Aktar", @@ -86,13 +83,11 @@ "Invalid Email Address": "Geçersiz E-posta Adresi", "Invalid file%(extra)s": "Geçersiz dosya %(extra)s'ı", "Invited": "Davet Edildi", - "Invites": "Davetler", "Invites user with given id to current room": "Mevcut odaya verilen kimliği olan kullanıcıyı davet eder", "Sign in with": "Şununla giriş yap", "Join Room": "Odaya Katıl", "Jump to first unread message.": "İlk okunmamış iletiye atla.", "Labs": "Laboratuarlar", - "Leave room": "Odadan ayrıl", "Low priority": "Düşük öncelikli", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s gelecekte oda geçmişini görünür yaptı Tüm oda üyeleri , davet edildiği noktadan.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s gelecekte oda geçmişini görünür yaptı Tüm oda üyeleri , katıldıkları noktalardan.", @@ -102,7 +97,6 @@ "Missing room_id in request": "İstekte eksik room_id", "Missing user_id in request": "İstekte user_id eksik", "Moderator": "Moderatör", - "Mute": "Sessiz", "Name": "İsim", "New passwords don't match": "Yeni şifreler uyuşmuyor", "New passwords must match each other.": "Yeni şifreler birbirleriyle eşleşmelidir.", @@ -111,11 +105,8 @@ "": "", "No display name": "Görünür isim yok", "No more results": "Başka sonuç yok", - "No results": "Sonuç yok", "No users have specific privileges in this room": "Bu odada hiçbir kullanıcının belirli ayrıcalıkları yoktur", - "OK": "Tamam", "Operation failed": "Operasyon başarısız oldu", - "Password": "Şifre", "Passwords can't be empty": "Şifreler boş olamaz", "Permissions": "İzinler", "Phone": "Telefon", @@ -126,7 +117,6 @@ "Reason": "Sebep", "Register": "Kaydolun", "Reject invitation": "Daveti Reddet", - "Remove": "Kaldır", "Return to login screen": "Giriş ekranına dön", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s size bildirim gönderme iznine sahip değil - lütfen tarayıcı ayarlarınızı kontrol edin", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s'a bildirim gönderme izni verilmedi - lütfen tekrar deneyin", @@ -135,7 +125,6 @@ "%(roomName)s does not exist.": "%(roomName)s mevcut değil.", "%(roomName)s is not accessible at this time.": "%(roomName)s şu anda erişilebilir değil.", "Rooms": "Odalar", - "Save": "Kaydet", "Search": "Ara", "Search failed": "Arama başarısız", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s bir resim gönderdi.", @@ -145,7 +134,6 @@ "Server may be unavailable, overloaded, or you hit a bug.": "Sunucu kullanılamıyor , aşırı yüklenmiş , veya bir hatayla karşılaşmış olabilirsiniz.", "Server unavailable, overloaded, or something else went wrong.": "Sunucu kullanılamıyor , aşırı yüklenmiş veya başka bir şey ters gitmiş olabilir.", "Session ID": "Oturum ID", - "Settings": "Ayarlar", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Zaman damgalarını 12 biçiminde göster (örn. 2:30 pm)", "Signed Out": "Oturum Kapatıldı", "Sign in": "Giriş Yap", @@ -153,7 +141,6 @@ "Someone": "Birisi", "Start authentication": "Kimlik Doğrulamayı başlatın", "Submit": "Gönder", - "Success": "Başarılı", "This email address is already in use": "Bu e-posta adresi zaten kullanımda", "This email address was not found": "Bu e-posta adresi bulunamadı", "The email address linked to your account must be entered.": "Hesabınıza bağlı e-posta adresi girilmelidir.", @@ -170,7 +157,6 @@ "Unban": "Yasağı Kaldır", "Unable to enable Notifications": "Bildirimler aktif edilemedi", "unknown error code": "bilinmeyen hata kodu", - "Unmute": "Sesi aç", "Unnamed Room": "İsimsiz Oda", "Uploading %(filename)s": "%(filename)s yükleniyor", "Uploading %(filename)s and %(count)s others": { @@ -229,10 +215,8 @@ "other": "(~%(count)s sonuçlar)" }, "Create new room": "Yeni Oda Oluştur", - "Start chat": "Sohbet Başlat", "New Password": "Yeni Şifre", "Start automatically after system login": "Sisteme giriş yaptıktan sonra otomatik başlat", - "Analytics": "Analitik", "Options": "Seçenekler", "Passphrases must match": "Şifrenin eşleşmesi gerekir", "Passphrase must not be empty": "Şifrenin boş olmaması gerekir", @@ -262,7 +246,6 @@ "Drop file here to upload": "Yüklemek için dosyaları buraya bırakın", "Online": "Çevrimiçi", "Idle": "Boş", - "Offline": "Çevrimdışı", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s odanın avatarını olarak çevirdi", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odanın avatarını kaldırdı.", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s %(roomName)s için avatarı değiştirdi", @@ -281,7 +264,6 @@ "On": "Açık", "Changelog": "Değişiklikler", "Waiting for response from server": "Sunucudan yanıt bekleniyor", - "Leave": "Ayrıl", "This Room": "Bu Oda", "Noisy": "Gürültülü", "Messages in one-to-one chats": "Bire bir sohbetlerdeki mesajlar", @@ -297,7 +279,6 @@ "Collecting logs": "Kayıtlar toplanıyor", "All Rooms": "Tüm Odalar", "Wednesday": "Çarşamba", - "Quote": "Alıntı", "Send": "Gönder", "Send logs": "Kayıtları gönder", "All messages": "Tüm mesajlar", @@ -314,7 +295,6 @@ "Low Priority": "Düşük Öncelikli", "Off": "Kapalı", "Failed to remove tag %(tagName)s from room": "Odadan %(tagName)s etiketi kaldırılamadı", - "View Source": "Kaynağı Görüntüle", "Add Email Address": "Eposta Adresi Ekle", "Add Phone Number": "Telefon Numarası Ekle", "Call Failed": "Arama Başarısız", @@ -359,8 +339,6 @@ "%(brand)s URL": "%(brand)s Linki", "Room ID": "Oda ID", "More options": "Daha fazla seçenek", - "Yes": "Evet", - "No": "Hayır", "expand": "genişlet", "Rotate Left": "Sola Döndür", "Rotate Right": "Sağa Döndür", @@ -422,7 +400,6 @@ "Notes": "Notlar", "Removing…": "Siliniyor…", "Clear all data": "Bütün verileri sil", - "Create": "Oluştur", "Please enter a name for the room": "Lütfen oda için bir ad girin", "Create a private room": "Özel bir oda oluştur", "Hide advanced": "Gelişmiş gizle", @@ -473,7 +450,6 @@ "Service": "Hizmet", "Summary": "Özet", "Document": "Belge", - "Next": "İleri", "Upload files": "Dosyaları yükle", "Upload all": "Hepsini yükle", "Cancel All": "Hepsi İptal", @@ -481,12 +457,10 @@ "Unable to load backup status": "Yedek durumu yüklenemiyor", "Unable to restore backup": "Yedek geri dönüşü yapılamıyor", "No backup found!": "Yedek bulunamadı!", - "Report Content": "İçeriği Raporla", "Remove for everyone": "Herkes için sil", "This homeserver would like to make sure you are not a robot.": "Bu ana sunucu sizin bir robot olup olmadığınızdan emin olmak istiyor.", "Country Dropdown": "Ülke Listesi", "Code": "Kod", - "Username": "Kullanıcı Adı", "Use an email address to recover your account": "Hesabınızı kurtarmak için bir e-posta adresi kullanın", "Enter email address (required on this homeserver)": "E-posta adresi gir ( bu ana sunucuda gerekli)", "Doesn't look like a valid email address": "Geçerli bir e-posta adresine benzemiyor", @@ -552,7 +526,6 @@ "That doesn't match.": "Eşleşmiyor.", "Download": "İndir", "Success!": "Başarılı!", - "Retry": "Yeniden Dene", "Unable to create key backup": "Anahtar yedeği oluşturulamıyor", "New Recovery Method": "Yeni Kurtarma Yöntemi", "Go to Settings": "Ayarlara Git", @@ -732,7 +705,6 @@ "Deactivate user?": "Kullanıcıyı pasifleştir?", "Deactivate user": "Kullanıcıyı pasifleştir", "Failed to deactivate user": "Kullanıcı pasifleştirme başarısız", - "Invite": "Davet", "Share Link to User": "Kullanıcıya Link Paylaş", "Send an encrypted reply…": "Şifrelenmiş bir cevap gönder…", "Send an encrypted message…": "Şifreli bir mesaj gönder…", @@ -785,9 +757,6 @@ "other": "%(count)s doğrulanmış oturum", "one": "1 doğrulanmış oturum" }, - "Security": "Güvenlik", - "Reply": "Cevapla", - "Edit": "Düzenle", "Message Actions": "Mesaj Eylemleri", "Show image": "Resim göster", "You verified %(name)s": "%(name)s yı doğruladınız", @@ -799,7 +768,6 @@ "%(name)s wants to verify": "%(name)s doğrulamak istiyor", "You sent a verification request": "Doğrulama isteği gönderdiniz", "Show all": "Hepsini göster", - "Reactions": "Tepkiler", "Click here to see older messages.": "Daha eski mesajları görmek için buraya tıklayın.", "Copied!": "Kopyalandı!", "Failed to copy": "Kopyalama başarısız", @@ -856,8 +824,6 @@ "You're previewing %(roomName)s. Want to join it?": "%(roomName)s odasını inceliyorsunuz. Katılmak ister misiniz?", "You don't currently have any stickerpacks enabled": "Açılmış herhangi bir çıkartma paketine sahip değilsiniz", "Room Topic": "Oda Başlığı", - "Start": "Başlat", - "Done": "Bitti", "Go Back": "Geri dön", "Gets or sets the room topic": "Oda başlığını getirir yada ayarlar", "Unbans user with given ID": "Verilen ID ile kullanıcı yasağını kaldırır", @@ -1030,7 +996,6 @@ "Please contact your service administrator to continue using this service.": "Bu servisi kullanmaya devam etmek için lütfen servis yöneticinizle bağlantı kurun.", "Failed to perform homeserver discovery": "Anasunucu keşif işlemi başarısız", "Go back to set it again.": "Geri git ve yeniden ayarla.", - "Copy": "Kopyala", "Upgrade your encryption": "Şifrelemenizi güncelleyin", "Create key backup": "Anahtar yedeği oluştur", "Set up Secure Messages": "Güvenli Mesajları Ayarla", @@ -1049,7 +1014,6 @@ "in secret storage": "sır deposunda", "Secret storage public key:": "Sır deposu açık anahtarı:", "Manage": "Yönet", - "Enable": "Aç", "The integration manager is offline or it cannot reach your homeserver.": "Entegrasyon yöneticisi çevrim dışı veya anasunucunuza erişemiyor.", "Connect this session to Key Backup": "Anahtar Yedekleme için bu oturuma bağlanın", "This backup is trusted because it has been restored on this session": "Bu yedek güvenilir çünkü bu oturumda geri döndürüldü", @@ -1109,7 +1073,6 @@ "Session name": "Oturum adı", "Session key": "Oturum anahtarı", "Recent Conversations": "Güncel Sohbetler", - "Suggestions": "Öneriler", "Recently Direct Messaged": "Güncel Doğrudan Mesajlar", "Go": "Git", "Sign In or Create Account": "Oturum Açın veya Hesap Oluşturun", @@ -1570,12 +1533,9 @@ "Video conference started by %(senderName)s": "Video konferans %(senderName)s tarafından başlatıldı", "Video conference updated by %(senderName)s": "Video konferans %(senderName)s tarafından güncellendi", "Video conference ended by %(senderName)s": "Video konferans %(senderName)s tarafından sonlandırıldı", - "React": "Tepki ver", "The encryption used by this room isn't supported.": "Bu odada kullanılan şifreleme desteklenmiyor.", "Encryption not enabled": "Şifreleme etkin değil", "Ignored attempt to disable encryption": "Şifrelemeyi devre dışı bırakma denemesi yok sayıldı", - "Encryption enabled": "Şifreleme etkin", - "Verification cancelled": "Doğrulama iptal edildi", "You cancelled verification.": "Doğrulamayı iptal ettiniz.", "%(displayName)s cancelled verification.": "%(displayName)s doğrulamayı iptal etti.", "Verification timed out.": "Doğrulama zaman aşımına uğradı.", @@ -1630,7 +1590,6 @@ "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "Adres oluşturulurken hata ile karşılaşıldı. Sunucu tarafından izin verilmemiş yada geçici bir hata olabilir.", "Error creating address": "Adres oluşturulurken hata", "Explore public rooms": "Herkese açık odaları keşfet", - "People": "İnsanlar", "Show Widgets": "Widgetları Göster", "Hide Widgets": "Widgetları gizle", "No recently visited rooms": "Yakında ziyaret edilen oda yok", @@ -1759,7 +1718,6 @@ "Widgets": "Widgetlar", "Unpin": "Sabitlemeyi kaldır", "Download logs": "Günlükleri indir", - "User menu": "Kullanıcı menüsü", "Notification options": "Bildirim ayarları", "Looks good!": "İyi görünüyor!", "Security Key": "Güvenlik anahtarı", @@ -1785,13 +1743,10 @@ "Approve": "Onayla", "Homeserver": "Ana sunucu", "Information": "Bilgi", - "About": "Hakkında", - "Modern": "Modern", "Ctrl": "Ctrl", "Shift": "Shift", "Alt": "Alt", "Calls": "Aramalar", - "Disable": "Devre dışı bırak", "Feedback": "Geri bildirim", "Matrix": "Matrix", "Categories": "Kategoriler", @@ -1807,7 +1762,6 @@ "Complete": "Tamamla", "Privacy": "Gizlilik", "New version available. Update now.": "Yeni sürüm mevcut: Şimdi güncelle.", - "Message layout": "Mesaj düzeni", "Use between %(min)s pt and %(max)s pt": "%(min)s ile %(max)s arasında girin", "Custom font size can only be between %(min)s pt and %(max)s pt": "Özel yazı tipi boyutu %(min)s ile %(max)s arasında olmalı", "Size must be a number": "Boyut bir sayı olmalıdır", @@ -2011,6 +1965,27 @@ }, "Current session": "Şimdiki oturum", "Search (must be enabled)": "Arama (etkinleştirilmeli)", + "common": { + "about": "Hakkında", + "analytics": "Analitik", + "encryption_enabled": "Şifreleme etkin", + "error": "Hata", + "message_layout": "Mesaj düzeni", + "modern": "Modern", + "mute": "Sessiz", + "no_results": "Sonuç yok", + "offline": "Çevrimdışı", + "password": "Şifre", + "people": "İnsanlar", + "reactions": "Tepkiler", + "security": "Güvenlik", + "settings": "Ayarlar", + "success": "Başarılı", + "suggestions": "Öneriler", + "unmute": "Sesi aç", + "username": "Kullanıcı Adı", + "verification_cancelled": "Doğrulama iptal edildi" + }, "action": { "reject": "Reddet", "confirm": "Doğrula", @@ -2028,5 +2003,8 @@ "share": "Paylaş", "skip": "Atla", "logout": "Çıkış Yap" + }, + "a11y": { + "user_menu": "Kullanıcı menüsü" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/tzm.json b/src/i18n/strings/tzm.json index 6037ea590d3a..cabfdc7323bb 100644 --- a/src/i18n/strings/tzm.json +++ b/src/i18n/strings/tzm.json @@ -22,8 +22,6 @@ "Tue": "Asn", "Mon": "Ayn", "Sun": "Asa", - "OK": "WAX", - "Error": "Tazgelt", "Add Phone Number": "Rnu uṭṭun n utilifun", "Add Email Address": "Rnu tasna imayl", "Permissions": "Tisirag", @@ -62,7 +60,6 @@ "Calls": "Iɣuṛiten", "Emoji": "Imuji", "Afghanistan": "Afɣanistan", - "Leave": "Fel", "Phone": "Atilifun", "Email": "Imayl", "Go": "Ddu", @@ -72,14 +69,9 @@ "edited": "infel", "Copied!": "inɣel!", "Home": "Asnubeg", - "Reply": "Rar", - "Yes": "Yah", - "About": "Xef", "Search…": "Arezzu…", "A-Z": "A-Ẓ", - "Settings": "Tisɣal", "Re-join": "als-lkem", - "People": "Midden", "Search": "Rzu", "%(duration)sd": "%(duration)sas", "Camera": "Takamiṛa", @@ -90,9 +82,7 @@ "Account": "Amiḍan", "Theme": "Asgum", "Algorithm:": "Talguritmit:", - "Save": "Ḥḍu", "Profile": "Ifres", - "Remove": "KKes", "Folder": "Asdaw", "Guitar": "Agiṭaṛ", "Ball": "Tacama", @@ -119,16 +109,19 @@ "Lion": "Izem", "Cat": "Amuc", "Dog": "Aydi", - "Decline": "Agy", "Guest": "Anebgi", "Ok": "Wax", "Notifications": "Tineɣmisin", - "No": "Uhu", "Dark": "Adeɣmum", "Usage": "Asemres", "Feb": "Bṛa", "Jan": "Yen", - "Continue": "Kemmel", + "common": { + "about": "Xef", + "error": "Tazgelt", + "people": "Midden", + "settings": "Tisɣal" + }, "action": { "reject": "Agy", "confirm": "Sentem", @@ -140,4 +133,4 @@ "share": "Bḍu", "logout": "Ffeɣ" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 436d77f02b9f..baac4aa9a228 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -1,20 +1,13 @@ { "Create new room": "Створити нову кімнату", - "Error": "Помилка", "Failed to forget room %(errCode)s": "Не вдалось видалити кімнату %(errCode)s", "Favourite": "Улюблені", - "Mute": "Стишити", "Notifications": "Сповіщення", "Operation failed": "Не вдалося виконати дію", "powered by Matrix": "працює на Matrix", - "Remove": "Прибрати", "Search": "Пошук", - "Settings": "Налаштування", - "Start chat": "Почати розмову", "unknown error code": "невідомий код помилки", - "OK": "Гаразд", "Failed to change password. Is your password correct?": "Не вдалось змінити пароль. Ви впевнені, що пароль введено правильно?", - "Continue": "Продовжити", "Account": "Обліковий запис", "Add": "Додати", "Admin": "Адміністратор", @@ -52,7 +45,6 @@ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s змінює тему на %(topic)s.", "Email": "Е-пошта", "Email address": "Адреса е-пошти", - "Edit": "Змінити", "Register": "Зареєструватися", "Rooms": "Кімнати", "This email address is already in use": "Ця е-пошта вже використовується", @@ -67,7 +59,6 @@ "On": "Увімкнено", "Changelog": "Журнал змін", "Waiting for response from server": "Очікується відповідь від сервера", - "Leave": "Вийти", "Failed to send logs: ": "Не вдалося надіслати журнали: ", "Warning": "Попередження", "This Room": "Ця кімната", @@ -92,20 +83,17 @@ "All Rooms": "Усі кімнати", "Wednesday": "Середа", "You cannot delete this message. (%(code)s)": "Ви не можете видалити це повідомлення. (%(code)s)", - "Quote": "Цитувати", "Send": "Надіслати", "Send logs": "Надіслати журнали", "All messages": "Усі повідомлення", "Call invitation": "Запрошення до виклику", "State Key": "Ключ стану", "What's new?": "Що нового?", - "View Source": "Переглянути код", "Invite to this room": "Запросити до цієї кімнати", "Thursday": "Четвер", "Search…": "Пошук…", "Logs sent": "Журнали надіслані", "Back": "Назад", - "Reply": "Відповісти", "Show message in desktop notification": "Показувати повідомлення у стільничних сповіщеннях", "Messages in group chats": "Повідомлення у групових бесідах", "Yesterday": "Вчора", @@ -121,7 +109,6 @@ "Reject all %(invitedRooms)s invites": "Відхилити запрошення до усіх %(invitedRooms)s", "Profile": "Профіль", "Failed to verify email address: make sure you clicked the link in the email": "Не вдалось перевірити адресу електронної пошти: переконайтесь, що ви перейшли за посиланням у листі", - "Analytics": "Аналітика", "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Введіть пароль для захисту експортованого файлу. Щоб розшифрувати файл потрібно буде ввести цей пароль.", "Call Failed": "Виклик не вдався", "You cannot place a call with yourself.": "Ви не можете подзвонити самим собі.", @@ -176,7 +163,6 @@ "Usage": "Використання", "Changes your display nickname": "Змінює ваш нік", "Invites user with given id to current room": "Запрошує користувача зі вказаним ID до кімнати", - "Leave room": "Вийти з кімнати", "Ignores a user, hiding their messages from you": "Ігнорує користувача, приховуючи його повідомлення від вас", "Ignored user": "Зігнорований користувач", "You are now ignoring %(userId)s": "Ви ігноруєте %(userId)s", @@ -223,7 +209,6 @@ "Enable inline URL previews by default": "Увімкнути вбудований перегляд гіперпосилань за умовчанням", "Enable URL previews for this room (only affects you)": "Увімкнути попередній перегляд гіперпосилань в цій кімнаті (стосується тільки вас)", "Enable URL previews by default for participants in this room": "Увімкнути попередній перегляд гіперпосилань за умовчанням для учасників цієї кімнати", - "Decline": "Відхилити", "Incorrect verification code": "Неправильний код перевірки", "Submit": "Надіслати", "Phone": "Телефон", @@ -233,7 +218,6 @@ "Export E2E room keys": "Експортувати ключі наскрізного шифрування кімнат", "Do you want to set an email address?": "Бажаєте вказати адресу е-пошти?", "Current password": "Поточний пароль", - "Password": "Пароль", "New Password": "Новий пароль", "Confirm password": "Підтвердження пароля", "Failed to set display name": "Не вдалося налаштувати псевдонім", @@ -396,7 +380,6 @@ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "Текстове повідомлення надіслано на номер +%(msisdn)s. Введіть код перевірки з нього.", "Messages in this room are end-to-end encrypted.": "Повідомлення у цій кімнаті захищено наскрізним шифруванням.", "Messages in this room are not end-to-end encrypted.": "Повідомлення у цій кімнаті не захищено наскрізним шифруванням.", - "Encryption enabled": "Шифрування увімкнено", "You sent a verification request": "Ви надіслали запит перевірки", "Direct Messages": "Особисті повідомлення", "Room Settings - %(roomName)s": "Налаштування кімнати - %(roomName)s", @@ -457,7 +440,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) починає новий сеанс без його звірення:", "Ask this user to verify their session, or manually verify it below.": "Попросіть цього користувача звірити сеанс, або звірте його власноруч унизу.", "Not Trusted": "Не довірений", - "Done": "Готово", "%(displayName)s is typing …": "%(displayName)s пише…", "%(names)s and %(count)s others are typing …": { "other": "%(names)s та ще %(count)s учасників пишуть…", @@ -516,7 +498,6 @@ "Common names and surnames are easy to guess": "Розповсюджені імена та прізвища легко вгадувані", "Straight rows of keys are easy to guess": "Прямі ради клавіш легко вгадувані", "Short keyboard patterns are easy to guess": "Короткі клавіатурні шаблони легко вгадувані", - "No": "НІ", "Your homeserver has exceeded its user limit.": "Ваш домашній сервер перевищив свій ліміт користувачів.", "Your homeserver has exceeded one of its resource limits.": "Ваш домашній сервер перевищив одне із своїх обмежень ресурсів.", "Contact your server admin.": "Зверніться до адміністратора сервера.", @@ -595,12 +576,10 @@ "Change settings": "Змінити налаштування", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (повноваження %(powerLevelNumber)s)", "Send a message…": "Надіслати повідомлення…", - "People": "Люди", "Share this email in Settings to receive invites directly in %(brand)s.": "Поширте цю адресу е-пошти у налаштуваннях, щоб отримувати запрошення безпосередньо в %(brand)s.", "Room options": "Параметри кімнати", "Send as message": "Надіслати як повідомлення", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Ви не зможете скасувати цю зміну через те, що ви підвищуєте рівень повноважень користувача до свого рівня.", - "React": "Відреагувати", "Message deleted": "Повідомлення видалено", "Message deleted by %(name)s": "Повідомлення видалено %(name)s", "Message deleted on %(date)s": "Повідомлення видалено %(date)s", @@ -609,7 +588,6 @@ "Confirm by comparing the following with the User Settings in your other session:": "Підтвердьте шляхом порівняння наступного рядка з рядком у користувацьких налаштуваннях вашого іншого сеансу:", "Confirm this user's session by comparing the following with their User Settings:": "Підтвердьте сеанс цього користувача шляхом порівняння наступного рядка з рядком з їхніх користувацьких налаштувань:", "All settings": "Усі налаштування", - "User menu": "Користувацьке меню", "Go to Settings": "Перейти до налаштувань", "Compare unique emoji": "Порівняйте унікальні емодзі", "Cancelling…": "Скасування…", @@ -691,14 +669,12 @@ "Cross-signing private keys:": "Приватні ключі перехресного підписування:", "exists": "існує", "Manage": "Керування", - "Enable": "Увімкнути", "Cannot connect to integration manager": "Не вдалося з'єднатися з менеджером інтеграцій", "Delete Backup": "Видалити резервну копію", "Restore from Backup": "Відновити з резервної копії", "not stored": "не збережено", "All keys backed up": "Усі ключі збережено", "Enable audible notifications for this session": "Увімкнути звукові сповіщення для цього сеансу", - "Save": "Зберегти", "Checking server": "Перевірка сервера", "Disconnect": "Від'єднатися", "You should:": "Вам варто:", @@ -742,7 +718,6 @@ "Failed to revoke invite": "Не вдалось відкликати запрошення", "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Не вдалось відкликати запрошення. Сервер може мати тимчасові збої або у вас немає достатніх дозволів щоб відкликати запрошення.", "Revoke invite": "Відкликати запрошення", - "Security": "Безпека", "Report Content to Your Homeserver Administrator": "Поскаржитися на вміст адміністратору вашого домашнього сервера", "Failed to upgrade room": "Не вдалось поліпшити кімнату", "The room upgrade could not be completed": "Поліпшення кімнати не може бути завершене", @@ -751,7 +726,6 @@ "Upgrade private room": "Поліпшити закриту кімнату", "You'll upgrade this room from to .": "Ви поліпшите цю кімнату з до версії.", "Share Room Message": "Поділитися повідомленням кімнати", - "Report Content": "Поскаржитись на вміст", "Feedback": "Відгук", "General failure": "Загальний збій", "Enter your account password to confirm the upgrade:": "Введіть пароль вашого облікового запису щоб підтвердити поліпшення:", @@ -803,7 +777,6 @@ "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "У зашифрованих кімнатах ваші повідомлення є захищеними, тож тільки ви та отримувач маєте ключі для їх розблокування.", "Failed to copy": "Не вдалося скопіювати", "Your display name": "Ваш псевдонім", - "Copy": "Скопіювати", "Cancel replying to a message": "Скасувати відповідання на повідомлення", "Page Up": "Page Up", "Page Down": "Page Down", @@ -1261,7 +1234,6 @@ "Share Room": "Поділитись кімнатою", "Share room": "Поділитись кімнатою", "Invite people": "Запросити людей", - "Next": "Далі", "Document": "Документ", "Summary": "Опис", "Service": "Служба", @@ -1271,7 +1243,6 @@ "The identity server you have chosen does not have any terms of service.": "Вибраний вами сервер ідентифікації не містить жодних умов користування.", "Terms of service not accepted or the identity server is invalid.": "Умови користування не прийнято або сервер ідентифікації недійсний.", "About homeservers": "Про домашні сервери", - "About": "Відомості", "%(senderName)s changed the pinned messages for the room.": "%(senderName)s змінює прикріплене повідомлення для кімнати.", "%(senderName)s withdrew %(targetName)s's invitation": "%(senderName)s відкликає запрошення %(targetName)s", "%(senderName)s withdrew %(targetName)s's invitation: %(reason)s": "%(senderName)s відкликає запрошення %(targetName)s: %(reason)s", @@ -1322,7 +1293,6 @@ "Zoom in": "Збільшити", "Zoom out": "Зменшити", "collapse": "згорнути", - "No results": "Немає результатів", "Application window": "Вікно застосунку", "Error - Mixed content": "Помилка — змішаний вміст", "Widget ID": "ID віджету", @@ -1417,7 +1387,6 @@ "Report the entire room": "Поскаржитися на всю кімнату", "What this user is writing is wrong.\nThis will be reported to the room moderators.": "Те, що пише цей користувач, неправильно.\nПро це буде повідомлено модераторам кімнати.", "Please fill why you're reporting.": "Будь ласка, вкажіть, чому ви скаржитеся.", - "Report a bug": "Повідомити про ваду", "Share %(name)s": "Поділитися %(name)s", "Share User": "Поділитися користувачем", "Share content": "Поділитися вмістом", @@ -1427,11 +1396,8 @@ "Unable to share email address": "Не вдалося надіслати адресу е-пошти", "Share invite link": "Надіслати запрошувальне посилання", "%(sharerName)s is presenting": "%(sharerName)s показує", - "Yes": "Так", "Invite to %(spaceName)s": "Запросити до %(spaceName)s", "Share your public space": "Поділитися своїм загальнодоступним простором", - "Forward": "Переслати", - "Forward message": "Переслати повідомлення", "Join the beta": "Долучитися до бета-тестування", "Some suggestions may be hidden for privacy.": "Деякі пропозиції можуть бути сховані для приватності.", "Privacy": "Приватність", @@ -1455,9 +1421,7 @@ "Allow this widget to verify your identity": "Дозволити цьому віджету перевіряти вашу особу", "New? Create account": "Вперше тут? Створіть обліковий запис", "Forgotten your password?": "Забули свій пароль?", - "Forgot password?": "Забули пароль?", " invited you": " запрошує вас", - "Username": "Ім'я користувача", "%(ssoButtons)s Or %(usernamePassword)s": "%(ssoButtons)s або %(usernamePassword)s", "Sign in with": "Увійти за допомогою", "Sign in with SSO": "Увійти за допомогою SSO", @@ -1481,7 +1445,6 @@ "Show stickers button": "Показати кнопку наліпок", "%(senderName)s ended the call": "%(senderName)s завершує виклик", "You ended the call": "Ви завершили виклик", - "Learn more": "Докладніше", "New version of %(brand)s is available": "Доступна нова версія %(brand)s", "Update %(brand)s": "Оновити %(brand)s", "%(deviceId)s from %(ip)s": "%(deviceId)s з %(ip)s", @@ -1513,7 +1476,6 @@ "Confirm to continue": "Підтвердьте, щоб продовжити", "Now, let's help you get started": "Тепер допоможімо вам почати", "Start authentication": "Почати автентифікацію", - "Start": "Почати", "Start Verification": "Почати перевірку", "Start chatting": "Почати спілкування", "This is the start of .": "Це початок .", @@ -1557,7 +1519,6 @@ "Topic (optional)": "Тема (не обов'язково)", "Create a private room": "Створити приватну кімнату", "Create a public room": "Створити загальнодоступну кімнату", - "Create a room": "Створити кімнату", "Everyone in will be able to find and join this room.": "Усі в зможуть знайти та приєднатися до цієї кімнати.", "Please enter a name for the room": "Введіть назву кімнати", "Reason (optional)": "Причина (не обов'язково)", @@ -1626,7 +1587,6 @@ "Room List": "Перелік кімнат", "Calls": "Виклики", "Navigation": "Навігація", - "Disable": "Вимкнути", "Import": "Імпорт", "File to import": "Файл для імпорту", "User Autocomplete": "Автозаповнення користувача", @@ -1652,7 +1612,6 @@ "What do you want to organise?": "Що б ви хотіли організувати?", "Skip for now": "Пропустити зараз", "Failed to create initial space rooms": "Не вдалося створити початкові кімнати простору", - "Room name": "Назва кімнати", "Support": "Підтримка", "Random": "Випадковий", "Welcome to ": "Вітаємо у ", @@ -1695,8 +1654,6 @@ "Error saving notification preferences": "Помилка збереження налаштувань сповіщень", "Messages containing keywords": "Повідомлення, що містять ключові слова", "Message bubbles": "Бульбашки повідомлень", - "Modern": "Сучасний", - "Message layout": "Макет повідомлення", "This upgrade will allow members of selected spaces access to this room without an invite.": "Це поліпшення дозволить учасникам обраних просторів доступитися до цієї кімнати без запрошення.", "Space members": "Учасники простору", "Anyone in a space can find and join. You can select multiple spaces.": "Будь-хто у просторі може знайти та приєднатися. Можна вибрати кілька просторів.", @@ -1769,7 +1726,6 @@ "Click to copy": "Клацніть, щоб скопіювати", "All rooms": "Усі кімнати", "Show all rooms": "Показати всі кімнати", - "Create": "Створити", "You can change these anytime.": "Ви можете змінити це будь-коли.", "Add some details to help people recognise it.": "Додайте якісь подробиці, щоб допомогти людям дізнатися про нього.", "Your private space": "Ваш приватний простір", @@ -1824,7 +1780,6 @@ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s вилучає аватар кімнати.", "reacted with %(shortName)s": "додає реакцію %(shortName)s", "%(reactors)s reacted with %(content)s": "%(reactors)s додає реакцію %(content)s", - "Reactions": "Реакції", "Add reaction": "Додати реакцію", "%(senderDisplayName)s sent a sticker.": "%(senderDisplayName)s надсилає наліпку.", "%(senderDisplayName)s changed the room avatar.": "%(senderDisplayName)s змінює аватар кімнати.", @@ -1875,15 +1830,11 @@ "other": "були запрошені %(count)s разів" }, "Widget added by": "Вджет додано", - "Image": "Зображення", - "Sticker": "Наліпка", "Decrypt %(text)s": "Розшифрувати %(text)s", "Decrypting": "Розшифрування", "Downloading": "Завантаження", "Missed call": "Пропущений виклик", - "Retry": "Повторити спробу", "Got it": "Зрозуміло", - "Message": "Повідомлення", "%(count)s sessions": { "one": "%(count)s сеанс", "other": "Сеансів: %(count)s" @@ -1917,7 +1868,6 @@ "Reason: %(reason)s": "Причина: %(reason)s", "Sign Up": "Зареєструватися", "Empty room": "Порожня кімната", - "Invites": "Запрошення", "Show Widgets": "Показати віджети", "Hide Widgets": "Сховати віджети", "Forget room": "Забути кімнату", @@ -1929,7 +1879,6 @@ "Recently visited rooms": "Недавно відвідані кімнати", "Room %(name)s": "Кімната %(name)s", "Unknown": "Невідомо", - "Offline": "Не в мережі", "Idle": "Неактивний", "Online": "У мережі", "Unknown for %(duration)s": "Невідомо %(duration)s", @@ -2043,7 +1992,6 @@ "This looks like a valid Security Key!": "Це схоже на дійсний ключ безпеки!", "Not a valid Security Key": "Хибний ключ безпеки", "No backup found!": "Резервних копій не знайдено!", - "Copy link": "Копіювати посилання", "Mentions only": "Лише згадки", "Forget": "Забути", "Modal Widget": "Модальний віджет", @@ -2322,7 +2270,6 @@ "Go": "Уперед", "Start a conversation with someone using their name or username (like ).": "Почніть розмову з кимось, ввівши їхнє ім'я чи користувацьке ім'я (вигляду ).", "Start a conversation with someone using their name, email address or username (like ).": "Почніть розмову з кимось, ввівши їхнє ім'я, е-пошту чи користувацьке ім'я (вигляду ).", - "Suggestions": "Пропозиції", "If you can't see who you're looking for, send them your invite link below.": "Якщо тут немає тих, кого шукаєте, надішліть їм запрошувальне посилання внизу.", "Open dial pad": "Відкрити номеронабирач", "Dial pad": "Номеронабирач", @@ -2348,7 +2295,6 @@ "Invite by email": "Запросити е-поштою", "Something went wrong with your invite to %(roomName)s": "Щось пішло не так з вашим запрошенням до %(roomName)s", "Accept all %(invitedRooms)s invites": "Прийняти всі %(invitedRooms)s запрошення", - "Invite": "Запросити", "Invite someone using their name, username (like ) or share this room.": "Запросіть когось за іменем, користувацьким іменем (вигляду ) чи поділіться цією кімнатою.", "Invite someone using their name, email address, username (like ) or share this room.": "Запросіть когось за іменем, е-поштою, користувацьким іменем (вигляду ) чи поділіться цією кімнатою.", "Add a photo, so people can easily spot your room.": "Додайте фото, щоб люди легко вирізняли вашу кімнату.", @@ -2502,7 +2448,6 @@ "The call is in an unknown state!": "Стан виклику невідомий!", "Unknown failure: %(reason)s": "Невідомий збій: %(reason)s", "No answer": "Без відповіді", - "Verification cancelled": "Звірка скасована", "You cancelled verification.": "Ви скасували звірку.", "%(displayName)s cancelled verification.": "%(displayName)s скасовує звірку.", "Verification timed out.": "Термін дії звірки завершився.", @@ -2511,7 +2456,6 @@ "In encrypted rooms, verify all users to ensure it's secure.": "У зашифрованих кімнатах, звіряйте всіх користувачів, щоб спілкуватися було безпечно.", "Verify all users in a room to ensure it's secure.": "Звірте всіх користувачів у кімнаті, щоб забезпечити її захищеність.", "Ask %(displayName)s to scan your code:": "Попросіть %(displayName)s відсканувати ваш код:", - "Unmute": "Розтишити", "They won't be able to access whatever you're not an admin of.": "Вони не матимуть доступу ні до чого, де ви не є адміністратором.", "Ban them from specific things I'm able to": "Заблокувати в частині того, куди маю доступ", "Unban them from specific things I'm able to": "Розблокувати в частині того, куди маю доступ", @@ -2592,7 +2536,6 @@ "Show tray icon and minimise window to it on close": "Згортати вікно до піктограми в лотку при закритті", "Warn before quitting": "Застерігати перед виходом", "Add users and servers you want to ignore here. Use asterisks to have %(brand)s match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Додайте сюди користувачів і сервери, якими нехтуєте. Використовуйте зірочки, де %(brand)s має підставляти довільні символи. Наприклад, @бот:* нехтуватиме всіма користувачами з іменем «бот» на будь-якому сервері.", - "Success": "Успіх", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Вкажіть назву шрифту, встановленого у вашій системі, й %(brand)s спробує його використати.", "Add theme": "Додати тему", "Custom theme URL": "Посилання на власну тему", @@ -3110,7 +3053,6 @@ "%(value)sd": "%(value)sд", "Share for %(duration)s": "Поділитися на %(duration)s", "%(timeRemaining)s left": "Іще %(timeRemaining)s", - "Video": "Відео", "Previous recently visited room or space": "Попередня недавно відвідана кімната або простір", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "Журнали зневадження містять дані використання застосунків, включно з вашим іменем користувача, ID або псевдонімами відвіданих вами кімнат, дані про взаємодію з елементами, та імена користувачів інших користувачів. Вони не містять повідомлень.", "Next recently visited room or space": "Наступна недавно відвідана кімната або простір", @@ -3737,7 +3679,6 @@ "Adding…": "Додавання…", "Write something…": "Напишіть щось…", "Rejecting invite…": "Відхилення запрошення…", - "Loading…": "Завантаження…", "Joining room…": "Приєднання до кімнати…", "Joining space…": "Приєднання до простору…", "Encrypting your message…": "Шифрування повідомлення…", @@ -3947,6 +3888,35 @@ "This server is using an older version of Matrix. Upgrade to Matrix %(version)s to use %(brand)s without errors.": "Цей сервер використовує стару версію Matrix. Оновіть Matrix до %(version)s, щоб використовувати %(brand)s без помилок.", "Your homeserver is too old and does not support the minimum API version required. Please contact your server owner, or upgrade your server.": "Ваш домашній сервер застарілий і не підтримує мінімально необхідну версію API. Будь ласка, зв'яжіться з власником вашого сервера або оновіть його.", "Your server is unsupported": "Ваш сервер не підтримується", + "common": { + "about": "Відомості", + "analytics": "Аналітика", + "encryption_enabled": "Шифрування увімкнено", + "error": "Помилка", + "forward_message": "Переслати повідомлення", + "image": "Зображення", + "loading": "Завантаження…", + "message": "Повідомлення", + "message_layout": "Макет повідомлення", + "modern": "Сучасний", + "mute": "Стишити", + "no_results": "Немає результатів", + "offline": "Не в мережі", + "password": "Пароль", + "people": "Люди", + "reactions": "Реакції", + "report_a_bug": "Повідомити про ваду", + "room_name": "Назва кімнати", + "security": "Безпека", + "settings": "Налаштування", + "sticker": "Наліпка", + "success": "Успіх", + "suggestions": "Пропозиції", + "unmute": "Розтишити", + "username": "Ім'я користувача", + "verification_cancelled": "Звірка скасована", + "video": "Відео" + }, "action": { "reject": "Відмовитись", "confirm": "Підтвердити", @@ -3971,5 +3941,8 @@ "share": "Поділитись", "skip": "Пропустити", "logout": "Вийти" + }, + "a11y": { + "user_menu": "Користувацьке меню" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/vi.json b/src/i18n/strings/vi.json index 46d4f1cacf49..b3856d10150a 100644 --- a/src/i18n/strings/vi.json +++ b/src/i18n/strings/vi.json @@ -2,12 +2,10 @@ "This email address is already in use": "Địa chỉ thư điện tử này đã được sử dụng", "This phone number is already in use": "Số điện thoại này đã được sử dụng", "Failed to verify email address: make sure you clicked the link in the email": "Chưa xác nhận địa chỉ thư điện tử: hãy chắc chắn bạn đã nhấn vào liên kết trong thư", - "Analytics": "Về dữ liệu phân tích", "Call Failed": "Không gọi được", "You cannot place a call with yourself.": "Bạn không thể tự gọi chính mình.", "Permission Required": "Yêu cầu Cấp quyền", "You do not have permission to start a conference call in this room": "Bạn không có quyền để bắt đầu cuộc gọi nhóm trong phòng này", - "Continue": "Tiếp tục", "The file '%(fileName)s' failed to upload.": "Không tải lên được tập tin '%(fileName)s' .", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Tập tin '%(fileName)s' vượt quá giới hạn về kích thước tải lên của máy chủ", "Upload Failed": "Không tải lên được", @@ -41,7 +39,6 @@ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", "Unnamed Room": "Phòng Không tên", - "Error": "Lỗi", "Unable to load! Check your network connectivity and try again.": "Không thể tải dữ liệu! Kiểm tra kết nối mạng và thử lại.", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s chưa có quyền để gửi thông báo cho bạn - vui lòng kiểm tra thiết lập trình duyệt", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s vẫn chưa được cấp quyền để gửi thông báo - vui lòng thử lại", @@ -75,7 +72,6 @@ "This room has no topic.": "Phòng này chưa có chủ đề.", "Sets the room name": "Đặt tên phòng", "Invites user with given id to current room": "Mời người dùng có ID chỉ định đến phòng hiện tại", - "Leave room": "Rời khỏi phòng", "Bans user with given id": "Cấm thành viên có ID chỉ định", "Unbans user with given ID": "Gỡ cấm thành viên có ID chỉ định", "Ignores a user, hiding their messages from you": "Bỏ qua người dùng, ẩn tin nhắn của họ khỏi bạn", @@ -203,7 +199,6 @@ "Explore rooms": "Khám phá các phòng", "Create Account": "Tạo tài khoản", "Theme": "Chủ đề", - "Success": "Thành công", "Ignore": "Tảng lờ", "Bug reporting": "Báo cáo lỗi", "Vietnam": "Việt Nam", @@ -217,16 +212,13 @@ "%(senderName)s joined the call": "%(senderName)s đã tham gia cuộc gọi", "You joined the call": "Bạn đã tham gia cuộc gọi", "Feedback": "Phản hồi", - "Invites": "Mời", "Video call": "Gọi video", "This account has been deactivated.": "Tài khoản này đã bị vô hiệu hóa.", - "Start": "Bắt đầu", "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Tin nhắn an toàn với người dùng này được mã hóa đầu cuối và không thể được các bên thứ ba đọc.", "You've successfully verified this user.": "Bạn đã xác thực thành công người dùng này.", "Verified!": "Đã xác thực!", "Play": "Chạy", "Pause": "Tạm dừng", - "Decline": "Từ chối", "Are you sure?": "Bạn có chắc không?", "Confirm Removal": "Xác nhận Loại bỏ", "Removing…": "Đang xóa…", @@ -280,7 +272,6 @@ "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s đang lưu trữ cục bộ an toàn các tin nhắn được mã hóa để chúng xuất hiện trong kết quả tìm kiếm:", "Currently indexing: %(currentRoom)s": "Hiện đang lập chỉ mục: %(currentRoom)s", "Not currently indexing messages for any room.": "Hiện không lập chỉ mục tin nhắn cho bất kỳ phòng nào.", - "Disable": "Tắt", "If disabled, messages from encrypted rooms won't appear in search results.": "Nếu bị tắt, tin nhắn từ các phòng được mã hóa sẽ không xuất hiện trong kết quả tìm kiếm.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Nếu bạn không xóa phương pháp khôi phục, kẻ tấn công có thể đang cố truy cập vào tài khoản của bạn. Thay đổi mật khẩu tài khoản của bạn và đặt phương pháp khôi phục mới ngay lập tức trong Cài đặt.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Nếu bạn vô tình làm điều này, bạn có thể Cài đặt Tin nhắn được bảo toàn trên phiên này. Tính năng này sẽ mã hóa lại lịch sử tin nhắn của phiên này bằng một phương pháp khôi phục mới.", @@ -393,7 +384,6 @@ "Original event source": "Nguồn sự kiện ban đầu", "Decrypted event source": "Nguồn sự kiện được giải mã", "Could not load user profile": "Không thể tải hồ sơ người dùng", - "User menu": "Menu người dùng", "Switch theme": "Chuyển đổi chủ đề", "Switch to dark mode": "Chuyển sang chế độ tối", "Switch to light mode": "Chuyển sang chế độ ánh sáng", @@ -446,7 +436,6 @@ "Welcome %(name)s": "Chào mừng %(name)s", "Add a photo so people know it's you.": "Thêm ảnh để mọi người biết đó là bạn.", "Great, that'll help people know it's you": "Tuyệt vời, điều đó sẽ giúp mọi người biết đó là bạn", - "Leave": "Rời khỏi", "Attach files from chat or just drag and drop them anywhere in a room.": "Đính kèm tệp từ cuộc trò chuyện hoặc chỉ cần kéo và thả chúng vào bất kỳ đâu trong phòng.", "No files visible in this room": "Không có tệp nào hiển thị trong phòng này", "You must join the room to see its files": "Bạn phải tham gia vào phòng để xem các tệp của nó", @@ -464,9 +453,7 @@ "Other users can invite you to rooms using your contact details": "Những người dùng khác có thể mời bạn vào phòng bằng cách sử dụng chi tiết liên hệ của bạn", "Enter email address (required on this homeserver)": "Nhập địa chỉ thư điện tử (bắt buộc trên máy chủ này)", "Sign in with": "Đăng nhập với", - "Forgot password?": "Quên mật khẩu?", "Phone": "Điện thoại", - "Username": "Tên đăng nhập", "Email": "Thư điện tử", "That phone number doesn't look quite right, please check and try again": "Số điện thoại đó có vẻ không chính xác, vui lòng kiểm tra và thử lại", "Enter phone number": "Nhập số điện thoại", @@ -485,7 +472,6 @@ "Please review and accept the policies of this homeserver:": "Vui lòng xem xét và chấp nhận chính sách của máy chủ nhà này:", "Please review and accept all of the homeserver's policies": "Vui lòng xem xét và chấp nhận tất cả các chính sách của chủ nhà", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Thiếu captcha public key trong cấu hình máy chủ. Vui lòng báo cáo điều này cho quản trị viên máy chủ của bạn.", - "Password": "Mật khẩu", "Confirm your identity by entering your account password below.": "Xác nhận danh tính của bạn bằng cách nhập mật khẩu tài khoản của bạn dưới đây.", "Country Dropdown": "Quốc gia thả xuống", "This homeserver would like to make sure you are not a robot.": "Người bảo vệ gia đình này muốn đảm bảo rằng bạn không phải là người máy.", @@ -514,7 +500,6 @@ "Source URL": "URL nguồn", "Show preview": "Hiển thị bản xem trước", "View source": "Xem nguồn", - "Forward": "Chuyển tiếp", "Resend %(unsentCount)s reaction(s)": "Gửi lại (các) phản ứng %(unsentCount)s", "Are you sure you want to reject the invitation?": "Bạn có chắc chắn muốn từ chối lời mời không?", "Reject invitation": "Từ chối lời mời", @@ -607,7 +592,6 @@ "Illegal Content": "Nội dung bất hợp pháp", "Toxic Behaviour": "Hành vi độc hại", "Disagree": "Không đồng ý", - "Report Content": "Báo cáo nội dung", "Please pick a nature and describe what makes this message abusive.": "Vui lòng chọn một bản chất và mô tả điều gì khiến thông báo này bị lạm dụng.", "Please fill why you're reporting.": "Vui lòng điền lý do bạn đang báo cáo.", "Email (optional)": "Địa chỉ thư điện tử (tùy chọn)", @@ -689,7 +673,6 @@ "Start a conversation with someone using their name or username (like ).": "Bắt đầu cuộc trò chuyện với ai đó bằng tên hoặc tên người dùng của họ (như ).", "Start a conversation with someone using their name, email address or username (like ).": "Bắt đầu cuộc trò chuyện với ai đó bằng tên, địa chỉ thư điện tử hoặc tên người dùng của họ (như ).", "Recently Direct Messaged": "Tin nhắn trực tiếp gần đây", - "Suggestions": "Gợi ý", "Recent Conversations": "Các cuộc trò chuyện gần đây", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Những người dùng sau có thể không tồn tại hoặc không hợp lệ và không thể được mời: %(csvNames)s", "Failed to find the following users": "Không tìm thấy những người dùng sau", @@ -712,16 +695,13 @@ "Terms of Service": "Điều khoản Dịch vụ", "You may contact me if you have any follow up questions": "Bạn có thể liên hệ với tôi nếu bạn có bất kỳ câu hỏi tiếp theo nào", "Your platform and username will be noted to help us use your feedback as much as we can.": "Nền tảng ứng dụng và tên người dùng của bạn sẽ được ghi lại để giúp chúng tôi tiếp nhận phản hồi của bạn một cách tốt nhất có thể.", - "Done": "Xong", "Search for rooms or people": "Tìm kiếm phòng hoặc người", "Message preview": "Xem trước tin nhắn", - "Forward message": "Chuyển tiếp tin nhắn", "Sent": "Đã gửi", "Sending": "Đang gửi", "You don't have permission to do this": "Bạn không có quyền làm điều này", "Send feedback": "Gửi phản hồi", "Please view existing bugs on Github first. No match? Start a new one.": "Hãy xem các lỗi đã được phát hiện trên GitHub trước. Chưa ai từng gặp lỗi này? Báo lỗi mới.", - "Report a bug": "Báo lỗi", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "MẸO NHỎ: Nếu bạn là người đầu tiên gặp lỗi, vui lòng gửi nhật ký gỡ lỗi để giúp chúng tôi xử lý vấn đề.", "Comment": "Bình luận", "Feedback sent": "Đã gửi phản hồi", @@ -739,7 +719,6 @@ "What do you want to organise?": "Bạn muốn tổ chức những gì?", "Skip for now": "Bỏ qua ngay bây giờ", "Failed to create initial space rooms": "Không tạo được các phòng space ban đầu", - "Room name": "Tên phòng", "Support": "Hỗ trợ", "Random": "Ngẫu nhiên", "Welcome to ": "Chào mừng đến với ", @@ -825,7 +804,6 @@ "Topic (optional)": "Chủ đề (không bắt buộc)", "Create a private room": "Tạo một phòng riêng", "Create a public room": "Tạo một phòng công cộng", - "Create a room": "Tạo phòng", "You might disable this if the room will be used for collaborating with external teams who have their own homeserver. This cannot be changed later.": "Bạn có thể tắt tính năng này nếu phòng sẽ được sử dụng để cộng tác với các nhóm bên ngoài có máy chủ của riêng họ. Điều này không thể được thay đổi sau này.", "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.": "Bạn có thể bật điều này nếu phòng sẽ chỉ được sử dụng để cộng tác với các nhóm nội bộ trên nhà của bạn. Điều này không thể thay đổi sau này.", "Enable end-to-end encryption": "Bật mã hóa đầu cuối", @@ -974,7 +952,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) đã đăng nhập vào một phiên mới mà không xác thực:", "Verify your other session using one of the options below.": "Xác minh phiên khác của bạn bằng một trong các tùy chọn bên dưới.", "You signed in to a new session without verifying it:": "Bạn đã đăng nhập vào một phiên mới mà không xác thực nó:", - "Next": "Tiếp", "Document": "Tài liệu", "Summary": "Tóm lược", "Service": "Dịch vụ", @@ -1010,7 +987,6 @@ "You most likely do not want to reset your event index store": "Rất có thể bạn không muốn đặt lại kho chỉ mục sự kiện của mình", "Reset event store?": "Đặt lại kho sự kiện?", "About homeservers": "Giới thiệu về các máy chủ", - "Learn more": "Tìm hiểu thêm", "Use your preferred Matrix homeserver if you have one, or host your own.": "Sử dụng máy chủ Matrix ưa thích của bạn nếu bạn có, hoặc tự tạo máy chủ lưu trữ của riêng bạn.", "Other homeserver": "Máy chủ khác", "were unbanned %(count)s times": { @@ -1136,7 +1112,6 @@ "Message deleted on %(date)s": "Tin nhắn đã bị xóa vào %(date)s", "reacted with %(shortName)s": "đã phản hồi với %(shortName)s", "%(reactors)s reacted with %(content)s": "%(reactors)s đã phản hồi với %(content)s", - "Reactions": "Phản ứng", "Show all": "Hiển thị tất cả", "Add reaction": "Thêm phản ứng", "Error processing voice message": "Lỗi khi xử lý tin nhắn thoại", @@ -1158,8 +1133,6 @@ "Video conference ended by %(senderName)s": "Hội nghị truyền hình đã kết thúc trước%(senderName)s", "Join the conference from the room information card on the right": "Tham gia hội nghị từ thẻ thông tin phòng bên phải", "Join the conference at the top of this room": "Tham gia hội nghị ở đầu phòng này", - "Image": "Hình ảnh", - "Sticker": "Nhãn dán", "Show image": "Hiển thị hình ảnh", "Error decrypting image": "Lỗi khi giải mã hình ảnh", "Invalid file%(extra)s": "Tệp%(extra)s không hợp lệ", @@ -1168,16 +1141,11 @@ "Download %(text)s": "Tải xuống %(text)s", "Message Actions": "Hành động tin nhắn", "Thread": "Chủ đề", - "Reply": "Phản hồi", - "Edit": "Sửa", - "React": "Phản ứng", "Error processing audio message": "Lỗi khi xử lý tin nhắn âm thanh", "The encryption used by this room isn't supported.": "Mã hóa mà phòng này sử dụng không được hỗ trợ.", "Encryption not enabled": "Mã hóa không được bật", "Ignored attempt to disable encryption": "Bỏ qua nỗ lực vô hiệu hóa mã hóa", - "Encryption enabled": "Mã hóa được bật", "Some encryption parameters have been changed.": "Một số thông số mã hóa vừa được thay đổi.", - "View Source": "Xem nguồn", "Download": "Tải xuống", "Decrypting": "Đang giải mã", "Downloading": "Đang tải xuống", @@ -1192,7 +1160,6 @@ "Sunday": "Chủ nhật", "The call is in an unknown state!": "Cuộc gọi ở trạng thái không xác định!", "Missed call": "Cuộc gọi nhỡ", - "Retry": "Thử lại", "Unknown failure: %(reason)s": "Lỗi không xác định: %(reason)s", "An unknown error occurred": "Đã xảy ra lỗi không xác định", "Their device couldn't start the camera or microphone": "Thiết bị của họ không thể khởi động máy ảnh hoặc micrô", @@ -1201,7 +1168,6 @@ "No answer": "Không trả lời", "Call back": "Gọi lại", "Call declined": "Cuộc gọi bị từ chối", - "Verification cancelled": "Đã hủy xác thực", "You cancelled verification.": "Bạn đã hủy xác thực.", "%(displayName)s cancelled verification.": "%(displayName)s đã hủy xác thực.", "Verification timed out.": "Đã hết thời gian xác thực.", @@ -1221,7 +1187,6 @@ "Compare a unique set of emoji if you don't have a camera on either device": "So sánh một bộ biểu tượng cảm xúc độc đáo nếu bạn không có camera trên một trong hai thiết bị", "Compare unique emoji": "So sánh biểu tượng cảm xúc độc đáo", "Scan this unique code": "Quét mã duy nhất này", - "Security": "Bảo mật", "Edit devices": "Chỉnh sửa thiết bị", "This client does not support end-to-end encryption.": "Ứng dụng khách này không hỗ trợ mã hóa đầu cuối.", "Role in ": "Vai trò trong ", @@ -1243,8 +1208,6 @@ "Deactivate user?": "Hủy kích hoạt người dùng?", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Bạn sẽ không thể hoàn tác thay đổi này vì bạn đang khuyến khích người dùng có cùng mức sức mạnh với bạn.", "Failed to change power level": "Không thay đổi được mức công suất", - "Mute": "Im lặng", - "Unmute": "Bật tiếng", "Failed to mute user": "Không thể tắt tiếng người dùng", "They won't be able to access whatever you're not an admin of.": "Họ sẽ không thể truy cập vào bất cứ gì mà bạn không phải là quản trị viên.", "Ban them from specific things I'm able to": "Cấm họ khỏi những thứ cụ thể mà tôi có thể", @@ -1317,7 +1280,6 @@ "other": "%(count)s tin nhắn chưa đọc bao gồm các đề cập." }, "Room options": "Tùy chọn phòng", - "Settings": "Cài đặt", "Low Priority": "Ưu tiên thấp", "Favourite": "Yêu thích", "Favourited": "Được yêu thích", @@ -1374,8 +1336,6 @@ "Create new room": "Tạo phòng mới", "Add room": "Thêm phòng", "Rooms": "Phòng", - "Start chat": "Bắt đầu trò chuyện", - "People": "Danh bạ", "Favourites": "Yêu thích", "Search": "Tìm kiếm", "Show Widgets": "Hiển thị widget", @@ -1392,7 +1352,6 @@ "Room %(name)s": "Phòng %(name)s", "Replying": "Đang trả lời", "Unknown": "Không xác định", - "Offline": "Ngoại tuyến", "Idle": "Nhàn rỗi", "Online": "Trực tuyến", "Unknown for %(duration)s": "Không xác định trong %(duration)s", @@ -1436,7 +1395,6 @@ "other": "%(severalUsers)s đã tham gia %(count)s lần" }, "Insert link": "Chèn liên kết", - "Quote": "Trích", "Code block": "Khối mã", "Strikethrough": "Gạch ngang", "Italics": "In nghiêng", @@ -1554,7 +1512,6 @@ "Clear cache and reload": "Xóa bộ nhớ cache và tải lại", "Your access token gives full access to your account. Do not share it with anyone.": "Mã thông báo truy cập của bạn cấp quyền truy cập đầy đủ vào tài khoản của bạn. Không chia sẻ nó với bất kỳ ai.", "Access Token": "Token truy cập", - "Copy": "Sao chép", "Versions": "Phiên bản", "FAQ": "Câu hỏi thường gặp", "Help & About": "Trợ giúp & Giới thiệu", @@ -1620,9 +1577,7 @@ "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Bạn sẽ không thể hoàn tác thay đổi này vì bạn đang tự giáng cấp bản thân, nếu bạn là người dùng cuối cùng có đặc quyền trong phòng, nó sẽ không thể lấy lại đặc quyền.", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the space it will be impossible to regain privileges.": "Bạn sẽ không thể hoàn tác thay đổi này vì bạn đang tự hạ cấp, nếu bạn là người dùng có đặc quyền cuối cùng trong space thì sẽ không thể lấy lại đặc quyền.", "Demote yourself?": "Giáng cấp bản thân?", - "Message": "Tin nhắn", "Share Link to User": "Chia sẻ liên kết với người dùng", - "Invite": "Mời", "Mention": "Nhắc đến", "Jump to read receipt": "Nhảy để đọc biên nhận", "Hide sessions": "Ẩn các phiên", @@ -1640,7 +1595,6 @@ "Room settings": "Cài đặt phòng", "Share room": "Phòng chia sẻ", "Export chat": "Xuất trò chuyện", - "About": "Giới thiệu", "Not encrypted": "Không được mã hóa", "Add widgets, bridges & bots": "Thêm các widget, bridge và bot", "Edit widgets, bridges & bots": "Chỉnh sửa tiện ích widget, cầu nối và bot", @@ -1706,7 +1660,6 @@ "Workspace: ": "Không gian làm việc(workspace): ", "This bridge is managed by .": "Cầu này được quản lý bởi .", "This bridge was provisioned by .": "Cầu này được cung cấp bởi .", - "Remove": "Xoá", "Space options": "Tùy chọn space", "Jump to first invite.": "Chuyển đến lời mời đầu tiên.", "Jump to first unread room.": "Chuyển đến phòng chưa đọc đầu tiên.", @@ -1739,7 +1692,6 @@ "All rooms": "Tất cả các phòng", "Show all rooms": "Hiển thị tất cả các phòng", "Home": "Nhà", - "Create": "Tạo", "You can change these anytime.": "Bạn có thể thay đổi những điều này bất cứ lúc nào.", "Add some details to help people recognise it.": "Thêm một số chi tiết để giúp mọi người nhận ra nó.", "Your private space": "Space riêng tư của bạn", @@ -1755,7 +1707,6 @@ "e.g. my-space": "ví dụ như my-space", "Please enter a name for the space": "Vui lòng nhập tên cho Space", "Search %(spaceName)s": "Tìm kiếm %(spaceName)s", - "No results": "Không có kết quả", "Description": "Sự mô tả", "Name": "Tên", "Upload avatar": "Tải lên hình đại diện", @@ -2026,15 +1977,12 @@ "Silence call": "Cuộc gọi im lặng", "Sound on": "Bật âm thanh", "Unknown caller": "Người gọi không xác định", - "Enable": "Bật", "Enable desktop notifications": "Bật thông báo trên màn hình", "Notifications": "Thông báo", "Don't miss a reply": "Đừng bỏ lỡ một câu trả lời", "Later": "Để sau", "Review": "Xem xét", "Review to ensure your account is safe": "Xem lại để đảm bảo tài khoản của bạn an toàn", - "No": "Không", - "Yes": "Có", "File Attached": "Tệp được đính kèm", "Error fetching file": "Lỗi lấy tệp", "Topic: %(topic)s": "Chủ đề: %(topic)s", @@ -2195,7 +2143,6 @@ "Unable to load key backup status": "Không thể tải trạng thái sao lưu khóa", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Bạn có chắc không? Bạn sẽ mất các tin nhắn được mã hóa nếu các khóa của bạn không được sao lưu đúng cách.", "Delete Backup": "Xóa Sao lưu", - "Save": "Lưu", "Profile picture": "Ảnh đại diện", "Display Name": "Tên hiển thị", "Profile": "Hồ sơ", @@ -2218,8 +2165,6 @@ "Error saving notification preferences": "Lỗi khi lưu tùy chọn thông báo", "Messages containing keywords": "Tin nhắn có chứa từ khóa", "Message bubbles": "Bong bóng tin nhắn", - "Modern": "Hiện đại", - "Message layout": "Bố cục tin nhắn", "Updating spaces... (%(progress)s out of %(count)s)": { "one": "Đang cập nhật space…", "other": "Đang cập nhật space… (%(progress)s trên %(count)s)" @@ -2660,7 +2605,6 @@ "Already in call": "Đang trong cuộc gọi", "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Thực hiện cuộc gọi thất bại vì không thể truy cập micrô. Kiểm tra xem micrô đã được cắm và thiết lập đúng chưa.", "Unable to access microphone": "Không thể truy cập micrô", - "OK": "OK", "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Vui lòng yêu cầu quản trị viên máy chủ của bạn (%(homeserverDomain)s) thiết lập máy chủ TURN để cuộc gọi hoạt động ổn định.", "Call failed due to misconfigured server": "Thực hiện cuộc gọi thất bại do thiết lập máy chủ sai", "The call was answered on another device.": "Cuộc gọi đã được trả lời trên một thiết bị khác.", @@ -2708,7 +2652,6 @@ "Copy link to thread": "Sao chép liên kết vào chủ đề", "Thread options": "Tùy chọn theo chủ đề", "See room timeline (devtools)": "Xem dòng thời gian phòng (devtools)", - "Copy link": "Sao chép liên kết", "Mentions only": "Chỉ tin nhắn được đề cập", "Forget": "Quên", "View in room": "Xem phòng này", @@ -3123,7 +3066,6 @@ "Red": "Đỏ", "Grey": "Xám", "Yes, it was me": "Đó là tôi", - "Video": "Truyền hình", "You have unverified sessions": "Bạn có các phiên chưa được xác thực", "Unable to decrypt voice broadcast": "Không thể giải mã cuộc phát thanh", "%(senderName)s ended a voice broadcast": "%(senderName)s đã kết thúc một cuộc phát thanh", @@ -3337,7 +3279,6 @@ "Remove them from everything I'm able to": "Loại bỏ khỏi mọi phòng mà tôi có thể", "Hide formatting": "Ẩn định dạng", "Italic": "Nghiêng", - "Loading…": "Đang tải…", "Processing…": "Đang xử lý…", "The beginning of the room": "Bắt đầu phòng", "Poll": "Bỏ phiếu", @@ -3650,6 +3591,35 @@ "New room activity, upgrades and status messages occur": "Hoạt động mới trong phòng, nâng cấp và tin nhắn trạng thái", "Mark all messages as read": "Đánh dấu đã đọc cho mọi tin nhắn", "You need an invite to access this room.": "Bạn cần được mời để truy cập phòng này.", + "common": { + "about": "Giới thiệu", + "analytics": "Về dữ liệu phân tích", + "encryption_enabled": "Mã hóa được bật", + "error": "Lỗi", + "forward_message": "Chuyển tiếp tin nhắn", + "image": "Hình ảnh", + "loading": "Đang tải…", + "message": "Tin nhắn", + "message_layout": "Bố cục tin nhắn", + "modern": "Hiện đại", + "mute": "Im lặng", + "no_results": "Không có kết quả", + "offline": "Ngoại tuyến", + "password": "Mật khẩu", + "people": "Danh bạ", + "reactions": "Phản ứng", + "report_a_bug": "Báo lỗi", + "room_name": "Tên phòng", + "security": "Bảo mật", + "settings": "Cài đặt", + "sticker": "Nhãn dán", + "success": "Thành công", + "suggestions": "Gợi ý", + "unmute": "Bật tiếng", + "username": "Tên đăng nhập", + "verification_cancelled": "Đã hủy xác thực", + "video": "Truyền hình" + }, "action": { "reject": "Từ chối", "confirm": "Xác nhận", @@ -3674,5 +3644,8 @@ "share": "Chia sẻ", "skip": "Bỏ qua", "logout": "Đăng xuất" + }, + "a11y": { + "user_menu": "Menu người dùng" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/vls.json b/src/i18n/strings/vls.json index 9841573fc75e..0bc4325bc619 100644 --- a/src/i18n/strings/vls.json +++ b/src/i18n/strings/vls.json @@ -2,12 +2,10 @@ "This email address is already in use": "Dat e-mailadresse hier es al in gebruuk", "This phone number is already in use": "Dezen telefongnumero es al in gebruuk", "Failed to verify email address: make sure you clicked the link in the email": "Kostege ’t e-mailadresse nie verifieern: zorgt dervoor da je de koppelienge in den e-mail èt angeklikt", - "Analytics": "Statistische gegeevns", "Call Failed": "Iproep mislukt", "You cannot place a call with yourself.": "J’en ku jezelve nie belln.", "Permission Required": "Toestemmienge vereist", "You do not have permission to start a conference call in this room": "J’en èt geen toestemmienge voor in da groepsgesprek hier e vergoaderiengsgesprek te begunn", - "Continue": "Verdergoan", "The file '%(fileName)s' failed to upload.": "’t Bestand ‘%(fileName)s’ kostege nie gipload wordn.", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "’t Bestand ‘%(fileName)s’ es groter of den iploadlimiet van den thuusserver", "Upload Failed": "Iploadn mislukt", @@ -41,7 +39,6 @@ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s %(day)s %(monthName)s %(fullYear)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(fullYear)s, %(time)s", "Unnamed Room": "Noamloos gesprek", - "Error": "Foute", "Unable to load! Check your network connectivity and try again.": "Loadn mislukt! Controleer je netwerktoegang en herprobeer ’t e ki.", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s èt geen toestemmienge vo je meldiengn te verstuurn - controleert je browserinstelliengn", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s èt geen toestemmienge gekreegn ghed vo joun meldiengn te verstuurn - herprobeer ’t e ki", @@ -75,7 +72,6 @@ "This room has no topic.": "Da gesprek hier èt geen ounderwerp.", "Sets the room name": "Stelt de gespreksnoame in", "Invites user with given id to current room": "Nodigt de gebruuker me de gegeevn ID uut in ’t huudig gesprek", - "Leave room": "Deuregoan uut ’t gesprek", "Bans user with given id": "Verbant de gebruuker me de gegeevn ID", "Unbans user with given ID": "Ountbant de gebruuker me de gegeevn ID", "Ignores a user, hiding their messages from you": "Negeert e gebruuker, woadeure dan de berichtn dervan ounzichtboar vo je wordn", @@ -208,7 +204,6 @@ "Call invitation": "Iproep-uutnodigienge", "Messages sent by bot": "Berichtn verzoundn deur e robot", "When rooms are upgraded": "Wanneer da gesprekkn ipgewoardeerd wordn", - "Decline": "Weigern", "The other party cancelled the verification.": "De tegenparty èt de verificoasje geannuleerd.", "Verified!": "Geverifieerd!", "You've successfully verified this user.": "J’èt deze gebruuker geverifieerd.", @@ -287,7 +282,6 @@ "Export E2E room keys": "E2E-gesprekssleuters exporteern", "Do you want to set an email address?": "Wil je een e-mailadresse instelln?", "Current password": "Huudig paswoord", - "Password": "Paswoord", "New Password": "Nieuw paswoord", "Confirm password": "Bevestig ’t paswoord", "Change Password": "Paswoord verandern", @@ -295,9 +289,6 @@ "Failed to set display name": "Instelln van weergavenoame es mislukt", "Unable to remove contact information": "Kan contactinformoasje nie verwydern", "Are you sure?": "Zy je zeker?", - "Yes": "Joak", - "No": "Neink", - "Remove": "Verwydern", "Invalid Email Address": "Oungeldig e-mailadresse", "This doesn't appear to be a valid email address": "’t En ziet er nie noar uut da dit e geldig e-mailadresse es", "Unable to add email address": "Kostege ’t e-mailadresse nie toevoegn", @@ -314,7 +305,6 @@ "Advanced": "Geavanceerd", "Back up your keys before signing out to avoid losing them.": "Makt een back-up van je sleuters vooraleer da je jen afmeldt vo ze nie kwyt te speeln.", "Start using Key Backup": "Begint me de sleuterback-up te gebruukn", - "OK": "Oké", "Notification targets": "Meldiengsbestemmiengn", "Show message in desktop notification": "Bericht toogn in bureaubladmeldienge", "Off": "Uut", @@ -326,9 +316,7 @@ "Phone Number": "Telefongnumero", "Profile picture": "Profielfoto", "Display Name": "Weergavenoame", - "Save": "Ipsloan", "Failed to change password. Is your password correct?": "Wyzign van ’t paswoord es mislukt. Es je paswoord wel juste?", - "Success": "Gereed", "Profile": "Profiel", "Account": "Account", "Email addresses": "E-mailadressn", @@ -435,10 +423,7 @@ "Ignore": "Negeern", "Jump to read receipt": "Noar ’t latst geleezn bericht goan", "Mention": "Vermeldn", - "Invite": "Uutnodign", "Share Link to User": "Koppelienge me de gebruuker deeln", - "Unmute": "Nie dempn", - "Mute": "Dempn", "Admin Tools": "Beheerdersgereedschap", "and %(count)s others...": { "other": "en %(count)s anderen…", @@ -469,7 +454,6 @@ "Unknown for %(duration)s": "Ounbekend vo %(duration)s", "Online": "Online", "Idle": "Afwezig", - "Offline": "Offline", "Unknown": "Ounbekend", "Replying": "An ’t beantwoordn", "Unnamed room": "Noamloos gesprek", @@ -478,13 +462,10 @@ "one": "(~%(count)s resultoat)" }, "Join Room": "Gesprek toetreedn", - "Settings": "Instelliengn", "Forget room": "Gesprek vergeetn", "Search": "Zoekn", "Share room": "Gesprek deeln", - "Invites": "Uutnodigiengn", "Favourites": "Favorietn", - "Start chat": "Gesprek beginn", "Rooms": "Gesprekkn", "Low priority": "Leige prioriteit", "Historical": "Historisch", @@ -545,8 +526,6 @@ "Saturday": "Zoaterdag", "Today": "Vandoage", "Yesterday": "Gistern", - "Reply": "Beantwoordn", - "Edit": "Bewerkn", "Options": "Opties", "Attachment": "Byloage", "Error decrypting attachment": "Foute by ’t ountsleutern van de byloage", @@ -577,7 +556,6 @@ "Delete widget": "Widget verwydern", "Popout widget": "Widget in e nieuwe veinster openn", "Create new room": "E nieuw gesprek anmoakn", - "No results": "Geen resultoatn", "Rotate Left": "Links droain", "Rotate Right": "Rechts droain", "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", @@ -688,7 +666,6 @@ "Unavailable": "Nie beschikboar", "Changelog": "Wyzigiengslogboek", "Confirm Removal": "Verwyderienge bevestign", - "Create": "Anmoakn", "Sign out": "Afmeldn", "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "Vo je gespreksgeschiedenisse nie kwyt te speeln, moe je je gesprekssleuters exporteern vooraleer da je jen afmeldt. Je goa moetn werekeern noa de nieuwere versie van %(brand)s vo dit te doen", "Incompatible Database": "Incompatibele database", @@ -764,18 +741,14 @@ "No backup found!": "Geen back-up gevoundn!", "Failed to decrypt %(failedCount)s sessions!": "Ountsleutern van %(failedCount)s sessies is mislukt!", "Warning: you should only set up key backup from a trusted computer.": "Let ip: stelt sleuterback-up alleene moar in ip e vertrouwde computer.", - "Next": "Volgende", "Reject invitation": "Uutnodigienge weigern", "Are you sure you want to reject the invitation?": "Zy je zeker da je d’uutnodigienge wil weigern?", "You cannot delete this message. (%(code)s)": "Je kut dit bericht nie verwydern. (%(code)s)", "Resend": "Herverstuurn", - "View Source": "Bron bekykn", - "Quote": "Citeern", "Source URL": "Bron-URL", "unknown error code": "ounbekende foutcode", "Failed to forget room %(errCode)s": "Vergeetn van gesprek is mislukt %(errCode)s", "All messages": "Alle berichtn", - "Leave": "Deuregoan", "Favourite": "Favoriet", "Low Priority": "Leige prioriteit", "Home": "Thuus", @@ -791,7 +764,6 @@ "Submit": "Bevestign", "Start authentication": "Authenticoasje beginn", "Email": "E-mailadresse", - "Username": "Gebruukersnoame", "Phone": "Telefongnumero", "Change": "Wyzign", "Sign in with": "Anmeldn me", @@ -905,7 +877,6 @@ "Your keys are being backed up (the first backup could take a few minutes).": "’t Wordt e back-up van je sleuters gemakt (den eesten back-up kut e poar minuutn deurn).", "Success!": "Gereed!", "Unable to create key backup": "Kostege de sleuterback-up nie anmoakn", - "Retry": "Herprobeern", "Set up": "Instelln", "New Recovery Method": "Nieuwe herstelmethode", "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "A je gy deze nieuwe herstelmethode nie èt ingesteld, is ’t meuglik dat der een anvaller toegank tout jen account probeert te verkrygn. Wyzigt ounmiddellik jen accountpaswoord en stelt e nieuwe herstelmethode in in d’instelliengn.", @@ -1006,6 +977,18 @@ "Could not connect to identity server": "Kostege geen verbindienge moakn me den identiteitsserver", "Not a valid identity server (status code %(code)s)": "Geen geldigen identiteitsserver (statuscode %(code)s)", "Identity server URL must be HTTPS": "Den identiteitsserver-URL moet HTTPS zyn", + "common": { + "analytics": "Statistische gegeevns", + "error": "Foute", + "mute": "Dempn", + "no_results": "Geen resultoatn", + "offline": "Offline", + "password": "Paswoord", + "settings": "Instelliengn", + "success": "Gereed", + "unmute": "Nie dempn", + "username": "Gebruukersnoame" + }, "action": { "reject": "Weigern", "confirm": "Bevestign", @@ -1021,4 +1004,4 @@ "skip": "Oversloan", "logout": "Afmeldn" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 92a81d483a3c..51c75f48fc68 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -9,7 +9,6 @@ "Email": "电子邮箱", "Email address": "邮箱地址", "Emoji": "表情符号", - "Error": "错误", "Error decrypting attachment": "解密附件时出错", "Export E2E room keys": "导出房间的端到端加密密钥", "Failed to ban user": "封禁失败", @@ -51,14 +50,12 @@ "Server may be unavailable, overloaded, or you hit a bug.": "当前服务器可能处于不可用或过载状态,或者你遇到了一个 bug。", "Server unavailable, overloaded, or something else went wrong.": "服务器不可用、超载或其他东西出错了。", "Session ID": "会话 ID", - "Settings": "设置", "Show timestamps in 12 hour format (e.g. 2:30pm)": "使用 12 小时制显示时间戳 (下午 2:30)", "Signed Out": "已退出登录", "Sign in": "登录", "Sign out": "注销", "Someone": "某位用户", "Submit": "提交", - "Success": "成功", "This email address is already in use": "此邮箱地址已被使用", "This email address was not found": "未找到此邮箱地址", "The email address linked to your account must be entered.": "必须输入和你账户关联的邮箱地址。", @@ -69,10 +66,8 @@ "Attachment": "附件", "Banned users": "被封禁的用户", "Confirm password": "确认密码", - "Continue": "继续", "Join Room": "加入房间", "Jump to first unread message.": "跳到第一条未读消息。", - "Leave room": "离开房间", "Admin": "管理员", "Admin Tools": "管理员工具", "No Microphones detected": "未检测到麦克风", @@ -103,41 +98,32 @@ "Command error": "命令错误", "Commands": "命令", "Custom level": "自定义级别", - "Decline": "拒绝", "Enter passphrase": "输入口令词组", "Export": "导出", "Home": "主页", "Import": "导入", "Incorrect username and/or password.": "用户名或密码错误。", "Invited": "已邀请", - "Invites": "邀请", "Invites user with given id to current room": "邀请指定ID的用户到当前房间", "Sign in with": "第三方登录", "Missing room_id in request": "请求中缺少room_id", "Missing user_id in request": "请求中缺少user_id", "Moderator": "协管员", - "Mute": "静音", "Name": "名称", "New passwords don't match": "两次输入的新密码不符", "not specified": "未指定", "Notifications": "通知", "": "<不支持>", "No display name": "无显示名称", - "No results": "没有更多结果", - "OK": "确定", "Operation failed": "操作失败", - "Password": "密码", "Passwords can't be empty": "密码不能为空", "Permissions": "权限", "Phone": "电话", "Create new room": "创建新房间", "powered by Matrix": "由 Matrix 驱动", - "Remove": "移除", - "Start chat": "开始聊天", "unknown error code": "未知错误代码", "Account": "账户", "Add": "添加", - "Edit": "编辑", "Labs": "实验室", "Low priority": "低优先级", "No more results": "没有更多结果", @@ -171,8 +157,6 @@ "Drop file here to upload": "把文件拖到这里以上传", "Online": "在线", "Idle": "空闲", - "Offline": "离线", - "Create": "创建", "Delete widget": "删除挂件", "Define the power level of a user": "定义一名用户的权力级别", "Enable automatic language detection for syntax highlighting": "启用语法高亮的自动语言检测", @@ -180,7 +164,6 @@ "New passwords must match each other.": "新密码必须互相匹配。", "Power level must be positive integer.": "权力级别必须是正整数。", "%(roomName)s does not exist.": "%(roomName)s 不存在。", - "Save": "保存", "This room has no local addresses": "此房间没有本地地址", "This doesn't appear to be a valid email address": "这似乎不是有效的邮箱地址", "This phone number is already in use": "此电话号码已被使用", @@ -237,7 +220,6 @@ "other": "(~%(count)s 个结果)" }, "Start automatically after system login": "开机自启", - "Analytics": "统计分析服务", "Reject all %(invitedRooms)s invites": "拒绝所有 %(invitedRooms)s 的邀请", "Sun": "周日", "Mon": "周一", @@ -282,7 +264,6 @@ "Ignore": "忽略", "Jump to read receipt": "跳到阅读回执", "Mention": "提及", - "Invite": "邀请", "Unknown": "未知的", "Unnamed room": "未命名的房间", "A text message has been sent to %(msisdn)s": "一封短信已发送到 %(msisdn)s", @@ -325,7 +306,6 @@ }, "collapse": "折叠", "expand": "展开", - "Leave": "离开", "Description": "描述", "Warning": "警告", "Room Notification": "房间通知", @@ -349,7 +329,6 @@ "You don't currently have any stickerpacks enabled": "你目前未启用任何贴纸包", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "如果你是房间中最后一位拥有权限的用户,在你降低自己的权限等级后将无法撤销此修改,你将无法重新获得权限。", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "你将无法撤回此修改,因为此用户的权力级别将与你相同。", - "Unmute": "取消静音", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s(权力 %(powerLevelNumber)s)", "%(duration)ss": "%(duration)s 秒", "%(duration)sm": "%(duration)s 分钟", @@ -462,7 +441,6 @@ "All Rooms": "全部房间", "Wednesday": "星期三", "You cannot delete this message. (%(code)s)": "你无法删除这条消息。(%(code)s)", - "Quote": "引述", "Send logs": "发送日志", "All messages": "全部消息", "Call invitation": "当受到通话邀请时", @@ -474,7 +452,6 @@ "Search…": "搜索…", "Logs sent": "日志已发送", "Back": "返回", - "Reply": "回复", "Show message in desktop notification": "在桌面通知中显示消息", "Messages in group chats": "群聊中的消息", "Yesterday": "昨天", @@ -483,7 +460,6 @@ "Off": "关闭", "Event Type": "事件类型", "Event sent!": "事件已发送!", - "View Source": "查看源码", "Event Content": "事件内容", "Thank you!": "谢谢!", "You need to be able to invite users to do that.": "你需要有邀请用户的权限才能进行此操作。", @@ -563,9 +539,7 @@ "No backup found!": "找不到备份!", "Unable to restore backup": "无法还原备份", "Unable to load backup status": "无法获取备份状态", - "Next": "下一个", "Download": "下载", - "Retry": "重试", "Go to Settings": "打开设置", "You do not have permission to invite people to this room.": "你没有权限将其他用户邀请至本房间。", "Unknown server error": "未知服务器错误", @@ -698,8 +672,6 @@ "Headphones": "耳机", "Folder": "文件夹", "Pin": "别针", - "Yes": "是", - "No": "不", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "我们已向你发送了一封电子邮件,以验证你的地址。 请按照里面的说明操作,然后单击下面的按钮。", "Email Address": "电子邮箱地址", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "你确定吗?如果密钥没有正确地备份你将失去你的加密消息。", @@ -777,7 +749,6 @@ "This homeserver would like to make sure you are not a robot.": "此家服务器想要确认你不是机器人。", "Please review and accept all of the homeserver's policies": "请阅读并接受此家服务器的所有政策", "Please review and accept the policies of this homeserver:": "请阅读并接受此家服务器的政策:", - "Username": "用户名", "Change": "更改", "Email (optional)": "电子邮箱(可选)", "Phone (optional)": "电话号码(可选)", @@ -936,7 +907,6 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s(%(userId)s)登录到未验证的新会话:", "Ask this user to verify their session, or manually verify it below.": "要求此用户验证其会话,或在下面手动进行验证。", "Not Trusted": "不可信任", - "Done": "完成", "Cannot reach homeserver": "无法连接到家服务器", "Ensure you have a stable internet connection, or get in touch with the server admin": "确保你的网络连接稳定,或与服务器管理员联系", "Ask your %(brand)s admin to check your config for incorrect or duplicate entries.": "跟你的%(brand)s管理员确认你的配置不正确或重复的条目。", @@ -994,7 +964,6 @@ "Never send encrypted messages to unverified sessions in this room from this session": "永不从此会话向此房间中未验证的会话发送加密消息", "Show previews/thumbnails for images": "显示图片的预览图", "Enable message search in encrypted rooms": "在加密房间中启用消息搜索", - "Start": "开始", "Change notification settings": "修改通知设置", "Manually verify all remote sessions": "手动验证所有远程会话", "My Ban List": "我的封禁列表", @@ -1025,7 +994,6 @@ "exists": "存在", "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "逐一验证用户的每一个会话以将其标记为已信任,而不信任交叉签名的设备。", "Manage": "管理", - "Enable": "启用", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s缺少安全地在本地缓存加密信息所必须的部件。如果你想实验此功能,请构建一个自定义的带有搜索部件的%(brand)s桌面版。", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s 在浏览器中运行时不能安全地在本地缓存加密信息。请使用%(brand)s 桌面版以使加密信息出现在搜索结果中。", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "在登出前连接此会话到密钥备份以避免丢失可能仅在此会话上的密钥。", @@ -1065,8 +1033,6 @@ "Theme added!": "主题已添加!", "Custom theme URL": "自定义主题URL", "Add theme": "添加主题", - "Message layout": "消息布局", - "Modern": "现代", "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "设置一个安装在你的系统上的字体名称,%(brand)s 会尝试使用它。", "Customise your appearance": "自定义你的外观", "Appearance Settings only affect this %(brand)s session.": "外观设置仅会影响此 %(brand)s 会话。", @@ -1176,7 +1142,6 @@ "Code block": "代码块", "Room %(name)s": "房间 %(name)s", "No recently visited rooms": "没有最近访问过的房间", - "People": "联系人", "Join the conversation with an account": "使用一个账户加入对话", "Sign Up": "注册", "Reason: %(reason)s": "原因:%(reason)s", @@ -1287,7 +1252,6 @@ "Deactivate user": "停用用户", "Failed to deactivate user": "停用用户失败", "This client does not support end-to-end encryption.": "此客户端不支持端到端加密。", - "Security": "安全", "Verify by scanning": "扫码验证", "Ask %(displayName)s to scan your code:": "请 %(displayName)s 扫描你的代码:", "If you can't scan the code above, verify by comparing unique emoji.": "如果你不能扫描以上代码,请通过比较唯一的表情符号来验证。", @@ -1304,11 +1268,8 @@ "Verification timed out.": "验证超时。", "%(displayName)s cancelled verification.": "%(displayName)s 取消了验证。", "You cancelled verification.": "你取消了验证。", - "Verification cancelled": "验证已取消", - "Encryption enabled": "已启用加密", "Encryption not enabled": "未启用加密", "The encryption used by this room isn't supported.": "不支持此房间使用的加密方式。", - "React": "回应", "Message Actions": "消息操作", "Show image": "显示图像", "You have ignored this user, so their message is hidden. Show anyways.": "你已忽略此用户,所以其消息已被隐藏。仍然显示。", @@ -1324,7 +1285,6 @@ "%(name)s wants to verify": "%(name)s 想要验证", "You sent a verification request": "你发送了一个验证请求", "Show all": "显示全部", - "Reactions": "反应", "reacted with %(shortName)s": "回应了 %(shortName)s", "Message deleted": "消息已删除", "Message deleted by %(name)s": "消息被 %(name)s 删除", @@ -1418,7 +1378,6 @@ "Failed to find the following users": "寻找以下用户失败", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "下列用户可能不存在或无效,因此不能被邀请:%(csvNames)s", "Recent Conversations": "最近对话", - "Suggestions": "建议", "Recently Direct Messaged": "最近私聊", "Direct Messages": "私聊", "Go": "前往", @@ -1498,7 +1457,6 @@ "Keys restored": "已恢复密钥", "Successfully restored %(sessionCount)s keys": "成功恢复了 %(sessionCount)s 个密钥", "Resend %(unsentCount)s reaction(s)": "重新发送%(unsentCount)s个反应", - "Report Content": "举报内容", "Remove for everyone": "为所有人删除", "Confirm your identity by entering your account password below.": "在下方输入账户密码以确认你的身份。", "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "在家服务器配置中缺少验证码公钥。请将此报告给你的家服务器管理员。", @@ -1527,7 +1485,6 @@ "Switch theme": "切换主题", "All settings": "所有设置", "Feedback": "反馈", - "User menu": "用户菜单", "Failed to get autodiscovery configuration from server": "从服务器获取自动发现配置时失败", "Invalid base_url for m.homeserver": "m.homeserver 的 base_url 无效", "Homeserver URL does not appear to be a valid Matrix homeserver": "家服务器链接不像是有效的 Matrix 家服务器", @@ -1564,7 +1521,6 @@ "You'll need to authenticate with the server to confirm the upgrade.": "你需要和服务器进行认证以确认更新。", "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "更新此会话以允许其验证其他会话、允许其他会话访问加密消息,并将它们对别的用户标记为已信任。", "Use a different passphrase?": "使用不同的口令词组?", - "Copy": "复制", "Unable to query secret storage status": "无法查询秘密存储状态", "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "如果你现在取消,你可能会丢失加密的消息和数据,如果你丢失了登录信息的话。", "You can also set up Secure Backup & manage your keys in Settings.": "你也可以在设置中设置安全备份并管理你的密钥。", @@ -1577,7 +1533,6 @@ "This session is encrypting history using the new recovery method.": "此会话正在使用新的恢复方法加密历史。", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "如果你出于意外这样做了,你可以在此会话上设置安全消息,以使用新的加密方式重新加密此会话的消息历史。", "If disabled, messages from encrypted rooms won't appear in search results.": "如果被禁用,加密房间内的消息不会显示在搜索结果中。", - "Disable": "禁用", "Not currently indexing messages for any room.": "现在没有为任何房间索引消息。", "Currently indexing: %(currentRoom)s": "正在索引:%(currentRoom)s", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s 正在安全地在本地缓存加密消息以使其出现在搜索结果中:", @@ -1747,7 +1702,6 @@ "Answered Elsewhere": "已在别处接听", "Room settings": "房间设置", "About homeservers": "关于家服务器", - "About": "关于", "Share invite link": "分享邀请链接", "Click to copy": "点击复制", "Your private space": "你的私有空间", @@ -1801,26 +1755,22 @@ "Go to Home View": "转到主视图", "Search (must be enabled)": "搜索(必须启用)", "%(ssoButtons)s Or %(usernamePassword)s": "%(ssoButtons)s 或 %(usernamePassword)s", - "Room name": "房间名称", "Random": "随机", "%(count)s members": { "one": "%(count)s 位成员", "other": "%(count)s 位成员" }, "Welcome %(name)s": "欢迎 %(name)s", - "Forgot password?": "忘记密码?", "Enter Security Key": "输入安全密钥", "Invalid Security Key": "安全密钥无效", "Wrong Security Key": "安全密钥错误", "Save Changes": "保存修改", "Leave Space": "离开空间", - "Learn more": "了解更多", "Other homeserver": "其他家服务器", "Specify a homeserver": "指定家服务器", "Transfer": "传输", "Unnamed Space": "未命名空间", "Send feedback": "发送反馈", - "Report a bug": "反馈问题", "Value:": "值:", "Setting definition:": "设置定义:", "Caution:": "警告:", @@ -2372,7 +2322,6 @@ "Some suggestions may be hidden for privacy.": "出于隐私考虑,部分建议可能会被隐藏。", "Search for rooms or people": "搜索房间或用户", "Message preview": "消息预览", - "Forward message": "转发消息", "Sent": "已发送", "You don't have permission to do this": "你无权执行此操作", "Error - Mixed content": "错误 - 混合内容", @@ -2386,7 +2335,6 @@ "Collapse reply thread": "折叠回复消息列", "Show preview": "显示预览", "View source": "查看源代码", - "Forward": "转发", "Settings - %(spaceName)s": "设置 - %(spaceName)s", "Report the entire room": "报告整个房间", "Spam or propaganda": "垃圾信息或宣传", @@ -2534,7 +2482,6 @@ "Public room": "公共房间", "Private room (invite only)": "私有房间(仅邀请)", "Room visibility": "房间可见度", - "Create a room": "创建房间", "Only people invited will be able to find and join this room.": "只有被邀请的人才能找到并加入这个房间。", "Anyone will be able to find and join this room.": "任何人都可以找到并加入这个房间。", "Anyone will be able to find and join this room, not just members of .": "任何人都可以找到并加入这个房间,而不仅仅是 的成员。", @@ -2549,8 +2496,6 @@ "Share content": "分享内容", "Application window": "应用程序窗口", "Share entire screen": "分享整个屏幕", - "Image": "图片", - "Sticker": "贴纸", "Error processing audio message": "处理音频消息时出错", "Decrypting": "解密中", "The call is in an unknown state!": "通话处于未知状态!", @@ -2620,7 +2565,6 @@ "Change space name": "更改空间名称", "Change space avatar": "更改空间头像", "Message didn't send. Click for info.": "消息没有发送。点击查看信息。", - "Message": "消息", "To join a space you'll need an invite.": "要加入一个空间,你需要一个邀请。", "%(reactors)s reacted with %(content)s": "%(reactors)s做出了%(content)s的反应", "Would you like to leave the rooms in this space?": "你想俩开此空间内的房间吗?", @@ -2770,7 +2714,6 @@ "Show all your rooms in Home, even if they're in a space.": "在主页展示你所有的房间,即使它们是在一个空间里。", "Home is useful for getting an overview of everything.": "对于了解所有事情的概况来说,主页很有用。", "Manage rooms in this space": "管理此空间中的房间", - "Copy link": "复制链接", "Mentions only": "仅提及", "Forget": "忘记", "Files": "文件", @@ -2959,7 +2902,6 @@ "one": "一名参与者" }, "Joining…": "加入中…", - "Video": "视频", "Open thread": "打开消息列", "To join, please enable video rooms in Labs first": "加入前请在实验室允许虚拟房间", "To view, please enable video rooms in Labs first": "查看前请在实验室允许虚拟房间", @@ -3539,6 +3481,34 @@ "Identity server not set": "身份服务器未设置", "The add / bind with MSISDN flow is misconfigured": "MSISDN的新增/绑定流程配置错误", "User is not logged in": "用户未登录", + "common": { + "about": "关于", + "analytics": "统计分析服务", + "encryption_enabled": "已启用加密", + "error": "错误", + "forward_message": "转发消息", + "image": "图片", + "message": "消息", + "message_layout": "消息布局", + "modern": "现代", + "mute": "静音", + "no_results": "没有更多结果", + "offline": "离线", + "password": "密码", + "people": "联系人", + "reactions": "反应", + "report_a_bug": "反馈问题", + "room_name": "房间名称", + "security": "安全", + "settings": "设置", + "sticker": "贴纸", + "success": "成功", + "suggestions": "建议", + "unmute": "取消静音", + "username": "用户名", + "verification_cancelled": "验证已取消", + "video": "视频" + }, "action": { "reject": "拒绝", "confirm": "确认", @@ -3563,5 +3533,8 @@ "share": "共享", "skip": "跳过", "logout": "登出" + }, + "a11y": { + "user_menu": "用户菜单" } -} +} \ No newline at end of file diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index e4b6eba61781..afa2b223193c 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -14,7 +14,6 @@ "Authentication": "授權", "%(items)s and %(lastItem)s": "%(items)s 和 %(lastItem)s", "Confirm password": "確認密碼", - "Continue": "繼續", "Cryptography": "加密", "Current password": "舊密碼", "Deactivate Account": "停用帳號", @@ -25,7 +24,6 @@ "Email": "電子郵件地址", "Email address": "電子郵件地址", "Emoji": "表情符號", - "Error": "錯誤", "Error decrypting attachment": "解密附件時出錯", "Export E2E room keys": "匯出聊天室的端對端加密金鑰", "Failed to ban user": "無法封鎖使用者", @@ -54,7 +52,6 @@ "Invalid file%(extra)s": "不存在的文件 %(extra)s", "Join Room": "加入聊天室", "Jump to first unread message.": "跳到第一則未讀訊息。", - "Leave room": "離開聊天室", "Return to login screen": "返回到登入畫面", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s 沒有權限向您傳送通知──請檢查您的瀏覽器設定", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s 沒有權限向您傳送通知──請重試", @@ -69,14 +66,12 @@ "Server may be unavailable, overloaded, or you hit a bug.": "伺服器可能無法使用、超載,或者您遇到了一個錯誤。", "Server unavailable, overloaded, or something else went wrong.": "伺服器可能無法使用、超載,或者某些東西出了問題。", "Session ID": "工作階段 ID", - "Settings": "設定", "Show timestamps in 12 hour format (e.g. 2:30pm)": "用 12 小時制顯示時間戳記(如:下午 2:30)", "Signed Out": "已登出", "Sign in": "登入", "Sign out": "登出", "Someone": "某人", "Submit": "送出", - "Success": "成功", "This email address is already in use": "這個電子郵件地址已被使用", "This email address was not found": "未找到此電子郵件地址", "The email address linked to your account must be entered.": "必須輸入和您帳號綁定的電子郵件地址。", @@ -88,17 +83,13 @@ "Tue": "週二", "Online": "線上", "Idle": "閒置", - "Offline": "離線", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s 將聊天室大頭照更改為 ", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s 移除了聊天室的大頭照。", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s 將聊天室的大頭照改為 %(roomName)s", - "Mute": "靜音", "Notifications": "通知", "Operation failed": "無法操作", "powered by Matrix": "由 Matrix 提供", - "Remove": "移除", "unknown error code": "未知的錯誤代碼", - "OK": "確定", "Default Device": "預設裝置", "Microphone": "麥克風", "Camera": "相機", @@ -114,7 +105,6 @@ "Drop file here to upload": "把文件放在這裡上傳", "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "您即將被帶到第三方網站,以便您可以驗證帳戶來使用 %(integrationsUrl)s。請問您要繼續嗎?", "Create new room": "建立新聊天室", - "Start chat": "開始聊天", "Add": "新增", "Admin Tools": "管理員工具", "No Microphones detected": "未偵測到麥克風", @@ -130,7 +120,6 @@ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s 將主題變更為「%(topic)s」。", "Changes your display nickname": "變更您的顯示暱稱", "Custom level": "自訂等級", - "Decline": "拒絕", "Deops user with given id": "取消指定 ID 使用者的管理員權限", "Enter passphrase": "輸入安全密語", "Export": "匯出", @@ -139,7 +128,6 @@ "Import": "匯入", "Incorrect username and/or password.": "使用者名稱和/或密碼不正確。", "Invited": "已邀請", - "Invites": "邀請", "Invites user with given id to current room": "邀請指定 ID 的使用者到目前的聊天室", "Sign in with": "登入使用", "Labs": "實驗室", @@ -159,9 +147,7 @@ "": "<不支援>", "No display name": "沒有顯示名稱", "No more results": "沒有更多結果", - "No results": "沒有結果", "No users have specific privileges in this room": "此聊天室中沒有使用者有指定的權限", - "Password": "密碼", "Passwords can't be empty": "密碼不能為空", "Permissions": "權限", "Phone": "電話", @@ -172,7 +158,6 @@ "Reject invitation": "拒絕邀請", "%(roomName)s does not exist.": "%(roomName)s 不存在。", "%(roomName)s is not accessible at this time.": "%(roomName)s 此時無法存取。", - "Save": "儲存", "Start authentication": "開始認證", "This room has no local addresses": "此聊天室沒有本機位址", "This room is not recognised.": "無法識別此聊天室。", @@ -184,7 +169,6 @@ "Unable to remove contact information": "無法移除聯絡人資訊", "Unable to verify email address.": "無法驗證電子郵件。", "Unban": "解除封鎖", - "Unmute": "解除靜音", "Unnamed Room": "未命名的聊天室", "Uploading %(filename)s": "正在上傳 %(filename)s", "Uploading %(filename)s and %(count)s others": { @@ -240,7 +224,6 @@ }, "New Password": "新密碼", "Start automatically after system login": "在系統登入後自動開始", - "Analytics": "分析", "Options": "選項", "Passphrases must match": "安全密語必須相符", "Passphrase must not be empty": "安全密語不能為空", @@ -274,7 +257,6 @@ }, "Delete widget": "刪除小工具", "Define the power level of a user": "定義使用者的權限等級", - "Edit": "編輯", "Enable automatic language detection for syntax highlighting": "啟用語法突顯的自動語言偵測", "Publish this room to the public in %(domain)s's room directory?": "將這個聊天室公開到 %(domain)s 的聊天室目錄中?", "AM": "上午", @@ -282,7 +264,6 @@ "Unable to create widget.": "無法建立小工具。", "You are not in this room.": "您不在這個聊天室內。", "You do not have permission to do that in this room.": "您沒有在這個聊天室做這件事的權限。", - "Create": "建立", "Automatically replace plain text Emoji": "自動取代純文字為表情符號", "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s 小工具是由 %(senderName)s 所新增", "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s 小工具是由 %(senderName)s 所移除", @@ -307,7 +288,6 @@ "Ignore": "忽略", "Jump to read receipt": "跳到讀取回條", "Mention": "提及", - "Invite": "邀請", "Send an encrypted reply…": "傳送加密的回覆…", "Send an encrypted message…": "傳送加密訊息…", "%(duration)ss": "%(duration)s 秒", @@ -420,7 +400,6 @@ "And %(count)s more...": { "other": "與更多 %(count)s 個…" }, - "Leave": "離開", "Description": "描述", "Old cryptography data detected": "偵測到舊的加密資料", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "偵測到來自舊版 %(brand)s 的資料。這將會造成舊版的端對端加密失敗。在此版本中使用最近在舊版本交換的金鑰可能無法解密訊息。這也會造成與此版本的訊息交換失敗。若您遇到問題,請登出並重新登入。要保留訊息歷史,請匯出並重新匯入您的金鑰。", @@ -474,14 +453,12 @@ "Call invitation": "接到通話邀請時", "State Key": "狀態金鑰", "What's new?": "有何新變動嗎?", - "View Source": "檢視原始碼", "Invite to this room": "邀請加入這個聊天室", "You cannot delete this message. (%(code)s)": "您無法刪除此訊息。(%(code)s)", "Thursday": "星期四", "Search…": "搜尋…", "Logs sent": "記錄檔已經傳送", "Back": "上一步", - "Reply": "回覆", "Show message in desktop notification": "在桌面通知中顯示訊息", "Messages in group chats": "群組聊天中的訊息", "Yesterday": "昨天", @@ -493,7 +470,6 @@ "Event sent!": "事件已傳送!", "Event Content": "事件內容", "Thank you!": "感謝您!", - "Quote": "引用", "Missing roomId.": "缺少聊天室 ID。", "Popout widget": "彈出式小工具", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "無法載入要回覆的活動,它可能不存在或是您沒有權限檢視它。", @@ -566,13 +542,11 @@ "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "為了避免遺失您的聊天歷史,您必須在登出前匯出您的聊天室金鑰。您必須回到較新版的 %(brand)s 才能執行此動作", "Incompatible Database": "不相容的資料庫", "Continue With Encryption Disabled": "在停用加密的情況下繼續", - "Next": "下一步", "That matches!": "相符!", "That doesn't match.": "不相符。", "Go back to set it again.": "返回重新設定。", "Download": "下載", "Unable to create key backup": "無法建立金鑰備份", - "Retry": "重試", "Unable to load backup status": "無法載入備份狀態", "Unable to restore backup": "無法復原備份", "No backup found!": "找不到備份!", @@ -648,8 +622,6 @@ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "與此使用者的安全訊息有端對端加密,無法被第三方讀取。", "Got It": "了解", "Verify this user by confirming the following number appears on their screen.": "透過確認對方畫面上顯示的下列數字來確認使用者。", - "Yes": "是", - "No": "否", "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "我們已經傳送給您一封電子郵件以驗證您的地址。請遵照那裡的指示,然後點選下面的按鈕。", "Email Address": "電子郵件地址", "All keys backed up": "所有金鑰都已備份", @@ -698,7 +670,6 @@ "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "驗證此工作階段,並標記為可受信任。由您將工作階段標記為可受信任後,可讓聊天夥伴傳送端到端加密訊息時能更加放心。", "Incoming Verification Request": "收到的驗證請求", "Go back": "返回", - "Username": "使用者名稱", "Email (optional)": "電子郵件(選擇性)", "Phone (optional)": "電話(選擇性)", "Join millions for free on the largest public server": "在最大的公開伺服器上,免費與數百萬人一起交流", @@ -1047,7 +1018,6 @@ "Report Content to Your Homeserver Administrator": "回報內容給您的家伺服器管理員", "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "回報此訊息將會傳送其獨特的「活動 ID」給您家伺服器的管理員。如果此聊天室中的訊息已加密,您的家伺服器管理員將無法閱讀訊息文字或檢視任何檔案或圖片。", "Send report": "傳送回報", - "Report Content": "回報內容", "View": "檢視", "Explore rooms": "探索聊天室", "Changes the avatar of the current room": "變更目前聊天室的大頭照", @@ -1104,7 +1074,6 @@ "Objects": "物件", "Symbols": "符號", "Flags": "旗幟", - "React": "反應", "Cancel search": "取消搜尋", "Jump to first unread room.": "跳到第一個未讀的聊天室。", "Jump to first invite.": "跳到第一個邀請。", @@ -1156,7 +1125,6 @@ "Trusted": "受信任", "Not trusted": "未受信任", "Messages in this room are end-to-end encrypted.": "此聊天室內的訊息有端對端加密。", - "Security": "安全性", "Any of the following data may be shared:": "可能會分享以下資料:", "Your display name": "您的顯示名稱", "Your user ID": "您的使用者 ID", @@ -1190,7 +1158,6 @@ "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "升級聊天室為進階動作,通常建議在聊天室因為錯誤而不穩定、缺少功能或安全漏洞等才升級。", "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "這通常僅影響如何在伺服器上處理聊天室的方式。如果您遇到與 %(brand)s 相關的問題,請回報錯誤。", "You'll upgrade this room from to .": "您將要把此聊天室從 升級到 。", - "Reactions": "反應", " wants to chat": " 想要聊天", "Start chatting": "開始聊天", "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s 移除了封鎖符合 %(glob)s 的使用者規則", @@ -1233,7 +1200,6 @@ "Go": "前往", "Show info about bridges in room settings": "於聊天室設定中顯示橋接相關資訊", "This bridge is managed by .": "此橋接由 管理。", - "Suggestions": "建議", "Failed to find the following users": "找不到以下使用者", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "以下使用者可能不存在或無效,且無法被邀請:%(csvNames)s", "Lock": "鎖定", @@ -1252,8 +1218,6 @@ "%(num)s hours from now": "從現在開始 %(num)s 小時", "about a day from now": "從現在開始大約一天", "%(num)s days from now": "從現在開始 %(num)s 天", - "Start": "開始", - "Done": "完成", "Go Back": "返回", "Other users may not trust it": "其他使用者可能不會信任它", "Later": "稍後", @@ -1296,7 +1260,6 @@ "in memory": "在記憶體中", "Manage": "管理", "Securely cache encrypted messages locally for them to appear in search results.": "將加密的訊息安全地在本機快取以出現在顯示結果中。", - "Enable": "啟用", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s 缺少某些在本機快取已加密訊息所需的元件。如果您想要實驗此功能,請加入搜尋元件來自行建構 %(brand)s 桌面版。", "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "此工作階段並未備份您的金鑰,您可還原先前的備份後再繼續新增金鑰到備份內容中。", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "在登出前,請先將此工作階段連線到金鑰備份以避免遺失任何可能僅存在此工作階段中的金鑰。", @@ -1341,14 +1304,12 @@ "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "升級此工作階段以驗證其他工作階段,給予其他工作階段存取加密訊息的權限,並為其他使用者標記它們為受信任。", "This session is encrypting history using the new recovery method.": "此工作階段正在使用新的復原方法加密歷史。", "Mod": "版主", - "Encryption enabled": "加密已啟用", "Encryption not enabled": "加密未啟用", "The encryption used by this room isn't supported.": "不支援此聊天室使用的加密。", "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "驗證此裝置,並標記為可受信任。由您將裝置標記為可受信任後,可讓聊天夥伴傳送端到端加密訊息時能更加放心。", "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "驗證此裝置將會將其標記為受信任,且已驗證您的使用者將會信任此裝置。", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "如果您不小心這樣做了,您可以在此工作階段上設定安全訊息,這將會以新的復原方法重新加密此工作階段的訊息歷史。", "If disabled, messages from encrypted rooms won't appear in search results.": "若停用,從加密聊天室傳來的訊息將不會出現在搜尋結果中。", - "Disable": "停用", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s 正在安全地快取本機已加密的訊息以讓它們顯示在搜尋結果中:", "Space used:": "已使用空間:", "Indexed messages:": "已建立索引的訊息:", @@ -1356,7 +1317,6 @@ "How fast should messages be downloaded.": "訊息應多久下載一次。", "You have not verified this user.": "您尚未驗證此使用者。", "Confirm your identity by entering your account password below.": "請在下方輸入您的帳號密碼來確認身份。", - "Copy": "複製", "Create key backup": "建立金鑰備份", "Message downloading sleep time(ms)": "訊息下載休眠時間(毫秒)", "Indexed rooms:": "已建立索引的聊天室:", @@ -1471,7 +1431,6 @@ "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.": "逐一手動驗證使用者的工作階段,將其標記為受信任階段,不透過裝置的交叉簽署機制來信任。", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "在加密聊天室中,您的訊息相當安全,只有您與接收者有獨特的金鑰可以將其解鎖。", "Verify all users in a room to ensure it's secure.": "請驗證聊天室中的所有使用者來確保安全。", - "Verification cancelled": "驗證已取消", "Sends a message as html, without interpreting it as markdown": "以 html 形式傳送訊息,不將其轉譯為 markdown", "Cancel replying to a message": "取消回覆訊息", "Sign in with SSO": "使用 SSO 登入", @@ -1562,7 +1521,6 @@ "Ok": "確定", "New version available. Update now.": "有可用的新版本。立刻更新。", "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "您的伺服器管理員已停用在私密聊天室與私人訊息中預設的端對端加密。", - "People": "聯絡人", "Switch to light mode": "切換至淺色模式", "Switch to dark mode": "切換至深色模式", "Switch theme": "切換佈景主題", @@ -1586,8 +1544,6 @@ "Looks good!": "看起來真棒!", "Use custom size": "使用自訂大小", "Hey you. You're the best!": "嘿!您最棒了!", - "Message layout": "訊息佈局", - "Modern": "現代", "Use a system font": "使用系統字型", "System font name": "系統字型名稱", "The authenticity of this encrypted message can't be guaranteed on this device.": "無法在此裝置上保證加密訊息的真實性。", @@ -1631,7 +1587,6 @@ "Edited at %(date)s": "編輯於 %(date)s", "Click to view edits": "點擊以檢視編輯", "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "如果其他版本的 %(brand)s 仍在其他分頁中開啟,請關閉它,因為在同一主機上使用同時啟用與停用惰性載入的 %(brand)s 可能會造成問題。", - "User menu": "使用者選單", "* %(senderName)s %(emote)s": "* %(senderName)s %(emote)s", "Change notification settings": "變更通知設定", "Your server isn't responding to some requests.": "您的伺服器未回應某些請求。", @@ -1666,7 +1621,6 @@ "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "把 ( ͡° ͜ʖ ͡°) 加在純文字訊息前", "Unknown App": "未知的應用程式", "Not encrypted": "未加密", - "About": "關於", "Room settings": "聊天室設定", "Take a picture": "拍照", "Unpin": "取消釘選", @@ -1722,7 +1676,6 @@ "Send feedback": "傳送回饋", "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "專業建議:如果您開始了一個錯誤,請遞交除錯紀錄檔以協助我們尋找問題。", "Please view existing bugs on Github first. No match? Start a new one.": "請先檢視 GitHub 上既有的錯誤。沒有相符的嗎?回報新的問題。", - "Report a bug": "回報錯誤", "Comment": "評論", "Feedback sent": "已傳送回饋", "%(senderName)s ended the call": "%(senderName)s 結束了通話", @@ -2087,10 +2040,8 @@ "Use email to optionally be discoverable by existing contacts.": "設定電子郵件地址後,即可選擇性被已有的聯絡人新增為好友。", "Use email or phone to optionally be discoverable by existing contacts.": "使用電子郵件或電話以選擇性地被既有的聯絡人探索。", "Add an email to be able to reset your password.": "新增電子郵件以重設您的密碼。", - "Forgot password?": "忘記密碼?", "That phone number doesn't look quite right, please check and try again": "電話號碼看起來不太對,請檢查並再試一次", "About homeservers": "關於家伺服器", - "Learn more": "了解更多", "Use your preferred Matrix homeserver if you have one, or host your own.": "如果您有的話,可以使用您偏好的 Matrix 家伺服器,或是自己架一個。", "Other homeserver": "其他家伺服器", "Sign into your homeserver": "登入您的家伺服器", @@ -2200,7 +2151,6 @@ "Who are you working with?": "您與誰一起工作?", "Skip for now": "現在跳過", "Failed to create initial space rooms": "無法建立第一個聊天空間中的聊天室", - "Room name": "聊天室名稱", "Support": "支援", "Random": "隨機", "Welcome to ": "歡迎加入 ", @@ -2373,7 +2323,6 @@ "Or send invite link": "或傳送邀請連結", "Some suggestions may be hidden for privacy.": "出於隱私考量,可能會隱藏一些建議。", "Search for rooms or people": "搜尋聊天室或夥伴", - "Forward message": "轉寄訊息", "Sent": "已傳送", "You don't have permission to do this": "您沒有權限執行此動作", "Error - Mixed content": "錯誤 - 混合內容", @@ -2387,7 +2336,6 @@ "Collapse reply thread": "收折回覆討論串", "Show preview": "顯示預覽", "View source": "檢視原始碼", - "Forward": "轉寄", "Settings - %(spaceName)s": "設定 - %(spaceName)s", "Report the entire room": "回報整個聊天室", "Spam or propaganda": "垃圾郵件或宣傳", @@ -2498,8 +2446,6 @@ "Connection failed": "連線失敗", "Could not connect media": "無法連結媒體", "Message bubbles": "訊息泡泡", - "Image": "圖片", - "Sticker": "貼圖", "Error downloading audio": "下載音訊時發生錯誤", "Anyone in a space can find and join. Edit which spaces can access here.": "任何在聊天空間中的人都可以找到並加入。編輯哪些聊天空間可以存取這裡。", "Please note upgrading will make a new version of the room. All current messages will stay in this archived room.": "請注意,升級會讓聊天室變成全新的版本。目前所有的訊息都只會留在被封存的聊天室。", @@ -2515,7 +2461,6 @@ "Visible to space members": "對聊天空間成員顯示為可見", "Public room": "公開聊天室", "Private room (invite only)": "私密聊天室(邀請制)", - "Create a room": "建立聊天室", "Only people invited will be able to find and join this room.": "僅被邀請的夥伴才能找到並加入此聊天室。", "Anyone will be able to find and join this room, not just members of .": "任何人都將可以找到並加入此聊天室,而不只是 的成員。", "You can change this at any time from room settings.": "您隨時都可以從聊天室設定變更此設定。", @@ -2620,7 +2565,6 @@ "Change space avatar": "變更聊天空間大頭照", "Anyone in can find and join. You can select other spaces too.": "在 中的任何人都可以找到並加入。您也可以選取其他聊天空間。", "Message didn't send. Click for info.": "訊息未傳送。點擊以取得更多資訊。", - "Message": "訊息", "To join a space you'll need an invite.": "若要加入聊天空間,您必須被邀請。", "Would you like to leave the rooms in this space?": "您想要離開此聊天空間中的聊天室嗎?", "You are about to leave .": "您將要離開 。", @@ -2770,7 +2714,6 @@ "Spaces to show": "要顯示的聊天空間", "Sidebar": "側邊欄", "Other rooms": "其他聊天室", - "Copy link": "複製連結", "Mentions only": "僅提及", "Forget": "忘記", "Files": "檔案", @@ -3111,7 +3054,6 @@ "%(value)sd": "%(value)sd", "%(timeRemaining)s left": "剩下 %(timeRemaining)s", "Debug logs contain application usage data including your username, the IDs or aliases of the rooms you have visited, which UI elements you last interacted with, and the usernames of other users. They do not contain messages.": "除錯紀錄檔包含了應用程式使用資料,其中包括了您的使用者名稱、您造訪過的聊天室別名或 ID,您先前與哪些使用者介面元素互動過,以及其他使用者的使用者名稱。但不會包含任何訊息內容。", - "Video": "影片", "Next recently visited room or space": "下一個最近造訪過的聊天室或聊天空間", "Previous recently visited room or space": "上一個最近造訪過的聊天室或群組空間", "Event ID: %(eventId)s": "事件 ID:%(eventId)s", @@ -3737,7 +3679,6 @@ "Adding…": "正在新增…", "Write something…": "寫點東西…", "Rejecting invite…": "正在回絕邀請…", - "Loading…": "載入中…", "Joining room…": "正在加入聊天室…", "Joining space…": "正在加入聊天空間…", "Encrypting your message…": "正在加密您的訊息…", @@ -3947,6 +3888,35 @@ "Your server is unsupported": "您的伺服器不支援", "This server is using an older version of Matrix. Upgrade to Matrix %(version)s to use %(brand)s without errors.": "此伺服器正在使用較舊版本的 Matrix。升級至 Matrix %(version)s 以在沒有錯誤的情況下使用 %(brand)s。", "Your homeserver is too old and does not support the minimum API version required. Please contact your server owner, or upgrade your server.": "您的家伺服器太舊了,不支援所需的最低 API 版本。請聯絡您的伺服器擁有者,或是升級您的伺服器。", + "common": { + "about": "關於", + "analytics": "分析", + "encryption_enabled": "加密已啟用", + "error": "錯誤", + "forward_message": "轉寄訊息", + "image": "圖片", + "loading": "載入中…", + "message": "訊息", + "message_layout": "訊息佈局", + "modern": "現代", + "mute": "靜音", + "no_results": "沒有結果", + "offline": "離線", + "password": "密碼", + "people": "聯絡人", + "reactions": "反應", + "report_a_bug": "回報錯誤", + "room_name": "聊天室名稱", + "security": "安全性", + "settings": "設定", + "sticker": "貼圖", + "success": "成功", + "suggestions": "建議", + "unmute": "解除靜音", + "username": "使用者名稱", + "verification_cancelled": "驗證已取消", + "video": "影片" + }, "action": { "reject": "拒絕", "confirm": "確認", @@ -3971,5 +3941,8 @@ "share": "分享", "skip": "略過", "logout": "登出" + }, + "a11y": { + "user_menu": "使用者選單" } -} +} \ No newline at end of file diff --git a/src/languageHandler.tsx b/src/languageHandler.tsx index 0829282b6c89..8f77cc456572 100644 --- a/src/languageHandler.tsx +++ b/src/languageHandler.tsx @@ -23,12 +23,14 @@ import { logger } from "matrix-js-sdk/src/logger"; import { Optional } from "matrix-events-sdk"; import { MapWithDefault, safeSet } from "matrix-js-sdk/src/utils"; +import type Translations from "./i18n/strings/en_EN.json"; import SettingsStore from "./settings/SettingsStore"; import PlatformPeg from "./PlatformPeg"; import { SettingLevel } from "./settings/SettingLevel"; import { retry } from "./utils/promise"; import SdkConfig from "./SdkConfig"; import { ModuleRunner } from "./modules/ModuleRunner"; +import { Leaves } from "./@types/common"; // @ts-ignore - $webapp is a webpack resolve alias pointing to the output directory, see webpack config import webpackLangJsonUrl from "$webapp/i18n/languages.json"; @@ -46,7 +48,7 @@ counterpart.setSeparator("|"); const FALLBACK_LOCALE = "en"; counterpart.setFallbackLocale(FALLBACK_LOCALE); -interface ErrorOptions { +export interface ErrorOptions { // Because we're mixing the subsitution variables and `cause` into the same object // below, we want them to always explicitly say whether there is an underlying error // or not to avoid typos of "cause" slipping through unnoticed. @@ -72,7 +74,7 @@ interface ErrorOptions { export class UserFriendlyError extends Error { public readonly translatedMessage: string; - public constructor(message: string, substitutionVariablesAndCause?: IVariables & ErrorOptions) { + public constructor(message: TranslationKey, substitutionVariablesAndCause?: IVariables & ErrorOptions) { const errorOptions = { cause: substitutionVariablesAndCause?.cause, }; @@ -93,17 +95,27 @@ export class UserFriendlyError extends Error { export function getUserLanguage(): string { const language = SettingsStore.getValue("language", null, /*excludeDefault:*/ true); - if (language) { + if (typeof language === "string" && language !== "") { return language; } else { return normalizeLanguageKey(getLanguageFromBrowser()); } } +/** + * A type representing the union of possible keys into the translation file using `|` delimiter to access nested fields. + * @example `common|error` to access `error` within the `common` sub-object. + * { + * "common": { + * "error": "Error" + * } + * } + */ +export type TranslationKey = Leaves; + // Function which only purpose is to mark that a string is translatable // Does not actually do anything. It's helpful for automatic extraction of translatable strings -export function _td(s: string): string { - // eslint-disable-line @typescript-eslint/naming-convention +export function _td(s: TranslationKey): TranslationKey { return s; } @@ -176,6 +188,9 @@ function safeCounterpartTranslate(text: string, variables?: IVariables): { trans return translateWithFallback(text, options); } +/** + * The value a variable or tag can take for a translation interpolation. + */ type SubstitutionValue = number | string | React.ReactNode | ((sub: string) => React.ReactNode); export interface IVariables { @@ -189,7 +204,7 @@ export type TranslatedString = string | React.ReactNode; // For development/testing purposes it is useful to also output the original string // Don't do that for release versions -const annotateStrings = (result: TranslatedString, translationKey: string): TranslatedString => { +const annotateStrings = (result: TranslatedString, translationKey: TranslationKey): TranslatedString => { if (!ANNOTATE_STRINGS) { return result; } @@ -222,9 +237,9 @@ const annotateStrings = (result: TranslatedString, translationKey: string): Tran * @return a React component if any non-strings were used in substitutions, otherwise a string */ // eslint-next-line @typescript-eslint/naming-convention -export function _t(text: string, variables?: IVariables): string; -export function _t(text: string, variables: IVariables | undefined, tags: Tags): React.ReactNode; -export function _t(text: string, variables?: IVariables, tags?: Tags): TranslatedString { +export function _t(text: TranslationKey, variables?: IVariables): string; +export function _t(text: TranslationKey, variables: IVariables | undefined, tags: Tags): React.ReactNode; +export function _t(text: TranslationKey, variables?: IVariables, tags?: Tags): TranslatedString { // The translation returns text so there's no XSS vector here (no unsafe HTML, no code execution) const { translated } = safeCounterpartTranslate(text, variables); const substituted = substitute(translated, variables, tags); @@ -243,9 +258,9 @@ export function _t(text: string, variables?: IVariables, tags?: Tags): Translate * or translation used a fallback locale, otherwise a string */ // eslint-next-line @typescript-eslint/naming-convention -export function _tDom(text: string, variables?: IVariables): TranslatedString; -export function _tDom(text: string, variables: IVariables, tags: Tags): React.ReactNode; -export function _tDom(text: string, variables?: IVariables, tags?: Tags): TranslatedString { +export function _tDom(text: TranslationKey, variables?: IVariables): TranslatedString; +export function _tDom(text: TranslationKey, variables: IVariables, tags: Tags): React.ReactNode; +export function _tDom(text: TranslationKey, variables?: IVariables, tags?: Tags): TranslatedString { // The translation returns text so there's no XSS vector here (no unsafe HTML, no code execution) const { translated, isFallback } = safeCounterpartTranslate(text, variables); const substituted = substitute(translated, variables, tags); @@ -433,10 +448,7 @@ export function setMissingEntryGenerator(f: (value: string) => void): void { } type Languages = { - [lang: string]: { - fileName: string; - label: string; - }; + [lang: string]: string; }; export function setLanguage(preferredLangs: string | string[]): Promise { @@ -467,7 +479,7 @@ export function setLanguage(preferredLangs: string | string[]): Promise { logger.error("Unable to find an appropriate language"); } - return getLanguageRetry(i18nFolder + availLangs[langToUse].fileName); + return getLanguageRetry(i18nFolder + availLangs[langToUse]); }) .then(async (langData): Promise => { counterpart.registerTranslations(langToUse, langData); @@ -481,7 +493,7 @@ export function setLanguage(preferredLangs: string | string[]): Promise { // Set 'en' as fallback language: if (langToUse !== "en") { - return getLanguageRetry(i18nFolder + availLangs["en"].fileName); + return getLanguageRetry(i18nFolder + availLangs["en"]); } }) .then(async (langData): Promise => { @@ -492,21 +504,23 @@ export function setLanguage(preferredLangs: string | string[]): Promise { type Language = { value: string; - label: string; + label: string; // translated + labelInTargetLanguage: string; // translated }; -export function getAllLanguagesFromJson(): Promise { - return getLangsJson().then((langsObject) => { - const langs: Language[] = []; - for (const langKey in langsObject) { - if (langsObject.hasOwnProperty(langKey)) { - langs.push({ - value: langKey, - label: langsObject[langKey].label, - }); - } - } - return langs; +export async function getAllLanguagesFromJson(): Promise { + return Object.keys(await getLangsJson()); +} + +export async function getAllLanguagesWithLabels(): Promise { + const languageNames = new Intl.DisplayNames([getUserLanguage()], { type: "language", style: "short" }); + const languages = await getAllLanguagesFromJson(); + return languages.map((langKey) => { + return { + value: langKey, + label: languageNames.of(langKey)!, + labelInTargetLanguage: new Intl.DisplayNames([langKey], { type: "language", style: "short" }).of(langKey)!, + }; }); } diff --git a/src/modules/ProxiedModuleApi.ts b/src/modules/ProxiedModuleApi.ts index e7d7cb4b442d..e3aa453a8af2 100644 --- a/src/modules/ProxiedModuleApi.ts +++ b/src/modules/ProxiedModuleApi.ts @@ -25,7 +25,7 @@ import { IRegisterRequestParams } from "matrix-js-sdk/src/matrix"; import { ModuleUiDialogOptions } from "@matrix-org/react-sdk-module-api/lib/types/ModuleUiDialogOptions"; import Modal from "../Modal"; -import { _t } from "../languageHandler"; +import { _t, TranslationKey } from "../languageHandler"; import { ModuleUiDialog } from "../components/views/dialogs/ModuleUiDialog"; import SdkConfig from "../SdkConfig"; import PlatformPeg from "../PlatformPeg"; @@ -74,7 +74,7 @@ export class ProxiedModuleApi implements ModuleApi { /** * @override */ - public translateString(s: string, variables?: Record): string { + public translateString(s: TranslationKey, variables?: Record): string { return _t(s, variables); } diff --git a/src/notifications/VectorPushRulesDefinitions.ts b/src/notifications/VectorPushRulesDefinitions.ts index b9a9b33411de..37c6b7a60f05 100644 --- a/src/notifications/VectorPushRulesDefinitions.ts +++ b/src/notifications/VectorPushRulesDefinitions.ts @@ -17,7 +17,7 @@ limitations under the License. import { IAnnotatedPushRule, PushRuleAction, RuleId } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; -import { _td } from "../languageHandler"; +import { _td, TranslationKey } from "../languageHandler"; import { StandardActions } from "./StandardActions"; import { PushRuleVectorState, VectorState } from "./PushRuleVectorState"; import { NotificationUtils } from "./NotificationUtils"; @@ -27,7 +27,7 @@ type StateToActionsMap = { }; interface IVectorPushRuleDefinition { - description: string; + description: TranslationKey; vectorStateToActions: StateToActionsMap; /** * Rules that should be updated to be kept in sync @@ -37,7 +37,7 @@ interface IVectorPushRuleDefinition { } class VectorPushRuleDefinition { - public readonly description: string; + public readonly description: TranslationKey; public readonly vectorStateToActions: StateToActionsMap; public readonly syncedRuleIds?: (RuleId | string)[]; diff --git a/src/phonenumber.ts b/src/phonenumber.ts index 682e87d37946..cc92630144de 100644 --- a/src/phonenumber.ts +++ b/src/phonenumber.ts @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { _td } from "./languageHandler"; - const PHONE_NUMBER_REGEXP = /^[0-9 -.]+$/; /* @@ -42,1256 +40,1007 @@ export const getEmojiFlag = (countryCode: string): string => { return String.fromCodePoint(...countryCode.split("").map((l) => UNICODE_BASE + l.charCodeAt(0))); }; +// Use https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames to get name export interface PhoneNumberCountryDefinition { iso2: string; - name: string; prefix: string; } export const COUNTRIES: PhoneNumberCountryDefinition[] = [ { iso2: "GB", - name: _td("United Kingdom"), prefix: "44", }, { iso2: "US", - name: _td("United States"), prefix: "1", }, { iso2: "AF", - name: _td("Afghanistan"), prefix: "93", }, { iso2: "AX", - name: _td("\u00c5land Islands"), prefix: "358", }, { iso2: "AL", - name: _td("Albania"), prefix: "355", }, { iso2: "DZ", - name: _td("Algeria"), prefix: "213", }, { iso2: "AS", - name: _td("American Samoa"), prefix: "1", }, { iso2: "AD", - name: _td("Andorra"), prefix: "376", }, { iso2: "AO", - name: _td("Angola"), prefix: "244", }, { iso2: "AI", - name: _td("Anguilla"), prefix: "1", }, { iso2: "AQ", - name: _td("Antarctica"), prefix: "672", }, { iso2: "AG", - name: _td("Antigua & Barbuda"), prefix: "1", }, { iso2: "AR", - name: _td("Argentina"), prefix: "54", }, { iso2: "AM", - name: _td("Armenia"), prefix: "374", }, { iso2: "AW", - name: _td("Aruba"), prefix: "297", }, { iso2: "AU", - name: _td("Australia"), prefix: "61", }, { iso2: "AT", - name: _td("Austria"), prefix: "43", }, { iso2: "AZ", - name: _td("Azerbaijan"), prefix: "994", }, { iso2: "BS", - name: _td("Bahamas"), prefix: "1", }, { iso2: "BH", - name: _td("Bahrain"), prefix: "973", }, { iso2: "BD", - name: _td("Bangladesh"), prefix: "880", }, { iso2: "BB", - name: _td("Barbados"), prefix: "1", }, { iso2: "BY", - name: _td("Belarus"), prefix: "375", }, { iso2: "BE", - name: _td("Belgium"), prefix: "32", }, { iso2: "BZ", - name: _td("Belize"), prefix: "501", }, { iso2: "BJ", - name: _td("Benin"), prefix: "229", }, { iso2: "BM", - name: _td("Bermuda"), prefix: "1", }, { iso2: "BT", - name: _td("Bhutan"), prefix: "975", }, { iso2: "BO", - name: _td("Bolivia"), prefix: "591", }, { iso2: "BA", - name: _td("Bosnia"), prefix: "387", }, { iso2: "BW", - name: _td("Botswana"), prefix: "267", }, { iso2: "BV", - name: _td("Bouvet Island"), prefix: "47", }, { iso2: "BR", - name: _td("Brazil"), prefix: "55", }, { iso2: "IO", - name: _td("British Indian Ocean Territory"), prefix: "246", }, { iso2: "VG", - name: _td("British Virgin Islands"), prefix: "1", }, { iso2: "BN", - name: _td("Brunei"), prefix: "673", }, { iso2: "BG", - name: _td("Bulgaria"), prefix: "359", }, { iso2: "BF", - name: _td("Burkina Faso"), prefix: "226", }, { iso2: "BI", - name: _td("Burundi"), prefix: "257", }, { iso2: "KH", - name: _td("Cambodia"), prefix: "855", }, { iso2: "CM", - name: _td("Cameroon"), prefix: "237", }, { iso2: "CA", - name: _td("Canada"), prefix: "1", }, { iso2: "CV", - name: _td("Cape Verde"), prefix: "238", }, { iso2: "BQ", - name: _td("Caribbean Netherlands"), prefix: "599", }, { iso2: "KY", - name: _td("Cayman Islands"), prefix: "1", }, { iso2: "CF", - name: _td("Central African Republic"), prefix: "236", }, { iso2: "TD", - name: _td("Chad"), prefix: "235", }, { iso2: "CL", - name: _td("Chile"), prefix: "56", }, { iso2: "CN", - name: _td("China"), prefix: "86", }, { iso2: "CX", - name: _td("Christmas Island"), prefix: "61", }, { iso2: "CC", - name: _td("Cocos (Keeling) Islands"), prefix: "61", }, { iso2: "CO", - name: _td("Colombia"), prefix: "57", }, { iso2: "KM", - name: _td("Comoros"), prefix: "269", }, { iso2: "CG", - name: _td("Congo - Brazzaville"), prefix: "242", }, { iso2: "CD", - name: _td("Congo - Kinshasa"), prefix: "243", }, { iso2: "CK", - name: _td("Cook Islands"), prefix: "682", }, { iso2: "CR", - name: _td("Costa Rica"), prefix: "506", }, { iso2: "HR", - name: _td("Croatia"), prefix: "385", }, { iso2: "CU", - name: _td("Cuba"), prefix: "53", }, { iso2: "CW", - name: _td("Cura\u00e7ao"), prefix: "599", }, { iso2: "CY", - name: _td("Cyprus"), prefix: "357", }, { iso2: "CZ", - name: _td("Czech Republic"), prefix: "420", }, { iso2: "CI", - name: _td("C\u00f4te d\u2019Ivoire"), prefix: "225", }, { iso2: "DK", - name: _td("Denmark"), prefix: "45", }, { iso2: "DJ", - name: _td("Djibouti"), prefix: "253", }, { iso2: "DM", - name: _td("Dominica"), prefix: "1", }, { iso2: "DO", - name: _td("Dominican Republic"), prefix: "1", }, { iso2: "EC", - name: _td("Ecuador"), prefix: "593", }, { iso2: "EG", - name: _td("Egypt"), prefix: "20", }, { iso2: "SV", - name: _td("El Salvador"), prefix: "503", }, { iso2: "GQ", - name: _td("Equatorial Guinea"), prefix: "240", }, { iso2: "ER", - name: _td("Eritrea"), prefix: "291", }, { iso2: "EE", - name: _td("Estonia"), prefix: "372", }, { iso2: "ET", - name: _td("Ethiopia"), prefix: "251", }, { iso2: "FK", - name: _td("Falkland Islands"), prefix: "500", }, { iso2: "FO", - name: _td("Faroe Islands"), prefix: "298", }, { iso2: "FJ", - name: _td("Fiji"), prefix: "679", }, { iso2: "FI", - name: _td("Finland"), prefix: "358", }, { iso2: "FR", - name: _td("France"), prefix: "33", }, { iso2: "GF", - name: _td("French Guiana"), prefix: "594", }, { iso2: "PF", - name: _td("French Polynesia"), prefix: "689", }, { iso2: "TF", - name: _td("French Southern Territories"), prefix: "262", }, { iso2: "GA", - name: _td("Gabon"), prefix: "241", }, { iso2: "GM", - name: _td("Gambia"), prefix: "220", }, { iso2: "GE", - name: _td("Georgia"), prefix: "995", }, { iso2: "DE", - name: _td("Germany"), prefix: "49", }, { iso2: "GH", - name: _td("Ghana"), prefix: "233", }, { iso2: "GI", - name: _td("Gibraltar"), prefix: "350", }, { iso2: "GR", - name: _td("Greece"), prefix: "30", }, { iso2: "GL", - name: _td("Greenland"), prefix: "299", }, { iso2: "GD", - name: _td("Grenada"), prefix: "1", }, { iso2: "GP", - name: _td("Guadeloupe"), prefix: "590", }, { iso2: "GU", - name: _td("Guam"), prefix: "1", }, { iso2: "GT", - name: _td("Guatemala"), prefix: "502", }, { iso2: "GG", - name: _td("Guernsey"), prefix: "44", }, { iso2: "GN", - name: _td("Guinea"), prefix: "224", }, { iso2: "GW", - name: _td("Guinea-Bissau"), prefix: "245", }, { iso2: "GY", - name: _td("Guyana"), prefix: "592", }, { iso2: "HT", - name: _td("Haiti"), prefix: "509", }, { iso2: "HM", - name: _td("Heard & McDonald Islands"), prefix: "672", }, { iso2: "HN", - name: _td("Honduras"), prefix: "504", }, { iso2: "HK", - name: _td("Hong Kong"), prefix: "852", }, { iso2: "HU", - name: _td("Hungary"), prefix: "36", }, { iso2: "IS", - name: _td("Iceland"), prefix: "354", }, { iso2: "IN", - name: _td("India"), prefix: "91", }, { iso2: "ID", - name: _td("Indonesia"), prefix: "62", }, { iso2: "IR", - name: _td("Iran"), prefix: "98", }, { iso2: "IQ", - name: _td("Iraq"), prefix: "964", }, { iso2: "IE", - name: _td("Ireland"), prefix: "353", }, { iso2: "IM", - name: _td("Isle of Man"), prefix: "44", }, { iso2: "IL", - name: _td("Israel"), prefix: "972", }, { iso2: "IT", - name: _td("Italy"), prefix: "39", }, { iso2: "JM", - name: _td("Jamaica"), prefix: "1", }, { iso2: "JP", - name: _td("Japan"), prefix: "81", }, { iso2: "JE", - name: _td("Jersey"), prefix: "44", }, { iso2: "JO", - name: _td("Jordan"), prefix: "962", }, { iso2: "KZ", - name: _td("Kazakhstan"), prefix: "7", }, { iso2: "KE", - name: _td("Kenya"), prefix: "254", }, { iso2: "KI", - name: _td("Kiribati"), prefix: "686", }, { iso2: "XK", - name: _td("Kosovo"), prefix: "383", }, { iso2: "KW", - name: _td("Kuwait"), prefix: "965", }, { iso2: "KG", - name: _td("Kyrgyzstan"), prefix: "996", }, { iso2: "LA", - name: _td("Laos"), prefix: "856", }, { iso2: "LV", - name: _td("Latvia"), prefix: "371", }, { iso2: "LB", - name: _td("Lebanon"), prefix: "961", }, { iso2: "LS", - name: _td("Lesotho"), prefix: "266", }, { iso2: "LR", - name: _td("Liberia"), prefix: "231", }, { iso2: "LY", - name: _td("Libya"), prefix: "218", }, { iso2: "LI", - name: _td("Liechtenstein"), prefix: "423", }, { iso2: "LT", - name: _td("Lithuania"), prefix: "370", }, { iso2: "LU", - name: _td("Luxembourg"), prefix: "352", }, { iso2: "MO", - name: _td("Macau"), prefix: "853", }, { iso2: "MK", - name: _td("Macedonia"), prefix: "389", }, { iso2: "MG", - name: _td("Madagascar"), prefix: "261", }, { iso2: "MW", - name: _td("Malawi"), prefix: "265", }, { iso2: "MY", - name: _td("Malaysia"), prefix: "60", }, { iso2: "MV", - name: _td("Maldives"), prefix: "960", }, { iso2: "ML", - name: _td("Mali"), prefix: "223", }, { iso2: "MT", - name: _td("Malta"), prefix: "356", }, { iso2: "MH", - name: _td("Marshall Islands"), prefix: "692", }, { iso2: "MQ", - name: _td("Martinique"), prefix: "596", }, { iso2: "MR", - name: _td("Mauritania"), prefix: "222", }, { iso2: "MU", - name: _td("Mauritius"), prefix: "230", }, { iso2: "YT", - name: _td("Mayotte"), prefix: "262", }, { iso2: "MX", - name: _td("Mexico"), prefix: "52", }, { iso2: "FM", - name: _td("Micronesia"), prefix: "691", }, { iso2: "MD", - name: _td("Moldova"), prefix: "373", }, { iso2: "MC", - name: _td("Monaco"), prefix: "377", }, { iso2: "MN", - name: _td("Mongolia"), prefix: "976", }, { iso2: "ME", - name: _td("Montenegro"), prefix: "382", }, { iso2: "MS", - name: _td("Montserrat"), prefix: "1", }, { iso2: "MA", - name: _td("Morocco"), prefix: "212", }, { iso2: "MZ", - name: _td("Mozambique"), prefix: "258", }, { iso2: "MM", - name: _td("Myanmar"), prefix: "95", }, { iso2: "NA", - name: _td("Namibia"), prefix: "264", }, { iso2: "NR", - name: _td("Nauru"), prefix: "674", }, { iso2: "NP", - name: _td("Nepal"), prefix: "977", }, { iso2: "NL", - name: _td("Netherlands"), prefix: "31", }, { iso2: "NC", - name: _td("New Caledonia"), prefix: "687", }, { iso2: "NZ", - name: _td("New Zealand"), prefix: "64", }, { iso2: "NI", - name: _td("Nicaragua"), prefix: "505", }, { iso2: "NE", - name: _td("Niger"), prefix: "227", }, { iso2: "NG", - name: _td("Nigeria"), prefix: "234", }, { iso2: "NU", - name: _td("Niue"), prefix: "683", }, { iso2: "NF", - name: _td("Norfolk Island"), prefix: "672", }, { iso2: "KP", - name: _td("North Korea"), prefix: "850", }, { iso2: "MP", - name: _td("Northern Mariana Islands"), prefix: "1", }, { iso2: "NO", - name: _td("Norway"), prefix: "47", }, { iso2: "OM", - name: _td("Oman"), prefix: "968", }, { iso2: "PK", - name: _td("Pakistan"), prefix: "92", }, { iso2: "PW", - name: _td("Palau"), prefix: "680", }, { iso2: "PS", - name: _td("Palestine"), prefix: "970", }, { iso2: "PA", - name: _td("Panama"), prefix: "507", }, { iso2: "PG", - name: _td("Papua New Guinea"), prefix: "675", }, { iso2: "PY", - name: _td("Paraguay"), prefix: "595", }, { iso2: "PE", - name: _td("Peru"), prefix: "51", }, { iso2: "PH", - name: _td("Philippines"), prefix: "63", }, { iso2: "PN", - name: _td("Pitcairn Islands"), prefix: "870", }, { iso2: "PL", - name: _td("Poland"), prefix: "48", }, { iso2: "PT", - name: _td("Portugal"), prefix: "351", }, { iso2: "PR", - name: _td("Puerto Rico"), prefix: "1", }, { iso2: "QA", - name: _td("Qatar"), prefix: "974", }, { iso2: "RO", - name: _td("Romania"), prefix: "40", }, { iso2: "RU", - name: _td("Russia"), prefix: "7", }, { iso2: "RW", - name: _td("Rwanda"), prefix: "250", }, { iso2: "RE", - name: _td("R\u00e9union"), prefix: "262", }, { iso2: "WS", - name: _td("Samoa"), prefix: "685", }, { iso2: "SM", - name: _td("San Marino"), prefix: "378", }, { iso2: "SA", - name: _td("Saudi Arabia"), prefix: "966", }, { iso2: "SN", - name: _td("Senegal"), prefix: "221", }, { iso2: "RS", - name: _td("Serbia"), prefix: "381 p", }, { iso2: "SC", - name: _td("Seychelles"), prefix: "248", }, { iso2: "SL", - name: _td("Sierra Leone"), prefix: "232", }, { iso2: "SG", - name: _td("Singapore"), prefix: "65", }, { iso2: "SX", - name: _td("Sint Maarten"), prefix: "1", }, { iso2: "SK", - name: _td("Slovakia"), prefix: "421", }, { iso2: "SI", - name: _td("Slovenia"), prefix: "386", }, { iso2: "SB", - name: _td("Solomon Islands"), prefix: "677", }, { iso2: "SO", - name: _td("Somalia"), prefix: "252", }, { iso2: "ZA", - name: _td("South Africa"), prefix: "27", }, { iso2: "GS", - name: _td("South Georgia & South Sandwich Islands"), prefix: "500", }, { iso2: "KR", - name: _td("South Korea"), prefix: "82", }, { iso2: "SS", - name: _td("South Sudan"), prefix: "211", }, { iso2: "ES", - name: _td("Spain"), prefix: "34", }, { iso2: "LK", - name: _td("Sri Lanka"), prefix: "94", }, { iso2: "BL", - name: _td("St. Barth\u00e9lemy"), prefix: "590", }, { iso2: "SH", - name: _td("St. Helena"), prefix: "290 n", }, { iso2: "KN", - name: _td("St. Kitts & Nevis"), prefix: "1", }, { iso2: "LC", - name: _td("St. Lucia"), prefix: "1", }, { iso2: "MF", - name: _td("St. Martin"), prefix: "590", }, { iso2: "PM", - name: _td("St. Pierre & Miquelon"), prefix: "508", }, { iso2: "VC", - name: _td("St. Vincent & Grenadines"), prefix: "1", }, { iso2: "SD", - name: _td("Sudan"), prefix: "249", }, { iso2: "SR", - name: _td("Suriname"), prefix: "597", }, { iso2: "SJ", - name: _td("Svalbard & Jan Mayen"), prefix: "47", }, { iso2: "SZ", - name: _td("Swaziland"), prefix: "268", }, { iso2: "SE", - name: _td("Sweden"), prefix: "46", }, { iso2: "CH", - name: _td("Switzerland"), prefix: "41", }, { iso2: "SY", - name: _td("Syria"), prefix: "963", }, { iso2: "ST", - name: _td("S\u00e3o Tom\u00e9 & Pr\u00edncipe"), prefix: "239", }, { iso2: "TW", - name: _td("Taiwan"), prefix: "886", }, { iso2: "TJ", - name: _td("Tajikistan"), prefix: "992", }, { iso2: "TZ", - name: _td("Tanzania"), prefix: "255", }, { iso2: "TH", - name: _td("Thailand"), prefix: "66", }, { iso2: "TL", - name: _td("Timor-Leste"), prefix: "670", }, { iso2: "TG", - name: _td("Togo"), prefix: "228", }, { iso2: "TK", - name: _td("Tokelau"), prefix: "690", }, { iso2: "TO", - name: _td("Tonga"), prefix: "676", }, { iso2: "TT", - name: _td("Trinidad & Tobago"), prefix: "1", }, { iso2: "TN", - name: _td("Tunisia"), prefix: "216", }, { iso2: "TR", - name: _td("Turkey"), prefix: "90", }, { iso2: "TM", - name: _td("Turkmenistan"), prefix: "993", }, { iso2: "TC", - name: _td("Turks & Caicos Islands"), prefix: "1", }, { iso2: "TV", - name: _td("Tuvalu"), prefix: "688", }, { iso2: "VI", - name: _td("U.S. Virgin Islands"), prefix: "1", }, { iso2: "UG", - name: _td("Uganda"), prefix: "256", }, { iso2: "UA", - name: _td("Ukraine"), prefix: "380", }, { iso2: "AE", - name: _td("United Arab Emirates"), prefix: "971", }, { iso2: "UY", - name: _td("Uruguay"), prefix: "598", }, { iso2: "UZ", - name: _td("Uzbekistan"), prefix: "998", }, { iso2: "VU", - name: _td("Vanuatu"), prefix: "678", }, { iso2: "VA", - name: _td("Vatican City"), prefix: "39", }, { iso2: "VE", - name: _td("Venezuela"), prefix: "58", }, { iso2: "VN", - name: _td("Vietnam"), prefix: "84", }, { iso2: "WF", - name: _td("Wallis & Futuna"), prefix: "681", }, { iso2: "EH", - name: _td("Western Sahara"), prefix: "212", }, { iso2: "YE", - name: _td("Yemen"), prefix: "967", }, { iso2: "ZM", - name: _td("Zambia"), prefix: "260", }, { iso2: "ZW", - name: _td("Zimbabwe"), prefix: "263", }, ]; diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index 7592c21209fd..4d4a672e44b1 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -18,7 +18,7 @@ limitations under the License. import { MatrixClient } from "matrix-js-sdk/src/matrix"; import React, { ReactNode } from "react"; -import { _t, _td } from "../languageHandler"; +import { _t, _td, TranslationKey } from "../languageHandler"; import { NotificationBodyEnabledController, NotificationsEnabledController, @@ -98,7 +98,7 @@ export enum Features { OidcNativeFlow = "feature_oidc_native_flow", } -export const labGroupNames: Record = { +export const labGroupNames: Record = { [LabGroup.Messaging]: _td("Messaging"), [LabGroup.Profile]: _td("Profile"), [LabGroup.Spaces]: _td("Spaces"), @@ -106,7 +106,7 @@ export const labGroupNames: Record = { [LabGroup.Rooms]: _td("Rooms"), [LabGroup.VoiceAndVideo]: _td("Voice & Video"), [LabGroup.Moderation]: _td("Moderation"), - [LabGroup.Analytics]: _td("Analytics"), + [LabGroup.Analytics]: _td("common|analytics"), [LabGroup.Themes]: _td("Themes"), [LabGroup.Encryption]: _td("Encryption"), [LabGroup.Experimental]: _td("Experimental"), @@ -129,13 +129,13 @@ export interface IBaseSetting { // Display names are strongly recommended for clarity. // Display name can also be an object for different levels. displayName?: - | string + | TranslationKey | Partial<{ - [level in SettingLevel]: string; + [level in SettingLevel]: TranslationKey; }>; // Optional description which will be shown as microCopy under SettingsFlags - description?: string | (() => ReactNode); + description?: TranslationKey | (() => ReactNode); // The supported levels are required. Preferably, use the preset arrays // at the top of this file to define this rather than a custom array. @@ -165,11 +165,11 @@ export interface IBaseSetting { // XXX: Keep this around for re-use in future Betas betaInfo?: { - title: string; // _td + title: TranslationKey; caption: () => ReactNode; faq?: (enabled: boolean) => ReactNode; image?: string; // require(...) - feedbackSubheading?: string; + feedbackSubheading?: TranslationKey; feedbackLabel?: string; extraSettings?: string[]; requiresRefresh?: boolean; @@ -266,7 +266,7 @@ export const SETTINGS: { [setting: string]: ISetting } = { labsGroup: LabGroup.Moderation, displayName: _td("Report to moderators"), description: _td( - "In rooms that support moderation, " + "the “Report” button will let you report abuse to room moderators.", + "In rooms that support moderation, the “Report” button will let you report abuse to room moderators.", ), supportedLevels: LEVELS_FEATURE, default: false, @@ -805,7 +805,7 @@ export const SETTINGS: { [setting: string]: ISetting } = { "deviceClientInformationOptIn": { supportedLevels: [SettingLevel.ACCOUNT], displayName: _td( - `Record the client name, version, and url ` + `to recognise sessions more easily in session manager`, + "Record the client name, version, and url to recognise sessions more easily in session manager", ), default: false, }, diff --git a/src/settings/SettingsStore.ts b/src/settings/SettingsStore.ts index 0637776802fd..48ffbd656a23 100644 --- a/src/settings/SettingsStore.ts +++ b/src/settings/SettingsStore.ts @@ -269,7 +269,7 @@ export default class SettingsStore { else displayName = displayName["default"]; } - return _t(displayName as string); + return displayName ? _t(displayName) : null; } /** diff --git a/src/slash-commands/command.ts b/src/slash-commands/command.ts index 30fa7732f9b2..9f230c609e8a 100644 --- a/src/slash-commands/command.ts +++ b/src/slash-commands/command.ts @@ -22,7 +22,7 @@ import { SlashCommand as SlashCommandEvent } from "@matrix-org/analytics-events/ import { TimelineRenderingType } from "../contexts/RoomContext"; import { reject } from "./utils"; -import { _t, UserFriendlyError } from "../languageHandler"; +import { _t, TranslationKey, UserFriendlyError } from "../languageHandler"; import { PosthogAnalytics } from "../PosthogAnalytics"; import { CommandCategories, RunResult } from "./interface"; @@ -38,7 +38,7 @@ interface ICommandOpts { command: string; aliases?: string[]; args?: string; - description: string; + description: TranslationKey; analyticsName?: SlashCommandEvent["command"]; runFn?: RunFn; category: string; @@ -51,7 +51,7 @@ export class Command { public readonly command: string; public readonly aliases: string[]; public readonly args?: string; - public readonly description: string; + public readonly description: TranslationKey; public readonly runFn?: RunFn; public readonly category: string; public readonly hideCompletionAfterSpace: boolean; diff --git a/src/stores/RoomViewStore.tsx b/src/stores/RoomViewStore.tsx index 53d4f0781a0b..50c060c44622 100644 --- a/src/stores/RoomViewStore.tsx +++ b/src/stores/RoomViewStore.tsx @@ -630,9 +630,7 @@ export class RoomViewStore extends EventEmitter { description = (

    {_t( - "You attempted to join using a room ID without providing a list " + - "of servers to join through. Room IDs are internal identifiers and " + - "cannot be used to join a room without additional information.", + "You attempted to join using a room ID without providing a list of servers to join through. Room IDs are internal identifiers and cannot be used to join a room without additional information.", )}

    diff --git a/src/stores/spaces/index.ts b/src/stores/spaces/index.ts index fc4a3c016435..53e028c34705 100644 --- a/src/stores/spaces/index.ts +++ b/src/stores/spaces/index.ts @@ -41,7 +41,7 @@ export const getMetaSpaceName = (spaceKey: MetaSpace, allRoomsInHome = false): s case MetaSpace.Favourites: return _t("Favourites"); case MetaSpace.People: - return _t("People"); + return _t("common|people"); case MetaSpace.Orphans: return _t("Other rooms"); } diff --git a/src/toasts/AnalyticsToast.tsx b/src/toasts/AnalyticsToast.tsx index 88fe63112285..bbb58d99817f 100644 --- a/src/toasts/AnalyticsToast.tsx +++ b/src/toasts/AnalyticsToast.tsx @@ -51,7 +51,7 @@ const onLearnMoreNoOptIn = (): void => { // otherwise, the user either clicked "Cancel", or closed the dialog without making a choice, // leave the toast open }, - primaryButton: _t("Enable"), + primaryButton: _t("action|enable"), }); }; @@ -91,7 +91,7 @@ export const showToast = (): void => { ), acceptLabel: _t("That's fine"), onAccept, - rejectLabel: _t("Learn more"), + rejectLabel: _t("action|learn_more"), onReject: onLearnMorePreviouslyOptedIn, }; } else if (legacyAnalyticsOptIn === null || legacyAnalyticsOptIn === undefined) { @@ -104,14 +104,13 @@ export const showToast = (): void => { ); props = { description: _t( - "Share anonymous data to help us identify issues. Nothing personal. No third parties. " + - "Learn More", + "Share anonymous data to help us identify issues. Nothing personal. No third parties. Learn More", {}, { LearnMoreLink: learnMoreLink }, ), - acceptLabel: _t("Yes"), + acceptLabel: _t("action|yes"), onAccept, - rejectLabel: _t("No"), + rejectLabel: _t("action|no"), onReject, }; } else { diff --git a/src/toasts/DesktopNotificationsToast.ts b/src/toasts/DesktopNotificationsToast.ts index 2bf5c158245e..14a369729aca 100644 --- a/src/toasts/DesktopNotificationsToast.ts +++ b/src/toasts/DesktopNotificationsToast.ts @@ -42,7 +42,7 @@ export const showToast = (fromMessageSend: boolean): void => { title: fromMessageSend ? _t("Don't miss a reply") : _t("Notifications"), props: { description: _t("Enable desktop notifications"), - acceptLabel: _t("Enable"), + acceptLabel: _t("action|enable"), onAccept, rejectLabel: _t("action|dismiss"), onReject, diff --git a/src/toasts/IncomingCallToast.tsx b/src/toasts/IncomingCallToast.tsx index 5142f1d8e780..5e74cdf31d71 100644 --- a/src/toasts/IncomingCallToast.tsx +++ b/src/toasts/IncomingCallToast.tsx @@ -140,7 +140,7 @@ export function IncomingCallToast({ callEvent }: Props): JSX.Element { ) : ( diff --git a/src/toasts/IncomingLegacyCallToast.tsx b/src/toasts/IncomingLegacyCallToast.tsx index acd46f401038..c6ef1daf3ee7 100644 --- a/src/toasts/IncomingLegacyCallToast.tsx +++ b/src/toasts/IncomingLegacyCallToast.tsx @@ -125,7 +125,7 @@ export default class IncomingLegacyCallToast extends React.Component - {_t("Decline")} + {_t("action|decline")} { title: _t("Use app for a better experience"), props: { description: _t( - "%(brand)s is experimental on a mobile web browser. " + - "For a better experience and the latest features, use our free native app.", + "%(brand)s is experimental on a mobile web browser. For a better experience and the latest features, use our free native app.", { brand }, ), acceptLabel: _t("Use app"), diff --git a/src/toasts/SetupEncryptionToast.ts b/src/toasts/SetupEncryptionToast.ts index dc42e9201007..873780b8d854 100644 --- a/src/toasts/SetupEncryptionToast.ts +++ b/src/toasts/SetupEncryptionToast.ts @@ -50,7 +50,7 @@ const getIcon = (kind: Kind): string => { const getSetupCaption = (kind: Kind): string => { switch (kind) { case Kind.SET_UP_ENCRYPTION: - return _t("Continue"); + return _t("action|continue"); case Kind.UPGRADE_ENCRYPTION: return _t("action|upgrade"); case Kind.VERIFY_THIS_SESSION: diff --git a/src/toasts/UnverifiedSessionToast.tsx b/src/toasts/UnverifiedSessionToast.tsx index f242c25cbfeb..4139ae04889e 100644 --- a/src/toasts/UnverifiedSessionToast.tsx +++ b/src/toasts/UnverifiedSessionToast.tsx @@ -61,7 +61,7 @@ export const showToast = async (deviceId: string): Promise => { detail: , acceptLabel: _t("Yes, it was me"), onAccept, - rejectLabel: _t("No"), + rejectLabel: _t("action|no"), onReject, }, component: GenericToast, diff --git a/src/utils/AutoDiscoveryUtils.tsx b/src/utils/AutoDiscoveryUtils.tsx index 8027eb7292d3..55e62455c2fe 100644 --- a/src/utils/AutoDiscoveryUtils.tsx +++ b/src/utils/AutoDiscoveryUtils.tsx @@ -24,7 +24,7 @@ import { } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; -import { _t, UserFriendlyError } from "../languageHandler"; +import { _t, TranslationKey, UserFriendlyError } from "../languageHandler"; import SdkConfig from "../SdkConfig"; import { ValidatedServerConfig } from "./ValidatedServerConfig"; @@ -104,21 +104,15 @@ export default class AutoDiscoveryUtils { // don't make this easy to avoid. if (pageName === "register") { body = _t( - "You can register, but some features will be unavailable until the identity server is " + - "back online. If you keep seeing this warning, check your configuration or contact a server " + - "admin.", + "You can register, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.", ); } else if (pageName === "reset_password") { body = _t( - "You can reset your password, but some features will be unavailable until the identity " + - "server is back online. If you keep seeing this warning, check your configuration or contact " + - "a server admin.", + "You can reset your password, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.", ); } else { body = _t( - "You can log in, but some features will be unavailable until the identity server is " + - "back online. If you keep seeing this warning, check your configuration or contact a server " + - "admin.", + "You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.", ); } } @@ -223,7 +217,8 @@ export default class AutoDiscoveryUtils { logger.error("Error determining preferred identity server URL:", isResult); if (isResult.state === AutoDiscovery.FAIL_ERROR) { if (AutoDiscovery.ALL_ERRORS.indexOf(isResult.error as string) !== -1) { - throw new UserFriendlyError(String(isResult.error)); + // XXX: We mark these with _td at the top of Login.tsx - we should come up with a better solution + throw new UserFriendlyError(String(isResult.error) as TranslationKey); } throw new UserFriendlyError("Unexpected error resolving identity server configuration"); } // else the error is not related to syntax - continue anyways. @@ -239,7 +234,8 @@ export default class AutoDiscoveryUtils { logger.error("Error processing homeserver config:", hsResult); if (!syntaxOnly || !AutoDiscoveryUtils.isLivelinessError(hsResult.error)) { if (AutoDiscovery.ALL_ERRORS.indexOf(hsResult.error as string) !== -1) { - throw new UserFriendlyError(String(hsResult.error)); + // XXX: We mark these with _td at the top of Login.tsx - we should come up with a better solution + throw new UserFriendlyError(String(hsResult.error) as TranslationKey); } if (hsResult.error === AutoDiscovery.ERROR_HOMESERVER_TOO_OLD) { throw new UserFriendlyError( diff --git a/src/utils/ErrorUtils.tsx b/src/utils/ErrorUtils.tsx index 2fe8e1da3121..91fe19bd1776 100644 --- a/src/utils/ErrorUtils.tsx +++ b/src/utils/ErrorUtils.tsx @@ -17,7 +17,7 @@ limitations under the License. import React, { ReactNode } from "react"; import { MatrixError, ConnectionError } from "matrix-js-sdk/src/matrix"; -import { _t, _td, Tags, TranslatedString } from "../languageHandler"; +import { _t, _td, Tags, TranslatedString, TranslationKey } from "../languageHandler"; import SdkConfig from "../SdkConfig"; import { ValidatedServerConfig } from "./ValidatedServerConfig"; import ExternalLink from "../components/views/elements/ExternalLink"; @@ -49,7 +49,7 @@ export const adminContactStrings = { export function messageForResourceLimitError( limitType: string | undefined, adminContact: string | undefined, - strings: Record, + strings: Record, extraTranslations?: Tags, ): TranslatedString { let errString = limitType ? strings[limitType] : undefined; @@ -154,8 +154,7 @@ export function messageForConnectionError( return ( {_t( - "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. " + - "Either use HTTPS or enable unsafe scripts.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", {}, { a: (sub) => { @@ -178,9 +177,7 @@ export function messageForConnectionError( return ( {_t( - "Can't connect to homeserver - please check your connectivity, ensure your " + - "homeserver's SSL certificate is trusted, and that a browser extension " + - "is not blocking requests.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.", {}, { a: (sub) => ( diff --git a/src/utils/MultiInviter.ts b/src/utils/MultiInviter.ts index edbe6c03b4f5..05e2b0628375 100644 --- a/src/utils/MultiInviter.ts +++ b/src/utils/MultiInviter.ts @@ -308,8 +308,7 @@ export default class MultiInviter { case "ORG.MATRIX.JSSDK_MISSING_PARAM": if (getAddressType(address) === AddressType.Email) { errorText = _t( - "Cannot invite user by email without an identity server. " + - 'You can connect to one under "Settings".', + 'Cannot invite user by email without an identity server. You can connect to one under "Settings".', ); } } diff --git a/src/utils/PasswordScorer.ts b/src/utils/PasswordScorer.ts index 093c49b0676c..7acbcf111098 100644 --- a/src/utils/PasswordScorer.ts +++ b/src/utils/PasswordScorer.ts @@ -17,7 +17,7 @@ limitations under the License. import zxcvbn, { ZXCVBNFeedbackWarning } from "zxcvbn"; import { MatrixClient } from "matrix-js-sdk/src/matrix"; -import { _t, _td } from "../languageHandler"; +import { _t, _td, TranslationKey } from "../languageHandler"; import { MatrixClientPeg } from "../MatrixClientPeg"; const ZXCVBN_USER_INPUTS = ["riot", "matrix"]; @@ -90,8 +90,9 @@ export function scorePassword( } for (let i = 0; i < zxcvbnResult.feedback.suggestions.length; ++i) { - // translate suggestions - zxcvbnResult.feedback.suggestions[i] = _t(zxcvbnResult.feedback.suggestions[i]); + // translate suggestions - we ensure we mark them as `_td` at the top of this file + // https://github.com/dropbox/zxcvbn/issues/284 will be a better approach when it lands + zxcvbnResult.feedback.suggestions[i] = _t(zxcvbnResult.feedback.suggestions[i] as TranslationKey); } // and warning, if any if (zxcvbnResult.feedback.warning) { diff --git a/src/utils/SessionLock.ts b/src/utils/SessionLock.ts new file mode 100644 index 000000000000..ce1a9ced841c --- /dev/null +++ b/src/utils/SessionLock.ts @@ -0,0 +1,261 @@ +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { logger } from "matrix-js-sdk/src/logger"; +import { v4 as uuidv4 } from "uuid"; + +/* + * Functionality for checking that only one instance is running at once + * + * The algorithm here is twofold. + * + * First, we "claim" a lock by periodically writing to `STORAGE_ITEM_PING`. On shutdown, we clear that item. So, + * a new instance starting up can check if the lock is free by inspecting `STORAGE_ITEM_PING`. If it is unset, + * or is stale, the new instance can assume the lock is free and claim it for itself. Otherwise, the new instance + * has to wait for the ping to be stale, or the item to be cleared. + * + * Secondly, we need a mechanism for proactively telling existing instances to shut down. We do this by writing a + * unique value to `STORAGE_ITEM_CLAIMANT`. Other instances of the app are supposed to monitor for writes to + * `STORAGE_ITEM_CLAIMANT` and initiate shutdown when it happens. + * + * There is slight complexity in `STORAGE_ITEM_CLAIMANT` in that we need to watch out for yet another instance + * starting up and staking a claim before we even get a chance to take the lock. When that happens we just bail out + * and let the newer instance get the lock. + * + * `STORAGE_ITEM_OWNER` has no functional role in the lock mechanism; it exists solely as a diagnostic indicator + * of which instance is writing to `STORAGE_ITEM_PING`. + */ + +export const SESSION_LOCK_CONSTANTS = { + /** + * LocalStorage key for an item which indicates we have the lock. + * + * The instance which holds the lock writes the current time to this key every few seconds, to indicate it is still + * alive and holds the lock. + */ + STORAGE_ITEM_PING: "react_sdk_session_lock_ping", + + /** + * LocalStorage key for an item which holds the unique "session ID" of the instance which currently holds the lock. + * + * This property doesn't actually form a functional part of the locking algorithm; it is purely diagnostic. + */ + STORAGE_ITEM_OWNER: "react_sdk_session_lock_owner", + + /** + * LocalStorage key for the session ID of the most recent claimant to the lock. + * + * Each instance writes to this key on startup, so existing instances can detect new ones starting up. + */ + STORAGE_ITEM_CLAIMANT: "react_sdk_session_lock_claimant", + + /** + * The number of milliseconds after which we consider a lock claim stale + */ + LOCK_EXPIRY_TIME_MS: 30000, +}; + +/** + * See if any instances are currently running + * + * @returns true if any instance is currently active + */ +export function checkSessionLockFree(): boolean { + const lastPingTime = window.localStorage.getItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_PING); + if (lastPingTime === null) { + // no other holder + return true; + } + + // see if it has expired + const timeAgo = Date.now() - parseInt(lastPingTime); + return timeAgo > SESSION_LOCK_CONSTANTS.LOCK_EXPIRY_TIME_MS; +} + +/** + * Ensure that only one instance of the application is running at once. + * + * If there are any other running instances, tells them to stop, and waits for them to do so. + * + * Once we are the sole instance, sets a background job going to service a lock. Then, if another instance starts up, + * `onNewInstance` is called: it should shut the app down to make sure we aren't doing any more work. + * + * @param onNewInstance - callback to handle another instance starting up. NOTE: this may be called before + * `getSessionLock` returns if the lock is stolen before we get a chance to start. + * + * @returns true if we successfully claimed the lock; false if another instance stole it from under our nose + * (in which `onNewInstance` will have been called) + */ +export async function getSessionLock(onNewInstance: () => Promise): Promise { + /** unique ID for this session */ + const sessionIdentifier = uuidv4(); + + const prefixedLogger = logger.withPrefix(`getSessionLock[${sessionIdentifier}]`); + + /** The ID of our regular task to service the lock. + * + * Non-null while we hold the lock; null if we have not yet claimed it, or have released it. */ + let lockServicer: number | null = null; + + /** + * See if the lock is free. + * + * @returns + * - `>0`: the number of milliseconds before the current claim on the lock can be considered stale. + * - `0`: the lock is free for the taking + * - `<0`: someone else has staked a claim for the lock, so we are no longer in line for it. + */ + function checkLock(): number { + // first of all, check that we are still the active claimant (ie, another instance hasn't come along while we were waiting. + const claimant = window.localStorage.getItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_CLAIMANT); + if (claimant !== sessionIdentifier) { + prefixedLogger.warn(`Lock was claimed by ${claimant} while we were waiting for it: aborting startup`); + return -1; + } + + const lastPingTime = window.localStorage.getItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_PING); + const lockHolder = window.localStorage.getItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_OWNER); + if (lastPingTime === null) { + prefixedLogger.info("No other session has the lock: proceeding with startup"); + return 0; + } + + const timeAgo = Date.now() - parseInt(lastPingTime); + const remaining = SESSION_LOCK_CONSTANTS.LOCK_EXPIRY_TIME_MS - timeAgo; + if (remaining <= 0) { + // another session claimed the lock, but it is stale. + prefixedLogger.info(`Last ping (from ${lockHolder}) was ${timeAgo}ms ago: proceeding with startup`); + return 0; + } + + prefixedLogger.info(`Last ping (from ${lockHolder}) was ${timeAgo}ms ago, waiting`); + return remaining; + } + + function serviceLock(): void { + window.localStorage.setItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_OWNER, sessionIdentifier); + window.localStorage.setItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_PING, Date.now().toString()); + } + + // handler for storage events, used later + function onStorageEvent(event: StorageEvent): void { + if (event.key === SESSION_LOCK_CONSTANTS.STORAGE_ITEM_CLAIMANT) { + // It's possible that the event was delayed, and this update actually predates our claim on the lock. + // (In particular: suppose tab A and tab B start concurrently and both attempt to set STORAGE_ITEM_CLAIMANT. + // Each write queues up a `storage` event for all other tabs. So both tabs see the `storage` event from the + // other, even though by the time it arrives we may have overwritten it.) + // + // To resolve any doubt, we check the *actual* state of the storage. + const claimingSession = window.localStorage.getItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_CLAIMANT); + if (claimingSession === sessionIdentifier) { + return; + } + prefixedLogger.info(`Session ${claimingSession} is waiting for the lock`); + window.removeEventListener("storage", onStorageEvent); + releaseLock().catch((err) => { + prefixedLogger.error("Error releasing session lock", err); + }); + } + } + + async function releaseLock(): Promise { + // tell the app to shut down + await onNewInstance(); + + // and, once it has done so, stop pinging the lock. + if (lockServicer !== null) { + clearInterval(lockServicer); + } + window.localStorage.removeItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_PING); + window.localStorage.removeItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_OWNER); + lockServicer = null; + } + + // first of all, stake a claim for the lock. This tells anyone else holding the lock that we want it. + window.localStorage.setItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_CLAIMANT, sessionIdentifier); + + // now, wait for the lock to be free. + // eslint-disable-next-line no-constant-condition + while (true) { + const remaining = checkLock(); + + if (remaining == 0) { + // ok, the lock is free, and nobody else has staked a more recent claim. + break; + } else if (remaining < 0) { + // someone else staked a claim for the lock; we bail out. + await onNewInstance(); + return false; + } + + // someone else has the lock. + // wait for either the ping to expire, or a storage event. + let onStorageUpdate: (event: StorageEvent) => void; + + const storageUpdatePromise = new Promise((resolve) => { + onStorageUpdate = (event: StorageEvent) => { + if ( + event.key === SESSION_LOCK_CONSTANTS.STORAGE_ITEM_PING || + event.key === SESSION_LOCK_CONSTANTS.STORAGE_ITEM_CLAIMANT + ) + resolve(event); + }; + }); + + const sleepPromise = new Promise((resolve) => { + setTimeout(resolve, remaining, undefined); + }); + + window.addEventListener("storage", onStorageUpdate!); + await Promise.race([sleepPromise, storageUpdatePromise]); + window.removeEventListener("storage", onStorageUpdate!); + } + + // If we get here, we know the lock is ours for the taking. + + // CRITICAL SECTION + // + // The following code, up to the end of the function, must all be synchronous (ie, no `await` calls), to ensure that + // we get our listeners in place and all the writes to localStorage done before other tabs run again. + + // claim the lock, and kick off a background process to service it every 5 seconds + serviceLock(); + lockServicer = setInterval(serviceLock, 5000); + + // Now add a listener for other claimants to the lock. + window.addEventListener("storage", onStorageEvent); + + // also add a listener to clear our claims when our tab closes or navigates away + window.addEventListener("pagehide", (event) => { + // only remove the ping if we still think we're the owner. Otherwise we could be removing someone else's claim! + if (lockServicer !== null) { + prefixedLogger.debug("page hide: clearing our claim"); + window.localStorage.removeItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_PING); + window.localStorage.removeItem(SESSION_LOCK_CONSTANTS.STORAGE_ITEM_OWNER); + } + + // It's worth noting that, according to the spec, the page might come back to life again after a pagehide. + // + // In practice that's unlikely because Element is unlikely to qualify for the bfcache, but if it does, + // this is probably the best we can do: we certainly don't want to stop the user loading any new tabs because + // Element happens to be in a bfcache somewhere. + // + // So, we just hope that we aren't in the middle of any crypto operations, and rely on `onStorageEvent` kicking + // in soon enough after we resume to tell us if another tab woke up while we were asleep. + }); + + return true; +} diff --git a/src/utils/leave-behaviour.ts b/src/utils/leave-behaviour.ts index b751baa95099..775d54cc5606 100644 --- a/src/utils/leave-behaviour.ts +++ b/src/utils/leave-behaviour.ts @@ -135,8 +135,7 @@ export async function leaveRoomBehaviour( Modal.createDialog(ErrorDialog, { title: _t("Can't leave Server Notices room"), description: _t( - "This room is used for important messages from the Homeserver, " + - "so you cannot leave it.", + "This room is used for important messages from the Homeserver, so you cannot leave it.", ), }); return; diff --git a/src/utils/location/LocationShareErrors.ts b/src/utils/location/LocationShareErrors.ts index a59c92959241..2e0905fa3635 100644 --- a/src/utils/location/LocationShareErrors.ts +++ b/src/utils/location/LocationShareErrors.ts @@ -32,8 +32,7 @@ export const getLocationShareErrorMessage = (errorType?: LocationShareError): st case LocationShareError.MapStyleUrlNotReachable: default: return _t( - `This homeserver is not configured correctly to display maps, ` + - `or the configured map server may be unreachable.`, + "This homeserver is not configured correctly to display maps, or the configured map server may be unreachable.", ); } }; diff --git a/src/utils/location/positionFailureMessage.ts b/src/utils/location/positionFailureMessage.ts index a5c1e6e60b7f..72a1223479e8 100644 --- a/src/utils/location/positionFailureMessage.ts +++ b/src/utils/location/positionFailureMessage.ts @@ -27,8 +27,7 @@ export const positionFailureMessage = (code: number): string | undefined => { switch (code) { case 1: return _t( - "%(brand)s was denied permission to fetch your location. " + - "Please allow location access in your browser settings.", + "%(brand)s was denied permission to fetch your location. Please allow location access in your browser settings.", { brand }, ); case 2: diff --git a/src/utils/oidc/getDelegatedAuthAccountUrl.ts b/src/utils/oidc/getDelegatedAuthAccountUrl.ts new file mode 100644 index 000000000000..cfb61cb44343 --- /dev/null +++ b/src/utils/oidc/getDelegatedAuthAccountUrl.ts @@ -0,0 +1,27 @@ +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { IClientWellKnown, IDelegatedAuthConfig, M_AUTHENTICATION } from "matrix-js-sdk/src/matrix"; + +/** + * Get the delegated auth account management url if configured + * @param clientWellKnown from MatrixClient.getClientWellKnown + * @returns the account management url, or undefined + */ +export const getDelegatedAuthAccountUrl = (clientWellKnown: IClientWellKnown | undefined): string | undefined => { + const delegatedAuthConfig = M_AUTHENTICATION.findIn(clientWellKnown); + return delegatedAuthConfig?.account; +}; diff --git a/src/utils/oidc/getOidcLogoutUrl.ts b/src/utils/oidc/getOidcLogoutUrl.ts new file mode 100644 index 000000000000..a18e5b2b6cb5 --- /dev/null +++ b/src/utils/oidc/getOidcLogoutUrl.ts @@ -0,0 +1,28 @@ +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Create a delegated auth account management URL with logout params as per MSC3824 and MSC2965 + * https://github.com/matrix-org/matrix-spec-proposals/blob/hughns/sso-redirect-action/proposals/3824-oidc-aware-clients.md#definition-of-oidc-aware + * https://github.com/sandhose/matrix-doc/blob/msc/sandhose/oidc-discovery/proposals/2965-oidc-discovery.md#account-management-url-parameters + */ +export const getOidcLogoutUrl = (delegatedAuthAccountUrl: string, deviceId: string): string => { + const logoutUrl = new URL(delegatedAuthAccountUrl); + logoutUrl.searchParams.set("action", "session_end"); + logoutUrl.searchParams.set("device_id", deviceId); + + return logoutUrl.toString(); +}; diff --git a/src/voice-broadcast/components/molecules/ConfirmListenBroadcastStopCurrent.tsx b/src/voice-broadcast/components/molecules/ConfirmListenBroadcastStopCurrent.tsx index 0affa3beba95..8a6d8f04fc5a 100644 --- a/src/voice-broadcast/components/molecules/ConfirmListenBroadcastStopCurrent.tsx +++ b/src/voice-broadcast/components/molecules/ConfirmListenBroadcastStopCurrent.tsx @@ -30,14 +30,13 @@ export const ConfirmListenBroadcastStopCurrentDialog: React.FC = ({ onFin

    {_t( - "If you start listening to this live broadcast, " + - "your current live broadcast recording will be ended.", + "If you start listening to this live broadcast, your current live broadcast recording will be ended.", )}

    onFinished(true)} primaryButton={_t("Yes, end my recording")} - cancelButton={_t("No")} + cancelButton={_t("action|no")} onCancel={() => onFinished(false)} />
    diff --git a/src/voice-broadcast/hooks/useVoiceBroadcastRecording.tsx b/src/voice-broadcast/hooks/useVoiceBroadcastRecording.tsx index 4756eeeb8415..7a8a5983e10d 100644 --- a/src/voice-broadcast/hooks/useVoiceBroadcastRecording.tsx +++ b/src/voice-broadcast/hooks/useVoiceBroadcastRecording.tsx @@ -35,8 +35,7 @@ const showStopBroadcastingDialog = async (): Promise => { description: (

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

    ), diff --git a/src/voice-broadcast/utils/checkVoiceBroadcastPreConditions.tsx b/src/voice-broadcast/utils/checkVoiceBroadcastPreConditions.tsx index c5dfd416b478..8d186ff550e9 100644 --- a/src/voice-broadcast/utils/checkVoiceBroadcastPreConditions.tsx +++ b/src/voice-broadcast/utils/checkVoiceBroadcastPreConditions.tsx @@ -28,8 +28,7 @@ const showAlreadyRecordingDialog = (): void => { description: (

    {_t( - "You are already recording a voice broadcast. " + - "Please end your current voice broadcast to start a new one.", + "You are already recording a voice broadcast. Please end your current voice broadcast to start a new one.", )}

    ), @@ -43,8 +42,7 @@ const showInsufficientPermissionsDialog = (): void => { description: (

    {_t( - "You don't have the required permissions to start a voice broadcast in this room. " + - "Contact a room administrator to upgrade your permissions.", + "You don't have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.", )}

    ), @@ -58,8 +56,7 @@ const showOthersAlreadyRecordingDialog = (): void => { description: (

    {_t( - "Someone else is already recording a voice broadcast. " + - "Wait for their voice broadcast to end to start a new one.", + "Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.", )}

    ), diff --git a/src/voice-broadcast/utils/showCantStartACallDialog.tsx b/src/voice-broadcast/utils/showCantStartACallDialog.tsx index 61124ea96e9c..ec7d11c77e3a 100644 --- a/src/voice-broadcast/utils/showCantStartACallDialog.tsx +++ b/src/voice-broadcast/utils/showCantStartACallDialog.tsx @@ -26,8 +26,7 @@ export const showCantStartACallDialog = (): void => { description: (

    {_t( - "You can’t start a call as you are currently recording a live broadcast. " + - "Please end your live broadcast in order to start a call.", + "You can’t start a call as you are currently recording a live broadcast. Please end your live broadcast in order to start a call.", )}

    ), diff --git a/src/widgets/CapabilityText.tsx b/src/widgets/CapabilityText.tsx index 1d302f6c4782..9d3483324971 100644 --- a/src/widgets/CapabilityText.tsx +++ b/src/widgets/CapabilityText.tsx @@ -29,7 +29,7 @@ import { import { EventType, MsgType } from "matrix-js-sdk/src/matrix"; import React from "react"; -import { _t, _td, TranslatedString } from "../languageHandler"; +import { _t, _td, TranslatedString, TranslationKey } from "../languageHandler"; import { ElementWidgetCapabilities } from "../stores/widgets/ElementWidgetCapabilities"; import { MatrixClientPeg } from "../MatrixClientPeg"; import TextWithTooltip from "../components/views/elements/TextWithTooltip"; @@ -38,7 +38,10 @@ type GENERIC_WIDGET_KIND = "generic"; // eslint-disable-line @typescript-eslint/ const GENERIC_WIDGET_KIND: GENERIC_WIDGET_KIND = "generic"; type SendRecvStaticCapText = Partial< - Record>>> + Record< + EventType | string, + Partial>> + > >; export interface TranslatedCapabilityText { @@ -47,7 +50,7 @@ export interface TranslatedCapabilityText { } export class CapabilityText { - private static simpleCaps: Record>> = { + private static simpleCaps: Record>> = { [MatrixCapabilities.AlwaysOnScreen]: { [WidgetKind.Room]: _td("Remain on your screen when viewing another room, when running"), [GENERIC_WIDGET_KIND]: _td("Remain on your screen while running"), diff --git a/test/TextForEvent-test.ts b/test/TextForEvent-test.ts index f86b78086996..4a8258879cd9 100644 --- a/test/TextForEvent-test.ts +++ b/test/TextForEvent-test.ts @@ -14,7 +14,15 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { EventType, JoinRule, MatrixClient, MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix"; +import { + EventType, + HistoryVisibility, + JoinRule, + MatrixClient, + MatrixEvent, + Room, + RoomMember, +} from "matrix-js-sdk/src/matrix"; import { render } from "@testing-library/react"; import { ReactElement } from "react"; import { Mocked, mocked } from "jest-mock"; @@ -571,4 +579,39 @@ describe("TextForEvent", () => { ).toEqual("@a changed the join rule to a not implemented one"); }); }); + + describe("textForHistoryVisibilityEvent()", () => { + type TestCase = [string, { result: string }]; + const testCases: TestCase[] = [ + [ + HistoryVisibility.Invited, + { result: "@a made future room history visible to all room members, from the point they are invited." }, + ], + [ + HistoryVisibility.Joined, + { result: "@a made future room history visible to all room members, from the point they joined." }, + ], + [HistoryVisibility.Shared, { result: "@a made future room history visible to all room members." }], + [HistoryVisibility.WorldReadable, { result: "@a made future room history visible to anyone." }], + ]; + + it.each(testCases)( + "returns correct message when room join rule changed to %s", + (historyVisibility, { result }) => { + expect( + textForEvent( + new MatrixEvent({ + type: "m.room.history_visibility", + sender: "@a", + content: { + history_visibility: historyVisibility, + }, + state_key: "", + }), + mockClient, + ), + ).toEqual(result); + }, + ); + }); }); diff --git a/test/components/structures/TabbedView-test.tsx b/test/components/structures/TabbedView-test.tsx index 70e1cf6c9a4c..eca9d6c67e1c 100644 --- a/test/components/structures/TabbedView-test.tsx +++ b/test/components/structures/TabbedView-test.tsx @@ -19,11 +19,12 @@ import { act, fireEvent, render } from "@testing-library/react"; import TabbedView, { Tab, TabLocation } from "../../../src/components/structures/TabbedView"; import { NonEmptyArray } from "../../../src/@types/common"; +import { _t } from "../../../src/languageHandler"; describe("", () => { const generalTab = new Tab("GENERAL", "General", "general",
    general
    ); const labsTab = new Tab("LABS", "Labs", "labs",
    labs
    ); - const securityTab = new Tab("SECURITY", "Security", "security",
    security
    ); + const securityTab = new Tab("SECURITY", "common|security", "security",
    security
    ); const defaultProps = { tabLocation: TabLocation.LEFT, tabs: [generalTab, labsTab, securityTab] as NonEmptyArray>, @@ -55,7 +56,7 @@ describe("", () => { it("renders initialTabId tab as active when valid", () => { const { container } = render(getComponent({ initialTabId: securityTab.id })); - expect(getActiveTab(container)?.textContent).toEqual(securityTab.label); + expect(getActiveTab(container)?.textContent).toEqual(_t(securityTab.label)); expect(getActiveTabBody(container)?.textContent).toEqual("security"); }); @@ -66,7 +67,7 @@ describe("", () => { fireEvent.click(getByTestId(getTabTestId(securityTab))); }); - expect(getActiveTab(container)?.textContent).toEqual(securityTab.label); + expect(getActiveTab(container)?.textContent).toEqual(_t(securityTab.label)); expect(getActiveTabBody(container)?.textContent).toEqual("security"); }); @@ -102,12 +103,12 @@ describe("", () => { act(() => { fireEvent.click(getByTestId(getTabTestId(securityTab))); }); - expect(getActiveTab(container)?.textContent).toEqual(securityTab.label); + expect(getActiveTab(container)?.textContent).toEqual(_t(securityTab.label)); // rerender with new tab location rerender(getComponent({ tabLocation: TabLocation.TOP })); // still security tab - expect(getActiveTab(container)?.textContent).toEqual(securityTab.label); + expect(getActiveTab(container)?.textContent).toEqual(_t(securityTab.label)); }); }); diff --git a/test/components/structures/TimelinePanel-test.tsx b/test/components/structures/TimelinePanel-test.tsx index 8fd36c9d5ae3..97c9b52ab1c3 100644 --- a/test/components/structures/TimelinePanel-test.tsx +++ b/test/components/structures/TimelinePanel-test.tsx @@ -96,6 +96,7 @@ const mockEvents = (room: Room, count = 2): MatrixEvent[] => { type: EventType.RoomMessage, sender: "userId", content: createMessageEventContent("`Event${index}`"), + origin_server_ts: index, }), ); } @@ -447,7 +448,7 @@ describe("TimelinePanel", () => { render(); - const event = new MatrixEvent({ type: RoomEvent.Timeline }); + const event = new MatrixEvent({ type: RoomEvent.Timeline, origin_server_ts: 0 }); const data = { timeline: otherTimeline, liveEvent: true }; client.emit(RoomEvent.Timeline, event, room, false, false, data); @@ -463,7 +464,7 @@ describe("TimelinePanel", () => { render(); - const event = new MatrixEvent({ type: RoomEvent.Timeline }); + const event = new MatrixEvent({ type: RoomEvent.Timeline, origin_server_ts: 0 }); const data = { timeline: props.timelineSet.getLiveTimeline(), liveEvent: false }; client.emit(RoomEvent.Timeline, event, room, false, false, data); @@ -479,7 +480,7 @@ describe("TimelinePanel", () => { render(); - const event = new MatrixEvent({ type: RoomEvent.Timeline }); + const event = new MatrixEvent({ type: RoomEvent.Timeline, origin_server_ts: 0 }); const data = { timeline: props.timelineSet.getLiveTimeline(), liveEvent: false }; const toStartOfTimeline = true; client.emit(RoomEvent.Timeline, event, room, toStartOfTimeline, false, data); @@ -496,7 +497,7 @@ describe("TimelinePanel", () => { render(); - const event = new MatrixEvent({ type: RoomEvent.Timeline }); + const event = new MatrixEvent({ type: RoomEvent.Timeline, origin_server_ts: 0 }); const data = { timeline: props.timelineSet.getLiveTimeline(), liveEvent: true }; client.emit(RoomEvent.Timeline, event, room, false, false, data); @@ -521,7 +522,7 @@ describe("TimelinePanel", () => { await flushPromises(); - const event = new MatrixEvent({ type: RoomEvent.Timeline }); + const event = new MatrixEvent({ type: RoomEvent.Timeline, origin_server_ts: 0 }); const data = { timeline: props.timelineSet.getLiveTimeline(), liveEvent: true }; client.emit(RoomEvent.Timeline, event, room, false, false, data); @@ -539,11 +540,13 @@ describe("TimelinePanel", () => { type: "m.call.invite", room_id: virtualRoom.roomId, event_id: `virtualCallEvent1`, + origin_server_ts: 0, }); const virtualCallMetaEvent = new MatrixEvent({ type: "org.matrix.call.sdp_stream_metadata_changed", room_id: virtualRoom.roomId, event_id: `virtualCallEvent2`, + origin_server_ts: 0, }); const virtualEvents = [virtualCallInvite, ...mockEvents(virtualRoom), virtualCallMetaEvent]; const { timelineSet: overlayTimelineSet } = getProps(virtualRoom, virtualEvents); @@ -819,6 +822,7 @@ describe("TimelinePanel", () => { type: EventType.RoomMessage, sender: "userId", content: createMessageEventContent("ReplyEvent1"), + origin_server_ts: 0, }); reply2 = new MatrixEvent({ @@ -827,6 +831,7 @@ describe("TimelinePanel", () => { type: EventType.RoomMessage, sender: "userId", content: createMessageEventContent("ReplyEvent2"), + origin_server_ts: 0, }); root = new MatrixEvent({ @@ -835,6 +840,7 @@ describe("TimelinePanel", () => { type: EventType.RoomMessage, sender: "userId", content: createMessageEventContent("RootEvent"), + origin_server_ts: 0, }); const eventMap: { [key: string]: MatrixEvent } = { diff --git a/test/components/structures/ViewSource-test.tsx b/test/components/structures/ViewSource-test.tsx index a4bc8b1eca42..44c122e901db 100644 --- a/test/components/structures/ViewSource-test.tsx +++ b/test/components/structures/ViewSource-test.tsx @@ -19,13 +19,14 @@ import { EventType, MatrixEvent } from "matrix-js-sdk/src/matrix"; import React from "react"; import ViewSource from "../../../src/components/structures/ViewSource"; -import { mkEvent, stubClient } from "../../test-utils/test-utils"; +import { mkEvent, stubClient, mkMessage } from "../../test-utils/test-utils"; +import { MatrixClientPeg } from "../../../src/MatrixClientPeg"; -describe("ThreadView", () => { +describe("ViewSource", () => { const ROOM_ID = "!roomId:example.org"; const SENDER = "@alice:example.org"; - let messageEvent: MatrixEvent; + let redactedMessageEvent: MatrixEvent; const redactionEvent = mkEvent({ user: SENDER, @@ -35,14 +36,14 @@ describe("ThreadView", () => { }); beforeEach(() => { - messageEvent = new MatrixEvent({ + redactedMessageEvent = new MatrixEvent({ type: EventType.RoomMessageEncrypted, room_id: ROOM_ID, sender: SENDER, content: {}, state_key: undefined, }); - messageEvent.makeRedacted(redactionEvent); + redactedMessageEvent.makeRedacted(redactionEvent); }); beforeEach(stubClient); @@ -50,10 +51,21 @@ describe("ThreadView", () => { // See https://github.com/vector-im/element-web/issues/24165 it("doesn't error when viewing redacted encrypted messages", () => { // Sanity checks - expect(messageEvent.isEncrypted()).toBeTruthy(); + expect(redactedMessageEvent.isEncrypted()).toBeTruthy(); // @ts-ignore clearEvent is private, but it's being used directly - expect(messageEvent.clearEvent).toBe(undefined); + expect(redactedMessageEvent.clearEvent).toBe(undefined); - expect(() => render( {}} />)).not.toThrow(); + expect(() => render( {}} />)).not.toThrow(); + }); + + it("should show edit button if we are the sender and can post an edit", () => { + const event = mkMessage({ + msg: "Test", + user: MatrixClientPeg.get()!.getSafeUserId(), + room: ROOM_ID, + event: true, + }); + const { getByRole } = render( {}} />); + expect(getByRole("button", { name: "Edit" })).toBeInTheDocument(); }); }); diff --git a/test/components/structures/__snapshots__/MatrixChat-test.tsx.snap b/test/components/structures/__snapshots__/MatrixChat-test.tsx.snap index 5bd7b22f4e4f..9b8a77dfe887 100644 --- a/test/components/structures/__snapshots__/MatrixChat-test.tsx.snap +++ b/test/components/structures/__snapshots__/MatrixChat-test.tsx.snap @@ -37,7 +37,7 @@ exports[` with a soft-logged-out session should show the soft-logo Matrix

    { expect(fn).toHaveBeenCalledWith(expect.objectContaining({ prefix: defaultCountryCode.toString() })); }); }); + + it("should allow filtering", async () => { + const fn = jest.fn(); + const { getByRole, findByText } = render( + , + ); + + const dropdown = getByRole("button"); + fireEvent.click(dropdown); + + await userEvent.keyboard("Al"); + + await expect(findByText("Albania (+355)")).resolves.toBeInTheDocument(); + }); }); diff --git a/test/components/views/beta/BetaCard-test.tsx b/test/components/views/beta/BetaCard-test.tsx index bd8f8fa7359b..d2c457ccf8fb 100644 --- a/test/components/views/beta/BetaCard-test.tsx +++ b/test/components/views/beta/BetaCard-test.tsx @@ -21,6 +21,7 @@ import { render, screen } from "@testing-library/react"; import { shouldShowFeedback } from "../../../../src/utils/Feedback"; import BetaCard from "../../../../src/components/views/beta/BetaCard"; import SettingsStore from "../../../../src/settings/SettingsStore"; +import { TranslationKey } from "../../../../src/languageHandler"; jest.mock("../../../../src/utils/Feedback"); jest.mock("../../../../src/settings/SettingsStore"); @@ -31,10 +32,10 @@ describe("", () => { beforeEach(() => { mocked(SettingsStore).getBetaInfo.mockReturnValue({ - title: "title", + title: "title" as TranslationKey, caption: () => "caption", feedbackLabel: "feedbackLabel", - feedbackSubheading: "feedbackSubheading", + feedbackSubheading: "feedbackSubheading" as TranslationKey, }); mocked(SettingsStore).getValue.mockReturnValue(true); mocked(shouldShowFeedback).mockReturnValue(true); @@ -53,9 +54,9 @@ describe("", () => { it("should not show feedback prompt if label is unset", () => { mocked(SettingsStore).getBetaInfo.mockReturnValue({ - title: "title", + title: "title" as TranslationKey, caption: () => "caption", - feedbackSubheading: "feedbackSubheading", + feedbackSubheading: "feedbackSubheading" as TranslationKey, }); render(); expect(screen.queryByText("Feedback")).toBeFalsy(); @@ -63,7 +64,7 @@ describe("", () => { it("should not show feedback prompt if subheading is unset", () => { mocked(SettingsStore).getBetaInfo.mockReturnValue({ - title: "title", + title: "title" as TranslationKey, caption: () => "caption", feedbackLabel: "feedbackLabel", }); diff --git a/test/components/views/context_menus/RoomContextMenu-test.tsx b/test/components/views/context_menus/RoomContextMenu-test.tsx index 243031fae326..3fdd91874c9a 100644 --- a/test/components/views/context_menus/RoomContextMenu-test.tsx +++ b/test/components/views/context_menus/RoomContextMenu-test.tsx @@ -28,6 +28,8 @@ import { stubClient } from "../../../test-utils"; import { MatrixClientPeg } from "../../../../src/MatrixClientPeg"; import DMRoomMap from "../../../../src/utils/DMRoomMap"; import SettingsStore from "../../../../src/settings/SettingsStore"; +import { EchoChamber } from "../../../../src/stores/local-echo/EchoChamber"; +import { RoomNotifState } from "../../../../src/RoomNotifs"; jest.mock("../../../../src/customisations/helpers/UIComponents", () => ({ shouldShowComponent: jest.fn(), @@ -100,4 +102,15 @@ describe("RoomContextMenu", () => { expect(screen.getByText("Developer tools")).toBeInTheDocument(); }); }); + + it("should render notification option for joined rooms", () => { + const chamber = EchoChamber.forRoom(room); + chamber.notificationVolume = RoomNotifState.Mute; + jest.spyOn(room, "getMyMembership").mockReturnValue("join"); + renderComponent(); + + expect( + screen.getByRole("menuitem", { name: "Notifications" }).querySelector(".mx_IconizedContextMenu_sublabel"), + ).toHaveTextContent("Mute"); + }); }); diff --git a/test/components/views/dialogs/MessageEditHistoryDialog-test.tsx b/test/components/views/dialogs/MessageEditHistoryDialog-test.tsx index c220e5a0f4a4..2bd388103d2e 100644 --- a/test/components/views/dialogs/MessageEditHistoryDialog-test.tsx +++ b/test/components/views/dialogs/MessageEditHistoryDialog-test.tsx @@ -51,7 +51,7 @@ describe("", () => { new MatrixEvent({ type: EventType.RoomMessage, room_id: roomId, - origin_server_ts: e.ts, + origin_server_ts: e.ts ?? 0, content: { body: e.msg, }, diff --git a/test/components/views/dialogs/__snapshots__/MessageEditHistoryDialog-test.tsx.snap b/test/components/views/dialogs/__snapshots__/MessageEditHistoryDialog-test.tsx.snap index 8c4dac800ee5..ed7efb2e2d77 100644 --- a/test/components/views/dialogs/__snapshots__/MessageEditHistoryDialog-test.tsx.snap +++ b/test/components/views/dialogs/__snapshots__/MessageEditHistoryDialog-test.tsx.snap @@ -45,7 +45,7 @@ exports[` should match the snapshot 1`] = ` >

  • should support events with 1`] = ` >

  • should support events with 1`] = ` - NaN:NaN + 00:00
    should support events with 1`] = ` - NaN:NaN + 00:00
    should support events with 1`] = ` - NaN:NaN + 00:00
    ", () => { + it("renders as expected", async () => { + const platform: any = { getAvailableSpellCheckLanguages: jest.fn().mockResolvedValue(["en", "de", "qq"]) }; + PlatformPeg.set(platform); + + const { asFragment } = render( + , + ); + await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading…")); + expect(asFragment()).toMatchSnapshot(); + }); +}); diff --git a/test/components/views/elements/__snapshots__/SpellCheckLanguagesDropdown-test.tsx.snap b/test/components/views/elements/__snapshots__/SpellCheckLanguagesDropdown-test.tsx.snap new file mode 100644 index 000000000000..b1b5f161c2cd --- /dev/null +++ b/test/components/views/elements/__snapshots__/SpellCheckLanguagesDropdown-test.tsx.snap @@ -0,0 +1,32 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[` renders as expected 1`] = ` + +
    + +
    +
    +`; diff --git a/test/components/views/messages/DateSeparator-test.tsx b/test/components/views/messages/DateSeparator-test.tsx index 8abeab039207..d83c42293176 100644 --- a/test/components/views/messages/DateSeparator-test.tsx +++ b/test/components/views/messages/DateSeparator-test.tsx @@ -60,11 +60,11 @@ describe("DateSeparator", () => { type TestCase = [string, number, string]; const testCases: TestCase[] = [ - ["the exact same moment", nowDate.getTime(), "Today"], - ["same day as current day", nowDate.getTime() - HOUR_MS, "Today"], - ["day before the current day", nowDate.getTime() - HOUR_MS * 12, "Yesterday"], + ["the exact same moment", nowDate.getTime(), "today"], + ["same day as current day", nowDate.getTime() - HOUR_MS, "today"], + ["day before the current day", nowDate.getTime() - HOUR_MS * 12, "yesterday"], ["2 days ago", nowDate.getTime() - DAY_MS * 2, "Wednesday"], - ["144 hours ago", nowDate.getTime() - HOUR_MS * 144, "Sat, Dec 11 2021"], + ["144 hours ago", nowDate.getTime() - HOUR_MS * 144, "Sat, Dec 11, 2021"], [ "6 days ago, but less than 144h", new Date("Saturday Dec 11 2021 23:59:00 GMT+0100 (Central European Standard Time)").getTime(), diff --git a/test/components/views/messages/MImageBody-test.tsx b/test/components/views/messages/MImageBody-test.tsx index 617ab92b3a89..3e10c199ef56 100644 --- a/test/components/views/messages/MImageBody-test.tsx +++ b/test/components/views/messages/MImageBody-test.tsx @@ -22,6 +22,7 @@ import encrypt from "matrix-encrypt-attachment"; import { mocked } from "jest-mock"; import fs from "fs"; import path from "path"; +import userEvent from "@testing-library/user-event"; import MImageBody from "../../../../src/components/views/messages/MImageBody"; import { RoomPermalinkCreator } from "../../../../src/utils/permalinks/Permalinks"; @@ -258,4 +259,29 @@ describe("", () => { // thumbnail with dimensions present expect(container).toMatchSnapshot(); }); + + it("should show banner on hover", async () => { + const event = new MatrixEvent({ + room_id: "!room:server", + sender: userId, + type: EventType.RoomMessage, + content: { + body: "alt for a test image", + info: { + w: 40, + h: 50, + }, + url: "mxc://server/image", + }, + }); + + const { container } = render( + , + ); + + const img = container.querySelector(".mx_MImageBody_thumbnail")!; + await userEvent.hover(img); + + expect(container.querySelector(".mx_MImageBody_banner")).toHaveTextContent("...alt for a test image"); + }); }); diff --git a/test/components/views/messages/__snapshots__/DateSeparator-test.tsx.snap b/test/components/views/messages/__snapshots__/DateSeparator-test.tsx.snap index d6823fbfa58b..c3b6501973e3 100644 --- a/test/components/views/messages/__snapshots__/DateSeparator-test.tsx.snap +++ b/test/components/views/messages/__snapshots__/DateSeparator-test.tsx.snap @@ -3,7 +3,7 @@ exports[`DateSeparator renders the date separator correctly 1`] = `
  • @user49:example.com
    Message #49
  • @user48:example.com
    Message #48
  • @user47:example.com
    Message #47
  • @user46:example.com
    Message #46
  • @user45:example.com
    Message #45
  • @user44:example.com
    Message #44
  • @user43:example.com
    Message #43
  • @user42:example.com
    Message #42
  • @user41:example.com
    Message #41
  • @user40:example.com
    Message #40
  • @user39:example.com
    Message #39
  • @user38:example.com
    Message #38
  • @user37:example.com
    Message #37
  • @user36:example.com
    Message #36
  • @user35:example.com
    Message #35
  • @user34:example.com
    Message #34
  • @user33:example.com
    Message #33
  • @user32:example.com
    Message #32
  • @user31:example.com
    Message #31
  • @user30:example.com
    Message #30
  • @user29:example.com
    Message #29
  • @user28:example.com
    Message #28
  • @user27:example.com
    Message #27
  • @user26:example.com
    Message #26
  • @user25:example.com
    Message #25
  • @user24:example.com
    Message #24
  • @user23:example.com
    Message #23
  • @user22:example.com
    Message #22
  • @user21:example.com
    Message #21
  • @user20:example.com
    Message #20
  • @user19:example.com
    Message #19
  • @user18:example.com
    Message #18
  • @user17:example.com
    Message #17
  • @user16:example.com
    Message #16
  • @user15:example.com
    Message #15
  • @user14:example.com
    Message #14
  • @user13:example.com
    Message #13
  • @user12:example.com
    Message #12
  • @user11:example.com
    Message #11
  • @user10:example.com
    Message #10
  • @user9:example.com
    Message #9
  • @user8:example.com
    Message #8
  • @user7:example.com
    Message #7
  • @user6:example.com
    Message #6
  • @user5:example.com
    Message #5
  • @user4:example.com
    Message #4
  • @user3:example.com
    Message #3
  • @user2:example.com
    Message #2
  • @user1:example.com
    Message #1
  • @user0:example.com
    Message #0
  • +
  • @user49:example.com
    Message #49
  • @user48:example.com
    Message #48
  • @user47:example.com
    Message #47
  • @user46:example.com
    Message #46
  • @user45:example.com
    Message #45
  • @user44:example.com
    Message #44
  • @user43:example.com
    Message #43
  • @user42:example.com
    Message #42
  • @user41:example.com
    Message #41
  • @user40:example.com
    Message #40
  • @user39:example.com
    Message #39
  • @user38:example.com
    Message #38
  • @user37:example.com
    Message #37
  • @user36:example.com
    Message #36
  • @user35:example.com
    Message #35
  • @user34:example.com
    Message #34
  • @user33:example.com
    Message #33
  • @user32:example.com
    Message #32
  • @user31:example.com
    Message #31
  • @user30:example.com
    Message #30
  • @user29:example.com
    Message #29
  • @user28:example.com
    Message #28
  • @user27:example.com
    Message #27
  • @user26:example.com
    Message #26
  • @user25:example.com
    Message #25
  • @user24:example.com
    Message #24
  • @user23:example.com
    Message #23
  • @user22:example.com
    Message #22
  • @user21:example.com
    Message #21
  • @user20:example.com
    Message #20
  • @user19:example.com
    Message #19
  • @user18:example.com
    Message #18
  • @user17:example.com
    Message #17
  • @user16:example.com
    Message #16
  • @user15:example.com
    Message #15
  • @user14:example.com
    Message #14
  • @user13:example.com
    Message #13
  • @user12:example.com
    Message #12
  • @user11:example.com
    Message #11
  • @user10:example.com
    Message #10
  • @user9:example.com
    Message #9
  • @user8:example.com
    Message #8
  • @user7:example.com
    Message #7
  • @user6:example.com
    Message #6
  • @user5:example.com
    Message #5
  • @user4:example.com
    Message #4
  • @user3:example.com
    Message #3
  • @user2:example.com
    Message #2
  • @user1:example.com
    Message #1
  • @user0:example.com
    Message #0
  • diff --git a/test/utils/oidc/getDelegatedAuthAccountUrl-test.ts b/test/utils/oidc/getDelegatedAuthAccountUrl-test.ts new file mode 100644 index 000000000000..e4ba4c5756d0 --- /dev/null +++ b/test/utils/oidc/getDelegatedAuthAccountUrl-test.ts @@ -0,0 +1,61 @@ +/* +Copyright 2023 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { M_AUTHENTICATION } from "matrix-js-sdk/src/matrix"; + +import { getDelegatedAuthAccountUrl } from "../../../src/utils/oidc/getDelegatedAuthAccountUrl"; + +describe("getDelegatedAuthAccountUrl()", () => { + it("should return undefined when wk is undefined", () => { + expect(getDelegatedAuthAccountUrl(undefined)).toBeUndefined(); + }); + + it("should return undefined when wk has no authentication config", () => { + expect(getDelegatedAuthAccountUrl({})).toBeUndefined(); + }); + + it("should return undefined when wk authentication config has no configured account url", () => { + expect( + getDelegatedAuthAccountUrl({ + [M_AUTHENTICATION.stable!]: { + issuer: "issuer.org", + }, + }), + ).toBeUndefined(); + }); + + it("should return the account url for authentication config using the unstable prefix", () => { + expect( + getDelegatedAuthAccountUrl({ + [M_AUTHENTICATION.unstable!]: { + issuer: "issuer.org", + account: "issuer.org/account", + }, + }), + ).toEqual("issuer.org/account"); + }); + + it("should return the account url for authentication config using the stable prefix", () => { + expect( + getDelegatedAuthAccountUrl({ + [M_AUTHENTICATION.stable!]: { + issuer: "issuer.org", + account: "issuer.org/account", + }, + }), + ).toEqual("issuer.org/account"); + }); +}); diff --git a/yarn.lock b/yarn.lock index 690291c7e20a..d6975aa27879 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1853,6 +1853,14 @@ resolved "https://registry.yarnpkg.com/@matrix-org/analytics-events/-/analytics-events-0.6.0.tgz#6552882f94d026f13da25d49e2a208287521c275" integrity sha512-bTvNpp8LkC/2sItHABd1vGHdB8iclAcdlIYrL0Cn6qT+aohpdjb1wZ0dhUcx3NK5Q98IduI43RVH33V4Li/X0A== +"@matrix-org/emojibase-bindings@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@matrix-org/emojibase-bindings/-/emojibase-bindings-1.1.2.tgz#3cbbed06258418895910b8778a3d9c885f0c48c5" + integrity sha512-6FLR4nzyeQPZl2FBsdPpbAvvDF7TuAZgEbNeFkID47/bzTovFS4MUXIHOMzwMy/PWehlVziuKMOe1AxD9PauKw== + dependencies: + emojibase "^15.0.0" + emojibase-data "^15.0.0" + "@matrix-org/matrix-sdk-crypto-wasm@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@matrix-org/matrix-sdk-crypto-wasm/-/matrix-sdk-crypto-wasm-1.2.0.tgz#115cd21cb2bba3c8166cf09e7d61da0902aa8973" @@ -1867,10 +1875,10 @@ version "3.2.14" resolved "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.14.tgz#acd96c00a881d0f462e1f97a56c73742c8dbc984" -"@matrix-org/react-sdk-module-api@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@matrix-org/react-sdk-module-api/-/react-sdk-module-api-2.0.0.tgz#f894af429ad352d5151dc7240cc2f987d9dab780" - integrity sha512-o/M+IfB3bu4S3yTO10zMRiEtTQagV9AJ9cNmq8a/ksniCx3QLShtzWeL5FkTa8co0ab/VdxdqTlEux0aStT/dg== +"@matrix-org/react-sdk-module-api@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@matrix-org/react-sdk-module-api/-/react-sdk-module-api-2.1.0.tgz#ca9d67853512fda1df2786810b90be31dd8dc7b1" + integrity sha512-SARD5BsmZYv1hvuezLfBUafJ9+rPLbk5WO0S3vZgkLH3jJQrk7f/65qBB5fLKF2ljprfZ1GTpuBeq04wn7Tnmg== dependencies: "@babel/runtime" "^7.17.9" @@ -4481,7 +4489,7 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojibase-data@15.0.0: +emojibase-data@^15.0.0: version "15.0.0" resolved "https://registry.yarnpkg.com/emojibase-data/-/emojibase-data-15.0.0.tgz#d1f5467f3080688b9605103d0abdcd54bbc76419" integrity sha512-hqrLNhEeBejKOQp5ArJcofkzV3qZBcp8czXj8nIKUGpBVc50NddNGwir4yAYxn3oNgrSj/lYdB9XxIVAKTkong== @@ -4491,7 +4499,7 @@ emojibase-regex@15.0.0: resolved "https://registry.yarnpkg.com/emojibase-regex/-/emojibase-regex-15.0.0.tgz#b4d1c6328500aaea4a794b11fe61f97df20af4ee" integrity sha512-b5y58xrmZhH551zIa3ZOHl1mRI5KecA+5sAyWZCQEaj1maufZJJoENVwDqigzJoAkG604DuRqfdpy4E5rzSUsg== -emojibase@15.0.0: +emojibase@^15.0.0: version "15.0.0" resolved "https://registry.yarnpkg.com/emojibase/-/emojibase-15.0.0.tgz#f41b7773ec9a8a332373c18628ff4471255bd769" integrity sha512-bvSIs98sHaVnyKPmW+obRjo49MFx0g+rhfSz6mTePAagEZSlDPosq0b6AcSJa5gt48z3VP2ooXclyBs8vIkpGA== @@ -9782,7 +9790,7 @@ uuid@8.3.2, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@9: +uuid@9, uuid@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==