From cf4dd418e7bc14f03b1a6ed40fada4d0024f443f Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 5 Dec 2025 15:54:20 +0000 Subject: [PATCH 01/18] Split translations between EW and shared components Uses update module API with global TranslationKey type that can be overridden. WIP. --- package.json | 2 +- packages/shared-components/package.json | 5 ++++- packages/shared-components/src/index.ts | 4 ---- .../shared-components/src/utils/I18nApi.ts | 6 +++--- packages/shared-components/src/utils/i18n.tsx | 2 -- src/accessibility/KeyboardShortcuts.ts | 2 +- src/components/structures/EmbeddedPage.tsx | 2 +- src/components/structures/TabbedView.tsx | 2 +- .../memberlist/tiles/MemberTileViewModel.tsx | 2 +- .../viewmodels/roomlist/useFilteredRooms.tsx | 2 +- src/components/views/auth/EmailField.tsx | 2 +- .../views/auth/PassphraseConfirmField.tsx | 2 +- src/components/views/auth/PassphraseField.tsx | 2 +- .../views/context_menus/DeviceContextMenu.tsx | 2 +- .../views/dialogs/AddExistingToSpaceDialog.tsx | 2 +- .../views/dialogs/DevtoolsDialog.tsx | 2 +- .../views/dialogs/TextInputDialog.tsx | 2 +- .../views/dialogs/devtools/AccountData.tsx | 2 +- .../views/dialogs/devtools/BaseTool.tsx | 2 +- .../views/dialogs/devtools/Event.tsx | 2 +- .../elements/DesktopCapturerSourcePicker.tsx | 2 +- src/components/views/rooms/E2EIcon.tsx | 2 +- src/components/views/rooms/LegacyRoomList.tsx | 2 +- src/components/views/rooms/NewRoomIntro.tsx | 2 +- src/components/views/rooms/Stickerpicker.tsx | 2 +- .../views/settings/devices/DeviceTypeIcon.tsx | 2 +- .../tabs/room/RolesRoomSettingsTab.tsx | 2 +- src/effects/effect.ts | 2 -- src/i18n/strings/en_EN.json | 18 +----------------- src/languageHandler.tsx | 2 -- src/modules/ProxiedModuleApi.ts | 2 +- .../VectorPushRulesDefinitions.ts | 2 +- src/settings/Settings.tsx | 2 +- .../ServerSupportUnstableFeatureController.ts | 2 +- src/slash-commands/command.ts | 2 +- src/utils/AutoDiscoveryUtils.tsx | 2 +- src/utils/ErrorUtils.tsx | 2 +- src/widgets/CapabilityText.tsx | 2 +- .../components/views/beta/BetaCard-test.tsx | 1 - test/unit-tests/languageHandler-test.tsx | 1 - ...verSupportUnstableFeatureController-test.ts | 1 - yarn.lock | 6 +++--- 42 files changed, 42 insertions(+), 68 deletions(-) diff --git a/package.json b/package.json index 55e9b231868..097769e68f8 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "UserFriendlyError" ], "scripts": { - "i18n": "matrix-gen-i18n src res packages/shared-components/src && yarn i18n:sort && yarn i18n:lint", + "i18n": "matrix-gen-i18n src res && yarn i18n:sort && yarn i18n:lint", "i18n:sort": "jq --sort-keys '.' src/i18n/strings/en_EN.json > src/i18n/strings/en_EN.json.tmp && mv src/i18n/strings/en_EN.json.tmp src/i18n/strings/en_EN.json", "i18n:lint": "matrix-i18n-lint && prettier --log-level=silent --write src/i18n/strings/ --ignore-path /dev/null", "i18n:diff": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && yarn i18n && matrix-compare-i18n-files src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json", diff --git a/packages/shared-components/package.json b/packages/shared-components/package.json index 10fb4a10332..0e5a90353f9 100644 --- a/packages/shared-components/package.json +++ b/packages/shared-components/package.json @@ -34,8 +34,11 @@ "package.json" ], "scripts": { + "i18n": "matrix-gen-i18n src && yarn i18n:sort && yarn i18n:lint", + "i18n:sort": "jq --sort-keys '.' src/i18n/strings/en_EN.json > src/i18n/strings/en_EN.json.tmp && mv src/i18n/strings/en_EN.json.tmp src/i18n/strings/en_EN.json", + "i18n:lint": "matrix-i18n-lint && prettier --log-level=silent --write src/i18n/strings/ --ignore-path /dev/null", "test": "jest", - "prepare": "patch-package && yarn --cwd ../.. build:res && node scripts/gatherTranslationKeys.ts && vite build", + "prepare": "patch-package && node scripts/gatherTranslationKeys.ts && vite build", "storybook": "storybook dev -p 6007", "build-storybook": "storybook build", "lint": "yarn lint:types && yarn lint:js", diff --git a/packages/shared-components/src/index.ts b/packages/shared-components/src/index.ts index 8440a4fb0a9..a0757986d7b 100644 --- a/packages/shared-components/src/index.ts +++ b/packages/shared-components/src/index.ts @@ -34,7 +34,3 @@ export * from "./utils/I18nApi"; export * from "./viewmodel"; export * from "./useMockedViewModel"; export * from "./useViewModel"; - -// i18n (we must export this directly in order to not confuse the type bundler, it seems, -// otherwise it will leave it as a relative import rather than bundling it) -export type * from "./i18nKeys.d.ts"; diff --git a/packages/shared-components/src/utils/I18nApi.ts b/packages/shared-components/src/utils/I18nApi.ts index 20d641f5ce5..df474e2775b 100644 --- a/packages/shared-components/src/utils/I18nApi.ts +++ b/packages/shared-components/src/utils/I18nApi.ts @@ -9,7 +9,6 @@ import { type I18nApi as II18nApi, type Variables, type Translations } from "@el import { humanizeTime } from "./humanize"; import { _t, getLocale, registerTranslations } from "./i18n"; -import { type TranslationKey } from "../i18nKeys"; export class I18nApi implements II18nApi { /** @@ -24,10 +23,11 @@ export class I18nApi implements II18nApi { */ public register(translations: Partial): void { const langs: Record> = {}; + for (const key in translations) { - for (const lang in translations[key]) { + for (const lang in translations[key as keyof Translations]) { langs[lang] = langs[lang] || {}; - langs[lang][key] = translations[key][lang]; + langs[lang][key] = translations[key as keyof Translations]![lang]; } } diff --git a/packages/shared-components/src/utils/i18n.tsx b/packages/shared-components/src/utils/i18n.tsx index 2ce1f780057..38bf7bab8bd 100644 --- a/packages/shared-components/src/utils/i18n.tsx +++ b/packages/shared-components/src/utils/i18n.tsx @@ -25,8 +25,6 @@ import React from "react"; import { KEY_SEPARATOR } from "matrix-web-i18n"; import counterpart from "counterpart"; -import type { TranslationKey } from "../index"; - // @ts-ignore - $webapp is a webpack resolve alias pointing to the output directory, see webpack config import webpackLangJsonUrl from "$webapp/i18n/languages.json"; diff --git a/src/accessibility/KeyboardShortcuts.ts b/src/accessibility/KeyboardShortcuts.ts index 2872e1a1a22..9d4222d92f9 100644 --- a/src/accessibility/KeyboardShortcuts.ts +++ b/src/accessibility/KeyboardShortcuts.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. */ // Import i18n.tsx instead of languageHandler to avoid circular deps -import { _td, type TranslationKey } from "@element-hq/web-shared-components"; +import { _td } from "@element-hq/web-shared-components"; import { IS_MAC, IS_ELECTRON, Key } from "../Keyboard"; import { type IBaseSetting } from "../settings/Settings"; diff --git a/src/components/structures/EmbeddedPage.tsx b/src/components/structures/EmbeddedPage.tsx index 53a5d7d5373..8ea20d3cb33 100644 --- a/src/components/structures/EmbeddedPage.tsx +++ b/src/components/structures/EmbeddedPage.tsx @@ -12,7 +12,7 @@ import sanitizeHtml from "sanitize-html"; import classnames from "classnames"; import { logger } from "matrix-js-sdk/src/logger"; -import { _t, type TranslationKey } from "../../languageHandler"; +import { _t } from "../../languageHandler"; import dis from "../../dispatcher/dispatcher"; import { MatrixClientPeg } from "../../MatrixClientPeg"; import MatrixClientContext from "../../contexts/MatrixClientContext"; diff --git a/src/components/structures/TabbedView.tsx b/src/components/structures/TabbedView.tsx index 029226fc871..cafc4ca08cd 100644 --- a/src/components/structures/TabbedView.tsx +++ b/src/components/structures/TabbedView.tsx @@ -11,7 +11,7 @@ Please see LICENSE files in the repository root for full details. import React, { type JSX } from "react"; import classNames from "classnames"; -import { _t, type TranslationKey } from "../../languageHandler"; +import { _t } from "../../languageHandler"; import AutoHideScrollbar from "./AutoHideScrollbar"; import { PosthogScreenTracker, type ScreenName } from "../../PosthogTrackers"; import { type NonEmptyArray } from "../../@types/common"; diff --git a/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx b/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx index d99c127d851..1cb29029ea6 100644 --- a/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx +++ b/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx @@ -15,7 +15,7 @@ import { Action } from "../../../../dispatcher/actions"; import { asyncSome } from "../../../../utils/arrays"; import { getUserDeviceIds } from "../../../../utils/crypto/deviceInfo"; import { type RoomMember } from "../../../../models/rooms/RoomMember"; -import { _t, _td, type TranslationKey } from "../../../../languageHandler"; +import { _t, _td } from "../../../../languageHandler"; import { E2EStatus } from "../../../../utils/ShieldUtils"; interface MemberTileViewModelProps { diff --git a/src/components/viewmodels/roomlist/useFilteredRooms.tsx b/src/components/viewmodels/roomlist/useFilteredRooms.tsx index 4e311f39dba..a0e36dc668e 100644 --- a/src/components/viewmodels/roomlist/useFilteredRooms.tsx +++ b/src/components/viewmodels/roomlist/useFilteredRooms.tsx @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import { useCallback, useEffect, useMemo, useState } from "react"; import { FilterKey } from "../../../stores/room-list-v3/skip-list/filters"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import RoomListStoreV3, { LISTS_LOADED_EVENT, LISTS_UPDATE_EVENT, diff --git a/src/components/views/auth/EmailField.tsx b/src/components/views/auth/EmailField.tsx index fb420ed459b..a8388f7ad9e 100644 --- a/src/components/views/auth/EmailField.tsx +++ b/src/components/views/auth/EmailField.tsx @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import React, { type ComponentProps, PureComponent, type Ref } from "react"; import Field, { type IInputProps } from "../elements/Field"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import withValidation, { type IFieldState, type IValidationResult } from "../elements/Validation"; import * as Email from "../../../email"; diff --git a/src/components/views/auth/PassphraseConfirmField.tsx b/src/components/views/auth/PassphraseConfirmField.tsx index 4dc720e8aff..0eb0ce79b05 100644 --- a/src/components/views/auth/PassphraseConfirmField.tsx +++ b/src/components/views/auth/PassphraseConfirmField.tsx @@ -10,7 +10,7 @@ import React, { type ComponentProps, PureComponent, type Ref } from "react"; import Field, { type IInputProps } from "../elements/Field"; import withValidation, { type IFieldState, type IValidationResult } from "../elements/Validation"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; interface IProps extends Omit { id?: string; diff --git a/src/components/views/auth/PassphraseField.tsx b/src/components/views/auth/PassphraseField.tsx index 938e559fd71..d5cd27e401a 100644 --- a/src/components/views/auth/PassphraseField.tsx +++ b/src/components/views/auth/PassphraseField.tsx @@ -12,7 +12,7 @@ import classNames from "classnames"; import type { ZxcvbnResult } from "@zxcvbn-ts/core"; import SdkConfig from "../../../SdkConfig"; import withValidation, { type IFieldState, type IValidationResult } from "../elements/Validation"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import Field, { type IInputProps } from "../elements/Field"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; diff --git a/src/components/views/context_menus/DeviceContextMenu.tsx b/src/components/views/context_menus/DeviceContextMenu.tsx index b6646c05eca..6415ded5198 100644 --- a/src/components/views/context_menus/DeviceContextMenu.tsx +++ b/src/components/views/context_menus/DeviceContextMenu.tsx @@ -11,7 +11,7 @@ import React, { useEffect, useState } from "react"; import MediaDeviceHandler, { MediaDeviceKindEnum } from "../../../MediaDeviceHandler"; import IconizedContextMenu, { IconizedContextMenuOptionList, IconizedContextMenuRadio } from "./IconizedContextMenu"; import { type IProps as IContextMenuProps } from "../../structures/ContextMenu"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; const SECTION_NAMES: Record = { [MediaDeviceKindEnum.AudioInput]: _td("voip|input_devices"), diff --git a/src/components/views/dialogs/AddExistingToSpaceDialog.tsx b/src/components/views/dialogs/AddExistingToSpaceDialog.tsx index c247c3aea97..4b6d031967d 100644 --- a/src/components/views/dialogs/AddExistingToSpaceDialog.tsx +++ b/src/components/views/dialogs/AddExistingToSpaceDialog.tsx @@ -14,7 +14,7 @@ import { sleep } from "matrix-js-sdk/src/utils"; import { logger } from "matrix-js-sdk/src/logger"; import { ErrorIcon } from "@vector-im/compound-design-tokens/assets/web/icons"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import BaseDialog from "./BaseDialog"; import Dropdown from "../elements/Dropdown"; import SearchBox from "../../structures/SearchBox"; diff --git a/src/components/views/dialogs/DevtoolsDialog.tsx b/src/components/views/dialogs/DevtoolsDialog.tsx index e7c1092e6af..2e6ed892a65 100644 --- a/src/components/views/dialogs/DevtoolsDialog.tsx +++ b/src/components/views/dialogs/DevtoolsDialog.tsx @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import React, { type JSX, useState } from "react"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; import BaseDialog from "./BaseDialog"; import { TimelineEventEditor } from "./devtools/Event"; diff --git a/src/components/views/dialogs/TextInputDialog.tsx b/src/components/views/dialogs/TextInputDialog.tsx index 1a86a40d144..ed076bc4720 100644 --- a/src/components/views/dialogs/TextInputDialog.tsx +++ b/src/components/views/dialogs/TextInputDialog.tsx @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import React, { type ChangeEvent, createRef } from "react"; import Field from "../elements/Field"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import { type IFieldState, type IValidationResult } from "../elements/Validation"; import BaseDialog from "./BaseDialog"; import DialogButtons from "../elements/DialogButtons"; diff --git a/src/components/views/dialogs/devtools/AccountData.tsx b/src/components/views/dialogs/devtools/AccountData.tsx index d4dfe039fd3..6900a7097ee 100644 --- a/src/components/views/dialogs/devtools/AccountData.tsx +++ b/src/components/views/dialogs/devtools/AccountData.tsx @@ -14,7 +14,7 @@ import BaseTool, { DevtoolsContext, type IDevtoolsProps } from "./BaseTool"; import MatrixClientContext from "../../../../contexts/MatrixClientContext"; import { EventEditor, EventViewer, eventTypeField, type IEditorProps, stringify } from "./Event"; import FilteredList from "./FilteredList"; -import { _td, type TranslationKey } from "../../../../languageHandler"; +import { _td } from "../../../../languageHandler"; export const AccountDataEventEditor: React.FC = ({ mxEvent, onBack }) => { const cli = useContext(MatrixClientContext); diff --git a/src/components/views/dialogs/devtools/BaseTool.tsx b/src/components/views/dialogs/devtools/BaseTool.tsx index 8a923e26235..555d5b31ff4 100644 --- a/src/components/views/dialogs/devtools/BaseTool.tsx +++ b/src/components/views/dialogs/devtools/BaseTool.tsx @@ -11,7 +11,7 @@ import React, { createContext, type ReactNode, useState } from "react"; import { type Room } from "matrix-js-sdk/src/matrix"; import classNames from "classnames"; -import { _t, type TranslationKey } from "../../../../languageHandler"; +import { _t } from "../../../../languageHandler"; import { type XOR } from "../../../../@types/common"; import { type Tool } from "../DevtoolsDialog"; diff --git a/src/components/views/dialogs/devtools/Event.tsx b/src/components/views/dialogs/devtools/Event.tsx index 00669cd6143..63712b28d90 100644 --- a/src/components/views/dialogs/devtools/Event.tsx +++ b/src/components/views/dialogs/devtools/Event.tsx @@ -10,7 +10,7 @@ Please see LICENSE files in the repository root for full details. import React, { type ChangeEvent, type ReactNode, useContext, useMemo, useRef, useState } from "react"; import { type IContent, type MatrixEvent, type TimelineEvents } from "matrix-js-sdk/src/matrix"; -import { _t, _td, type TranslationKey } from "../../../../languageHandler"; +import { _t, _td } from "../../../../languageHandler"; import Field from "../../elements/Field"; import BaseTool, { DevtoolsContext, type IDevtoolsProps } from "./BaseTool"; import MatrixClientContext from "../../../../contexts/MatrixClientContext"; diff --git a/src/components/views/elements/DesktopCapturerSourcePicker.tsx b/src/components/views/elements/DesktopCapturerSourcePicker.tsx index 636e37ccd0d..fd20db7ef61 100644 --- a/src/components/views/elements/DesktopCapturerSourcePicker.tsx +++ b/src/components/views/elements/DesktopCapturerSourcePicker.tsx @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import React from "react"; import classNames from "classnames"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import BaseDialog from "..//dialogs/BaseDialog"; import DialogButtons from "./DialogButtons"; import AccessibleButton from "./AccessibleButton"; diff --git a/src/components/views/rooms/E2EIcon.tsx b/src/components/views/rooms/E2EIcon.tsx index cd8aeee55a8..07ff2fff058 100644 --- a/src/components/views/rooms/E2EIcon.tsx +++ b/src/components/views/rooms/E2EIcon.tsx @@ -11,7 +11,7 @@ import React, { type JSX, type ComponentProps, type CSSProperties } from "react" import classNames from "classnames"; import { Tooltip } from "@vector-im/compound-web"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import AccessibleButton from "../elements/AccessibleButton"; import { E2EStatus } from "../../../utils/ShieldUtils"; diff --git a/src/components/views/rooms/LegacyRoomList.tsx b/src/components/views/rooms/LegacyRoomList.tsx index 6be226a1720..497e1bf6999 100644 --- a/src/components/views/rooms/LegacyRoomList.tsx +++ b/src/components/views/rooms/LegacyRoomList.tsx @@ -18,7 +18,7 @@ import { type ActionPayload } from "../../../dispatcher/payloads.ts"; import { type ViewRoomDeltaPayload } from "../../../dispatcher/payloads/ViewRoomDeltaPayload.ts"; import { type ViewRoomPayload } from "../../../dispatcher/payloads/ViewRoomPayload.ts"; import { useEventEmitterState } from "../../../hooks/useEventEmitter.ts"; -import { _t, _td, type TranslationKey } from "../../../languageHandler.tsx"; +import { _t, _td } from "../../../languageHandler.tsx"; import { MatrixClientPeg } from "../../../MatrixClientPeg.ts"; import PosthogTrackers from "../../../PosthogTrackers.ts"; import SettingsStore from "../../../settings/SettingsStore.ts"; diff --git a/src/components/views/rooms/NewRoomIntro.tsx b/src/components/views/rooms/NewRoomIntro.tsx index 67daec115df..82647559c95 100644 --- a/src/components/views/rooms/NewRoomIntro.tsx +++ b/src/components/views/rooms/NewRoomIntro.tsx @@ -12,7 +12,7 @@ import { KnownMembership } from "matrix-js-sdk/src/types"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; import DMRoomMap from "../../../utils/DMRoomMap"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import AccessibleButton, { type ButtonEvent } from "../elements/AccessibleButton"; import MiniAvatarUploader, { AVATAR_SIZE } from "../elements/MiniAvatarUploader"; import RoomAvatar from "../avatars/RoomAvatar"; diff --git a/src/components/views/rooms/Stickerpicker.tsx b/src/components/views/rooms/Stickerpicker.tsx index 6281f287baa..336b13a2819 100644 --- a/src/components/views/rooms/Stickerpicker.tsx +++ b/src/components/views/rooms/Stickerpicker.tsx @@ -10,7 +10,7 @@ import { type Room, ClientEvent } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; import { type IWidget } from "matrix-widget-api"; -import { _t, _td, type TranslationKey } from "../../../languageHandler"; +import { _t, _td } from "../../../languageHandler"; import AppTile from "../elements/AppTile"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; import dis from "../../../dispatcher/dispatcher"; diff --git a/src/components/views/settings/devices/DeviceTypeIcon.tsx b/src/components/views/settings/devices/DeviceTypeIcon.tsx index 994a40f250f..bf802df53e8 100644 --- a/src/components/views/settings/devices/DeviceTypeIcon.tsx +++ b/src/components/views/settings/devices/DeviceTypeIcon.tsx @@ -15,7 +15,7 @@ import { Icon as WebIcon } from "../../../../../res/img/element-icons/settings/w import { Icon as MobileIcon } from "../../../../../res/img/element-icons/settings/mobile.svg"; import { Icon as VerifiedIcon } from "../../../../../res/img/e2e/verified.svg"; import { Icon as UnverifiedIcon } from "../../../../../res/img/e2e/warning.svg"; -import { _t, _td, type TranslationKey } from "../../../../languageHandler"; +import { _t, _td } from "../../../../languageHandler"; import { type ExtendedDevice } from "./types"; import { DeviceType } from "../../../../utils/device/parseUserAgent"; diff --git a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx index a7e0e3755bd..bb2dc47fb1c 100644 --- a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx @@ -19,7 +19,7 @@ import { logger } from "matrix-js-sdk/src/logger"; import { throttle, get } from "lodash"; import { KnownMembership, type RoomPowerLevelsEventContent } from "matrix-js-sdk/src/types"; -import { _t, _td, type TranslationKey } from "../../../../../languageHandler"; +import { _t, _td } from "../../../../../languageHandler"; import AccessibleButton from "../../../elements/AccessibleButton"; import Modal from "../../../../../Modal"; import ErrorDialog from "../../../dialogs/ErrorDialog"; diff --git a/src/effects/effect.ts b/src/effects/effect.ts index 571ce494ed1..60f94b283f9 100644 --- a/src/effects/effect.ts +++ b/src/effects/effect.ts @@ -7,8 +7,6 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import { type TranslationKey } from "../languageHandler"; - export type Effect = { /** * one or more emojis that will trigger this effect diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 968fefae10e..b386d101aec 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -3392,24 +3392,10 @@ "no_rooms_with_unread_threads": "You don't have rooms with unread threads yet." }, "time": { - "about_day_ago": "about a day ago", - "about_hour_ago": "about an hour ago", - "about_minute_ago": "about a minute ago", "date_at_time": "%(date)s at %(time)s", - "few_seconds_ago": "a few seconds ago", "hours_minutes_seconds_left": "%(hours)sh %(minutes)sm %(seconds)ss left", - "in_about_day": "about a day from now", - "in_about_hour": "about an hour from now", - "in_about_minute": "about a minute from now", - "in_few_seconds": "a few seconds from now", - "in_n_days": "%(num)s days from now", - "in_n_hours": "%(num)s hours from now", - "in_n_minutes": "%(num)s minutes from now", "left": "%(timeRemaining)s left", "minutes_seconds_left": "%(minutes)sm %(seconds)ss left", - "n_days_ago": "%(num)s days ago", - "n_hours_ago": "%(num)s hours ago", - "n_minutes_ago": "%(num)s minutes ago", "seconds_left": "%(seconds)ss left", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", @@ -3464,11 +3450,9 @@ "unable_to_find": "Tried to load a specific point in this room's timeline, but was unable to find it." }, "m.audio": { - "audio_player": "Audio player", "error_downloading_audio": "Error downloading audio", "error_processing_audio": "Error processing audio message", - "error_processing_voice_message": "Error processing voice message", - "unnamed_audio": "Unnamed audio" + "error_processing_voice_message": "Error processing voice message" }, "m.beacon_info": { "view_live_location": "View live location" diff --git a/src/languageHandler.tsx b/src/languageHandler.tsx index da31ab18113..ed183556541 100644 --- a/src/languageHandler.tsx +++ b/src/languageHandler.tsx @@ -13,7 +13,6 @@ import _ from "lodash"; import { _t, normalizeLanguageKey, - type TranslationKey, type IVariables, KEY_SEPARATOR, getLangsJson, @@ -34,7 +33,6 @@ export { _t, type IVariables, type Tags, - type TranslationKey, type TranslatedString, _td, _tDom, diff --git a/src/modules/ProxiedModuleApi.ts b/src/modules/ProxiedModuleApi.ts index 86db1a9e356..a0673af468b 100644 --- a/src/modules/ProxiedModuleApi.ts +++ b/src/modules/ProxiedModuleApi.ts @@ -20,7 +20,7 @@ import { type ModuleUiDialogOptions } from "@matrix-org/react-sdk-module-api/lib import type React from "react"; import Modal from "../Modal"; -import { _t, type TranslationKey } from "../languageHandler"; +import { _t } from "../languageHandler"; import { ModuleUiDialog } from "../components/views/dialogs/ModuleUiDialog"; import SdkConfig from "../SdkConfig"; import PlatformPeg from "../PlatformPeg"; diff --git a/src/notifications/VectorPushRulesDefinitions.ts b/src/notifications/VectorPushRulesDefinitions.ts index 403efbc49b7..d496119f1ed 100644 --- a/src/notifications/VectorPushRulesDefinitions.ts +++ b/src/notifications/VectorPushRulesDefinitions.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { type IAnnotatedPushRule, type PushRuleAction, RuleId } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; -import { _td, type TranslationKey } from "../languageHandler"; +import { _td } from "../languageHandler"; import { StandardActions } from "./StandardActions"; import { PushRuleVectorState, VectorState } from "./PushRuleVectorState"; import { NotificationUtils } from "./NotificationUtils"; diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index d9a8ec1ebf5..82bed857251 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -10,7 +10,7 @@ Please see LICENSE files in the repository root for full details. import React, { type ReactNode } from "react"; import { STABLE_MSC4133_EXTENDED_PROFILES, UNSTABLE_MSC4133_EXTENDED_PROFILES } from "matrix-js-sdk/src/matrix"; // Import these directly from shared-components to avoid circular deps -import { _t, _td, type TranslationKey } from "@element-hq/web-shared-components"; +import { _t, _td } from "@element-hq/web-shared-components"; import { type MediaPreviewConfig } from "../@types/media_preview.ts"; import DeviceIsolationModeController from "./controllers/DeviceIsolationModeController.ts"; diff --git a/src/settings/controllers/ServerSupportUnstableFeatureController.ts b/src/settings/controllers/ServerSupportUnstableFeatureController.ts index 058fdaae08e..1b212da6387 100644 --- a/src/settings/controllers/ServerSupportUnstableFeatureController.ts +++ b/src/settings/controllers/ServerSupportUnstableFeatureController.ts @@ -11,7 +11,7 @@ import MatrixClientBackedController from "./MatrixClientBackedController"; import { type WatchManager } from "../WatchManager"; import SettingsStore from "../SettingsStore"; import { type SettingKey } from "../Settings.tsx"; -import { _t, type TranslationKey } from "../../languageHandler.tsx"; +import { _t } from "../../languageHandler.tsx"; /** * Disables a given setting if the server unstable feature it requires is not supported diff --git a/src/slash-commands/command.ts b/src/slash-commands/command.ts index 9619c514dd8..f541f5ae986 100644 --- a/src/slash-commands/command.ts +++ b/src/slash-commands/command.ts @@ -14,7 +14,7 @@ import { type SlashCommand as SlashCommandEvent } from "@matrix-org/analytics-ev import { TimelineRenderingType } from "../contexts/RoomContext"; import { reject } from "./utils"; -import { _t, type TranslationKey, UserFriendlyError } from "../languageHandler"; +import { _t, UserFriendlyError } from "../languageHandler"; import { PosthogAnalytics } from "../PosthogAnalytics"; import { CommandCategories, type RunResult } from "./interface"; diff --git a/src/utils/AutoDiscoveryUtils.tsx b/src/utils/AutoDiscoveryUtils.tsx index e5359c48f83..32bd92df7ca 100644 --- a/src/utils/AutoDiscoveryUtils.tsx +++ b/src/utils/AutoDiscoveryUtils.tsx @@ -18,7 +18,7 @@ import { } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; -import { _t, _td, type TranslationKey, UserFriendlyError } from "../languageHandler"; +import { _t, _td, UserFriendlyError } from "../languageHandler"; import SdkConfig from "../SdkConfig"; import { type ValidatedServerConfig } from "./ValidatedServerConfig"; diff --git a/src/utils/ErrorUtils.tsx b/src/utils/ErrorUtils.tsx index 2772350a0c1..de3d0bfdf39 100644 --- a/src/utils/ErrorUtils.tsx +++ b/src/utils/ErrorUtils.tsx @@ -10,7 +10,7 @@ import React, { type ReactNode } from "react"; import { MatrixError, ConnectionError } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; -import { _t, _td, lookupString, type Tags, type TranslatedString, type TranslationKey } from "../languageHandler"; +import { _t, _td, lookupString, type Tags, type TranslatedString } from "../languageHandler"; import SdkConfig from "../SdkConfig"; import { type ValidatedServerConfig } from "./ValidatedServerConfig"; import ExternalLink from "../components/views/elements/ExternalLink"; diff --git a/src/widgets/CapabilityText.tsx b/src/widgets/CapabilityText.tsx index effaa0975ba..c64e7ffa0f2 100644 --- a/src/widgets/CapabilityText.tsx +++ b/src/widgets/CapabilityText.tsx @@ -21,7 +21,7 @@ import { import { EventType, MsgType } from "matrix-js-sdk/src/matrix"; import React from "react"; -import { _t, _td, type TranslatedString, type TranslationKey } from "../languageHandler"; +import { _t, _td, type TranslatedString } from "../languageHandler"; import { ElementWidgetCapabilities } from "../stores/widgets/ElementWidgetCapabilities"; import { MatrixClientPeg } from "../MatrixClientPeg"; import TextWithTooltip from "../components/views/elements/TextWithTooltip"; diff --git a/test/unit-tests/components/views/beta/BetaCard-test.tsx b/test/unit-tests/components/views/beta/BetaCard-test.tsx index 06ede990e6d..47c9b29230e 100644 --- a/test/unit-tests/components/views/beta/BetaCard-test.tsx +++ b/test/unit-tests/components/views/beta/BetaCard-test.tsx @@ -13,7 +13,6 @@ import { render, screen } from "jest-matrix-react"; import { shouldShowFeedback } from "../../../../../src/utils/Feedback"; import BetaCard from "../../../../../src/components/views/beta/BetaCard"; import SettingsStore from "../../../../../src/settings/SettingsStore"; -import { type TranslationKey } from "../../../../../src/languageHandler"; import { type FeatureSettingKey } from "../../../../../src/settings/Settings.tsx"; jest.mock("../../../../../src/utils/Feedback"); diff --git a/test/unit-tests/languageHandler-test.tsx b/test/unit-tests/languageHandler-test.tsx index de1a629608e..d4846969956 100644 --- a/test/unit-tests/languageHandler-test.tsx +++ b/test/unit-tests/languageHandler-test.tsx @@ -23,7 +23,6 @@ import { substitute, type TranslatedString, UserFriendlyError, - type TranslationKey, type IVariables, type Tags, getLanguagesFromBrowser, diff --git a/test/unit-tests/settings/controllers/ServerSupportUnstableFeatureController-test.ts b/test/unit-tests/settings/controllers/ServerSupportUnstableFeatureController-test.ts index cab82f8d323..1bd80e25353 100644 --- a/test/unit-tests/settings/controllers/ServerSupportUnstableFeatureController-test.ts +++ b/test/unit-tests/settings/controllers/ServerSupportUnstableFeatureController-test.ts @@ -14,7 +14,6 @@ import { type FeatureSettingKey, LabGroup, SETTINGS } from "../../../../src/sett import { stubClient } from "../../../test-utils"; import { WatchManager } from "../../../../src/settings/WatchManager"; import MatrixClientBackedController from "../../../../src/settings/controllers/MatrixClientBackedController"; -import { type TranslationKey } from "../../../../src/languageHandler"; describe("ServerSupportUnstableFeatureController", () => { const watchers = new WatchManager(); diff --git a/yarn.lock b/yarn.lock index 9eaf83fc32a..2c6688960b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1559,7 +1559,7 @@ resolved "https://registry.yarnpkg.com/@element-hq/element-call-embedded/-/element-call-embedded-0.16.1.tgz#28bdbde426051cc2a3228a36e7196e0a254569d3" integrity sha512-g3v/QFuNy8YVRGrKC5SxjIYvgBh6biOHgejhJT2Jk/yjOOUEuP0y2PBaADm+suPD9BB/Vk1jPxFk2uEIpEzhpA== -"@element-hq/element-web-module-api@1.8.0": +"@element-hq/element-web-module-api@1.8.0", "@element-hq/element-web-module-api@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@element-hq/element-web-module-api/-/element-web-module-api-1.8.0.tgz#95aa4ec22609cf0f4a7f24274473af0645a16f2a" integrity sha512-lMiDA9ubP3mZZupIMT8T3wS0riX30rYZj3pFpdP4cfZhkWZa3FJFStokAy5OnaHyENC7Px1cqkBGqilOWewY/A== @@ -4151,7 +4151,7 @@ classnames "^2.5.1" vaul "^1.0.0" -"@vector-im/matrix-wysiwyg-wasm@link:../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm": +"@vector-im/matrix-wysiwyg-wasm@link:../../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm": version "0.0.0" uid "" @@ -4160,7 +4160,7 @@ resolved "https://registry.yarnpkg.com/@vector-im/matrix-wysiwyg/-/matrix-wysiwyg-2.40.0.tgz#53c9ca5ea907d91e4515da64f20a82e5586b882c" integrity sha512-8LRFLs5PEKYs4lOL7aJ4lL/hGCrvEvOYkCR3JggXYXDVMtX4LmfdlKYucSAe98pCmqAAbLRvlRcR1bTOYvM8ug== dependencies: - "@vector-im/matrix-wysiwyg-wasm" "link:../../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm" + "@vector-im/matrix-wysiwyg-wasm" "link:../../Library/Caches/Yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm" "@vitest/expect@3.2.4": version "3.2.4" From 70e4ce942ef423a0e795169e4dc6a9e47f277d7a Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 5 Dec 2025 17:42:38 +0000 Subject: [PATCH 02/18] Removed the wrong script (for now) --- packages/shared-components/package.json | 2 +- .../scripts/gatherTranslationKeys.ts | 67 ------------------- 2 files changed, 1 insertion(+), 68 deletions(-) delete mode 100644 packages/shared-components/scripts/gatherTranslationKeys.ts diff --git a/packages/shared-components/package.json b/packages/shared-components/package.json index 0e5a90353f9..1dd138834b6 100644 --- a/packages/shared-components/package.json +++ b/packages/shared-components/package.json @@ -38,7 +38,7 @@ "i18n:sort": "jq --sort-keys '.' src/i18n/strings/en_EN.json > src/i18n/strings/en_EN.json.tmp && mv src/i18n/strings/en_EN.json.tmp src/i18n/strings/en_EN.json", "i18n:lint": "matrix-i18n-lint && prettier --log-level=silent --write src/i18n/strings/ --ignore-path /dev/null", "test": "jest", - "prepare": "patch-package && node scripts/gatherTranslationKeys.ts && vite build", + "prepare": "patch-package && yarn --cwd ../.. build:res && vite build", "storybook": "storybook dev -p 6007", "build-storybook": "storybook build", "lint": "yarn lint:types && yarn lint:js", diff --git a/packages/shared-components/scripts/gatherTranslationKeys.ts b/packages/shared-components/scripts/gatherTranslationKeys.ts deleted file mode 100644 index 37812df33b3..00000000000 --- a/packages/shared-components/scripts/gatherTranslationKeys.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* -Copyright 2025 Element Creations Ltd. - -SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial -Please see LICENSE files in the repository root for full details. -*/ - -// Gathers all the translation keys from element-web's en_EN.json into a TypeScript type definition file -// that exports a type `TranslationKey` which is a union of all supported translation keys. -// This prevents having to import the json file and make typescript do the work as this results in vite-dts -// generating an import to the json file in the .d.ts which doesn't work at runtime: this way, the type -// gets put into the bundle. -// XXX: It should *not* be in the 'src' directory, being a generated file, but if it isn't then the type -// bundler won't bundle the types and will leave the file as a relative import, which will break. - -import * as fs from "fs"; -import * as path from "path"; -import { dirname } from "node:path"; -import { fileURLToPath } from "node:url"; - -const __dirname = dirname(fileURLToPath(import.meta.url)); -const i18nStringsPath = path.resolve(__dirname, "../../../src/i18n/strings/en_EN.json"); -const outPath = path.resolve(__dirname, "../src/i18nKeys.d.ts"); - -function gatherKeys(obj: any, prefix: string[] = []): string[] { - if (typeof obj !== "object" || obj === null) return []; - let keys: string[] = []; - for (const key of Object.keys(obj)) { - const value = obj[key]; - - // add the path (for both leaves and intermediates as then we include plurals) - keys.push([...prefix, key].join("|")); - if (typeof value === "object" && value !== null) { - // If the value is an object, recurse - keys = keys.concat(gatherKeys(value, [...prefix, key])); - } - } - return keys; -} - -function main() { - const json = JSON.parse(fs.readFileSync(i18nStringsPath, "utf8")); - const keys = gatherKeys(json); - const typeDef = - "/*\n" + - " * Copyright 2025 Element Creations Ltd.\n" + - " *\n" + - " * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial\n" + - " * Please see LICENSE files in the repository root for full details.\n" + - " */\n" + - "\n" + - "// This file is auto-generated by gatherTranslationKeys.ts\n" + - "// Do not edit manually.\n\n" + - "export type TranslationKey =\n" + - keys.map((k) => ` | \"${k}\"`).join("\n") + - ";\n"; - fs.mkdirSync(path.dirname(outPath), { recursive: true }); - fs.writeFileSync(outPath, typeDef, "utf8"); - console.log(`Wrote ${keys.length} keys to ${outPath}`); -} - -if (import.meta.url.startsWith("file:")) { - const modulePath = fileURLToPath(import.meta.url); - if (process.argv[1] === modulePath) { - main(); - } -} From 5fdfc8ff4bfab14b7fad01079e5bac5abf44ef0d Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 5 Dec 2025 17:47:47 +0000 Subject: [PATCH 03/18] Add the type files --- packages/shared-components/src/@types/i18n.d.ts | 14 ++++++++++++++ src/@types/i18n.d.ts | 14 ++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 packages/shared-components/src/@types/i18n.d.ts create mode 100644 src/@types/i18n.d.ts diff --git a/packages/shared-components/src/@types/i18n.d.ts b/packages/shared-components/src/@types/i18n.d.ts new file mode 100644 index 00000000000..04531d8954a --- /dev/null +++ b/packages/shared-components/src/@types/i18n.d.ts @@ -0,0 +1,14 @@ +/* +Copyright 2025 Element Creations Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import { type TranslationKey as _TranslationKey } from "matrix-web-i18n"; + +import type Translations from "../i18n/strings/en_EN.json"; + +declare global { + type TranslationKey = _TranslationKey; +} diff --git a/src/@types/i18n.d.ts b/src/@types/i18n.d.ts new file mode 100644 index 00000000000..04531d8954a --- /dev/null +++ b/src/@types/i18n.d.ts @@ -0,0 +1,14 @@ +/* +Copyright 2025 Element Creations Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import { type TranslationKey as _TranslationKey } from "matrix-web-i18n"; + +import type Translations from "../i18n/strings/en_EN.json"; + +declare global { + type TranslationKey = _TranslationKey; +} From 7c4c0c4aa90bd9200ef4023750d39889a339b5ad Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 15 Dec 2025 17:31:32 +0000 Subject: [PATCH 04/18] Add shared components i18n file --- .../src/i18n/strings/en_EN.json | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 packages/shared-components/src/i18n/strings/en_EN.json diff --git a/packages/shared-components/src/i18n/strings/en_EN.json b/packages/shared-components/src/i18n/strings/en_EN.json new file mode 100644 index 00000000000..46b77998f6a --- /dev/null +++ b/packages/shared-components/src/i18n/strings/en_EN.json @@ -0,0 +1,38 @@ +{ + "a11y": { + "seek_bar_label": "Audio seek bar" + }, + "action": { + "delete": "Delete", + "dismiss": "Dismiss", + "pause": "Pause", + "play": "Play" + }, + "encryption": { + "pinned_identity_changed": "%(displayName)s's (%(userId)s) identity was reset. Learn more", + "withdraw_verification_action": "Withdraw verification" + }, + "time": { + "about_day_ago": "about a day ago", + "about_hour_ago": "about an hour ago", + "about_minute_ago": "about a minute ago", + "few_seconds_ago": "a few seconds ago", + "in_about_day": "about a day from now", + "in_about_hour": "about an hour from now", + "in_about_minute": "about a minute from now", + "in_few_seconds": "a few seconds from now", + "in_n_days": "%(num)s days from now", + "in_n_hours": "%(num)s hours from now", + "in_n_minutes": "%(num)s minutes from now", + "n_days_ago": "%(num)s days ago", + "n_hours_ago": "%(num)s hours ago", + "n_minutes_ago": "%(num)s minutes ago" + }, + "timeline": { + "m.audio": { + "audio_player": "Audio player", + "error_downloading_audio": "Error downloading audio", + "unnamed_audio": "Unnamed audio" + } + } +} From 12c63d7e58bd8d8ee4679056d7a7dd402ffc02b9 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 15 Dec 2025 17:52:09 +0000 Subject: [PATCH 05/18] More i18n strings --- src/i18n/strings/en_EN.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 9fa5545f79f..a24a64daf9d 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -101,9 +101,7 @@ "ok": "OK", "open": "Open", "open_menu": "Open menu", - "pause": "Pause", "pin": "Pin", - "play": "Play", "proceed": "Proceed", "quote": "Quote", "react": "React", @@ -2123,7 +2121,6 @@ "status_bar": { "delete_all": "Delete all", "exceeded_resource_limit": "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.", - "history_visible": "Messages you send will be shared with new members invited to this room. Learn more", "homeserver_blocked": "Your message wasn't sent because this homeserver has been blocked by its administrator. Please contact your service administrator to continue using the service.", "monthly_user_limit_reached": "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.", "requires_consent_agreement": "You can't send any messages until you review and agree to our terms and conditions.", From fbf1ab009b7e8999d1c024845b16ffc870fec4cf Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 17 Dec 2025 11:25:37 +0000 Subject: [PATCH 06/18] Add i18n check for shared conmponents --- .github/workflows/static_analysis.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/static_analysis.yaml b/.github/workflows/static_analysis.yaml index 9f905723717..836690dd4fa 100644 --- a/.github/workflows/static_analysis.yaml +++ b/.github/workflows/static_analysis.yaml @@ -42,7 +42,7 @@ jobs: run: "yarn --cwd packages/shared-components run lint:types" i18n_lint: - name: "i18n Check" + name: "i18n Check (Element Web)" uses: matrix-org/matrix-web-i18n/.github/workflows/i18n_check.yml@main permissions: pull-requests: read @@ -59,6 +59,15 @@ jobs: devtools|settings|elementCallUrl labs|sliding_sync_description + i18n_lint: + name: "i18n Check (Shared Components)" + uses: matrix-org/matrix-web-i18n/.github/workflows/i18n_check.yml@main + permissions: + pull-requests: read + with: + path: "packages/shared-components" + hardcoded-words: "Element" + rethemendex_lint: name: "Rethemendex Check" runs-on: ubuntu-24.04 From dc53ef228f777891afce74b902e40ac963b674af Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 17 Dec 2025 11:28:16 +0000 Subject: [PATCH 07/18] Needs a different name --- .github/workflows/static_analysis.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/static_analysis.yaml b/.github/workflows/static_analysis.yaml index 836690dd4fa..3ac32ac7569 100644 --- a/.github/workflows/static_analysis.yaml +++ b/.github/workflows/static_analysis.yaml @@ -41,7 +41,7 @@ jobs: - name: Typecheck Shared Components run: "yarn --cwd packages/shared-components run lint:types" - i18n_lint: + i18n_lint_ew: name: "i18n Check (Element Web)" uses: matrix-org/matrix-web-i18n/.github/workflows/i18n_check.yml@main permissions: @@ -59,7 +59,7 @@ jobs: devtools|settings|elementCallUrl labs|sliding_sync_description - i18n_lint: + i18n_lint_shared_components: name: "i18n Check (Shared Components)" uses: matrix-org/matrix-web-i18n/.github/workflows/i18n_check.yml@main permissions: From 13a6a45d330df868ecf509ffa71cdef929b491ea Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 17 Dec 2025 11:51:55 +0000 Subject: [PATCH 08/18] rerun i18n for merge from develop, fix test --- .../shared-components/src/i18n/strings/en_EN.json | 12 +++++++++++- packages/shared-components/src/utils/I18nApi.test.ts | 3 +-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/shared-components/src/i18n/strings/en_EN.json b/packages/shared-components/src/i18n/strings/en_EN.json index 46b77998f6a..75eade371be 100644 --- a/packages/shared-components/src/i18n/strings/en_EN.json +++ b/packages/shared-components/src/i18n/strings/en_EN.json @@ -5,13 +5,23 @@ "action": { "delete": "Delete", "dismiss": "Dismiss", + "explore_rooms": "action|explore_rooms", "pause": "Pause", - "play": "Play" + "play": "Play", + "search": "action|search" }, "encryption": { "pinned_identity_changed": "%(displayName)s's (%(userId)s) identity was reset. Learn more", "withdraw_verification_action": "Withdraw verification" }, + "left_panel": { + "open_dial_pad": "left_panel|open_dial_pad" + }, + "room": { + "status_bar": { + "history_visible": "room|status_bar|history_visible" + } + }, "time": { "about_day_ago": "about a day ago", "about_hour_ago": "about an hour ago", diff --git a/packages/shared-components/src/utils/I18nApi.test.ts b/packages/shared-components/src/utils/I18nApi.test.ts index 2b3431f07c5..75c31a7f7c3 100644 --- a/packages/shared-components/src/utils/I18nApi.test.ts +++ b/packages/shared-components/src/utils/I18nApi.test.ts @@ -5,14 +5,13 @@ * Please see LICENSE files in the repository root for full details. */ -import { type TranslationKey } from "../i18nKeys"; import { I18nApi } from "./I18nApi"; describe("I18nApi", () => { it("can register a translation and use it", () => { const i18n = new I18nApi(); i18n.register({ - "hello.world": { + ["hello.world" as TranslationKey]: { en: "Hello, World!", }, }); From 15c371998548dc8c42e4c61aeefbe3262a136ee6 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 17 Dec 2025 17:57:04 +0000 Subject: [PATCH 09/18] Move translated strings to shared components file NB. there are lots of removed strings for a few languages where we seem to have hit a localazy bug or something where the key/value for plurals got switched, making the translations invalid. They've been missing for a while so I'm removing them rather than trying to restore them, --- .../src/i18n/strings/cs.json | 43 ++ .../src/i18n/strings/cy.json | 43 ++ .../src/i18n/strings/da.json | 35 ++ .../src/i18n/strings/de_DE.json | 43 ++ .../src/i18n/strings/el.json | 35 ++ .../src/i18n/strings/eo.json | 35 ++ .../src/i18n/strings/es.json | 39 ++ .../src/i18n/strings/et.json | 48 ++ .../src/i18n/strings/fa.json | 29 ++ .../src/i18n/strings/fi.json | 38 ++ .../src/i18n/strings/fr.json | 48 ++ .../src/i18n/strings/gl.json | 35 ++ .../src/i18n/strings/he.json | 27 ++ .../src/i18n/strings/hu.json | 43 ++ .../src/i18n/strings/hy.json | 43 ++ .../src/i18n/strings/id.json | 43 ++ .../src/i18n/strings/is.json | 35 ++ .../src/i18n/strings/it.json | 38 ++ .../src/i18n/strings/ja.json | 35 ++ .../src/i18n/strings/ka.json | 32 ++ .../src/i18n/strings/ko.json | 43 ++ .../src/i18n/strings/lo.json | 35 ++ .../src/i18n/strings/lt.json | 24 + .../src/i18n/strings/lv.json | 35 ++ .../src/i18n/strings/mg_MG.json | 38 ++ .../src/i18n/strings/nb_NO.json | 43 ++ .../src/i18n/strings/nl.json | 38 ++ .../src/i18n/strings/pl.json | 43 ++ .../src/i18n/strings/pt.json | 42 ++ .../src/i18n/strings/pt_BR.json | 43 ++ .../src/i18n/strings/ru.json | 43 ++ .../src/i18n/strings/sk.json | 48 ++ .../src/i18n/strings/sq.json | 35 ++ .../src/i18n/strings/sv.json | 43 ++ .../src/i18n/strings/tr.json | 42 ++ .../src/i18n/strings/uk.json | 43 ++ .../src/i18n/strings/vi.json | 35 ++ .../src/i18n/strings/zh_Hans.json | 35 ++ .../src/i18n/strings/zh_Hant.json | 35 ++ src/i18n/strings/cs.json | 20 +- src/i18n/strings/cy.json | 414 +----------------- src/i18n/strings/da.json | 21 +- src/i18n/strings/de_DE.json | 20 +- src/i18n/strings/el.json | 19 +- src/i18n/strings/eo.json | 19 +- src/i18n/strings/es.json | 20 +- src/i18n/strings/et.json | 22 +- src/i18n/strings/fa.json | 16 - src/i18n/strings/fi.json | 19 +- src/i18n/strings/fr.json | 21 +- src/i18n/strings/gl.json | 19 +- src/i18n/strings/he.json | 14 - src/i18n/strings/hu.json | 348 +-------------- src/i18n/strings/hy.json | 22 +- src/i18n/strings/id.json | 20 +- src/i18n/strings/is.json | 19 +- src/i18n/strings/it.json | 19 +- src/i18n/strings/ja.json | 19 +- src/i18n/strings/ka.json | 19 +- src/i18n/strings/ko.json | 141 +----- src/i18n/strings/lo.json | 19 +- src/i18n/strings/lt.json | 14 - src/i18n/strings/lv.json | 21 +- src/i18n/strings/mg_MG.json | 21 +- src/i18n/strings/nb_NO.json | 46 +- src/i18n/strings/nl.json | 19 +- src/i18n/strings/pl.json | 20 +- src/i18n/strings/pt.json | 21 +- src/i18n/strings/pt_BR.json | 20 +- src/i18n/strings/ru.json | 25 +- src/i18n/strings/sk.json | 23 +- src/i18n/strings/sq.json | 19 +- src/i18n/strings/sv.json | 20 +- src/i18n/strings/tr.json | 20 +- src/i18n/strings/uk.json | 25 +- src/i18n/strings/vi.json | 19 +- src/i18n/strings/zh_Hans.json | 19 +- src/i18n/strings/zh_Hant.json | 19 +- 78 files changed, 1553 insertions(+), 1598 deletions(-) create mode 100644 packages/shared-components/src/i18n/strings/cs.json create mode 100644 packages/shared-components/src/i18n/strings/cy.json create mode 100644 packages/shared-components/src/i18n/strings/da.json create mode 100644 packages/shared-components/src/i18n/strings/de_DE.json create mode 100644 packages/shared-components/src/i18n/strings/el.json create mode 100644 packages/shared-components/src/i18n/strings/eo.json create mode 100644 packages/shared-components/src/i18n/strings/es.json create mode 100644 packages/shared-components/src/i18n/strings/et.json create mode 100644 packages/shared-components/src/i18n/strings/fa.json create mode 100644 packages/shared-components/src/i18n/strings/fi.json create mode 100644 packages/shared-components/src/i18n/strings/fr.json create mode 100644 packages/shared-components/src/i18n/strings/gl.json create mode 100644 packages/shared-components/src/i18n/strings/he.json create mode 100644 packages/shared-components/src/i18n/strings/hu.json create mode 100644 packages/shared-components/src/i18n/strings/hy.json create mode 100644 packages/shared-components/src/i18n/strings/id.json create mode 100644 packages/shared-components/src/i18n/strings/is.json create mode 100644 packages/shared-components/src/i18n/strings/it.json create mode 100644 packages/shared-components/src/i18n/strings/ja.json create mode 100644 packages/shared-components/src/i18n/strings/ka.json create mode 100644 packages/shared-components/src/i18n/strings/ko.json create mode 100644 packages/shared-components/src/i18n/strings/lo.json create mode 100644 packages/shared-components/src/i18n/strings/lt.json create mode 100644 packages/shared-components/src/i18n/strings/lv.json create mode 100644 packages/shared-components/src/i18n/strings/mg_MG.json create mode 100644 packages/shared-components/src/i18n/strings/nb_NO.json create mode 100644 packages/shared-components/src/i18n/strings/nl.json create mode 100644 packages/shared-components/src/i18n/strings/pl.json create mode 100644 packages/shared-components/src/i18n/strings/pt.json create mode 100644 packages/shared-components/src/i18n/strings/pt_BR.json create mode 100644 packages/shared-components/src/i18n/strings/ru.json create mode 100644 packages/shared-components/src/i18n/strings/sk.json create mode 100644 packages/shared-components/src/i18n/strings/sq.json create mode 100644 packages/shared-components/src/i18n/strings/sv.json create mode 100644 packages/shared-components/src/i18n/strings/tr.json create mode 100644 packages/shared-components/src/i18n/strings/uk.json create mode 100644 packages/shared-components/src/i18n/strings/vi.json create mode 100644 packages/shared-components/src/i18n/strings/zh_Hans.json create mode 100644 packages/shared-components/src/i18n/strings/zh_Hant.json diff --git a/packages/shared-components/src/i18n/strings/cs.json b/packages/shared-components/src/i18n/strings/cs.json new file mode 100644 index 00000000000..0ab040edd54 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/cs.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Panel posunu zvuku" + }, + "action": { + "delete": "Smazat", + "dismiss": "Zavřít", + "explore_rooms": "Procházet místnosti", + "pause": "Pozastavit", + "play": "Přehrát", + "search": "Hledání" + }, + "encryption": { + "pinned_identity_changed": "Identita %(displayName)s (%(userId)s) se změnila. Další informace", + "withdraw_verification_action": "Zrušit ověření" + }, + "left_panel": { + "open_dial_pad": "Otevřít číselník" + }, + "time": { + "about_day_ago": "před jedním dnem", + "about_hour_ago": "asi před hodinou", + "about_minute_ago": "před minutou", + "few_seconds_ago": "před pár vteřinami", + "in_about_day": "asi za den", + "in_about_hour": "asi za hodinu", + "in_about_minute": "asi za minutu", + "in_few_seconds": "za pár vteřin", + "in_n_days": "za %(num)s dní", + "in_n_hours": "za %(num)s hodin", + "in_n_minutes": "za %(num)s minut", + "n_days_ago": "před %(num)s dny", + "n_hours_ago": "před %(num)s hodinami", + "n_minutes_ago": "před %(num)s minutami" + }, + "timeline": { + "m.audio": { + "audio_player": "Audio přehrávač", + "error_downloading_audio": "Chyba při stahování audia", + "unnamed_audio": "Nepojmenovaný audio soubor" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/cy.json b/packages/shared-components/src/i18n/strings/cy.json new file mode 100644 index 00000000000..5d490ec9480 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/cy.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Bar chwilio sain" + }, + "action": { + "delete": "Dileu", + "dismiss": "Gwrthod", + "explore_rooms": "Archwilio Ystafelloedd", + "pause": "Oedi", + "play": "Chwarae", + "search": "Chwilio" + }, + "encryption": { + "pinned_identity_changed": "Cafodd hunaniaeth (%(userId)s) %(displayName)s ei ailosod. Dysgu rhagor", + "withdraw_verification_action": "Tynnu'r dilysiad yn ôl" + }, + "left_panel": { + "open_dial_pad": "Agor y pad deialu" + }, + "time": { + "about_day_ago": "tua diwrnod yn ôl", + "about_hour_ago": "tua awr yn ol", + "about_minute_ago": "tua munud yn ôl", + "few_seconds_ago": "ychydig eiliadau yn ôl", + "in_about_day": "tua diwrnod o nawr", + "in_about_hour": "tuag awr o hyn", + "in_about_minute": "tua munud o nawr", + "in_few_seconds": "ychydig eiliadau o nawr", + "in_n_days": "%(num)s diwrnod o nawr", + "in_n_hours": "%(num)s awr o nawr", + "in_n_minutes": "%(num)s munud o nawr", + "n_days_ago": "%(num)s diwrnod yn ôl", + "n_hours_ago": "%(num)s awr yn ôl", + "n_minutes_ago": "%(num)s munud yn ôl" + }, + "timeline": { + "m.audio": { + "audio_player": "Chwaraewr sain", + "error_downloading_audio": "Gwall wrth llwytho i lawrsain", + "unnamed_audio": "Sain dienw" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/da.json b/packages/shared-components/src/i18n/strings/da.json new file mode 100644 index 00000000000..39eb6ccfa81 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/da.json @@ -0,0 +1,35 @@ +{ + "a11y": { + "seek_bar_label": "Progressionsmarkør for lydafspiller" + }, + "action": { + "delete": "Slet", + "dismiss": "Afvis", + "explore_rooms": "Udforsk rum", + "pause": "Pausér", + "play": "Afspil", + "search": "Søg" + }, + "time": { + "about_day_ago": "omkring en dag siden", + "about_hour_ago": "for omkring en time siden", + "about_minute_ago": "for omkring et minut siden", + "few_seconds_ago": "for et par sekunder siden", + "in_about_day": "om cirka en dag fra nu", + "in_about_hour": "omkring en time fra nu", + "in_about_minute": "omkring et minut fra nu", + "in_few_seconds": "et par sekunder fra nu", + "in_n_days": "%(num)s dage fra nu", + "in_n_hours": "%(num)s timer fra nu", + "in_n_minutes": "%(num)s minutter fra nu", + "n_days_ago": "%(num)s dage siden", + "n_hours_ago": "%(num)s timer siden", + "n_minutes_ago": "%(num)s minutter siden" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Fejl ved download af lyd", + "unnamed_audio": "Unavngiven lyd" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/de_DE.json b/packages/shared-components/src/i18n/strings/de_DE.json new file mode 100644 index 00000000000..001c64d9bb9 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/de_DE.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Audio-Suchleiste" + }, + "action": { + "delete": "Löschen", + "dismiss": "Ausblenden", + "explore_rooms": "Chats erkunden", + "pause": "Pausieren", + "play": "Abspielen", + "search": "Suchen" + }, + "encryption": { + "pinned_identity_changed": "%(displayName)s's (%(userId)s) Identität wurde zurückgesetzt. Mehr erfahren ", + "withdraw_verification_action": "Verifizierung zurückziehen" + }, + "left_panel": { + "open_dial_pad": "Wähltastatur öffnen" + }, + "time": { + "about_day_ago": "vor etwa einem Tag", + "about_hour_ago": "vor etwa einer Stunde", + "about_minute_ago": "vor etwa einer Minute", + "few_seconds_ago": "vor ein paar Sekunden", + "in_about_day": "in etwa einem Tag", + "in_about_hour": "in etwa einer Stunde", + "in_about_minute": "in etwa einer Minute", + "in_few_seconds": "in ein paar Sekunden", + "in_n_days": "in %(num)s Tagen", + "in_n_hours": "in %(num)s Stunden", + "in_n_minutes": "In etwa %(num)s Minuten", + "n_days_ago": "vor %(num)s Tagen", + "n_hours_ago": "vor %(num)s Stunden", + "n_minutes_ago": "vor %(num)s Minuten" + }, + "timeline": { + "m.audio": { + "audio_player": "Audio-Player", + "error_downloading_audio": "Fehler beim Herunterladen der Audiodatei", + "unnamed_audio": "Unbenannte Audiodatei" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/el.json b/packages/shared-components/src/i18n/strings/el.json new file mode 100644 index 00000000000..1a9693f88eb --- /dev/null +++ b/packages/shared-components/src/i18n/strings/el.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "Διαγραφή", + "dismiss": "Απόρριψη", + "explore_rooms": "Εξερευνήστε αίθουσες", + "pause": "Παύση", + "play": "Αναπαραγωγή", + "search": "Αναζήτηση" + }, + "left_panel": { + "open_dial_pad": "Άνοιγμα πληκτρολογίου κλήσης" + }, + "time": { + "about_day_ago": "σχεδόν μία μέρα πριν", + "about_hour_ago": "σχεδόν μία ώρα πριν", + "about_minute_ago": "σχεδόν ένα λεπτό πριν", + "few_seconds_ago": "λίγα δευτερόλεπτα πριν", + "in_about_day": "περίπου μια μέρα από τώρα", + "in_about_hour": "περίπου μία ώρα από τώρα", + "in_about_minute": "περίπου ένα λεπτό από τώρα", + "in_few_seconds": "λίγα δευτερόλεπτα από τώρα", + "in_n_days": "%(num)s μέρες από τώρα", + "in_n_hours": "%(num)s ώρες από τώρα", + "in_n_minutes": "%(num)s λεπτά από τώρα", + "n_days_ago": "%(num)s μέρες πριν", + "n_hours_ago": "%(num)s ώρες πριν", + "n_minutes_ago": "%(num)s λεπτά πριν" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Σφάλμα λήψης ήχου", + "unnamed_audio": "Ήχος χωρίς όνομα" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/eo.json b/packages/shared-components/src/i18n/strings/eo.json new file mode 100644 index 00000000000..83c74853276 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/eo.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "Forigi", + "dismiss": "Rezigni", + "explore_rooms": "Esplori ĉambrojn", + "pause": "Paŭzigi", + "play": "Ludi", + "search": "Serĉi" + }, + "left_panel": { + "open_dial_pad": "Malfermi ciferplaton" + }, + "time": { + "about_day_ago": "antaŭ ĉirkaŭ tago", + "about_hour_ago": "antaŭ ĉirkaŭ horo", + "about_minute_ago": "antaŭ ĉirkaŭ minuto", + "few_seconds_ago": "antaŭ kelkaj sekundoj", + "in_about_day": "ĉirkaŭ tagon de nun", + "in_about_hour": "ĉirkaŭ horon de nun", + "in_about_minute": "ĉirkaŭ minuton de nun", + "in_few_seconds": "kelkajn sekundojn de nun", + "in_n_days": "%(num)s tagojn de nun", + "in_n_hours": "%(num)s horojn de nun", + "in_n_minutes": "%(num)s minutojn de nun", + "n_days_ago": "antaŭ %(num)s tagoj", + "n_hours_ago": "antaŭ %(num)s horoj", + "n_minutes_ago": "antaŭ %(num)s minutoj" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Eraris elŝuto de sondosiero", + "unnamed_audio": "Sennoma sondosiero" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/es.json b/packages/shared-components/src/i18n/strings/es.json new file mode 100644 index 00000000000..3efb5cdeea9 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/es.json @@ -0,0 +1,39 @@ +{ + "a11y": { + "seek_bar_label": "Barra de búsqueda de audio" + }, + "action": { + "delete": "Borrar", + "dismiss": "Omitir", + "explore_rooms": "Explorar salas", + "pause": "Pausar", + "play": "Reproducir", + "search": "Buscar" + }, + "left_panel": { + "open_dial_pad": "Abrir teclado numérico" + }, + "time": { + "about_day_ago": "hace aprox. un día", + "about_hour_ago": "hace aprox. una hora", + "about_minute_ago": "hace aproximadamente un minuto", + "few_seconds_ago": "hace unos segundos", + "in_about_day": "dentro de un día", + "in_about_hour": "dentro de una hora", + "in_about_minute": "dentro de un minuto", + "in_few_seconds": "dentro de unos segundos", + "in_n_days": "dentro de %(num)s días", + "in_n_hours": "dentro de %(num)s horas", + "in_n_minutes": "dentro de %(num)s minutos", + "n_days_ago": "hace %(num)s días", + "n_hours_ago": "hace %(num)s horas", + "n_minutes_ago": "hace %(num)s minutos" + }, + "timeline": { + "m.audio": { + "audio_player": "Reproductor de audio", + "error_downloading_audio": "Error al descargar el audio", + "unnamed_audio": "Audio sin título" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/et.json b/packages/shared-components/src/i18n/strings/et.json new file mode 100644 index 00000000000..c39a9fd6a34 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/et.json @@ -0,0 +1,48 @@ +{ + "a11y": { + "seek_bar_label": "Heli kerimisriba" + }, + "action": { + "delete": "Kustuta", + "dismiss": "Loobu", + "explore_rooms": "Tutvu jututubadega", + "pause": "Peata", + "play": "Esita", + "search": "Otsing" + }, + "encryption": { + "pinned_identity_changed": "Kasutaja %(displayName)s (%(userId)s) võrguidentiteet on lähtestatud. Lisateave", + "withdraw_verification_action": "Eemalda verifitseerimine" + }, + "left_panel": { + "open_dial_pad": "Ava numbriklahvistik" + }, + "room": { + "status_bar": { + "history_visible": "Sinu saadetud sõnumeid jagatakse sellesse jututuppa kutsutud uute liikmetega. Lisateave" + } + }, + "time": { + "about_day_ago": "umbes päev tagasi", + "about_hour_ago": "umbes tund aega tagasi", + "about_minute_ago": "umbes minut tagasi", + "few_seconds_ago": "mõni sekund tagasi", + "in_about_day": "umbes päeva pärast", + "in_about_hour": "umbes tunni pärast", + "in_about_minute": "umbes minuti pärast", + "in_few_seconds": "mõne sekundi pärast", + "in_n_days": "%(num)s päeva pärast", + "in_n_hours": "%(num)s tunni pärast", + "in_n_minutes": "%(num)s minuti pärast", + "n_days_ago": "%(num)s päeva tagasi", + "n_hours_ago": "%(num)s tundi tagasi", + "n_minutes_ago": "%(num)s minutit tagasi" + }, + "timeline": { + "m.audio": { + "audio_player": "Meediaesitaja", + "error_downloading_audio": "Helifaili allalaadimine ei õnnestunud", + "unnamed_audio": "Nimetu helifail" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/fa.json b/packages/shared-components/src/i18n/strings/fa.json new file mode 100644 index 00000000000..0871bcdc0b4 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/fa.json @@ -0,0 +1,29 @@ +{ + "action": { + "delete": "پاک‌کردن", + "dismiss": "نادیده بگیر", + "explore_rooms": "جستجو در اتاق ها", + "pause": "متوقف‌کردن", + "play": "اجرا کردن", + "search": "جستجو" + }, + "left_panel": { + "open_dial_pad": "باز کردن صفحه شماره‌گیری" + }, + "time": { + "about_day_ago": "حدود یک روز قبل", + "about_hour_ago": "حدود یک ساعت قبل", + "about_minute_ago": "حدود یک دقیقه قبل", + "few_seconds_ago": "چند ثانیه قبل", + "in_about_day": "حدود یک روز دیگر", + "in_about_hour": "حدود یک ساعت دیگر", + "in_about_minute": "حدود یک دقیقه دیگر", + "in_few_seconds": "چند ثانیه دیگر", + "in_n_days": "%(num)s روز دیگر", + "in_n_hours": "%(num)s ساعت دیگر", + "in_n_minutes": "%(num)s دقیقه دیگر", + "n_days_ago": "%(num)s روز قبل", + "n_hours_ago": "%(num)s ساعت قبل", + "n_minutes_ago": "%(num)s دقیقه قبل" + } +} diff --git a/packages/shared-components/src/i18n/strings/fi.json b/packages/shared-components/src/i18n/strings/fi.json new file mode 100644 index 00000000000..d178b173076 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/fi.json @@ -0,0 +1,38 @@ +{ + "a11y": { + "seek_bar_label": "Äänen siirtymispalkki" + }, + "action": { + "delete": "Poista", + "dismiss": "Hylkää", + "explore_rooms": "Selaa huoneita", + "pause": "Keskeytä", + "play": "Toista", + "search": "Haku" + }, + "left_panel": { + "open_dial_pad": "Avaa näppäimistö" + }, + "time": { + "about_day_ago": "noin päivä sitten", + "about_hour_ago": "noin tunti sitten", + "about_minute_ago": "noin minuutti sitten", + "few_seconds_ago": "muutama sekunti sitten", + "in_about_day": "noin päivä sitten", + "in_about_hour": "noin tunti sitten", + "in_about_minute": "noin minuutti sitten", + "in_few_seconds": "muutama sekunti sitten", + "in_n_days": "%(num)s päivää sitten", + "in_n_hours": "%(num)s tuntia sitten", + "in_n_minutes": "%(num)s minuuttia sitten", + "n_days_ago": "%(num)s päivää sitten", + "n_hours_ago": "%(num)s tuntia sitten", + "n_minutes_ago": "%(num)s minuuttia sitten" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Virhe ääntä ladattaessa", + "unnamed_audio": "Nimetön ääni" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/fr.json b/packages/shared-components/src/i18n/strings/fr.json new file mode 100644 index 00000000000..cc6cc930278 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/fr.json @@ -0,0 +1,48 @@ +{ + "a11y": { + "seek_bar_label": "Barre de recherche audio" + }, + "action": { + "delete": "Supprimer", + "dismiss": "Ignorer", + "explore_rooms": "Parcourir les salons", + "pause": "Pause", + "play": "Lecture", + "search": "Rechercher" + }, + "encryption": { + "pinned_identity_changed": "L'identité de %(displayName)s (%(userId)s) semble avoir changé. En savoir plus", + "withdraw_verification_action": "Révoquer la vérification" + }, + "left_panel": { + "open_dial_pad": "Ouvrir le pavé de numérotation" + }, + "room": { + "status_bar": { + "history_visible": "Les messages que vous enverrez seront partagés avec les nouveaux membres invités dans ce salon. En savoir plus" + } + }, + "time": { + "about_day_ago": "il y a environ un jour", + "about_hour_ago": "il y a environ une heure", + "about_minute_ago": "il y a environ une minute", + "few_seconds_ago": "il y a quelques secondes", + "in_about_day": "dans un jour environ", + "in_about_hour": "dans une heure environ", + "in_about_minute": "dans une minute environ", + "in_few_seconds": "dans quelques secondes", + "in_n_days": "dans %(num)s jours", + "in_n_hours": "dans %(num)s heures", + "in_n_minutes": "dans %(num)s minutes", + "n_days_ago": "il y a %(num)s jours", + "n_hours_ago": "il y a %(num)s heures", + "n_minutes_ago": "il y a %(num)s minutes" + }, + "timeline": { + "m.audio": { + "audio_player": "Lecteur audio", + "error_downloading_audio": "Erreur lors du téléchargement de l’audio", + "unnamed_audio": "Audio sans nom" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/gl.json b/packages/shared-components/src/i18n/strings/gl.json new file mode 100644 index 00000000000..2acc9ba7cad --- /dev/null +++ b/packages/shared-components/src/i18n/strings/gl.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "Eliminar", + "dismiss": "Rexeitar", + "explore_rooms": "Explorar salas", + "pause": "Deter", + "play": "Reproducir", + "search": "Busca" + }, + "left_panel": { + "open_dial_pad": "Abrir marcador" + }, + "time": { + "about_day_ago": "onte", + "about_hour_ago": "fai unha hora", + "about_minute_ago": "fai un minuto", + "few_seconds_ago": "fai uns segundos", + "in_about_day": "foi onte", + "in_about_hour": "fará unha hora", + "in_about_minute": "haberá un minuto", + "in_few_seconds": "hai só uns segundos", + "in_n_days": "fará %(num)s días", + "in_n_hours": "fará %(num)s horas", + "in_n_minutes": "fará %(num)s minutos", + "n_days_ago": "fai %(num)s días", + "n_hours_ago": "fai %(num)s horas", + "n_minutes_ago": "fai %(num)s minutos" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Erro ao descargar o audio", + "unnamed_audio": "Audio sen nome" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/he.json b/packages/shared-components/src/i18n/strings/he.json new file mode 100644 index 00000000000..8d19269362b --- /dev/null +++ b/packages/shared-components/src/i18n/strings/he.json @@ -0,0 +1,27 @@ +{ + "action": { + "delete": "מחק", + "dismiss": "התעלם", + "explore_rooms": "גלה חדרים", + "search": "חפש" + }, + "left_panel": { + "open_dial_pad": "פתח לוח חיוג" + }, + "time": { + "about_day_ago": "בערך לפני יום", + "about_hour_ago": "בערך לפני כשעה", + "about_minute_ago": "לפני בערך דקה", + "few_seconds_ago": "לפני מספר שניות", + "in_about_day": "בערך בעוד יום מעכשיו", + "in_about_hour": "בערך בעוד כשעה", + "in_about_minute": "בערך עוד דקה אחת", + "in_few_seconds": "בעוד מספר שניות מעכשיו", + "in_n_days": "בעוד %(num)s ימים מעכשיו", + "in_n_hours": "בעוד %(num)s שעות", + "in_n_minutes": "בעוד %(num)s דקות", + "n_days_ago": "לפני %(num)s ימים", + "n_hours_ago": "לפני %(num)s שעות", + "n_minutes_ago": "לפני %(num)s דקות" + } +} diff --git a/packages/shared-components/src/i18n/strings/hu.json b/packages/shared-components/src/i18n/strings/hu.json new file mode 100644 index 00000000000..d973968a31e --- /dev/null +++ b/packages/shared-components/src/i18n/strings/hu.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Hang keresősávja" + }, + "action": { + "delete": "Törlés", + "dismiss": "Eltüntetés", + "explore_rooms": "Szobák felderítése", + "pause": "Szünet", + "play": "Lejátszás", + "search": "Keresés" + }, + "encryption": { + "pinned_identity_changed": "Úgy tűnik, hogy %(displayName)s (%(userId)s) személyazonossága megváltozott. További információ", + "withdraw_verification_action": "Ellenőrzés visszavonása" + }, + "left_panel": { + "open_dial_pad": "Számlap megnyitása" + }, + "time": { + "about_day_ago": "egy napja", + "about_hour_ago": "egy órája", + "about_minute_ago": "egy perce", + "few_seconds_ago": "néhány másodperce", + "in_about_day": "egy nap múlva", + "in_about_hour": "egy óra múlva", + "in_about_minute": "egy perc múlva", + "in_few_seconds": "másodpercek múlva", + "in_n_days": "%(num)s nap múlva", + "in_n_hours": "%(num)s óra múlva", + "in_n_minutes": "%(num)s perc múlva", + "n_days_ago": "%(num)s nappal ezelőtt", + "n_hours_ago": "%(num)s órával ezelőtt", + "n_minutes_ago": "%(num)s perccel ezelőtt" + }, + "timeline": { + "m.audio": { + "audio_player": "Hanglejátszó", + "error_downloading_audio": "Hiba a hang letöltésekor", + "unnamed_audio": "Névtelen hang" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/hy.json b/packages/shared-components/src/i18n/strings/hy.json new file mode 100644 index 00000000000..e86dcc54e66 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/hy.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Աուդիո որոնման գոտի" + }, + "action": { + "delete": "Ջնջել", + "dismiss": "Հեռացնել", + "explore_rooms": "Փնտրել սենյակներ", + "pause": "Դադար", + "play": "Միացնել", + "search": "Որոնել" + }, + "encryption": { + "pinned_identity_changed": "%(displayName)s-ի (%(userId)s ) ինքնությունը վերակայվել է։ Իմանալ ավելին", + "withdraw_verification_action": "Հետ կանչել հաստատումը" + }, + "left_panel": { + "open_dial_pad": "Բացեք թվերի հավաքման վահանակը" + }, + "time": { + "about_day_ago": "մոտ մեկ օր առաջ", + "about_hour_ago": "մոտ մեկ ժամ առաջ", + "about_minute_ago": "մոտ մեկ րոպե առաջ", + "few_seconds_ago": "մի քանի վայրկյան առաջ", + "in_about_day": "մոտ մեկ օր անց", + "in_about_hour": "մոտ մեկ ժամ անց", + "in_about_minute": "մոտ մեկ րոպե անց", + "in_few_seconds": "մի քանի վայրկյան անց", + "in_n_days": "%(num)s օր անց", + "in_n_hours": "%(num)s ժամ անց", + "in_n_minutes": "%(num)s րոպեներ անց", + "n_days_ago": "%(num)s օր առաջ", + "n_hours_ago": "%(num)s ժամ առաջ", + "n_minutes_ago": "%(num)s րոպե առաջ" + }, + "timeline": { + "m.audio": { + "audio_player": "Աուդիո նվագարկիչ", + "error_downloading_audio": "Աուդիո ներբեռնման սխալ", + "unnamed_audio": "Անանուն աուդիո" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/id.json b/packages/shared-components/src/i18n/strings/id.json new file mode 100644 index 00000000000..0d7da0a39e6 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/id.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Bilah pencarian audio" + }, + "action": { + "delete": "Hapus", + "dismiss": "Abaikan", + "explore_rooms": "Jelajahi ruangan", + "pause": "Jeda", + "play": "Mainkan", + "search": "Cari" + }, + "encryption": { + "pinned_identity_changed": "Identitas (%(userId)s) %(displayName)s tampaknya telah berubah. Pelajari lebih lanjut", + "withdraw_verification_action": "Tolak verifikasi" + }, + "left_panel": { + "open_dial_pad": "Buka tombol penyetel" + }, + "time": { + "about_day_ago": "1 hari yang lalu", + "about_hour_ago": "1 jam yang lalu", + "about_minute_ago": "1 menit yang lalu", + "few_seconds_ago": "beberapa detik yang lalu", + "in_about_day": "1 hari dari sekarang", + "in_about_hour": "1 jam dari sekarang", + "in_about_minute": "1 menit dari sekarang", + "in_few_seconds": "beberapa detik dari sekarang", + "in_n_days": "%(num)s hari dari sekarang", + "in_n_hours": "%(num)s jam dari sekarang", + "in_n_minutes": "%(num)s dari sekarang", + "n_days_ago": "%(num)s hari yang lalu", + "n_hours_ago": "%(num)s jam yang lalu", + "n_minutes_ago": "%(num)s menit yang lalu" + }, + "timeline": { + "m.audio": { + "audio_player": "Pemutar audio", + "error_downloading_audio": "Terjadi kesalahan mengunduh audio", + "unnamed_audio": "Audio tidak dinamai" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/is.json b/packages/shared-components/src/i18n/strings/is.json new file mode 100644 index 00000000000..284bb0df06c --- /dev/null +++ b/packages/shared-components/src/i18n/strings/is.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "Eyða", + "dismiss": "Hunsa", + "explore_rooms": "Kanna spjallrásir", + "pause": "Bið", + "play": "Spila", + "search": "Leita" + }, + "left_panel": { + "open_dial_pad": "Opna talnaborð" + }, + "time": { + "about_day_ago": "fyrir um degi síðan", + "about_hour_ago": "fyrir um klukkustund síðan", + "about_minute_ago": "fyrir um það bil mínútu síðan", + "few_seconds_ago": "fyrir örfáum sekúndum síðan", + "in_about_day": "eftir um það bil einn dag", + "in_about_hour": "eftir um það bil klukkustund", + "in_about_minute": "eftir um það bil mínútu", + "in_few_seconds": "eftir nokkrar sekúndur", + "in_n_days": "eftir %(num)s daga", + "in_n_hours": "eftir %(num)s klukkustundir", + "in_n_minutes": "eftir %(num)s mínútur", + "n_days_ago": "fyrir %(num)s dögum síðan", + "n_hours_ago": "fyrir %(num)s klukkustundum síðan", + "n_minutes_ago": "fyrir %(num)s mínútum síðan" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Villa við að sækja hljóð", + "unnamed_audio": "Nafnlaust hljóð" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/it.json b/packages/shared-components/src/i18n/strings/it.json new file mode 100644 index 00000000000..523d5798c11 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/it.json @@ -0,0 +1,38 @@ +{ + "a11y": { + "seek_bar_label": "Barra di ricerca audio" + }, + "action": { + "delete": "Elimina", + "dismiss": "Chiudi", + "explore_rooms": "Esplora stanze", + "pause": "Pausa", + "play": "Riproduci", + "search": "Cerca" + }, + "left_panel": { + "open_dial_pad": "Apri tastierino" + }, + "time": { + "about_day_ago": "circa un giorno fa", + "about_hour_ago": "circa un'ora fa", + "about_minute_ago": "circa un minuto fa", + "few_seconds_ago": "pochi secondi fa", + "in_about_day": "circa un giorno da adesso", + "in_about_hour": "circa un'ora da adesso", + "in_about_minute": "circa un minuto da adesso", + "in_few_seconds": "pochi secondi da adesso", + "in_n_days": "%(num)s giorni da adesso", + "in_n_hours": "%(num)s ore da adesso", + "in_n_minutes": "%(num)s minuti da adesso", + "n_days_ago": "%(num)s giorni fa", + "n_hours_ago": "%(num)s ore fa", + "n_minutes_ago": "%(num)s minuti fa" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Errore di scaricamento dell'audio", + "unnamed_audio": "Audio senza nome" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/ja.json b/packages/shared-components/src/i18n/strings/ja.json new file mode 100644 index 00000000000..e803863efe0 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/ja.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "削除", + "dismiss": "閉じる", + "explore_rooms": "ルームを探す", + "pause": "一時停止", + "play": "再生", + "search": "検索" + }, + "left_panel": { + "open_dial_pad": "ダイヤルパッドを開く" + }, + "time": { + "about_day_ago": "約1日前", + "about_hour_ago": "約1時間前", + "about_minute_ago": "約1分前", + "few_seconds_ago": "数秒前", + "in_about_day": "今から約1日前", + "in_about_hour": "今から約1時間前", + "in_about_minute": "今から約1分前", + "in_few_seconds": "今から数秒前", + "in_n_days": "今から%(num)s日前", + "in_n_hours": "今から%(num)s時間前", + "in_n_minutes": "今から%(num)s分前", + "n_days_ago": "%(num)s日前", + "n_hours_ago": "%(num)s時間前", + "n_minutes_ago": "%(num)s分前" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "音声をダウンロードする際にエラーが発生しました", + "unnamed_audio": "名前のない音声" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/ka.json b/packages/shared-components/src/i18n/strings/ka.json new file mode 100644 index 00000000000..5e7482c72a4 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/ka.json @@ -0,0 +1,32 @@ +{ + "action": { + "delete": "წაშლა", + "dismiss": "დახურვა", + "explore_rooms": "ოთახების დათავლიერება", + "pause": "პაუზა", + "play": "დაკვრა", + "search": "ძიება" + }, + "time": { + "about_day_ago": "დაახლოებით ერთი დღის წინ", + "about_hour_ago": "დაახლოებით ერთი საათის წინ", + "about_minute_ago": "დაახლოებით ერთი წუთის წინ", + "few_seconds_ago": "რამდენიმე წამის წინ", + "in_about_day": "დაახლოებით ერთი დღის შემდეგ", + "in_about_hour": "დაახლოებით ერთი საათის შემდეგ", + "in_about_minute": "დაახლოებით ერთი წუთის შემდეგ", + "in_few_seconds": "რამდენიმე წამის შემდეგ", + "in_n_days": "%(num)sდღეებიდან", + "in_n_hours": "%(num)sსაათის შემდეგ", + "in_n_minutes": "%(num)sწუთის შემდეგ", + "n_days_ago": "%(num)sდღის წინ", + "n_hours_ago": "%(num)sსაათის წინ", + "n_minutes_ago": "%(num)sწუთის წინ" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "შეცდომა აუდიოს ჩამოტვირთვისას", + "unnamed_audio": "უსახელო აუდიო" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/ko.json b/packages/shared-components/src/i18n/strings/ko.json new file mode 100644 index 00000000000..bac48556369 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/ko.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "오디오 탐색 바" + }, + "action": { + "delete": "삭제", + "dismiss": "버리기", + "explore_rooms": "방 검색", + "pause": "일시중지", + "play": "재생", + "search": "찾기" + }, + "encryption": { + "pinned_identity_changed": "%(displayName)s (%(userId)s)의 신원이 재설정되었습니다. 자세히 알아보기", + "withdraw_verification_action": "인증 취소" + }, + "left_panel": { + "open_dial_pad": "다이얼 패드 열기" + }, + "time": { + "about_day_ago": "약 1일 전", + "about_hour_ago": "약 1 시간 전", + "about_minute_ago": "약 1분 전", + "few_seconds_ago": "몇 초 전", + "in_about_day": "하루 정도 후", + "in_about_hour": "지금부터 한 시간 정도 후에", + "in_about_minute": "지금부터 약 1분 후", + "in_few_seconds": "몇 초 후", + "in_n_days": "지금부터 %(num)s 일 후에", + "in_n_hours": "지금부터 %(num)s 시간 후", + "in_n_minutes": "지금부터 %(num)s분 후", + "n_days_ago": "%(num)s일 전", + "n_hours_ago": "%(num)s 시간 전", + "n_minutes_ago": "%(num)s분 전" + }, + "timeline": { + "m.audio": { + "audio_player": "오디오 플레이어", + "error_downloading_audio": "오디오 다운로드 중 오류 발생", + "unnamed_audio": "이름 없는 오디오" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/lo.json b/packages/shared-components/src/i18n/strings/lo.json new file mode 100644 index 00000000000..9889020efbb --- /dev/null +++ b/packages/shared-components/src/i18n/strings/lo.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "ລຶບ", + "dismiss": "ຍົກເລີກ", + "explore_rooms": "ການສຳຫຼວດຫ້ອງ", + "pause": "ຢຸດຊົ່ວຄາວ", + "play": "ຫຼິ້ນ", + "search": "ຊອກຫາ" + }, + "left_panel": { + "open_dial_pad": "ເປີດແຜ່ນປັດ" + }, + "time": { + "about_day_ago": "ປະມານຫນຶ່ງມື້ກ່ອນຫນ້ານີ້", + "about_hour_ago": "ປະມານຫນຶ່ງຊົ່ວໂມງກ່ອນຫນ້ານີ້", + "about_minute_ago": "ປະມານໜຶ່ງວິນາທີກ່ອນຫນ້ານີ້", + "few_seconds_ago": "ສອງສາມວິນາທີກ່ອນຫນ້ານີ້", + "in_about_day": "ປະມານນຶ່ງມື້ຈາກນີ້", + "in_about_hour": "ປະມານຫນຶ່ງຊົ່ວໂມງຈາກປະຈຸບັນນີ້", + "in_about_minute": "ປະມານໜຶ່ງນາທີຕໍ່ຈາກນີ້", + "in_few_seconds": "ສອງສາມວິນາທີຕໍ່ຈາກນີ້ໄປ", + "in_n_days": "%(num)s ມື້ຕໍ່ຈາກນີ້", + "in_n_hours": "%(num)s ຊົ່ວໂມງຈາກປະຈຸບັນນີ້", + "in_n_minutes": "%(num)s ນາທີຕໍ່ຈາກນີ້", + "n_days_ago": "%(num)sມື້ກ່ອນຫນ້ານີ້", + "n_hours_ago": "%(num)s ຊົ່ວໂມງກ່ອນ", + "n_minutes_ago": "%(num)s ນາທີກ່ອນ" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "ເກີດຄວາມຜິດພາດໃນການດາວໂຫຼດສຽງ", + "unnamed_audio": "ສຽງບໍ່ມີຊື່" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/lt.json b/packages/shared-components/src/i18n/strings/lt.json new file mode 100644 index 00000000000..de50724d9fc --- /dev/null +++ b/packages/shared-components/src/i18n/strings/lt.json @@ -0,0 +1,24 @@ +{ + "action": { + "delete": "Ištrinti", + "dismiss": "Atmesti", + "explore_rooms": "Žvalgyti kambarius", + "search": "Ieškoti" + }, + "time": { + "about_day_ago": "maždaug prieš dieną", + "about_hour_ago": "maždaug prieš valandą", + "about_minute_ago": "maždaug prieš minutę", + "few_seconds_ago": "prieš kelias sekundes", + "in_about_day": "apie dieną nuo dabar", + "in_about_hour": "apie valandą nuo dabar", + "in_about_minute": "apie minutę nuo dabar", + "in_few_seconds": "keletą sekundžių nuo dabar", + "in_n_days": "%(num)s dienas(-ų) nuo dabar", + "in_n_hours": "%(num)s valandas(-ų) nuo dabar", + "in_n_minutes": "%(num)s minutes(-ų) nuo dabar", + "n_days_ago": "prieš %(num)s dienas(-ų)", + "n_hours_ago": "prieš %(num)s valandas(-ų)", + "n_minutes_ago": "prieš %(num)s minutes(-ų)" + } +} diff --git a/packages/shared-components/src/i18n/strings/lv.json b/packages/shared-components/src/i18n/strings/lv.json new file mode 100644 index 00000000000..5f2a3c04f12 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/lv.json @@ -0,0 +1,35 @@ +{ + "a11y": { + "seek_bar_label": "Audio meklēšanas josla" + }, + "action": { + "delete": "Izdzēst", + "dismiss": "Atmest", + "explore_rooms": "Pārlūkot istabas", + "pause": "Pauzēt", + "play": "Atskaņot", + "search": "Meklēt" + }, + "time": { + "about_day_ago": "aptuveni dienu iepriekš", + "about_hour_ago": "aptuveni stundu iepriekš", + "about_minute_ago": "aptuveni minūti iepriekš", + "few_seconds_ago": "pirms dažām sekundēm", + "in_about_day": "aptuveni dienu kopš šī brīža", + "in_about_hour": "aptuveni stundu kopš šī brīža", + "in_about_minute": "aptuveni minūti kopš šī brīža", + "in_few_seconds": "dažas sekundes kopš šī brīža", + "in_n_days": "%(num)s dienas kopš šī brīža", + "in_n_hours": "%(num)s stundas kopš šī brīža", + "in_n_minutes": "%(num)s minūtes kopš šī brīža", + "n_days_ago": "%(num)s dienas iepriekš", + "n_hours_ago": "%(num)s stundas iepriekš", + "n_minutes_ago": "%(num)s minūtes iepriekš" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Kļūda skaņas lejupielādēšanā", + "unnamed_audio": "Nenosaukts audio" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/mg_MG.json b/packages/shared-components/src/i18n/strings/mg_MG.json new file mode 100644 index 00000000000..7960042a967 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/mg_MG.json @@ -0,0 +1,38 @@ +{ + "a11y": { + "seek_bar_label": "Audio mitady bar" + }, + "action": { + "delete": "Esorina", + "dismiss": "Hanario", + "explore_rooms": "Tsidiho ny efitrano", + "pause": "Mihato", + "play": "Milalao", + "search": "Karohina" + }, + "left_panel": { + "open_dial_pad": "Sokafy ny dial pad" + }, + "time": { + "about_day_ago": "Tokony ho iray andro izay", + "about_hour_ago": "Manakaiky adin'iray Teo ho eo", + "about_minute_ago": "Misy iray minitra Teo izay", + "few_seconds_ago": "Segondra vitsy lasa", + "in_about_day": "Anatiny iray andro eo ho eo", + "in_about_hour": "Adiny iray eo ho eo", + "in_about_minute": "Afaka iray minitra eo ho eo", + "in_few_seconds": "Afaka segondra vitsy", + "in_n_days": "%(num) s andro manomboka izao", + "in_n_hours": "% (num) sAnatiny ora vitsivitsy", + "in_n_minutes": "% (Num) sAfaka minitra vitsy", + "n_days_ago": "%(num)s Andro vitsivitsy izay", + "n_hours_ago": "%(num)sOra maromaro", + "n_minutes_ago": "%(Num)s Minitra vitsivitsy izay" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Hadisoana tamin'ny fampidinana feo", + "unnamed_audio": "Audio tsy voatonona anarana" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/nb_NO.json b/packages/shared-components/src/i18n/strings/nb_NO.json new file mode 100644 index 00000000000..3fe3115ee40 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/nb_NO.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Søkelinje for lyd" + }, + "action": { + "delete": "Slett", + "dismiss": "Avvis", + "explore_rooms": "Se alle rom", + "pause": "Pause", + "play": "Spill av", + "search": "Søk" + }, + "encryption": { + "pinned_identity_changed": "%(displayName)ss (%(userId)s) identitet ser ut til å ha endret seg. Finn ut mer", + "withdraw_verification_action": "Trekk tilbake verifisering" + }, + "left_panel": { + "open_dial_pad": "Åpne nummerpanelet" + }, + "time": { + "about_day_ago": "cirka 1 dag siden", + "about_hour_ago": "cirka 1 time siden", + "about_minute_ago": "cirka 1 minutt siden", + "few_seconds_ago": "noen sekunder siden", + "in_about_day": "rundt en dag fra nå", + "in_about_hour": "rundt en time fra nå", + "in_about_minute": "rundt et minutt fra nå", + "in_few_seconds": "om noen sekunder fra nå", + "in_n_days": "%(num)s dager fra nå", + "in_n_hours": "%(num)s timer fra nå", + "in_n_minutes": "%(num)s minutter fra nå", + "n_days_ago": "%(num)s dager siden", + "n_hours_ago": "%(num)s timer siden", + "n_minutes_ago": "%(num)s minutter siden" + }, + "timeline": { + "m.audio": { + "audio_player": "Lydavspiller", + "error_downloading_audio": "Feil ved nedlasting av lyd", + "unnamed_audio": "Ikke navngitt lyd" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/nl.json b/packages/shared-components/src/i18n/strings/nl.json new file mode 100644 index 00000000000..26d4febbbcf --- /dev/null +++ b/packages/shared-components/src/i18n/strings/nl.json @@ -0,0 +1,38 @@ +{ + "a11y": { + "seek_bar_label": "Audio zoekbalk" + }, + "action": { + "delete": "Verwijderen", + "dismiss": "Sluiten", + "explore_rooms": "Kamers ontdekken", + "pause": "Pauze", + "play": "Afspelen", + "search": "Zoeken" + }, + "left_panel": { + "open_dial_pad": "Kiestoetsen openen" + }, + "time": { + "about_day_ago": "ongeveer een dag geleden", + "about_hour_ago": "ongeveer een uur geleden", + "about_minute_ago": "ongeveer een minuut geleden", + "few_seconds_ago": "enige tellen geleden", + "in_about_day": "over een dag of zo", + "in_about_hour": "over ongeveer een uur", + "in_about_minute": "over ongeveer een minuut", + "in_few_seconds": "over een paar tellen", + "in_n_days": "over %(num)s dagen", + "in_n_hours": "over %(num)s uur", + "in_n_minutes": "over %(num)s minuten", + "n_days_ago": "%(num)s dagen geleden", + "n_hours_ago": "%(num)s uur geleden", + "n_minutes_ago": "%(num)s minuten geleden" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Fout bij downloaden van audio", + "unnamed_audio": "Naamloze audio" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/pl.json b/packages/shared-components/src/i18n/strings/pl.json new file mode 100644 index 00000000000..b347a1fe02b --- /dev/null +++ b/packages/shared-components/src/i18n/strings/pl.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Pasek wyszukiwania audio" + }, + "action": { + "delete": "Usuń", + "dismiss": "Pomiń", + "explore_rooms": "Przeglądaj pokoje", + "pause": "Wstrzymaj", + "play": "Odtwórz", + "search": "Szukaj" + }, + "encryption": { + "pinned_identity_changed": "Tożsamość %(displayName)s (%(userId)s) została zresetowana. Dowiedz się więcej", + "withdraw_verification_action": "Wycofaj weryfikację" + }, + "left_panel": { + "open_dial_pad": "Otwórz klawiaturę numeryczną" + }, + "time": { + "about_day_ago": "około dzień temu", + "about_hour_ago": "około godziny temu", + "about_minute_ago": "około minuty temu", + "few_seconds_ago": "kilka sekund temu", + "in_about_day": "około dnia od teraz", + "in_about_hour": "około godziny od teraz", + "in_about_minute": "około minuty od teraz", + "in_few_seconds": "za kilka sekund", + "in_n_days": "za %(num)s dni", + "in_n_hours": "za %(num)s godzin", + "in_n_minutes": "za %(num)s minut", + "n_days_ago": "%(num)s dni temu", + "n_hours_ago": "%(num)s godzin temu", + "n_minutes_ago": "%(num)s minut temu" + }, + "timeline": { + "m.audio": { + "audio_player": "Odtwarzacz audio", + "error_downloading_audio": "Wystąpił błąd w trakcie pobierania audio", + "unnamed_audio": "Audio bez nazwy" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/pt.json b/packages/shared-components/src/i18n/strings/pt.json new file mode 100644 index 00000000000..a7b7156f680 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/pt.json @@ -0,0 +1,42 @@ +{ + "a11y": { + "seek_bar_label": "Barra de procura de áudio" + }, + "action": { + "delete": "Apagar", + "dismiss": "Descartar", + "explore_rooms": "Explorar rooms", + "pause": "Pausar", + "play": "Reproduzir", + "search": "Pesquisar" + }, + "encryption": { + "pinned_identity_changed": "A identidade de %(displayName)s (%(userId)s ) foi alterada. Saber mais", + "withdraw_verification_action": "Retirar verificação" + }, + "left_panel": { + "open_dial_pad": "Abre o teclado de marcação" + }, + "time": { + "about_day_ago": "há cerca de um dia", + "about_hour_ago": "há cerca de uma hora", + "about_minute_ago": "há cerca de um minuto", + "few_seconds_ago": "há alguns segundos atrás", + "in_about_day": "daqui a um dia", + "in_about_hour": "daqui a uma hora", + "in_about_minute": "daqui a um minuto", + "in_few_seconds": "daqui a alguns segundos", + "in_n_days": "daqui a %(num)s dias", + "in_n_hours": "daqui a %(num)s horas", + "in_n_minutes": "daqui a %(num)s minutos", + "n_days_ago": "%(num)s dias atrás", + "n_hours_ago": "%(num)s horas atrás", + "n_minutes_ago": "%(num)s minutos atrás" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Erro ao descarregar áudio", + "unnamed_audio": "Áudio sem nome" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/pt_BR.json b/packages/shared-components/src/i18n/strings/pt_BR.json new file mode 100644 index 00000000000..bc13ec499b5 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/pt_BR.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Barra de busca de áudio" + }, + "action": { + "delete": "Excluir", + "dismiss": "Dispensar", + "explore_rooms": "Explorar salas", + "pause": "Pausar", + "play": "Reproduzir", + "search": "Buscar" + }, + "encryption": { + "pinned_identity_changed": "A identidade de %(displayName)s (%(userId)s) parece ter mudado. Saiba mais", + "withdraw_verification_action": "Retirar verificação" + }, + "left_panel": { + "open_dial_pad": "Abrir o teclado de discagem" + }, + "time": { + "about_day_ago": "há aproximadamente um dia", + "about_hour_ago": "há aproximadamente uma hora", + "about_minute_ago": "há aproximadamente um minuto", + "few_seconds_ago": "há alguns segundos", + "in_about_day": "dentro de aproximadamente um dia", + "in_about_hour": "dentro de aproximadamente uma hora", + "in_about_minute": "dentro de aproximadamente um minuto", + "in_few_seconds": "dentro de alguns segundos", + "in_n_days": "dentro de %(num)s dias", + "in_n_hours": "dentro de %(num)s horas", + "in_n_minutes": "dentro de %(num)s minutos", + "n_days_ago": "há %(num)s dias", + "n_hours_ago": "há %(num)s horas", + "n_minutes_ago": "há %(num)s minutos" + }, + "timeline": { + "m.audio": { + "audio_player": "Reprodutor de Áudio", + "error_downloading_audio": "Erro ao baixar o áudio", + "unnamed_audio": "Áudio sem nome" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/ru.json b/packages/shared-components/src/i18n/strings/ru.json new file mode 100644 index 00000000000..8a9ba1ce43a --- /dev/null +++ b/packages/shared-components/src/i18n/strings/ru.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Панель поиска аудио" + }, + "action": { + "delete": "Удалить", + "dismiss": "Закрыть", + "explore_rooms": "Обзор комнат", + "pause": "Пауза", + "play": "Воспроизведение", + "search": "Поиск" + }, + "encryption": { + "pinned_identity_changed": "Идентичность %(displayName)s (%(userId)s), похоже, изменилась. Узнать больше", + "withdraw_verification_action": "Подтверждение верификации" + }, + "left_panel": { + "open_dial_pad": "Открыть панель набора номера" + }, + "time": { + "about_day_ago": "около суток назад", + "about_hour_ago": "около часа назад", + "about_minute_ago": "около минуты назад", + "few_seconds_ago": "несколько секунд назад", + "in_about_day": "примерно через день", + "in_about_hour": "примерно через час", + "in_about_minute": "примерно через минуту", + "in_few_seconds": "несколько секунд назад", + "in_n_days": "%(num)s дней спустя", + "in_n_hours": "%(num)s часов спустя", + "in_n_minutes": "%(num)s минут спустя", + "n_days_ago": "%(num)s дней назад", + "n_hours_ago": "%(num)s часов назад", + "n_minutes_ago": "%(num)s минут назад" + }, + "timeline": { + "m.audio": { + "audio_player": "Аудиоплеер", + "error_downloading_audio": "Ошибка загрузки аудио", + "unnamed_audio": "Безымянное аудио" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/sk.json b/packages/shared-components/src/i18n/strings/sk.json new file mode 100644 index 00000000000..176e2414c1a --- /dev/null +++ b/packages/shared-components/src/i18n/strings/sk.json @@ -0,0 +1,48 @@ +{ + "a11y": { + "seek_bar_label": "Panel vyhľadávania zvuku" + }, + "action": { + "delete": "Vymazať", + "dismiss": "Zamietnuť", + "explore_rooms": "Preskúmať miestnosti", + "pause": "Pozastaviť", + "play": "Prehrať", + "search": "Hľadať" + }, + "encryption": { + "pinned_identity_changed": "Zdá sa, že identita (%(userId)s) používateľa %(displayName)s bola obnovená. Zistiť viac ", + "withdraw_verification_action": "Zrušiť overenie" + }, + "left_panel": { + "open_dial_pad": "Otvoriť číselník" + }, + "room": { + "status_bar": { + "history_visible": "Správy, ktoré odošlete, budú zdieľané s novými členmi pozvanými do tejto miestnosti. Zistiť viac" + } + }, + "time": { + "about_day_ago": "asi pred jedným dňom", + "about_hour_ago": "približne pred hodinou", + "about_minute_ago": "približne pred minútou", + "few_seconds_ago": "pred pár sekundami", + "in_about_day": "približne o deň", + "in_about_hour": "približne o hodinu", + "in_about_minute": "približne o minútu", + "in_few_seconds": "o pár sekúnd", + "in_n_days": "o %(num)s dní", + "in_n_hours": "o %(num)s hodín", + "in_n_minutes": "o %(num)s minút", + "n_days_ago": "pred %(num)s dňami", + "n_hours_ago": "pred %(num)s hodinami", + "n_minutes_ago": "pred %(num)s minútami" + }, + "timeline": { + "m.audio": { + "audio_player": "Prehrávač zvuku", + "error_downloading_audio": "Chyba pri sťahovaní zvuku", + "unnamed_audio": "Nepomenovaný zvukový záznam" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/sq.json b/packages/shared-components/src/i18n/strings/sq.json new file mode 100644 index 00000000000..64e80a6300d --- /dev/null +++ b/packages/shared-components/src/i18n/strings/sq.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "Fshije", + "dismiss": "Mos e merr parasysh", + "explore_rooms": "Eksploroni dhoma", + "pause": "Ndalesë", + "play": "Luaje", + "search": "Kërkoni" + }, + "left_panel": { + "open_dial_pad": "Hap butona numrash" + }, + "time": { + "about_day_ago": "rreth një ditë më parë", + "about_hour_ago": "rreth një orë më parë", + "about_minute_ago": "rreth një minutë më parë", + "few_seconds_ago": "pak sekonda më parë", + "in_about_day": "rreth një ditë nga tani", + "in_about_hour": "rreth një orë nga tani", + "in_about_minute": "rreth një minutë nga tani", + "in_few_seconds": "pak sekonda nga tani", + "in_n_days": "%(num)s ditë nga tani", + "in_n_hours": "%(num)s orë nga tani", + "in_n_minutes": "%(num)s minuta nga tani", + "n_days_ago": "%(num)s ditë më parë", + "n_hours_ago": "%(num)s orë më parë", + "n_minutes_ago": "%(num)s minuta më parë" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Gabim në shkarkim audioje", + "unnamed_audio": "Audio pa emër" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/sv.json b/packages/shared-components/src/i18n/strings/sv.json new file mode 100644 index 00000000000..628a16c7476 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/sv.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Förloppsfält för ljud" + }, + "action": { + "delete": "Radera", + "dismiss": "Avvisa", + "explore_rooms": "Utforska rum", + "pause": "Pausa", + "play": "Spela", + "search": "Sök" + }, + "encryption": { + "pinned_identity_changed": "%(displayName)ss (%(userId)s ) identitet verkar ha ändrats. Läs mer", + "withdraw_verification_action": "Återkalla verifieringen" + }, + "left_panel": { + "open_dial_pad": "Öppna knappsats" + }, + "time": { + "about_day_ago": "cirka en dag sedan", + "about_hour_ago": "cirka en timme sedan", + "about_minute_ago": "cirka en minut sedan", + "few_seconds_ago": "några sekunder sedan", + "in_about_day": "om cirka en dag", + "in_about_hour": "om cirka en timme", + "in_about_minute": "om cirka en minut", + "in_few_seconds": "om några sekunder", + "in_n_days": "om %(num)s dagar", + "in_n_hours": "om %(num)s timmar", + "in_n_minutes": "om %(num)s minuter", + "n_days_ago": "%(num)s dagar sedan", + "n_hours_ago": "%(num)s timmar sedan", + "n_minutes_ago": "%(num)s minuter sedan" + }, + "timeline": { + "m.audio": { + "audio_player": "Ljudspelare", + "error_downloading_audio": "Fel vid nedladdning av ljud", + "unnamed_audio": "Namnlöst ljud" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/tr.json b/packages/shared-components/src/i18n/strings/tr.json new file mode 100644 index 00000000000..415182ba7ec --- /dev/null +++ b/packages/shared-components/src/i18n/strings/tr.json @@ -0,0 +1,42 @@ +{ + "a11y": { + "seek_bar_label": "Ses arama çubuğu" + }, + "action": { + "delete": "Sil", + "dismiss": "Kapat", + "explore_rooms": "Odaları keşfet", + "pause": "Durdur", + "play": "Oynat", + "search": "Ara" + }, + "encryption": { + "pinned_identity_changed": "%(displayName)s'ın (%(userId)s) kimliği değişmiş gibi görünüyor. Daha fazla bilgi ", + "withdraw_verification_action": "Doğrulamayı iptal et" + }, + "left_panel": { + "open_dial_pad": "Arama tuşlarını aç" + }, + "time": { + "about_day_ago": "yaklaşık bir gün önce", + "about_hour_ago": "yaklaşık bir saat önce", + "about_minute_ago": "yaklaşık bir dakika önce", + "few_seconds_ago": "bir kaç saniye önce", + "in_about_day": "şu andan itibaren yaklaşık bir gün", + "in_about_hour": "şu andan itibaren yaklaşık bir saat", + "in_about_minute": "şu andan itibaren yaklaşık bir dakika", + "in_few_seconds": "şu andan itibaren bir kaç saniye", + "in_n_days": "şu andan itibaren %(num)s gün", + "in_n_hours": "şu andan itibaren %(num)s saat", + "in_n_minutes": "şu andan itibaren %(num)s dakika", + "n_days_ago": "%(num)s gün önce", + "n_hours_ago": "%(num)s saat önce", + "n_minutes_ago": "%(num)s dakika önce" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Ses dosyası indirilirken hata oluştu", + "unnamed_audio": "İsimsiz ses" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/uk.json b/packages/shared-components/src/i18n/strings/uk.json new file mode 100644 index 00000000000..8aa0eaf334a --- /dev/null +++ b/packages/shared-components/src/i18n/strings/uk.json @@ -0,0 +1,43 @@ +{ + "a11y": { + "seek_bar_label": "Панель гортання аудіо" + }, + "action": { + "delete": "Видалити", + "dismiss": "Відхилити", + "explore_rooms": "Каталог кімнат", + "pause": "Призупинити", + "play": "Відтворити", + "search": "Пошук" + }, + "encryption": { + "pinned_identity_changed": "Ідентичність %(displayName)s (%(userId)s) скинуто. Докладніше", + "withdraw_verification_action": "Відкликати верифікацію" + }, + "left_panel": { + "open_dial_pad": "Відкрити номеронабирач" + }, + "time": { + "about_day_ago": "близько доби тому", + "about_hour_ago": "близько години тому", + "about_minute_ago": "близько хвилини тому", + "few_seconds_ago": "Декілька секунд тому", + "in_about_day": "приблизно через день", + "in_about_hour": "приблизно через годину", + "in_about_minute": "приблизно через хвилинку", + "in_few_seconds": "декілька секунд тому", + "in_n_days": "%(num)s днів по тому", + "in_n_hours": "%(num)s годин по тому", + "in_n_minutes": "%(num)s хвилин по тому", + "n_days_ago": "%(num)s днів тому", + "n_hours_ago": "%(num)s годин тому", + "n_minutes_ago": "%(num)s хвилин тому" + }, + "timeline": { + "m.audio": { + "audio_player": "Звуковий програвач", + "error_downloading_audio": "Помилка завантаження аудіо", + "unnamed_audio": "Аудіо без назви" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/vi.json b/packages/shared-components/src/i18n/strings/vi.json new file mode 100644 index 00000000000..edb065ffe80 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/vi.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "Xoá", + "dismiss": "Bỏ qua", + "explore_rooms": "Khám phá các phòng", + "pause": "Tạm dừng", + "play": "Chạy", + "search": "Tìm kiếm" + }, + "left_panel": { + "open_dial_pad": "Mở bàn phím quay số" + }, + "time": { + "about_day_ago": "khoảng một ngày trước", + "about_hour_ago": "khoảng một giờ trước", + "about_minute_ago": "khoảng một phút trước", + "few_seconds_ago": "vài giây trước", + "in_about_day": "khoảng một ngày kể từ bây giờ", + "in_about_hour": "khoảng một giờ kể từ bây giờ", + "in_about_minute": "khoảng một phút kể từ bây giờ", + "in_few_seconds": "một vài giây kể từ bây giờ", + "in_n_days": "%(num)s ngày kể từ bây giờ", + "in_n_hours": "%(num)s giờ kể từ bây giờ", + "in_n_minutes": "%(num)s phút kể từ bây giờ", + "n_days_ago": "%(num)s ngày trước", + "n_hours_ago": "%(num)s giờ trước", + "n_minutes_ago": "%(num)s phút trước" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "Lỗi khi tải xuống âm thanh", + "unnamed_audio": "Âm thanh không tên" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/zh_Hans.json b/packages/shared-components/src/i18n/strings/zh_Hans.json new file mode 100644 index 00000000000..7377fbbf459 --- /dev/null +++ b/packages/shared-components/src/i18n/strings/zh_Hans.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "删除", + "dismiss": "忽略", + "explore_rooms": "查找房间", + "pause": "暂停", + "play": "播放", + "search": "搜索" + }, + "left_panel": { + "open_dial_pad": "打开拨号键盘" + }, + "time": { + "about_day_ago": "约一天前", + "about_hour_ago": "约一小时前", + "about_minute_ago": "约一分钟前", + "few_seconds_ago": "数秒前", + "in_about_day": "从现在开始约一天", + "in_about_hour": "从现在开始约一小时", + "in_about_minute": "从现在开始约一分钟", + "in_few_seconds": "从现在开始数秒", + "in_n_days": "从现在开始%(num)s天", + "in_n_hours": "从现在开始%(num)s小时", + "in_n_minutes": "从现在开始%(num)s分钟", + "n_days_ago": "%(num)s天前", + "n_hours_ago": "%(num)s小时前", + "n_minutes_ago": "%(num)s分钟前" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "下载音频时出错", + "unnamed_audio": "未命名的音频" + } + } +} diff --git a/packages/shared-components/src/i18n/strings/zh_Hant.json b/packages/shared-components/src/i18n/strings/zh_Hant.json new file mode 100644 index 00000000000..8f5e3ab9b3a --- /dev/null +++ b/packages/shared-components/src/i18n/strings/zh_Hant.json @@ -0,0 +1,35 @@ +{ + "action": { + "delete": "刪除", + "dismiss": "關閉", + "explore_rooms": "探索聊天室", + "pause": "暫停", + "play": "播放", + "search": "搜尋" + }, + "left_panel": { + "open_dial_pad": "開啟撥號鍵盤" + }, + "time": { + "about_day_ago": "大約一天前", + "about_hour_ago": "大約一小時前", + "about_minute_ago": "大約一分鐘前", + "few_seconds_ago": "數秒前", + "in_about_day": "從現在開始大約一天", + "in_about_hour": "從現在開始大約一小時", + "in_about_minute": "從現在開始大約一分鐘", + "in_few_seconds": "從現在開始數秒鐘", + "in_n_days": "從現在開始 %(num)s 天", + "in_n_hours": "從現在開始 %(num)s 小時", + "in_n_minutes": "從現在開始 %(num)s 分鐘", + "n_days_ago": "%(num)s 天前", + "n_hours_ago": "%(num)s 小時前", + "n_minutes_ago": "%(num)s 分鐘前" + }, + "timeline": { + "m.audio": { + "error_downloading_audio": "下載音訊時發生錯誤", + "unnamed_audio": "未命名的音訊" + } + } +} diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index d3025f52edb..1e077517861 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -103,9 +103,7 @@ "ok": "OK", "open": "Otevřít", "open_menu": "Otevřít nabídku", - "pause": "Pozastavit", "pin": "Připnout", - "play": "Přehrát", "proceed": "Pokračovat", "quote": "Citovat", "react": "Reagovat", @@ -3398,24 +3396,10 @@ "no_rooms_with_unread_threads": "Zatím nemáte místnosti s nepřečtenými vlákny." }, "time": { - "about_day_ago": "před jedním dnem", - "about_hour_ago": "asi před hodinou", - "about_minute_ago": "před minutou", "date_at_time": "%(date)s v %(time)s", - "few_seconds_ago": "před pár vteřinami", "hours_minutes_seconds_left": "zbývá %(hours)sh %(minutes)sm %(seconds)ss", - "in_about_day": "asi za den", - "in_about_hour": "asi za hodinu", - "in_about_minute": "asi za minutu", - "in_few_seconds": "za pár vteřin", - "in_n_days": "za %(num)s dní", - "in_n_hours": "za %(num)s hodin", - "in_n_minutes": "za %(num)s minut", "left": "%(timeRemaining)s zbývá", "minutes_seconds_left": "zbývá %(minutes)sm %(seconds)ss", - "n_days_ago": "před %(num)s dny", - "n_hours_ago": "před %(num)s hodinami", - "n_minutes_ago": "před %(num)s minutami", "seconds_left": "Zbývá %(seconds)ss", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", @@ -3470,11 +3454,9 @@ "unable_to_find": "Pokusili jste se načíst bod na časové ose místnosti, ale nepodařilo se ho najít." }, "m.audio": { - "audio_player": "Audio přehrávač", "error_downloading_audio": "Chyba při stahování audia", "error_processing_audio": "Došlo k chybě při zpracovávání hlasové zprávy", - "error_processing_voice_message": "Chyba při zpracování hlasové zprávy", - "unnamed_audio": "Nepojmenovaný audio soubor" + "error_processing_voice_message": "Chyba při zpracování hlasové zprávy" }, "m.beacon_info": { "view_live_location": "Zobrazit polohu živě" diff --git a/src/i18n/strings/cy.json b/src/i18n/strings/cy.json index 9eeafeb27b0..94580eddf8e 100644 --- a/src/i18n/strings/cy.json +++ b/src/i18n/strings/cy.json @@ -3,29 +3,9 @@ "emoji_picker": "Dewisydd Emoji", "jump_first_invite": "Symud i'r gwahoddiad cyntaf.", "message_composer": "Neges cyfansoddwr", - "n_unread_messages": { - "%(count)s neges heb eu darllen": "other", - "1 neges heb ei darllen": "one" - }, - "n_unread_messages_mentions": { - "%(count)s crybwylliadau heb eu darllen": "zero", - "1 crybwylliad heb ei ddarllen": "one", - "%(count)s grybwylliad heb eu darllen": "two", - "%(count)s crybwylliad heb eu darllen": "other" - }, "recent_rooms": "Ystafelloedd diweddar", "room_messsage_not_sent": "Agor ystafell %(roomName)s gyda neges heb ei gosod.", "room_n_unread_invite": "Agor gwahoddiad i ystafell %(roomName)s.", - "room_n_unread_messages": { - "Ystafell agored%(roomName)s gyda %(count)s negeseuon heb eu darllen.": "zero", - "Ystafell agored %(roomName)s gydag 1 neges heb ei darllen.": "one", - "Ystafell agored%(roomName)s gyda %(count)s neges heb eu darllen.": "other" - }, - "room_n_unread_messages_mentions": { - "Ystafell agored %(roomName)s gyda %(count)s negeseuon heb eu darllen gan gynnwys crybwylliadau.": "zero", - "Ystafell agored %(roomName)s gydag 1 crybwylliad heb ei ddarllen.": "one", - "Ystafell agored %(roomName)s gyda %(count)s neges heb eu darllen gan gynnwys crybwylliadau.": "other" - }, "room_name": "Ystafell %(matere)s", "room_status_bar": "Bar statws ystafell", "seek_bar_label": "Bar chwilio sain", @@ -104,9 +84,7 @@ "ok": "Iawn", "open": "Agor", "open_menu": "Agor dewislen", - "pause": "Oedi", "pin": "Pinio", - "play": "Chwarae", "proceed": "Parhau", "quote": "Dyfyniad", "react": "Ymateb", @@ -474,11 +452,6 @@ "advanced": "Uwch", "all_chats": "Pob Sgwrs", "analytics": "Dadansoddi Gwe", - "and_n_others": { - "a dim arall...": "zero", - "ac un arall...": "one", - "a %(count)s arall...": "other" - }, "appearance": "Gwedd", "application": "Rhaglen", "are_you_sure": "Ydych chi'n siŵr?", @@ -533,14 +506,6 @@ "moderation_and_safety": "Cymedroli a diogelwch", "modern": "Modern", "mute": "Tewi", - "n_members": { - "%(count)s aelodau": "zero", - "%(count)s aelod": "other" - }, - "n_rooms": { - "%(count)s ystafelloedd": "zero", - "%(count)s ystafell": "other" - }, "name": "Enw", "no_results": "Dim canlyniadau", "no_results_found": "Heb ganfod canlyniad", @@ -851,10 +816,6 @@ "room_notifications_total": "Cyfanswm: ", "room_notifications_type": "Math: ", "room_status": "Statws ystafell", - "room_unread_status_count": { - "Statws heb eu darllen yn yr ystafell:%(status)s , cyfrif:%(count)s": "other", - "Statws heb ei ddarllen yn yr ystafell:%(status)s , cyfrif:%(count)s": "one" - }, "save_setting_values": "Cadw gwerthoedd gosod", "see_history": "Gweld hanes", "send_custom_account_data_event": "Anfon digwyddiad data cyfrif personol", @@ -874,12 +835,6 @@ "settings_explorer": "Archwiliwr gosodiadau", "show_empty_content_events": "Dangos digwyddiadau gyda chynnwys gwag", "show_hidden_events": "Dangos digwyddiadau cudd yn y llinell amser", - "spaces": { - "<%(count) s gofodau>": "zero", - "": "one", - "<%(count) s ofod>": "two", - "<%(count) s gofod>": "other" - }, "state_key": "Allwedd Cyflwr", "thread_root_id": "ID Gwraidd Edefyn: %(threadRootId)s", "threads_timeline": "Llinell amser edafedd", @@ -1187,28 +1142,7 @@ "error_fetching_file": "Gwall wrth nôl ffeil", "export_info": "Dyma ddechrau allforio o. Wedi'i allforio gan yn %(exportDate)s.", "export_successful": "Allforio yn llwyddiannus!", - "exported_n_events_in_time": { - "Wedi nôl %(count)s digwyddiadau o fewn %(seconds)s e": "zero", - "Wedi allforio %(count)s digwyddiad o fewn %(seconds)s e": "one", - "Wedi nôl %(count)s ddigwyddiad o fewn %(seconds)s e": "two", - "Wedi nôl %(count)s digwyddiad o fewn %(seconds)s e": "other" - }, "exporting_your_data": "Allforio eich data", - "fetched_n_events": { - "Wedi nôl %(count)s digwyddiadau hyd yn hyn": "zero", - "Wedi nôl %(count)s digwyddiad hyd yn hyn": "other", - "Wedi nôl %(count)s ddigwyddiad hyd yn hyn": "two" - }, - "fetched_n_events_in_time": { - "Wedi nôl %(count)s digwyddiadau o fewn %(seconds)s e": "zero", - "Wedi nôl %(count)s digwyddiad o fewn %(seconds)s e": "other", - "Wedi nôl %(count)s ddigwyddiad o fewn %(seconds)s e": "two" - }, - "fetched_n_events_with_total": { - "Wedi nôl %(count)s digwyddiadau allan o %(total)s": "zero", - "Wedi nôl %(count)s digwyddiad allan o %(total)s": "other", - "Wedi nôl %(count)s ddigwyddiad allan o %(total)s": "two" - }, "fetching_events": "Wrthi'n nôl digwyddiadau…", "file_attached": "Ffeil wedi'i Atodi", "format": "Fformat", @@ -1297,11 +1231,6 @@ }, "in_space": "Yn %(spaceName)s.", "in_space1_and_space2": "Mewn gofodau %(space1Name)s a %(space2Name)s.", - "in_space_and_n_other_spaces": { - "Yn %(spaceName)s a %(count)s gofodau eraill.": "zero", - "Yn %(spaceName)s ac un gofod arall": "one", - "Yn %(spaceName)s a %(count)s gofod arall.": "other" - }, "incompatible_browser": { "continue": "Parhau beth bynnag", "description": "Mae %(brand)s yn defnyddio rhai nodweddion porwr nad ydyn nhw ar gael yn eich porwr presennol. %(detail)s", @@ -1395,15 +1324,6 @@ "unban_first_title": "Nid oes modd gwahodd defnyddiwr nes ei fod heb ei ddad-wahardd" }, "inviting_user1_and_user2": "Yn gwahodd %(user1)s a %(user2)s", - "inviting_user_and_n_others": { - "Yn gwahodd %(user)s ac un arall": "one", - "Yn gwahodd %(user)s a %(count)s arall": "other" - }, - "items_and_n_others": { - " a dim arall": "zero", - " ac un arall": "one", - " a %(count)s arall": "other" - }, "keyboard": { "activate_button": "Agor y botwm hwn", "alt": "Alt", @@ -1659,10 +1579,6 @@ "toggle_attribution": "Toglo priodoli" }, "member_list": { - "count": { - "%(count)s Aelodau": "zero", - "%(count)s Aelod": "other" - }, "filter_placeholder": "Hidlo aelodau'r ystafell", "invite_button_no_perms_tooltip": "Nid oes gennych ganiatâd i wahodd defnyddwyr", "invited_label": "Gwahoddwyd", @@ -1753,13 +1669,6 @@ "topic_label": "Cwestiwn neu bwnc", "topic_placeholder": "Ysgrifennu rhywbeth…", "total_decryption_errors": "Oherwydd gwallau dadgryptio, efallai na fydd rhai pleidleisiau'n cael eu cyfrif", - "total_n_votes": { - "%(count)s pleidlais wedi'u bwrw. Pleidleisiwch i weld y canlyniadau.": "other", - "%(count)s pleidlais wedi'i bwrw. Pleidleisiwch i weld y canlyniadau.": "one" - }, - "total_n_votes_voted": { - "Ar sail %(count)s pleidlais": "other" - }, "total_no_votes": "Dim pleidleisiau wedi'u bwrw", "total_not_ended": "Bydd y canlyniadau i'w gweld pan ddaw'r bleidlais i ben", "type_closed": "Arolwg wedi'i chau", @@ -1870,13 +1779,6 @@ "pinned_messages": { "empty_description": "Dewiswch neges a dewiswch “%(pinAction)s” i'w chynnwys yma.", "empty_title": "Pinio negeseuon pwysig fel y mae modd eu darganfod yn hawdd", - "header": { - "%(count)s Neges wedi'u pinio": "other", - "1 Neges wedi'i binio": "one" - }, - "limits": { - "Dim ond hyd at %(count)s teclyn y gallwch eu pinio": "other" - }, "menu": "Agor dewislen", "reply_thread": "Ymateb i a neges edefyn", "unpin_all": { @@ -1891,26 +1793,8 @@ "active_heading": "Arolygon gweithredol", "empty_active": "Nid oes unrhyw arolygon gweithredol yn yr ystafell hon", "empty_active_load_more": "Nid oes unrhyw arolygon gweithredol. Llwythwch fwy o arolygon barn y misoedd blaenorol", - "empty_active_load_more_n_days": { - "Does dim polau gweithredol ar gyfer y dyddiau diwethaf. Llwythwch ragor o bolau i weld polau'r misoedd blaenorol": "zero", - "Does dim polau gweithredol ar gyfer y diwrnod diwethaf. Llwythwch ragor o bolau i weld polau'r misoedd blaenorol": "one", - "Does dim polau gweithredol ar gyfer y %(count)s ddiwrnod diwethaf. Llwythwch ragor o bolau i weld polau'r misoedd blaenorol": "two", - "Does dim polau gweithredol ar gyfer y %(count)s diwrnod diwethaf. Llwythwch ragor o bolau i weld polau'r misoedd blaenorol": "other" - }, "empty_past": "Nid oes arolygon o'r gorffennol yn yr ystafell hon", "empty_past_load_more": "Nid oes unrhyw arolygon o'r gorffennol. Llwythwch fwy o arolygon barn ar gyfer y misoedd blaenorol", - "empty_past_load_more_n_days": { - "Does dim polau'r gorffennol ar gyfer y dyddiau diwethaf. Llwythwch ragor o bolau i weld polau'r misoedd blaenorol": "zero", - "Does dim polau'r gorffennol ar gyfer y diwrnod diwethaf. Llwythwch ragor o bolau i weld polau'r misoedd blaenorol": "one", - "Does dim polau'r gorffennol ar gyfer y %(count)s ddiwrnod diwethaf. Llwythwch ragor o bolau i weld polau'r misoedd blaenorol": "two", - "Does dim polau'r gorffennol ar gyfer y %(count)s diwrnod diwethaf. Llwythwch ragor o bolau i weld polau'r misoedd blaenorol": "other" - }, - "final_result": { - "Canlyniadau terfynol yn seiliedig ar %(count)s pleidleisiau": "zero", - "Canlyniadau terfynol yn seiliedig ar %(count)s pleidlais": "other", - "Canlyniadau terfynol yn seiliedig ar %(count)s bleidlais": "two", - "Canlyniadau terfynol yn seiliedig ar %(count)s phleidlais": "many" - }, "load_more": "Llwytho mwy o arolygon barn", "loading": "Wrthi'n llwytho arolygon", "past_heading": "Arolygon y gorffennol", @@ -1975,15 +1859,6 @@ "error_jump_to_date_not_found": "Nid oeddem yn gallu dod o hyd i ddigwyddiad yn edrych ymlaen o %(dateString)s. Ceisiwch ddewis dyddiad cynharach.", "error_jump_to_date_send_logs_prompt": "Cyflwynwch logiau dadfygio i'n helpu i ddod o hyd i'r broblem.", "error_jump_to_date_title": "Methu dod o hyd i ddigwyddiad ar y dyddiad hwnnw", - "face_pile_summary": { - "Y %(count)s personau rydych chi'n ei adnabod sydd eisoes wedi ymuno": "zero", - "Yr %(count)s person rydych chi'n ei adnabod sydd eisoes wedi ymuno": "one", - "Y %(count)s person rydych chi'n ei adnabod sydd eisoes wedi ymuno": "other" - }, - "face_pile_tooltip_label": { - "Gweld y cyfan o'r %(count)s aelod": "other", - "Gweld 1 aelod": "one" - }, "face_pile_tooltip_shortcut": "Gan gynnwys %(commaSeparatedMembers)s", "face_pile_tooltip_shortcut_joined": "Gan eich cynnwys chi, %(commaSeparatedMembers)s", "failed_determine_user": "Nid oes modd pennu pa ddefnyddiwr i'w anwybyddu gan fod y digwyddiad aelod wedi newid.", @@ -1991,11 +1866,6 @@ "forget_room": "Anghofiwch yr ystafell hon", "forget_space": "Anghofiwch y gofod hwn", "header": { - "n_people_asking_to_join": { - "%(count)s personau'n gofyn i ymuno": "zero", - "Yn gofyn i ymuno": "one", - "%(count)s person yn gofyn i ymuno": "other" - }, "room_is_public": "Mae'r ystafell hon yn gyhoeddus" }, "header_avatar_open_settings_label": "Agor gosodiadau ystafell", @@ -2085,10 +1955,6 @@ "search": { "all_rooms_button": "Chwiliwch bob ystafell", "placeholder": "Chwilio negeseuon…", - "summary": { - "%(count)s canlyniad wedi'u canfod ar gyfer “\"": "other", - "1 canlyniad wedi'i ganfod ar gyfer “\"": "one" - }, "this_room_button": "Chwiliwch yr ystafell hon" }, "status_bar": { @@ -2104,11 +1970,6 @@ "some_messages_not_sent": "Nid yw rhai o'ch negeseuon wedi'u hanfon" }, "unknown_status_code_for_timeline_jump": "cod statws anhysbys", - "unread_notifications_predecessor": { - "Does gennych %(count)s hysbysiad heb eu darllen mewn fersiwn flaenorol o'r ystafell hon": "zero", - "Mae gennych %(count)s hysbysiad heb ei ddarllen mewn fersiwn flaenorol o'r ystafell hon.": "one", - "Mae gennych %(count)s hysbysiad heb eu darllen mewn fersiwn flaenorol o'r ystafell hon": "other" - }, "upgrade_error_description": "Gwiriwch ddwywaith bod eich gweinydd yn cefnogi'r fersiwn ystafell a ddewiswyd a rhowch gynnig arall arni.", "upgrade_error_title": "Gwall wrth uwchraddio'r ystafell", "upgrade_warning_bar": "Bydd uwchraddio'r ystafell hon yn cau enghraifft bresennol yr ystafell ac yn creu ystafell wedi'i huwchraddio gyda'r un enw.", @@ -2116,9 +1977,6 @@ "upgrade_warning_bar_unstable": "Mae'r ystafell hon yn fersiwn ystafell redeg , y mae'r gweinydd cartref hwn wedi'i nodi'n ansefydlog.", "upgrade_warning_bar_upgraded": "Mae'r ystafell hon eisoes wedi'i huwchraddio.", "upload": { - "uploading_multiple_file": { - "Wrthi'n llwytho i fyny %(filename)s a %(count)s arall": "other" - }, "uploading_single_file": "Wrthi'n llwytho %(filematere)s" }, "video_room": "Mae'r ystafell hon yn ystafell fideo", @@ -2163,9 +2021,6 @@ }, "home_menu_label": "Dewisiadau cartref", "join_public_room_label": "Ymuno â'r ystafell gyhoeddus", - "joining_rooms_status": { - "Yn ymuno â %(count)s ystafell ar hyn o bryd": "other" - }, "list_title": "Rhestr ystafelloedd", "more_options": { "copy_link": "Copïo dolen ystafell", @@ -2178,9 +2033,6 @@ "notification_options": "Dewisiadau hysbysu", "open_space_menu": "Agor dewislen gofod", "primary_filters": "Hidlau rhestr ystafelloedd", - "redacting_messages_status": { - "Yn tynnu negeseuon mewn %(count)s ystafell": "other" - }, "release_announcement": { "done": "Gorffen", "filter": { @@ -2207,9 +2059,6 @@ }, "room_options": "Dewisiadau Ystafelloedd", "show_less": "Dangos llai", - "show_n_more": { - "Dangos %(count)s yn rhagor": "other" - }, "show_previews": "Dangos rhagolwg o negeseuon", "sort": "Trefnu", "sort_by": "Trefnu yn ôl", @@ -2432,25 +2281,10 @@ "join_rule_restricted_dialog_heading_space": "Gofodau rydych yn eu hadnabod sy'n cynnwys y gofod hwn", "join_rule_restricted_dialog_heading_unknown": "Mae'r rhain yn debygol o fod yn rhai y mae gweinyddwyr ystafell eraill yn rhan ohonyn nhw.", "join_rule_restricted_dialog_title": "Dewiswch ofodau", - "join_rule_restricted_n_more": { - "a %(count)s yn rhagor": "other" - }, - "join_rule_restricted_summary": { - "Ar hyn o bryd, mae gan %(count)s gofod fynediad": "other", - "Ar hyn o bryd, mae gan ofod fynediad": "one" - }, "join_rule_restricted_upgrade_description": "Bydd yr uwchraddiad hwn yn caniatáu i aelodau o ofodau penodol gael mynediad i'r ystafell hon heb wahoddiad.", "join_rule_restricted_upgrade_warning": "Mae'r ystafell hon mewn rhai gofodau nad ydych chi'n weinyddwr iddynt. Yn y gofodau hynny, bydd yr hen ystafell yn dal i gael ei dangos, ond bydd pobl yn cael eu hannog i ymuno â'r un newydd.", "join_rule_upgrade_awaiting_room": "Wrthi'n llwytho ystafell newydd", "join_rule_upgrade_required": "Angen uwchraddio", - "join_rule_upgrade_sending_invites": { - "Yn anfon gwahoddiad... (%(progress)s o %(count)s)": "other", - "Yn anfon gwahoddiad...": "one" - }, - "join_rule_upgrade_updating_spaces": { - "Yn diweddaru gofod... (%(progress)s o %(count)s)": "other", - "Yn diweddaru gofod...": "one" - }, "join_rule_upgrade_upgrading_room": "Ystafell uwchraddio", "join_rule_world_readable_description": "Bydd newid pwy all ymuno â'r ystafell yn newid gwelededd negeseuon yn y dyfodol hefyd.", "public_without_alias_warning": "I gysylltu â'r ystafell hon, ychwanegwch gyfeiriad.", @@ -2911,9 +2745,6 @@ "key_backup_algorithm": "Algorithm:", "message_search_disable_warning": "Os yw wedi'i analluogi, ni fydd negeseuon o ystafelloedd wedi'u hamgryptio yn ymddangos yn y canlyniadau chwilio.", "message_search_disabled": "Cadwch negeseuon wedi'u hamgryptio'n ddiogel yn lleol er mwyn iddyn nhw ymddangos yn y canlyniadau chwilio.", - "message_search_enabled": { - "Cadw negeseuon wedi'u hamgryptio yn ddiogel yn y storfa leol er mwyn iddyn nhw ymddangos mewn canlyniadau chwilio, gan ddefnyddio %(size)s i storio negeseuon o %(rooms)s ystafell.": "other" - }, "message_search_failed": "Methwyd cychwyn chwiliad neges", "message_search_indexed_messages": "Negeseuon wedi'u mynegeio:", "message_search_indexed_rooms": "Ystafelloedd wedi'u mynegeio:", @@ -2936,22 +2767,6 @@ "sessions": { "best_security_note": "Er mwyn sicrhau'r diogelwch gorau, gwiriwch eich sesiynau ac allgofnodwch o unrhyw sesiwn nad ydych yn ei hadnabod nac yn ei defnyddio mwyach.", "browser": "Porwr", - "confirm_sign_out": { - "Cadarnhau allgofnodi o'r ddyfeisiau hyn": "other", - "Cadarnhau allgofnodi o'r ddyfais hon": "one" - }, - "confirm_sign_out_body": { - "Cliciwch y botwm isod i gadarnhau allgofnodi o'r dyfeisiau hyn.": "other", - "Cliciwch y botwm isod i gadarnhau allgofnodi o'r ddyfais hon.": "one" - }, - "confirm_sign_out_continue": { - "Allgofnodi o ddyfeisiau": "other", - "Allgofnodi o ddyfais": "one" - }, - "confirm_sign_out_sso": { - "Cadarnhau allgofnodi o'r ddyfeisiau hyn trwy ddefnyddio Mewngofnodi Sengl i brofi pwy ydych chi.": "other", - "Cadarnhau allgofnodi o'r ddyfais hon trwy ddefnyddio Mewngofnodi Sengl i brofi pwy ydych chi.": "one" - }, "current_session": "Y sesiwn gyfredol", "desktop_session": "Sesiwn bwrdd gwaith", "details_heading": "Manylion y sesiwn", @@ -2978,10 +2793,6 @@ "last_activity": "Gweithgaredd ddiwethaf", "manage": "Rheoli'r sesiwn hon", "mobile_session": "Sesiwn symudol", - "n_sessions_selected": { - "%(count)s sesiwn wedi'u dewis": "other", - "%(count)s sesiwn wedi'i ddewis": "one" - }, "no_inactive_sessions": "Heb ganfod unrhyw sesiynau anweithredol.", "no_sessions": "Heb ganfod sesiynau.", "no_unverified_sessions": "Heb ganfod unrhyw sesiynau heb eu gwirio.", @@ -3006,12 +2817,6 @@ "sign_in_with_qr_unsupported": "Nid yw'n cael ei gefnogi gan ddarparwr eich cyfrif", "sign_out": "Allgofnodwch o'r sesiwn hon", "sign_out_all_other_sessions": "Allgofnodi o bob sesiwn arall (%(otherSessionsCount)s)", - "sign_out_confirm_description": { - "Ydych chi'n siŵr eich bod chi eisiau allgofnodi o %(count)s sesiwn?": "other" - }, - "sign_out_n_sessions": { - "Allgofnodi o %(count)s sesiwn": "other" - }, "title": "Sesiynau", "unknown_session": "Math o sesiwn anhysbys", "unverified_session": "Sesiwn heb ei wirio", @@ -3195,10 +3000,6 @@ "create_prompt": "Creu ystafell newydd", "dm_heading": "Negeseuon Uniongyrchol", "error_heading": "Ni ychwanegwyd pob un a ddewiswyd", - "progress_text": { - "Yn ychwanegu ystafell...(%(progress)s o %(count)s)": "other", - "Yn ychwanegu ystafell...": "one" - }, "space_dropdown_label": "Dewis gofod", "space_dropdown_title": "Ychwanegu ystafelloedd presennol", "subspace_moved_note": "Mae ychwanegu gofodau wedi symud." @@ -3281,9 +3082,6 @@ "cant_find_person_helpful_hint": "Os na allwch weld pwy rydych yn chwilio amdano, anfonwch eich dolen wahoddiad atynt.", "cant_find_room_helpful_hint": "Os na allwch ddod o hyd i'r ystafell yr ydych yn chwilio amdani, gofynnwch am wahoddiad neu crëwch ystafell newydd.", "copy_link_text": "Copïo dolen y gwahoddiad", - "count_of_members": { - "%(count)s Aelod": "other" - }, "create_new_room_button": "Creu ystafell newydd", "failed_querying_public_rooms": "Wedi methu â holi ystafelloedd cyhoeddus", "failed_querying_public_spaces": "Wedi methu cwestiynu gofodau cyhoeddus", @@ -3334,9 +3132,6 @@ "threads": { "all_threads": "Pob edefyn", "all_threads_description": "Yn dangos pob edefyn o'r ystafell gyfredol", - "count_of_reply": { - "%(count)s ateb": "other" - }, "empty_description": "Defnyddio “%(replyInThread)s” wrth hofran dros neges.", "empty_title": "Mae edafedd yn helpu i gadw'ch sgyrsiau ar y pwnc ac yn hawdd eu holrhain.", "error_start_thread_existing_relation": "Methu â chreu edefyn o ddigwyddiad gyda pherthynas sy'n bodoli eisoes", @@ -3352,24 +3147,10 @@ "no_rooms_with_unread_threads": "Nid oes gennych chi ystafelloedd ag edafedd heb eu darllen eto." }, "time": { - "about_day_ago": "tua diwrnod yn ôl", - "about_hour_ago": "tua awr yn ol", - "about_minute_ago": "tua munud yn ôl", "date_at_time": "%(date)s am %(time)s", - "few_seconds_ago": "ychydig eiliadau yn ôl", "hours_minutes_seconds_left": "%(hours)sa %(minutes)sm %(seconds)s ar ôl", - "in_about_day": "tua diwrnod o nawr", - "in_about_hour": "tuag awr o hyn", - "in_about_minute": "tua munud o nawr", - "in_few_seconds": "ychydig eiliadau o nawr", - "in_n_days": "%(num)s diwrnod o nawr", - "in_n_hours": "%(num)s awr o nawr", - "in_n_minutes": "%(num)s munud o nawr", "left": "%(timeRemaining)s ar ôl", "minutes_seconds_left": "%(minutes)sm %(seconds)ss ar ôl", - "n_days_ago": "%(num)s diwrnod yn ôl", - "n_hours_ago": "%(num)s awr yn ôl", - "n_minutes_ago": "%(num)s munud yn ôl", "seconds_left": "Mae %(seconds)s ar ôl", "short_days": "%(value)sch", "short_days_hours_minutes_seconds": "%(days)sd %(hours)sa %(minutes)sm %(seconds)ss", @@ -3424,11 +3205,9 @@ "unable_to_find": "Wedi ceisio llwytho pwynt penodol yn llinell amser yr ystafell hon, ond ni lwyddodd i ddod o hyd iddo." }, "m.audio": { - "audio_player": "Chwaraewr sain", "error_downloading_audio": "Gwall wrth llwytho i lawrsain", "error_processing_audio": "Gwall wrth brosesu neges sain", - "error_processing_voice_message": "Gwall wrth brosesu neges llais", - "unnamed_audio": "Sain dienw" + "error_processing_voice_message": "Gwall wrth brosesu neges llais" }, "m.beacon_info": { "view_live_location": "Gweld lleoliad byw" @@ -3479,11 +3258,6 @@ "location": "Wedi rhannu lleoliad: ", "self_location": "Wedi rhannu eu lleoliad: " }, - "m.poll": { - "count_of_votes": { - "%(count)s pleidlais": "other" - } - }, "m.poll.end": { "sender_ended": "Mae %(senderName)s wedi dod ag arolwg i ben" }, @@ -3495,14 +3269,6 @@ "removed": "Mae %(senderDisplayName)s wedi tynnu afatar yr ystafell." }, "m.room.canonical_alias": { - "alt_added": { - "Mae %(senderName)s wedi ychwanegu cyfeiriadau eraill %(addresses)s ar gyfer yr ystafell hon.": "other", - "Mae %(senderName)s wedi ychwanegu cyfeiriad arall %(addresses)s ar gyfer yr ystafell hon.": "one" - }, - "alt_removed": { - "Mae %(senderName)s wedi tynnu cyfeiriadau eraill %(addresses)s ar gyfer yr ystafell hon.": "other", - "Mae %(senderName)s wedi tynnu cyfeiriad arall %(addresses)s ar gyfer yr ystafell hon.": "one" - }, "changed": "Newidiodd %(senderName)s y cyfeiriadau ar gyfer yr ystafell hon.", "changed_alternative": "Mae %(senderName)s wedi newid y cyfeiriadau amgen ar gyfer yr ystafell hon.", "changed_main_and_alternative": "Newidiodd %(senderName)s y prif gyfeiriadau a chyfeiriadau amgen ar gyfer yr ystafell hon.", @@ -3654,9 +3420,6 @@ "label": "Ymatebodd %(reactors)s gyda %(content)s", "tooltip_caption": "wedi ymateb gyda %(shortName)s" }, - "read_receipt_title": { - "Wedi'i weld gan %(count)s person": "other" - }, "read_receipts_label": "Derbynebau darllen", "redacted": { "tooltip": "Neges wedi'i dileu ar %(date)s" @@ -3677,173 +3440,18 @@ "send_state_sending": "Wrthi'n anfon eich neges…", "send_state_sent": "Anfonwyd eich neges", "summary": { - "banned": { - "wedi'u gwahardd": "zero", - "wedi'i wahardd": "one", - "wedi'u gwahardd %(count)s gwaith": "other" - }, - "banned_multiple": { - "wedi'u gwahardd": "zero", - "wedi'i wahardd": "one", - "wedi'u gwahardd %(count)s gwaith": "other" - }, - "changed_avatar": { - "Does %(count)s %(oneUser)s wedi newid eu llun proffil": "zero", - "Mae %(oneUser)s wedi newid eu llun proffil %(count)s gwaith": "other" - }, - "changed_avatar_multiple": { - "Does %(count)s o %(severalUsers)s wedi newid eu llun proffil": "zero", - "Mae %(severalUsers)s wedi newid ei lun proffil": "one", - "Mae %(severalUsers)s wedi newid eu llun proffil %(count)s gwaith": "other" - }, - "changed_name": { - "Mae %(oneUser)s wedi newid ei enw %(count)s gwaith": "other", - "Mae %(oneUser)s wedi newid ei enw": "one" - }, - "changed_name_multiple": { - "Mae %(severalUsers)s wedi newid eu henwau %(count)s gwaith": "other", - "Mae %(severalUsers)s wedi newid ei enw": "one" - }, - "format": "%(matereList)s %(transitionList)s", - "hidden_event": { - "Anfonodd %(oneUser)s %(count)s negeseuon cudd": "zero", - "Anfonodd %(oneUser)s neges gudd": "one", - "Anfonodd %(oneUser)s %(count)s neges gudd": "other" - }, - "hidden_event_multiple": { - "Anfonodd %(severalUsers)s %(count)s negeseuon cudd ": "zero", - "Anfonodd %(severalUsers)s neges gudd": "one", - "Anfonodd %(severalUsers)s %(count)s neges gudd": "other" - }, - "invite_withdrawn": { - "Mae %(oneUser)swedi cael eu gwahoddiadau wedi'i dynnu'n ôl": "zero", - "Mae %(oneUser)swedi cael ei gwahoddiad wedi'i dynnu'n ôl": "one", - "Mae %(oneUser)swedi cael eu gwahoddiad wedi'i dynnu'n ôl %(count)s gwaith": "other" - }, - "invite_withdrawn_multiple": { - "Cafodd %(severalUsers)s eu gwahoddiadau eu dileu": "one", - "Cafodd %(severalUsers)s eu gwahoddiadau eu dileu %(count)s gwaith": "other" - }, - "invited": { - "wedi'u gwahodd": "zero", - "wedi'i wahodd": "one", - "wedi'u gwahodd %(count)s gwaith": "other" - }, - "invited_multiple": { - "wedi'u gwahodd": "zero", - "wedi'i wahodd": "one", - "wedi'u gwahodd %(count)s gwaith": "other" - }, - "joined": { - "Ymunodd %(oneUser)s %(count)s gwaith": "other", - "Ymunodd %(oneUser)s": "one" - }, - "joined_and_left": { - "Ymunodd a gadawodd %(oneUser)s %(count)s gwaith": "other" - }, - "joined_and_left_multiple": { - "Ymunodd a gadawodd %(severalUsers)s": "one", - "Ymunodd a gadawodd %(severalUsers)s %(count)s gwaith": "other" - }, - "joined_multiple": { - "Ymunodd %(severalUsers)s": "zero", - "Ymunodd %(severalUsers)s %(count)s gwaith": "other" - }, - "kicked": { - "wedi'u tynnu %(count)s gwaith": "other", - "wedi'u tynnu": "one" - }, - "kicked_multiple": { - "wedi'u tynnu %(count)s gwaith": "other", - "wedi'u tynnu": "one" - }, - "left": { - "Gadawodd %(oneUser)s": "one", - "Gadawodd %(oneUser)s %(count)s gwaith": "other" - }, - "left_multiple": { - "Gadawodd %(severalUsers)s": "one", - "Gadawodd %(severalUsers)s %(count)s gwaith": "other" - }, - "no_change": { - "Dyw %(oneUser)s heb wneud unrhyw newidiadau %(count)s gwaith": "other", - "Dyw %(oneUser)s heb wneud unrhyw newidiadau": "one" - }, - "no_change_multiple": { - "Dyw %(severalUsers)s heb wneud unrhyw newidiadau %(count)s gwaith": "other", - "Dyw %(severalUsers)s heb wneud unrhyw newidiadau": "one" - }, - "pinned_events": { - "Newidiodd %(oneUser)s y negeseuon wedi'u pinio yr ystafell %(count)s gwaith": "other", - "Newidiodd %(oneUser)s y negeseuon wedi'u pinio yr ystafell": "one" - }, - "pinned_events_multiple": { - "Newidiodd %(severalUsers)s y negeseuon wedi'u pinio yr ystafell %(count)s gwaith": "other", - "Newidiodd %(severalUsers)s y negeseuon wedi'u pinio yr ystafell": "one" - }, - "redacted": { - "Tynnodd %(oneUser)s %(count)s neges": "other", - "Tynnodd %(oneUser)s neges": "one" - }, - "redacted_multiple": { - "Tynnodd %(severalUsers)s %(count)s neges": "other", - "Tynnodd %(severalUsers)s neges": "one" - }, - "rejected_invite": { - "Gwrthododd %(severalUsers)s eu gwahoddiadau": "zero", - "Gwrthododd %(oneUser)s ei wahoddiad": "one", - "Gwrthododd %(oneUser)s eu gwahoddiadau %(count)s gwaith": "other" - }, - "rejected_invite_multiple": { - "Gwrthododd %(severalUsers)s eu gwahoddiadau": "one", - "Gwrthododd %(severalUsers)s eu gwahoddiadau %(count)s gwaith": "other" - }, - "rejoined": { - "Ymunodd a gadawodd %(oneUser)s": "one", - "Ymunodd a gadawodd %(oneUser)s %(count)s gwaith": "other" - }, - "rejoined_multiple": { - "Ymunodd a gadawodd %(severalUsers)s": "one", - "Ymunodd a gadawodd %(severalUsers)s %(count)s gwaith": "other" - }, - "server_acls": { - "Mae %(oneUser)s wedi newid ACLs y gweinydd %(count)s gwaith": "other", - "Mae %(oneUser)s wedi newid ACLs y gweinydd": "one" - }, - "server_acls_multiple": { - "Mae %(severalUsers)s wedi newid ACLs y gweinydd %(count)s gwaith": "other", - "Mae %(severalUsers)s wedi newid ACLs y gweinydd": "one" - }, - "unbanned": { - "wedi'u dadwahardd %(count)s gwaith": "other", - "wedi'u dadwahardd": "one" - }, - "unbanned_multiple": { - "wedi'u dadwahardd %(count)s gwaith\n ": "zero", - "wedi'i ddadwahardd": "one", - "wedi'u dadwahardd %(count)s gwaith": "other" - } + "format": "%(matereList)s %(transitionList)s" }, "thread_info_basic": "O edefyn", "typing_indicator": { - "more_users": { - "Mae %(names)s ac mae %(count)s eraill yn teipio...": "other", - "Mae %(names)s ac mae un arall yn teipio...": "one" - }, "one_user": "Mae %(displayName)s yn teipio…", "two_users": "Mae %(materes)s a %(lastPerson)s yn teipio…" }, "undecryptable_tooltip": "Nid oedd modd dadgryptio'r neges hon", "url_preview": { - "close": "Cau rhagolwg", - "show_n_more": { - "Dangos %(count)s rhagolwg arall": "other" - } + "close": "Cau rhagolwg" } }, - "truncated_list_n_more": { - "A %(count)s yn rhagor...": "other" - }, "unsupported_browser": { "description": "Os byddwch yn parhau, efallai na fydd rhai nodweddion yn gweithio ac mae risg y gallech golli data yn y dyfodol. Diweddarwch eich porwr i barhau i ddefnyddio %(brand)s.", "title": "Nid yw %(brand)s yn cefnogi'r porwr hwn" @@ -3884,10 +3492,7 @@ "not_image": "Nid yw'r ffeil rydych chi wedi'i dewis yn ffeil delwedd ddilys.", "title": "Llwytho ffeiliau", "title_progress": "Llwytho ffeiliau (%(current)s o %(total)s)", - "upload_all_button": "Llwytho'r cyfan", - "upload_n_others_button": { - "Llwytho %(count)s ffeil arall": "other" - } + "upload_all_button": "Llwytho'r cyfan" }, "user_info": { "admin_tools_section": "Offer Gweinyddol", @@ -3925,13 +3530,6 @@ "kick_space_warning": "Byddan nhw'n dal i allu cael mynediad at beth bynnag nad ydych yn weinyddwr iddo.", "promote_warning": "Fyddwch chi ddim yn gallu dadwneud y newid hwn gan eich bod yn hyrwyddo'r defnyddiwr i gael yr un lefel pŵer â chi'ch hun.", "redact": { - "confirm_button": { - "Tynnu %(count)s neges": "other", - "Tynnu 1 neges": "one" - }, - "confirm_description_1": { - "Rydych chi ar fin tynnu %(count)s neges gan %(user)s. Bydd hyn yn eu tynnu'n barhaol i bawb yn y sgwrs. ​​Ydych chi am barhau?": "other" - }, "confirm_description_2": "Ar gyfer llawer iawn o negeseuon, gallai hyn gymryd peth amser. Peidiwch ag adnewyddu eich cleient yn y cyfamser.", "confirm_keep_state_explainer": "Dad-diciwch a ydych hefyd am ddileu negeseuon system ar y defnyddiwr hwn (e.e. newid aelodaeth, newid proffil…)", "confirm_keep_state_label": "Cadw negeseuon system", @@ -4022,10 +3620,6 @@ "msisdn_lookup_failed": "Methu chwilio am y rhif ffôn", "msisdn_lookup_failed_description": "Bu gwall wrth chwilio am y rhif ffôn", "msisdn_transfer_failed": "Methu trosglwyddo galwad", - "n_people_joined": { - "Does %(count)s person wedi ymuno": "zero", - "Mae %(count)s person wedi ymuno": "other" - }, "no_audio_input_description": "Heb ddod o hyd i feicroffon ar eich dyfais. Gwiriwch eich gosodiadau a cheisiwch eto.", "no_audio_input_title": "Heb ganfod meicroffon", "no_media_perms_description": "Mae'n bosibl y bydd angen i chi ganiatáu i %(brand)s gael mynediad i'ch meicroffon/gwegamera â llaw", diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json index 00bc5734a85..aa57c55bec8 100644 --- a/src/i18n/strings/da.json +++ b/src/i18n/strings/da.json @@ -92,9 +92,7 @@ "ok": "OK", "open": "Åbn", "open_menu": "Åbn menu", - "pause": "Pausér", "pin": "Fastgør", - "play": "Afspil", "proceed": "Fortsæt", "quote": "Citat", "react": "Reager", @@ -1639,7 +1637,6 @@ "files_button": "Filer", "pinned_messages": { "limits": { - "one": "", "other": "Du kan kun fastgøre op til %(count)s widgets" } }, @@ -2886,24 +2883,10 @@ "show_thread_filter": "Vis:" }, "time": { - "about_day_ago": "omkring en dag siden", - "about_hour_ago": "for omkring en time siden", - "about_minute_ago": "for omkring et minut siden", "date_at_time": "%(date)s om %(time)s", - "few_seconds_ago": "for et par sekunder siden", "hours_minutes_seconds_left": "%(hours)st %(minutes)sm %(seconds)ss tilbage", - "in_about_day": "om cirka en dag fra nu", - "in_about_hour": "omkring en time fra nu", - "in_about_minute": "omkring et minut fra nu", - "in_few_seconds": "et par sekunder fra nu", - "in_n_days": "%(num)s dage fra nu", - "in_n_hours": "%(num)s timer fra nu", - "in_n_minutes": "%(num)s minutter fra nu", "left": "%(timeRemaining)s tilbage", "minutes_seconds_left": "%(minutes)sm %(seconds)ss tilbage", - "n_days_ago": "%(num)s dage siden", - "n_hours_ago": "%(num)s timer siden", - "n_minutes_ago": "%(num)s minutter siden", "seconds_left": "%(seconds)ss tilbage", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)st %(minutes)sm %(seconds)ss", @@ -2951,8 +2934,7 @@ "m.audio": { "error_downloading_audio": "Fejl ved download af lyd", "error_processing_audio": "Fejl ved behandling af lydbesked", - "error_processing_voice_message": "Fejl ved behandling af talebesked", - "unnamed_audio": "Unavngiven lyd" + "error_processing_voice_message": "Fejl ved behandling af talebesked" }, "m.beacon_info": { "view_live_location": "Se live lokation" @@ -3351,7 +3333,6 @@ } }, "truncated_list_n_more": { - "one": "", "other": "Og %(count)s mere..." }, "unsupported_server_description": "Denne server bruger en ældre version af Matrix. Opgrader til Matrix %(version)s for at kunne bruge %(brand)s uden fejl.", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 8f01f3d6720..e56ba0f95d1 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -100,9 +100,7 @@ "ok": "Ok", "open": "Öffnen", "open_menu": "Menu öffnen", - "pause": "Pausieren", "pin": "Anheften", - "play": "Abspielen", "proceed": "Fortfahren", "quote": "Zitieren", "react": "Reagieren", @@ -3388,24 +3386,10 @@ "no_rooms_with_unread_threads": "Es gibt keine Chats mit ungelesenen Threads." }, "time": { - "about_day_ago": "vor etwa einem Tag", - "about_hour_ago": "vor etwa einer Stunde", - "about_minute_ago": "vor etwa einer Minute", "date_at_time": "%(date)s um %(time)s", - "few_seconds_ago": "vor ein paar Sekunden", "hours_minutes_seconds_left": "%(hours)s h %(minutes)s m %(seconds)s s verbleibend", - "in_about_day": "in etwa einem Tag", - "in_about_hour": "in etwa einer Stunde", - "in_about_minute": "in etwa einer Minute", - "in_few_seconds": "in ein paar Sekunden", - "in_n_days": "in %(num)s Tagen", - "in_n_hours": "in %(num)s Stunden", - "in_n_minutes": "In etwa %(num)s Minuten", "left": "%(timeRemaining)s übrig", "minutes_seconds_left": "%(minutes)s m %(seconds)s s verbleibend", - "n_days_ago": "vor %(num)s Tagen", - "n_hours_ago": "vor %(num)s Stunden", - "n_minutes_ago": "vor %(num)s Minuten", "seconds_left": "%(seconds)s verbleibend", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)s d %(hours)s h %(minutes)s m %(seconds)s s", @@ -3460,11 +3444,9 @@ "unable_to_find": "Der Sprung an eine bestimmte Stelle im Nachrichtenverlauf dieses Chats ist gescheitert. Die Stelle konnte nicht gefunden werden." }, "m.audio": { - "audio_player": "Audio-Player", "error_downloading_audio": "Fehler beim Herunterladen der Audiodatei", "error_processing_audio": "Fehler beim Verarbeiten der Audionachricht", - "error_processing_voice_message": "Fehler beim Verarbeiten der Sprachnachricht", - "unnamed_audio": "Unbenannte Audiodatei" + "error_processing_voice_message": "Fehler beim Verarbeiten der Sprachnachricht" }, "m.beacon_info": { "view_live_location": "Echtzeit-Standort anzeigen" diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 8289ac73476..1745aac7a81 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -82,9 +82,7 @@ "no": "Όχι", "ok": "Εντάξει", "open": "Άνοιγμα", - "pause": "Παύση", "pin": "Καρφίτσα", - "play": "Αναπαραγωγή", "proceed": "Συνέχεια", "quote": "Παράθεση", "react": "Αντίδραση", @@ -2618,24 +2616,10 @@ "show_thread_filter": "Εμφάνισε:" }, "time": { - "about_day_ago": "σχεδόν μία μέρα πριν", - "about_hour_ago": "σχεδόν μία ώρα πριν", - "about_minute_ago": "σχεδόν ένα λεπτό πριν", "date_at_time": "%(date)s στις %(time)s", - "few_seconds_ago": "λίγα δευτερόλεπτα πριν", "hours_minutes_seconds_left": "απομένουν %(hours)sώ %(minutes)sλ %(seconds)sδλ", - "in_about_day": "περίπου μια μέρα από τώρα", - "in_about_hour": "περίπου μία ώρα από τώρα", - "in_about_minute": "περίπου ένα λεπτό από τώρα", - "in_few_seconds": "λίγα δευτερόλεπτα από τώρα", - "in_n_days": "%(num)s μέρες από τώρα", - "in_n_hours": "%(num)s ώρες από τώρα", - "in_n_minutes": "%(num)s λεπτά από τώρα", "left": "%(timeRemaining)s απομένουν", "minutes_seconds_left": "απομένουν %(minutes)sλ %(seconds)sδλ", - "n_days_ago": "%(num)s μέρες πριν", - "n_hours_ago": "%(num)s ώρες πριν", - "n_minutes_ago": "%(num)s λεπτά πριν", "seconds_left": "%(seconds)ss απομένουν", "short_days": "%(value)sμέρες", "short_days_hours_minutes_seconds": "%(days)sη %(hours)sώ %(minutes)sλ %(seconds)sδλ", @@ -2676,8 +2660,7 @@ "m.audio": { "error_downloading_audio": "Σφάλμα λήψης ήχου", "error_processing_audio": "Σφάλμα επεξεργασίας του ηχητικού μηνύματος", - "error_processing_voice_message": "Σφάλμα επεξεργασίας του φωνητικού μηνύματος", - "unnamed_audio": "Ήχος χωρίς όνομα" + "error_processing_voice_message": "Σφάλμα επεξεργασίας του φωνητικού μηνύματος" }, "m.call": { "video_call_started": "Ξεκίνησε βιντεοκλήση στο %(roomName)s", diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index 35564116382..87717c2ffaf 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -68,9 +68,7 @@ "no": "Ne", "ok": "Bone", "open": "Malfermi", - "pause": "Paŭzigi", "pin": "Pinglo", - "play": "Ludi", "quote": "Citaĵo", "react": "Reagi", "refresh": "Aktualigi", @@ -2035,23 +2033,9 @@ "light_high_contrast": "Malpeza alta kontrasto" }, "time": { - "about_day_ago": "antaŭ ĉirkaŭ tago", - "about_hour_ago": "antaŭ ĉirkaŭ horo", - "about_minute_ago": "antaŭ ĉirkaŭ minuto", "date_at_time": "%(date)s je %(time)s", - "few_seconds_ago": "antaŭ kelkaj sekundoj", "hours_minutes_seconds_left": "%(hours)sh. %(minutes)sm. %(seconds)ss. restas", - "in_about_day": "ĉirkaŭ tagon de nun", - "in_about_hour": "ĉirkaŭ horon de nun", - "in_about_minute": "ĉirkaŭ minuton de nun", - "in_few_seconds": "kelkajn sekundojn de nun", - "in_n_days": "%(num)s tagojn de nun", - "in_n_hours": "%(num)s horojn de nun", - "in_n_minutes": "%(num)s minutojn de nun", "minutes_seconds_left": "%(minutes)sm. %(seconds)ss. restas", - "n_days_ago": "antaŭ %(num)s tagoj", - "n_hours_ago": "antaŭ %(num)s horoj", - "n_minutes_ago": "antaŭ %(num)s minutoj", "seconds_left": "%(seconds)s sekundoj restas", "short_days": "%(value)st.", "short_days_hours_minutes_seconds": "%(days)st. %(hours)sh. %(minutes)sm. %(seconds)ss.", @@ -2089,8 +2073,7 @@ "m.audio": { "error_downloading_audio": "Eraris elŝuto de sondosiero", "error_processing_audio": "Eraris traktado de sonmesaĝo", - "error_processing_voice_message": "Eraris traktado de voĉmesaĝo", - "unnamed_audio": "Sennoma sondosiero" + "error_processing_voice_message": "Eraris traktado de voĉmesaĝo" }, "m.call": { "video_call_started": "Videovoko komenciĝis en %(roomName)s.", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index c23bc8c5fae..4b2ea056a7e 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -92,9 +92,7 @@ "ok": "Vale", "open": "Abrir", "open_menu": "Abrir menú", - "pause": "Pausar", "pin": "Fijar", - "play": "Reproducir", "proceed": "Continuar", "quote": "Citar", "react": "Reaccionar", @@ -2700,24 +2698,10 @@ "show_thread_filter": "Mostrar:" }, "time": { - "about_day_ago": "hace aprox. un día", - "about_hour_ago": "hace aprox. una hora", - "about_minute_ago": "hace aproximadamente un minuto", "date_at_time": "%(date)s a la(s) %(time)s", - "few_seconds_ago": "hace unos segundos", "hours_minutes_seconds_left": "queda(n) %(hours)sh %(minutes)sm %(seconds)ss", - "in_about_day": "dentro de un día", - "in_about_hour": "dentro de una hora", - "in_about_minute": "dentro de un minuto", - "in_few_seconds": "dentro de unos segundos", - "in_n_days": "dentro de %(num)s días", - "in_n_hours": "dentro de %(num)s horas", - "in_n_minutes": "dentro de %(num)s minutos", "left": "Queda %(timeRemaining)s", "minutes_seconds_left": "queda(n) %(minutes)sm %(seconds)ss", - "n_days_ago": "hace %(num)s días", - "n_hours_ago": "hace %(num)s horas", - "n_minutes_ago": "hace %(num)s minutos", "seconds_left": "%(seconds)ss restantes", "short_days": "%(value)s d", "short_days_hours_minutes_seconds": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", @@ -2758,11 +2742,9 @@ "unable_to_find": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no se ha podido encontrarlo." }, "m.audio": { - "audio_player": "Reproductor de audio", "error_downloading_audio": "Error al descargar el audio", "error_processing_audio": "Error al procesar el mensaje de audio", - "error_processing_voice_message": "Ha ocurrido un error al procesar el mensaje de voz", - "unnamed_audio": "Audio sin título" + "error_processing_voice_message": "Ha ocurrido un error al procesar el mensaje de voz" }, "m.beacon_info": { "view_live_location": "Ver ubicación en tiempo real" diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 5632b4afadf..efa4ca34303 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -101,9 +101,7 @@ "ok": "Sobib", "open": "Ava", "open_menu": "Ava menüü", - "pause": "Peata", "pin": "Tõsta esile", - "play": "Esita", "proceed": "Jätka", "quote": "Tsiteeri", "react": "Reageeri", @@ -1911,7 +1909,6 @@ "other": "%(count)s esiletõstetud sõnumit" }, "limits": { - "one": "", "other": "Sa saad esile tõsta kuni %(count)s vidinat" }, "menu": "Ava menüü", @@ -2123,7 +2120,6 @@ "status_bar": { "delete_all": "Kustuta kõik", "exceeded_resource_limit": "Sinu sõnumit ei saadetud, kuna see koduserver on ületanud on ületanud ressursipiirangu. Teenuse kasutamiseks palun võta ühendust serveri haldajaga.", - "history_visible": "Sinu saadetud sõnumeid jagatakse sellesse jututuppa kutsutud uute liikmetega. Lisateave", "homeserver_blocked": "Sinu sõnumit ei saadetud, kuna see koduserver blokeeritud serveri haldaja poolt. Teenuse kasutamiseks palun võta ühendust serveri haldajaga.", "monthly_user_limit_reached": "Sinu sõnumit ei saadetud, kuna see koduserver on saavutanud igakuise aktiivsete kasutajate piiri. Teenuse kasutamiseks palun võta ühendust serveri haldajaga.", "requires_consent_agreement": "Sa ei saa saata ühtego sõnumit enne, kui oled läbi lugenud ja nõustunud meie kasutustingimustega.", @@ -3408,24 +3404,10 @@ "no_rooms_with_unread_threads": "Pole veel ühtegi lugemata jutulõngaga jututuba." }, "time": { - "about_day_ago": "umbes päev tagasi", - "about_hour_ago": "umbes tund aega tagasi", - "about_minute_ago": "umbes minut tagasi", "date_at_time": "%(date)s %(time)s", - "few_seconds_ago": "mõni sekund tagasi", "hours_minutes_seconds_left": "jäänud on %(hours)st %(minutes)sm %(seconds)ss", - "in_about_day": "umbes päeva pärast", - "in_about_hour": "umbes tunni pärast", - "in_about_minute": "umbes minuti pärast", - "in_few_seconds": "mõne sekundi pärast", - "in_n_days": "%(num)s päeva pärast", - "in_n_hours": "%(num)s tunni pärast", - "in_n_minutes": "%(num)s minuti pärast", "left": "jäänud %(timeRemaining)s", "minutes_seconds_left": "jäänud on %(minutes)sm %(seconds)ss", - "n_days_ago": "%(num)s päeva tagasi", - "n_hours_ago": "%(num)s tundi tagasi", - "n_minutes_ago": "%(num)s minutit tagasi", "seconds_left": "jäänud %(seconds)s sekundit", "short_days": "%(value)s p", "short_days_hours_minutes_seconds": "%(days)s pv %(hours)s t %(minutes)s m %(seconds)s s", @@ -3480,11 +3462,9 @@ "unable_to_find": "Üritasin laadida teatud hetke selle jututoa ajajoonelt, kuid ei suutnud seda leida." }, "m.audio": { - "audio_player": "Meediaesitaja", "error_downloading_audio": "Helifaili allalaadimine ei õnnestunud", "error_processing_audio": "Viga häälsõnumi töötlemisel", - "error_processing_voice_message": "Viga häälsõnumi töötlemisel", - "unnamed_audio": "Nimetu helifail" + "error_processing_voice_message": "Viga häälsõnumi töötlemisel" }, "m.beacon_info": { "view_live_location": "Vaata asukohta reaalajas" diff --git a/src/i18n/strings/fa.json b/src/i18n/strings/fa.json index 3738aa3b408..23f5ca64ec8 100644 --- a/src/i18n/strings/fa.json +++ b/src/i18n/strings/fa.json @@ -66,9 +66,7 @@ "no": "خیر", "ok": "باشه", "open": "باز", - "pause": "متوقف‌کردن", "pin": "سنجاق", - "play": "اجرا کردن", "quote": "نقل قول", "react": "واکنش", "refresh": "رفرش", @@ -1776,21 +1774,7 @@ }, "thread_view_back_action_label": "بازگشت به موضوع", "time": { - "about_day_ago": "حدود یک روز قبل", - "about_hour_ago": "حدود یک ساعت قبل", - "about_minute_ago": "حدود یک دقیقه قبل", "date_at_time": "%(date)s ساعت %(time)s", - "few_seconds_ago": "چند ثانیه قبل", - "in_about_day": "حدود یک روز دیگر", - "in_about_hour": "حدود یک ساعت دیگر", - "in_about_minute": "حدود یک دقیقه دیگر", - "in_few_seconds": "چند ثانیه دیگر", - "in_n_days": "%(num)s روز دیگر", - "in_n_hours": "%(num)s ساعت دیگر", - "in_n_minutes": "%(num)s دقیقه دیگر", - "n_days_ago": "%(num)s روز قبل", - "n_hours_ago": "%(num)s ساعت قبل", - "n_minutes_ago": "%(num)s دقیقه قبل", "seconds_left": "%(seconds)s ثانیه باقی‌مانده", "short_minutes": "%(value)sم", "short_seconds": "%(value)sس" diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 32f609f6838..362ac0db0d5 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -89,9 +89,7 @@ "ok": "OK", "open": "Avaa", "open_menu": "Avaa valikko", - "pause": "Keskeytä", "pin": "Kiinnitä", - "play": "Toista", "proceed": "Jatka", "quote": "Lainaa", "react": "Reagoi", @@ -2816,24 +2814,10 @@ "show_thread_filter": "Näytä:" }, "time": { - "about_day_ago": "noin päivä sitten", - "about_hour_ago": "noin tunti sitten", - "about_minute_ago": "noin minuutti sitten", "date_at_time": "%(date)s klo %(time)s", - "few_seconds_ago": "muutama sekunti sitten", "hours_minutes_seconds_left": "%(hours)s h %(minutes)s m %(seconds)s s jäljellä", - "in_about_day": "noin päivä sitten", - "in_about_hour": "noin tunti sitten", - "in_about_minute": "noin minuutti sitten", - "in_few_seconds": "muutama sekunti sitten", - "in_n_days": "%(num)s päivää sitten", - "in_n_hours": "%(num)s tuntia sitten", - "in_n_minutes": "%(num)s minuuttia sitten", "left": "%(timeRemaining)s jäljellä", "minutes_seconds_left": "%(minutes)s min %(seconds)s s jäljellä", - "n_days_ago": "%(num)s päivää sitten", - "n_hours_ago": "%(num)s tuntia sitten", - "n_minutes_ago": "%(num)s minuuttia sitten", "seconds_left": "%(seconds)s s jäljellä", "short_days": "%(value)s vrk", "short_days_hours_minutes_seconds": "%(days)s pv %(hours)s t %(minutes)s min %(seconds)s s", @@ -2882,8 +2866,7 @@ "m.audio": { "error_downloading_audio": "Virhe ääntä ladattaessa", "error_processing_audio": "Virhe ääniviestiä käsiteltäessä", - "error_processing_voice_message": "Virhe ääniviestin käsittelyssä", - "unnamed_audio": "Nimetön ääni" + "error_processing_voice_message": "Virhe ääniviestin käsittelyssä" }, "m.call": { "video_call_ended": "Videopuhelu päättyi", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 2bd3942f938..612deb83890 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -101,9 +101,7 @@ "ok": "OK", "open": "Ouvrir", "open_menu": "Ouvrir le menu", - "pause": "Pause", "pin": "Épingler", - "play": "Lecture", "proceed": "Appliquer", "quote": "Citer", "react": "Réagir", @@ -2122,7 +2120,6 @@ "status_bar": { "delete_all": "Tout supprimer", "exceeded_resource_limit": "Votre message n’a pas été envoyé car ce serveur d’accueil a dépassé une de ses limites de ressources. Veuillez contacter l’administrateur de votre service pour continuer à l’utiliser.", - "history_visible": "Les messages que vous enverrez seront partagés avec les nouveaux membres invités dans ce salon. En savoir plus", "homeserver_blocked": "Votre message n’a pas été envoyé car ce serveur d’accueil a été bloqué par son administrateur. Veuillez contacter l’administrateur de votre service pour continuer à l’utiliser.", "monthly_user_limit_reached": "Votre message n’a pas été envoyé car le serveur d’accueil a atteint sa limite mensuelle d’utilisateurs. Veuillez contacter l’administrateur de votre service pour continuer à l’utiliser.", "requires_consent_agreement": "Vous ne pouvez voir aucun message tant que vous ne lisez et n’acceptez pas nos conditions générales.", @@ -3407,24 +3404,10 @@ "no_rooms_with_unread_threads": "Vous n'avez pas encore de salons contenant des fils de discussion non lus." }, "time": { - "about_day_ago": "il y a environ un jour", - "about_hour_ago": "il y a environ une heure", - "about_minute_ago": "il y a environ une minute", "date_at_time": "%(date)s à %(time)s", - "few_seconds_ago": "il y a quelques secondes", "hours_minutes_seconds_left": "%(hours)sh %(minutes)sm %(seconds)ss restantes", - "in_about_day": "dans un jour environ", - "in_about_hour": "dans une heure environ", - "in_about_minute": "dans une minute environ", - "in_few_seconds": "dans quelques secondes", - "in_n_days": "dans %(num)s jours", - "in_n_hours": "dans %(num)s heures", - "in_n_minutes": "dans %(num)s minutes", "left": "%(timeRemaining)s restant", "minutes_seconds_left": "%(minutes)sm %(seconds)ss restantes", - "n_days_ago": "il y a %(num)s jours", - "n_hours_ago": "il y a %(num)s heures", - "n_minutes_ago": "il y a %(num)s minutes", "seconds_left": "%(seconds)s secondes restantes", "short_days": "%(value)sj", "short_days_hours_minutes_seconds": "%(days)sj %(hours)sh %(minutes)sm %(seconds)ss", @@ -3479,11 +3462,9 @@ "unable_to_find": "Un instant donné du fil de discussion n’a pu être chargé car il n’a pas pu être trouvé." }, "m.audio": { - "audio_player": "Lecteur audio", "error_downloading_audio": "Erreur lors du téléchargement de l’audio", "error_processing_audio": "Erreur lors du traitement du message audio", - "error_processing_voice_message": "Erreur lors du traitement du message vocal", - "unnamed_audio": "Audio sans nom" + "error_processing_voice_message": "Erreur lors du traitement du message vocal" }, "m.beacon_info": { "view_live_location": "Voir la position en direct" diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index ea7522a155e..eaa18a28977 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -77,8 +77,6 @@ "next": "Seguinte", "no": "Non", "open": "Abrir", - "pause": "Deter", - "play": "Reproducir", "quote": "Cita", "react": "Reacciona", "refresh": "Actualizar", @@ -2376,24 +2374,10 @@ "show_thread_filter": "Mostrar:" }, "time": { - "about_day_ago": "onte", - "about_hour_ago": "fai unha hora", - "about_minute_ago": "fai un minuto", "date_at_time": "%(date)s ás %(time)s", - "few_seconds_ago": "fai uns segundos", "hours_minutes_seconds_left": "%(hours)sh %(minutes)sm %(seconds)ss restantes", - "in_about_day": "foi onte", - "in_about_hour": "fará unha hora", - "in_about_minute": "haberá un minuto", - "in_few_seconds": "hai só uns segundos", - "in_n_days": "fará %(num)s días", - "in_n_hours": "fará %(num)s horas", - "in_n_minutes": "fará %(num)s minutos", "left": "%(timeRemaining)s restante", "minutes_seconds_left": "%(minutes)sm %(seconds)ss restantes", - "n_days_ago": "fai %(num)s días", - "n_hours_ago": "fai %(num)s horas", - "n_minutes_ago": "fai %(num)s minutos", "seconds_left": "%(seconds)ss restantes" }, "timeline": { @@ -2428,8 +2412,7 @@ "m.audio": { "error_downloading_audio": "Erro ao descargar o audio", "error_processing_audio": "Erro ao procesar a mensaxe de audio", - "error_processing_voice_message": "Erro ao procesar a mensaxe de voz", - "unnamed_audio": "Audio sen nome" + "error_processing_voice_message": "Erro ao procesar a mensaxe de voz" }, "m.beacon_info": { "view_live_location": "Ver localización en directo" diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index 0b7f1986dee..ae1f752cd1f 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -1938,23 +1938,9 @@ "show_thread_filter": "הצג:" }, "time": { - "about_day_ago": "בערך לפני יום", - "about_hour_ago": "בערך לפני כשעה", - "about_minute_ago": "לפני בערך דקה", "date_at_time": "%(date)s בשעה %(time)s", - "few_seconds_ago": "לפני מספר שניות", "hours_minutes_seconds_left": "נשארו %(hours)s שעות, %(minutes)s דקות ו-%(seconds)s שניות", - "in_about_day": "בערך בעוד יום מעכשיו", - "in_about_hour": "בערך בעוד כשעה", - "in_about_minute": "בערך עוד דקה אחת", - "in_few_seconds": "בעוד מספר שניות מעכשיו", - "in_n_days": "בעוד %(num)s ימים מעכשיו", - "in_n_hours": "בעוד %(num)s שעות", - "in_n_minutes": "בעוד %(num)s דקות", "minutes_seconds_left": "נשארו %(minutes)s דקות ו-%(seconds)s שניות", - "n_days_ago": "לפני %(num)s ימים", - "n_hours_ago": "לפני %(num)s שעות", - "n_minutes_ago": "לפני %(num)s דקות", "seconds_left": "נשארו %(seconds)s שניות", "short_days": "%(value)s ימים", "short_hours": "%(value)s שעות", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index c42218b3af9..bdc4f03effa 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -3,25 +3,9 @@ "emoji_picker": "Emodzsiválasztó", "jump_first_invite": "Ugrás az első meghívóhoz.", "message_composer": "Üzenetszerkesztő", - "n_unread_messages": { - "%(count)s olvasatlan üzenet.": "other", - "1 olvasatlan üzenet.": "one" - }, - "n_unread_messages_mentions": { - "%(count)s olvasatlan üzenet megemlítéssel.": "other", - "1 olvasatlan megemlítés.": "one" - }, "recent_rooms": "Legutóbbi szobák", "room_messsage_not_sent": "A(z) %(roomName)s szoba megnyitása nem beállított üzenettel.", "room_n_unread_invite": "A(z) %(roomName)s szoba meghívásának megnyitása.", - "room_n_unread_messages": { - "A(z) %(roomName)s szoba megnyitása 1 olvasatlan üzenettel.": "one", - "A(z) %(roomName)s szoba megnyitása %(count)s olvasatlan üzenettel.": "other" - }, - "room_n_unread_messages_mentions": { - "A(z) %(roomName)s szoba megnyitása 1 olvasatlan megemlítéssel.": "one", - "A(z) %(roomName)s szoba megnyitása %(count)s olvasatlan megemlítéssel.": "other" - }, "room_name": "Szoba: %(name)s", "room_status_bar": "Szoba állapotsora", "seek_bar_label": "Hang keresősávja", @@ -101,9 +85,7 @@ "ok": "Rendben", "open": "Megnyitás", "open_menu": "Menü megnyitása", - "pause": "Szünet", "pin": "Kitűzés", - "play": "Lejátszás", "proceed": "Folytatás", "quote": "Idézés", "react": "Reakció", @@ -471,10 +453,6 @@ "advanced": "Speciális", "all_chats": "Összes csevegés", "analytics": "Analitika", - "and_n_others": { - "és még: %(count)s ...": "other", - "és még egy...": "one" - }, "appearance": "Megjelenítés", "application": "Alkalmazás", "are_you_sure": "Biztos?", @@ -529,12 +507,6 @@ "moderation_and_safety": "Moderálás és biztonság", "modern": "Modern", "mute": "Némítás", - "n_members": { - "%(count)s tag": "other" - }, - "n_rooms": { - "%(count)s szoba": "other" - }, "name": "Név", "no_results": "Nincs találat", "no_results_found": "Nincs találat", @@ -855,9 +827,6 @@ "room_notifications_total": "Összesen: ", "room_notifications_type": "Típus: ", "room_status": "Szoba állapota", - "room_unread_status_count": { - "Szoba állapota: %(status)s, darabszám: %(count)s": "other" - }, "save_setting_values": "Beállított értékek mentése", "see_history": "Előzmények megtekintése", "send_custom_account_data_event": "Egyéni fiókadat-esemény küldése", @@ -877,10 +846,6 @@ "settings_explorer": "Beállításböngésző", "show_empty_content_events": "Üres tartalmú események megjelenítése", "show_hidden_events": "Rejtett események megjelenítése az idővonalon", - "spaces": { - "<%(count)s szóköz>": "other", - "": "one" - }, "state_key": "Állapotkulcs", "thread_root_id": "Üzenetszál gyökérazonosítója: %(threadRootId)s", "threads_timeline": "Üzenetszálak idővonala", @@ -1215,19 +1180,7 @@ "error_fetching_file": "Fájlletöltési hiba", "export_info": "Ez a(z) szoba exportálásának kezdete. Exportálta: , időpont: %(exportDate)s.", "export_successful": "Sikeres exportálás!", - "exported_n_events_in_time": { - "%(count)s esemény exportálva %(seconds)s másodperc alatt": "other" - }, "exporting_your_data": "Adatai exportálása", - "fetched_n_events": { - "Eddig %(count)s esemény lett lekérve": "other" - }, - "fetched_n_events_in_time": { - "%(count)s esemény lekérve %(seconds)s másodperc alatt": "other" - }, - "fetched_n_events_with_total": { - "%(count)s / %(total)s esemény lekérve": "other" - }, "fetching_events": "Események lekérése…", "file_attached": "Fájl mellékelve", "format": "Formátum", @@ -1316,9 +1269,6 @@ }, "in_space": "Ebben a térben: %(spaceName)s.", "in_space1_and_space2": "Ezekben a terekben: %(space1Name)s és %(space2Name)s.", - "in_space_and_n_other_spaces": { - "Itt: %(spaceName)s és %(count)s másik térben.": "other" - }, "incompatible_browser": { "continue": "Folytatás mégis", "description": "%(brand)s olyan böngészőfunkciókat használ, amelyek nem érhetők el az aktuális böngészőben. %(detail)s", @@ -1412,14 +1362,6 @@ "unban_first_title": "A felhasználó addig nem hívható meg, amíg fel nem oldják a kitiltását" }, "inviting_user1_and_user2": "%(user1)s és %(user2)s meghívása", - "inviting_user_and_n_others": { - "%(user)s és 1 további meghívása": "one", - "%(user)s és %(count)s további meghívása": "other" - }, - "items_and_n_others": { - " és még %(count)s másik": "other", - " és még egy másik": "one" - }, "keyboard": { "activate_button": "Kiválasztott gomb aktiválása", "alt": "Alt", @@ -1675,9 +1617,6 @@ "toggle_attribution": "Forrásmegjelölés be/ki" }, "member_list": { - "count": { - "%(count)s tag": "other" - }, "filter_placeholder": "Szoba tagság szűrése", "invite_button_no_perms_tooltip": "Nincs jogosultsága felhasználók meghívására", "invited_label": "Meghívott", @@ -1768,12 +1707,6 @@ "topic_label": "Kérdés vagy téma", "topic_placeholder": "Írjon valamit…", "total_decryption_errors": "Visszafejtési hibák miatt néhány szavazat nem kerül beszámításra", - "total_n_votes": { - "%(count)s leadott szavazat. Szavazzon az eredmény megtekintéséhez": "other" - }, - "total_n_votes_voted": { - "%(count)s szavazat alapján": "other" - }, "total_no_votes": "Nem adtak le szavazatot", "total_not_ended": "Az eredmény a szavazás végeztével válik láthatóvá", "type_closed": "Zárt szavazás", @@ -1889,7 +1822,6 @@ "other": "%(count)s kitűzött üzenet" }, "limits": { - "one": "", "other": "Legfeljebb %(count)s kisalkalmazást tűzhet ki" }, "menu": "Menü megnyitása", @@ -1906,19 +1838,8 @@ "active_heading": "Aktív szavazások", "empty_active": "Nincsenek aktív szavazások ebben a szobában", "empty_active_load_more": "Nincs aktív szavazás. További szavazások betöltése az előző havi szavazások megjelenítéséhez", - "empty_active_load_more_n_days": { - "%(count)s napja nincs aktív szavazás. További szavazások betöltése az előző havi szavazások megjelenítéséhez": "other", - "Nincs aktív szavazás az elmúlt napokból. További szavazások betöltése az előző havi szavazások megjelenítéséhez": "one" - }, "empty_past": "Nincsenek régebbi szavazások ebben a szobában", "empty_past_load_more": "Nincs régebbi szavazás. További szavazások betöltése az előző havi szavazások megjelenítéséhez", - "empty_past_load_more_n_days": { - "Nincs aktív szavazás az elmúlt napokból. További szavazások betöltése az előző havi szavazások megjelenítéséhez": "one", - "%(count)s napja nincs aktív szavazás. További szavazások betöltése az előző havi szavazások megjelenítéséhez": "other" - }, - "final_result": { - "Végeredmény %(count)s szavazat alapján": "other" - }, "load_more": "Még több szavazás betöltése", "loading": "Szavazások betöltése", "past_heading": "Régi szavazások", @@ -1983,13 +1904,6 @@ "error_jump_to_date_not_found": "Nem sikerült megtalálni az eseményt %(dateString)s után keresve. Próbáljon egy korábbi dátumot kiválasztani.", "error_jump_to_date_send_logs_prompt": "Küldjön be hibakeresési naplókat, hogy segítsen nekünk a hiba megtalálásában.", "error_jump_to_date_title": "Nem található esemény az adott dátumkor", - "face_pile_summary": { - "%(count)s ismerős már csatlakozott": "other" - }, - "face_pile_tooltip_label": { - "1 résztvevő megmutatása": "one", - "Az összes %(count)s résztvevő megmutatása": "other" - }, "face_pile_tooltip_shortcut": "Beleértve: %(commaSeparatedMembers)s", "face_pile_tooltip_shortcut_joined": "Önt is beleértve, %(commaSeparatedMembers)s", "failed_determine_user": "Nem lehet meghatározni, hogy melyik felhasználót kell figyelmen kívül hagyni, mivel az esemény megváltozott.", @@ -1997,10 +1911,6 @@ "forget_room": "Szoba elfelejtése", "forget_space": "Ennek a térnek az elfelejtése", "header": { - "n_people_asking_to_join": { - "Csatlakozást kér": "one", - "%(count)s csatlakozást kérő ember": "other" - }, "room_is_public": "Ez egy nyilvános szoba" }, "header_avatar_open_settings_label": "Szobabeállítások megnyitása", @@ -2090,10 +2000,6 @@ "search": { "all_rooms_button": "Keresés az összes szobában", "placeholder": "Üzenetek keresése...", - "summary": { - "1 találat ehhez: „”": "one", - "%(count)s találat ehhez: „”": "other" - }, "this_room_button": "Keresés ebben a szobában" }, "status_bar": { @@ -2109,9 +2015,6 @@ "some_messages_not_sent": "Néhány üzenete nem lett elküldve" }, "unknown_status_code_for_timeline_jump": "ismeretlen állapotkód", - "unread_notifications_predecessor": { - "%(count)s olvasatlan értesítésed van a régi verziójú szobában.": "one" - }, "upgrade_error_description": "Ellenőrizze még egyszer, hogy a kiszolgálója támogatja-e kiválasztott szobaverziót, és próbálja újra.", "upgrade_error_title": "Hiba a szoba verziófrissítésekor", "upgrade_warning_bar": "A szoba fejlesztése bezárja ezt a szobát és új, frissített verzióval ugyanezen a néven létrehoz egy újat.", @@ -2119,9 +2022,6 @@ "upgrade_warning_bar_unstable": "A szoba verziója: , amelyet a Matrix-kiszolgáló instabilnak tekint.", "upgrade_warning_bar_upgraded": "Ez a szoba már fejlesztve van.", "upload": { - "uploading_multiple_file": { - "%(filename)s és még %(count)s db másik feltöltése": "other" - }, "uploading_single_file": "%(filename)s feltöltése" }, "video_room": "Ez a szoba egy videószoba", @@ -2166,9 +2066,6 @@ }, "home_menu_label": "Kezdőlap beállítások", "join_public_room_label": "Belépés nyilvános szobába", - "joining_rooms_status": { - "%(count)s szobába lép be": "other" - }, "list_title": "Szobalista", "more_options": { "copy_link": "Szoba hivatkozásának másolása", @@ -2181,9 +2078,6 @@ "notification_options": "Értesítési beállítások", "open_space_menu": "Tér menü megnyitása", "primary_filters": "Szobalistaszűrők", - "redacting_messages_status": { - "Üzenet törlése %(count)s szobából": "other" - }, "release_announcement": { "done": "Kész", "filter": { @@ -2210,9 +2104,6 @@ }, "room_options": "Szobabeállítások", "show_less": "Kevesebb megjelenítése", - "show_n_more": { - "Még %(count)s megjelenítése": "one" - }, "show_previews": "Üzenet-előnézet megjelenítése", "sort": "Rendezés", "sort_by": "Rendezés", @@ -2435,25 +2326,10 @@ "join_rule_restricted_dialog_heading_space": "Terek melyről tudja, hogy ezt a teret tartalmazzák", "join_rule_restricted_dialog_heading_unknown": "Ezek valószínűleg olyanok, amelyeknek más szobaadminisztrátorok is tagjai.", "join_rule_restricted_dialog_title": "Terek kiválasztása", - "join_rule_restricted_n_more": { - "és még %(count)s": "one" - }, - "join_rule_restricted_summary": { - "Jelenleg %(count)s tér rendelkezik hozzáféréssel": "other", - "Jelenleg egy tér rendelkezik hozzáféréssel": "one" - }, "join_rule_restricted_upgrade_description": "Ez a fejlesztés lehetővé teszi, hogy a kiválasztott terek tagjai meghívó nélkül is elérjék ezt a szobát.", "join_rule_restricted_upgrade_warning": "Ez a szoba olyan terekben is benne van, amelynek nem Ön az adminisztrátora. Ezekben a terekben továbbra is a régi szoba jelenik meg, de az emberek jelzést kapnak, hogy lépjenek be az újba.", "join_rule_upgrade_awaiting_room": "Új szoba betöltése", "join_rule_upgrade_required": "Fejlesztés szükséges", - "join_rule_upgrade_sending_invites": { - "Meghívók küldése…": "one", - "Meghívók küldése… (%(progress)s / %(count)s)": "other" - }, - "join_rule_upgrade_updating_spaces": { - "Terek frissítése…": "one", - "Terek frissítése… (%(progress)s / %(count)s)": "other" - }, "join_rule_upgrade_upgrading_room": "Szoba fejlesztése", "join_rule_world_readable_description": "A szobába való belépés jogosultságának módosítása a jövőbeli üzenetek láthatóságát is megváltoztatja.", "public_without_alias_warning": "Hogy hivatkozhasson erre a szobára, adjon hozzá egy címet.", @@ -2920,9 +2796,6 @@ "key_backup_algorithm": "Algoritmus:", "message_search_disable_warning": "Ha nincs engedélyezve akkor a titkosított szobák üzenetei nem jelennek meg a keresések között.", "message_search_disabled": "A titkosított üzenetek biztonságos helyi gyorsítótárazása, hogy megjelenhessenek a keresési találatok között.", - "message_search_enabled": { - "A titkosított üzenetek biztonságos helyi gyorsítótárazása, hogy megjelenhessenek a keresési találatok között, ehhez %(size)s helyet használ %(rooms)s szoba üzeneteihez.": "other" - }, "message_search_failed": "Az üzenetkeresés előkészítése sikertelen", "message_search_indexed_messages": "Indexált üzenetek:", "message_search_indexed_rooms": "Indexált szobák:", @@ -2945,22 +2818,6 @@ "sessions": { "best_security_note": "A legjobb biztonság érdekében ellenőrizze munkameneteit, és jelentkezzen ki minden olyan munkamenetből, amelyet már nem ismer fel vagy használ.", "browser": "Böngésző", - "confirm_sign_out": { - "Megerősítés ebből az eszközből való kijelentkezéshez": "one", - "Megerősítés ezekből az eszközökből való kijelentkezéshez": "other" - }, - "confirm_sign_out_body": { - "Ezeknek a eszközöknek törlésének a megerősítéséhez kattintson a gombra lent.": "other", - "Az eszközből való kilépés megerősítéséhez kattintson a lenti gombra.": "one" - }, - "confirm_sign_out_continue": { - "Eszközből való kijelentkezés": "one", - "Eszközökből való kijelentkezés": "other" - }, - "confirm_sign_out_sso": { - "Az eszközből való kijelentkezéshez erősítse meg a személyazonosságát az egyszeri bejelentkezés használatával.": "one", - "Az eszközökből való kijelentkezéshez erősítse meg a személyazonosságát az egyszeri bejelentkezés használatával.": "other" - }, "current_session": "Jelenlegi munkamenet", "desktop_session": "Asztali munkamenet", "details_heading": "Munkamenet-információk", @@ -2987,9 +2844,6 @@ "last_activity": "Utolsó tevékenység", "manage": "Munkamenet kezelése", "mobile_session": "Mobil munkamenet", - "n_sessions_selected": { - "%(count)s munkamenet kiválasztva": "other" - }, "no_inactive_sessions": "Nincs inaktív munkamenet.", "no_sessions": "Nincs munkamenet.", "no_unverified_sessions": "Nincs ellenőrizetlen munkamenet.", @@ -3014,12 +2868,6 @@ "sign_in_with_qr_unsupported": "A fiókszolgáltató nem támogatja", "sign_out": "Kijelentkezés ebből a munkamenetből", "sign_out_all_other_sessions": "Kijelentkezés minden munkamenetből (%(otherSessionsCount)s)", - "sign_out_confirm_description": { - "Biztos, hogy ki szeretne lépni %(count)s munkamenetből?": "other" - }, - "sign_out_n_sessions": { - "Kijelentkezés %(count)s munkamenetből": "other" - }, "title": "Munkamenetek", "unknown_session": "Ismeretlen munkamenettípus", "unverified_session": "Ellenőrizetlen munkamenet", @@ -3209,10 +3057,6 @@ "create_prompt": "Új szoba készítése", "dm_heading": "Közvetlen Beszélgetések", "error_heading": "Nem az összes kijelölt lett hozzáadva", - "progress_text": { - "Szobák hozzáadása…": "one", - "Szobák hozzáadása… (%(progress)s ennyiből: %(count)s)": "other" - }, "space_dropdown_label": "Tér kiválasztása", "space_dropdown_title": "Létező szobák hozzáadása", "subspace_moved_note": "Terek hozzáadása elköltözött." @@ -3295,9 +3139,6 @@ "cant_find_person_helpful_hint": "Ha nem találja, akit keres, küldje el neki a meghívási hivatkozást.", "cant_find_room_helpful_hint": "Ha nem található az szoba, amelyet keresett, kérjen egy meghívót, vagy készítsen egy új szobát.", "copy_link_text": "Meghívó hivatkozás másolása", - "count_of_members": { - "%(count)s tag": "other" - }, "create_new_room_button": "Új szoba létrehozása", "failed_querying_public_rooms": "Nem sikerült lekérdezni nyilvános szobákat", "failed_querying_public_spaces": "Nem sikerült lekérdezni a nyilvános tereket", @@ -3348,9 +3189,6 @@ "threads": { "all_threads": "Minden üzenetszál", "all_threads_description": "A szobában lévő összes üzenetszál megjelenítése", - "count_of_reply": { - "%(count)s válasz": "other" - }, "empty_description": "Amikor az egérmutatót egy üzenet fölé viszi használja ezt: „%(replyInThread)s ”.", "empty_title": "Az üzenetszálak segítenek a különböző témájú beszélgetések figyelemmel kísérésében.", "error_start_thread_existing_relation": "Nem lehet üzenetszálat indítani olyan eseményről ami már rendelkezik kapcsolattal", @@ -3366,24 +3204,10 @@ "no_rooms_with_unread_threads": "Nincsenek még olvasatlan üzenetszálakkal rendelkező szobái." }, "time": { - "about_day_ago": "egy napja", - "about_hour_ago": "egy órája", - "about_minute_ago": "egy perce", "date_at_time": "%(date)s %(time)s", - "few_seconds_ago": "néhány másodperce", "hours_minutes_seconds_left": "%(hours)s ó %(minutes)s p %(seconds)s mp van hátra", - "in_about_day": "egy nap múlva", - "in_about_hour": "egy óra múlva", - "in_about_minute": "egy perc múlva", - "in_few_seconds": "másodpercek múlva", - "in_n_days": "%(num)s nap múlva", - "in_n_hours": "%(num)s óra múlva", - "in_n_minutes": "%(num)s perc múlva", "left": "Maradék idő: %(timeRemaining)s", "minutes_seconds_left": "%(minutes)s p %(seconds)s mp van hátra", - "n_days_ago": "%(num)s nappal ezelőtt", - "n_hours_ago": "%(num)s órával ezelőtt", - "n_minutes_ago": "%(num)s perccel ezelőtt", "seconds_left": "%(seconds)s mp van hátra", "short_days": "%(value)s n", "short_days_hours_minutes_seconds": "%(days)s n %(hours)s ó %(minutes)s p %(seconds)s mp", @@ -3438,11 +3262,9 @@ "unable_to_find": "Megpróbálta betölteni a szoba megadott időpontjának megfelelő adatait, de az nem található." }, "m.audio": { - "audio_player": "Hanglejátszó", "error_downloading_audio": "Hiba a hang letöltésekor", "error_processing_audio": "Hiba a hangüzenet feldolgozásánál", - "error_processing_voice_message": "Hiba a hangüzenet feldolgozásánál", - "unnamed_audio": "Névtelen hang" + "error_processing_voice_message": "Hiba a hangüzenet feldolgozásánál" }, "m.beacon_info": { "view_live_location": "Élő földrajzi helyzet megtekintése" @@ -3493,11 +3315,6 @@ "location": "Megosztott egy földrajzi helyzetet: ", "self_location": "Megosztották a földrajzi helyzetüket: " }, - "m.poll": { - "count_of_votes": { - "%(count)s szavazat": "other" - } - }, "m.poll.end": { "sender_ended": "%(senderName)s lezárta a szavazást" }, @@ -3509,14 +3326,6 @@ "removed": "%(senderDisplayName)s törölte a szoba profilképét." }, "m.room.canonical_alias": { - "alt_added": { - "%(senderName)s hozzáadta a szoba alternatív címeit: %(addresses)s.": "other", - "%(senderName)s alternatív címeket adott hozzá a szobához: %(addresses)s.": "one" - }, - "alt_removed": { - "%(senderName)s eltávolította az alternatív címeket a szobáról: %(addresses)s.": "other", - "%(senderName)s eltávolította az alternatív címet a szobáról: %(addresses)s.": "one" - }, "changed": "%(senderName)s megváltoztatta a szoba címeit.", "changed_alternative": "%(senderName)s megváltoztatta a szoba alternatív címeit.", "changed_main_and_alternative": "%(senderName)s megváltoztatta a szoba elsődleges és alternatív címeit.", @@ -3668,9 +3477,6 @@ "label": "%(reactors)s reagált: %(content)s", "tooltip_caption": "ezzel reagált: %(shortName)s" }, - "read_receipt_title": { - "%(count)s ember látta": "other" - }, "read_receipts_label": "Olvasási visszajelzés", "redacted": { "tooltip": "Az üzenetet ekkor törölték: %(date)s" @@ -3691,95 +3497,7 @@ "send_state_sending": "Üzenet küldése…", "send_state_sent": "Üzenet elküldve", "summary": { - "banned": { - "%(count)s alkalommal lett kitiltva": "other", - "ki lett tiltva": "one" - }, - "banned_multiple": { - "%(count)s alkalommal lett kitiltva": "other", - "lett kitiltva": "one" - }, - "changed_avatar": { - "%(oneUser)s megváltoztatta a profilképét": "one", - "%(oneUser)s %(count)s alkalommal megváltoztatta a profilképét": "other" - }, - "changed_avatar_multiple": { - "%(severalUsers)s megváltoztatta a profilképét": "one", - "%(severalUsers)s %(count)s alkalommal megváltoztatta a profilképét": "other" - }, - "changed_name": { - "%(oneUser)s %(count)s alkalommal megváltoztatta a nevét": "other", - "%(oneUser)s megváltoztatta a nevét": "one" - }, - "changed_name_multiple": { - "%(severalUsers)s %(count)s alkalommal megváltoztatta a nevét": "other", - "%(severalUsers)s megváltoztatta a nevét": "one" - }, "format": "%(nameList)s %(transitionList)s", - "hidden_event": { - "%(oneUser)s rejtett üzenetet küldött": "one", - "%(oneUser)s %(count)s rejtett üzenetet küldött": "other" - }, - "hidden_event_multiple": { - "%(severalUsers)s rejtett üzenetet küldött": "one", - "%(severalUsers)s %(count)s rejtett üzenetet küldött": "other" - }, - "invite_withdrawn": { - "%(oneUser)s meghívóit %(count)s alkalommal vonták vissza": "other", - "%(oneUser)s meghívóit visszavonták": "one" - }, - "invite_withdrawn_multiple": { - "%(severalUsers)s meghívóit %(count)s alkalommal visszavonták": "other", - "%(severalUsers)s visszavonták a meghívásukat": "one" - }, - "invited": { - "%(count)s alkalommal lett meghívva": "other", - "meg lett hívva": "one" - }, - "invited_multiple": { - "%(count)s alkalommal lett meghívva": "other", - "meg lett hívva": "one" - }, - "joined": { - "%(oneUser)s %(count)s alkalommal csatlakozott": "other", - "%(oneUser)s csatlakozott": "one" - }, - "joined_and_left": { - "%(oneUser)s %(count)s alkalommal csatlakozott és távozott": "other", - "%(oneUser)s csatlakozott és távozott": "one" - }, - "joined_and_left_multiple": { - "%(severalUsers)s %(count)s alkalommal csatlakozott és távozott": "other", - "%(severalUsers)s csatlakozott és távozott": "one" - }, - "joined_multiple": { - "%(severalUsers)s %(count)s alkalommal csatlakozott": "other", - "%(severalUsers)s csatlakozott": "one" - }, - "kicked": { - "eltávolítva": "one", - "%(count)s alkalommal lett eltávolítva": "other" - }, - "kicked_multiple": { - "eltávolítva": "one", - "%(count)s alkalommal lett eltávolítva": "other" - }, - "left": { - "%(oneUser)s %(count)s alkalommal távozott": "other", - "%(oneUser)s távozott": "one" - }, - "left_multiple": { - "%(severalUsers)s %(count)s alkalommal távozott": "other", - "%(severalUsers)s távozott": "one" - }, - "no_change": { - "%(oneUser)s %(count)s alkalommal nem változtatott semmit": "other", - "%(oneUser)snem változtatott semmit": "one" - }, - "no_change_multiple": { - "%(severalUsers)s %(count)s alkalommal nem változtattak semmit": "other", - "%(severalUsers)s nem változtattak semmit": "one" - }, "pinned_events": { "one": "%(oneUser)s megváltoztatta a szoba kitűzött üzeneteit", "other": "%(oneUser)s %(count)s alkalommal megváltoztatta a szoba kitűzött üzeneteit" @@ -3787,46 +3505,6 @@ "pinned_events_multiple": { "one": "%(severalUsers)s megváltoztatta a szoba kitűzött üzeneteit", "other": "%(severalUsers)s %(count)s alkalommal megváltoztatta a szoba kitűzött üzeneteit" - }, - "redacted": { - "%(oneUser)s üzenetet törölt": "one", - "%(oneUser)s %(count)s üzenetet törölt": "other" - }, - "redacted_multiple": { - "%(severalUsers)s üzenetet törölt": "one", - "%(severalUsers)s %(count)s üzenetet törölt": "other" - }, - "rejected_invite": { - "%(oneUser)s %(count)s alkalommal elutasította a meghívóit": "other", - "%(oneUser)s elutasította a meghívóit": "one" - }, - "rejected_invite_multiple": { - "%(severalUsers)s %(count)s alkalommal elutasította a meghívóit": "other", - "%(severalUsers)s elutasította a meghívóit": "one" - }, - "rejoined": { - "%(oneUser)s %(count)s alkalommal távozott és újra csatlakozott": "other", - "%(oneUser)s távozott és újra csatlakozott": "one" - }, - "rejoined_multiple": { - "%(severalUsers)s %(count)s alkalommal távozott és újra csatlakozott": "other", - "%(severalUsers)s távozott és újra csatlakozott": "one" - }, - "server_acls": { - "%(oneUser)s megváltoztatta a kiszolgáló ACL-jeit": "one", - "%(oneUser)s %(count)s alkalommal megváltoztatta a kiszolgáló ACL-jeit": "other" - }, - "server_acls_multiple": { - "%(severalUsers)s megváltoztatta a kiszolgáló ACL-jeit": "one", - "%(severalUsers)s %(count)s alkalommal megváltoztatta a kiszolgáló ACL-jeit": "other" - }, - "unbanned": { - "%(count)s alkalommal lett visszaengedve": "other", - "vissza lett engedve": "one" - }, - "unbanned_multiple": { - "%(count)s alkalommal lett visszaengedve": "other", - "vissza lett engedve": "one" } }, "thread_info_basic": "Az üzenetszálból", @@ -3840,15 +3518,9 @@ }, "undecryptable_tooltip": "Ezt az üzenetet nem lehet visszafejteni", "url_preview": { - "close": "Előnézet bezárása", - "show_n_more": { - "%(count)s további előnézet megjelenítése": "other" - } + "close": "Előnézet bezárása" } }, - "truncated_list_n_more": { - "És még %(count)s...": "other" - }, "unsupported_browser": { "description": "Ha folytatja, előfordulhat, hogy egyes funkciók nem működnek, és fennáll annak a kockázata, hogy a jövőben elveszítheti adatait. Frissítse böngészőjét ennek a használatához: %(brand)s.", "title": "%(brand)s nem támogatja ezt a böngészőt" @@ -3889,11 +3561,7 @@ "not_image": "A kiválasztott fájl nem érvényes képfájl.", "title": "Fájlok feltöltése", "title_progress": "Fájlok feltöltése (%(current)s / %(total)s)", - "upload_all_button": "Összes feltöltése", - "upload_n_others_button": { - "%(count)s másik fájlt feltöltése": "other", - "%(count)s másik fájl feltöltése": "one" - } + "upload_all_button": "Összes feltöltése" }, "user_info": { "admin_tools_section": "Adminisztrációs eszközök", @@ -3931,13 +3599,6 @@ "kick_space_warning": "Továbbra is hozzáférhetnek olyan helyekhez, ahol Ön nem adminisztrátor.", "promote_warning": "Nem fogja tudni visszavonni ezt a változtatást, mert a felhasználót a sajátjával azonos szintre emeli.", "redact": { - "confirm_button": { - "%(count)s db üzenet törlése": "other", - "1 üzenet törlése": "one" - }, - "confirm_description_1": { - "%(count)s üzenetet készül törölni az alábbi felhasználótól: %(user)s. A művelet mindenki számára visszavonhatatlanul eltávolítja ezeket a beszélgetésekből. Biztos, hogy folytatja?": "other" - }, "confirm_description_2": "Ez sok üzenet esetén eltarthat egy darabig. Közben ne frissítse a klienst.", "confirm_keep_state_explainer": "Törölje a kijelölést ha a rendszerüzeneteket is törölni szeretné ettől a felhasználótól (például tagságváltozás, profilváltozás…)", "confirm_keep_state_label": "Rendszerüzenetek megtartása", @@ -4028,9 +3689,6 @@ "msisdn_lookup_failed": "A telefonszámot nem sikerült megtalálni", "msisdn_lookup_failed_description": "Hiba történt a telefonszám megkeresése során", "msisdn_transfer_failed": "A hívás átadása nem lehetséges", - "n_people_joined": { - "%(count)s személy belépett": "other" - }, "no_audio_input_description": "Nem található mikrofon. Ellenőrizze a beállításokat és próbálja újra.", "no_audio_input_title": "Nem található mikrofon", "no_media_perms_description": "Lehet, hogy kézileg kell engedélyeznie a(z) %(brand)s számára, hogy hozzáférjen a mikrofonjához és webkamerájához", diff --git a/src/i18n/strings/hy.json b/src/i18n/strings/hy.json index 228adbdcf8a..7750602ef60 100644 --- a/src/i18n/strings/hy.json +++ b/src/i18n/strings/hy.json @@ -100,9 +100,7 @@ "ok": "Լավ", "open": "Բաց(ել)", "open_menu": "Բացել ընտրացանկը", - "pause": "Դադար", "pin": "Քորոց", - "play": "Միացնել", "proceed": "Շարունակել", "quote": "Մեջբերում", "react": "Արձագանքել", @@ -1850,7 +1848,6 @@ "other": "%(count)s ամրացված հաղորդագրություններ" }, "limits": { - "one": "", "other": "Դուք կարող եք ամրացնել միայն մինչև%(count)s վիջեթներ" }, "menu": "Բացել մենյուն", @@ -3299,24 +3296,10 @@ "no_rooms_with_unread_threads": "Դուք դեռ չունեք սենյակներ, որտեղ կան չկարդացած թեմաներ։" }, "time": { - "about_day_ago": "մոտ մեկ օր առաջ", - "about_hour_ago": "մոտ մեկ ժամ առաջ", - "about_minute_ago": "մոտ մեկ րոպե առաջ", "date_at_time": "%(date)s ժամը %(time)s", - "few_seconds_ago": "մի քանի վայրկյան առաջ", "hours_minutes_seconds_left": "Մնաց %(hours)sժ %(minutes)sր %(seconds)sվ", - "in_about_day": "մոտ մեկ օր անց", - "in_about_hour": "մոտ մեկ ժամ անց", - "in_about_minute": "մոտ մեկ րոպե անց", - "in_few_seconds": "մի քանի վայրկյան անց", - "in_n_days": "%(num)s օր անց", - "in_n_hours": "%(num)s ժամ անց", - "in_n_minutes": "%(num)s րոպեներ անց", "left": "%(timeRemaining)s մնաց", "minutes_seconds_left": "Մնաց %(minutes)sր %(seconds)sվ", - "n_days_ago": "%(num)s օր առաջ", - "n_hours_ago": "%(num)s ժամ առաջ", - "n_minutes_ago": "%(num)s րոպե առաջ", "seconds_left": "Մնաց %(seconds)sվ", "short_days": "%(value)sօր", "short_days_hours_minutes_seconds": "%(days)sօր %(hours)sժ %(minutes)sր %(seconds)sվ", @@ -3371,11 +3354,9 @@ "unable_to_find": "Փորձեցինք բեռնել այս սենյակի ժամանակագրության որոշակի կետ, բայց չկարողացանք գտնել այն։" }, "m.audio": { - "audio_player": "Աուդիո նվագարկիչ", "error_downloading_audio": "Աուդիո ներբեռնման սխալ", "error_processing_audio": "Ձայնային հաղորդագրության մշակման սխալ", - "error_processing_voice_message": "Ձայնային հաղորդագրության մշակման սխալ", - "unnamed_audio": "Անանուն աուդիո" + "error_processing_voice_message": "Ձայնային հաղորդագրության մշակման սխալ" }, "m.beacon_info": { "view_live_location": "Դիտել կենդանի գտնվելու վայրը" @@ -3783,7 +3764,6 @@ } }, "truncated_list_n_more": { - "one": "", "other": "Եվ ևս %(հաշվարկ)s..." }, "unsupported_browser": { diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index 5d6f775cd70..0a55ff77078 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -99,9 +99,7 @@ "ok": "Oke", "open": "Buka", "open_menu": "Buka menu", - "pause": "Jeda", "pin": "Sematkan", - "play": "Mainkan", "proceed": "Lanjut", "quote": "Kutip", "react": "Bereaksi", @@ -3383,24 +3381,10 @@ "no_rooms_with_unread_threads": "Anda belum memiliki ruangan dengan utas yang belum dibaca." }, "time": { - "about_day_ago": "1 hari yang lalu", - "about_hour_ago": "1 jam yang lalu", - "about_minute_ago": "1 menit yang lalu", "date_at_time": "%(date)s pada %(time)s", - "few_seconds_ago": "beberapa detik yang lalu", "hours_minutes_seconds_left": "Sisa %(hours)sj %(minutes)sm %(seconds)sd", - "in_about_day": "1 hari dari sekarang", - "in_about_hour": "1 jam dari sekarang", - "in_about_minute": "1 menit dari sekarang", - "in_few_seconds": "beberapa detik dari sekarang", - "in_n_days": "%(num)s hari dari sekarang", - "in_n_hours": "%(num)s jam dari sekarang", - "in_n_minutes": "%(num)s dari sekarang", "left": "%(timeRemaining)sd lagi", "minutes_seconds_left": "Sisa %(minutes)sm %(seconds)sd", - "n_days_ago": "%(num)s hari yang lalu", - "n_hours_ago": "%(num)s jam yang lalu", - "n_minutes_ago": "%(num)s menit yang lalu", "seconds_left": "%(seconds)sd lagi", "short_days": "%(value)sh", "short_days_hours_minutes_seconds": "%(days)sh %(hours)sj %(minutes)sm %(seconds)sd", @@ -3455,11 +3439,9 @@ "unable_to_find": "Mencoba memuat titik spesifik di lini masa ruangan ini, tetapi tidak dapat menemukannya." }, "m.audio": { - "audio_player": "Pemutar audio", "error_downloading_audio": "Terjadi kesalahan mengunduh audio", "error_processing_audio": "Terjadi kesalahan mengolah pesan suara", - "error_processing_voice_message": "Terjadi kesalahan mengolah pesan suara", - "unnamed_audio": "Audio tidak dinamai" + "error_processing_voice_message": "Terjadi kesalahan mengolah pesan suara" }, "m.beacon_info": { "view_live_location": "Tampilkan lokasi langsung" diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json index 0cd458dfc81..3da046eb094 100644 --- a/src/i18n/strings/is.json +++ b/src/i18n/strings/is.json @@ -79,9 +79,7 @@ "no": "Nei", "ok": "Í lagi", "open": "Opna", - "pause": "Bið", "pin": "Pinni", - "play": "Spila", "quote": "Tilvitnun", "react": "Bregðast við", "refresh": "Endurlesa", @@ -2301,24 +2299,10 @@ "show_thread_filter": "Sýna:" }, "time": { - "about_day_ago": "fyrir um degi síðan", - "about_hour_ago": "fyrir um klukkustund síðan", - "about_minute_ago": "fyrir um það bil mínútu síðan", "date_at_time": "%(date)s kl. %(time)s", - "few_seconds_ago": "fyrir örfáum sekúndum síðan", "hours_minutes_seconds_left": "%(hours)sk %(minutes)sm %(seconds)ss eftir", - "in_about_day": "eftir um það bil einn dag", - "in_about_hour": "eftir um það bil klukkustund", - "in_about_minute": "eftir um það bil mínútu", - "in_few_seconds": "eftir nokkrar sekúndur", - "in_n_days": "eftir %(num)s daga", - "in_n_hours": "eftir %(num)s klukkustundir", - "in_n_minutes": "eftir %(num)s mínútur", "left": "%(timeRemaining)s eftir", "minutes_seconds_left": "%(minutes)sm %(seconds)ss eftir", - "n_days_ago": "fyrir %(num)s dögum síðan", - "n_hours_ago": "fyrir %(num)s klukkustundum síðan", - "n_minutes_ago": "fyrir %(num)s mínútum síðan", "seconds_left": "%(seconds)ssek eftir", "short_days_hours_minutes_seconds": "%(days)sd %(hours)sk %(minutes)sm %(seconds)ss", "short_hours": "%(value)sklst", @@ -2357,8 +2341,7 @@ "m.audio": { "error_downloading_audio": "Villa við að sækja hljóð", "error_processing_audio": "Villa við meðhöndlun hljóðskilaboða", - "error_processing_voice_message": "Villa við meðhöndlun talskilaboða", - "unnamed_audio": "Nafnlaust hljóð" + "error_processing_voice_message": "Villa við meðhöndlun talskilaboða" }, "m.beacon_info": { "view_live_location": "Skoða staðsetningu í rauntíma" diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index affa7e56567..7f1faefc488 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -86,9 +86,7 @@ "no": "No", "ok": "OK", "open": "Apri", - "pause": "Pausa", "pin": "Spillo", - "play": "Riproduci", "proceed": "Procedi", "quote": "Cita", "react": "Reagisci", @@ -2837,24 +2835,10 @@ "header": "Attività delle conversazioni" }, "time": { - "about_day_ago": "circa un giorno fa", - "about_hour_ago": "circa un'ora fa", - "about_minute_ago": "circa un minuto fa", "date_at_time": "%(date)s alle %(time)s", - "few_seconds_ago": "pochi secondi fa", "hours_minutes_seconds_left": "%(hours)so %(minutes)sm %(seconds)ss rimasti", - "in_about_day": "circa un giorno da adesso", - "in_about_hour": "circa un'ora da adesso", - "in_about_minute": "circa un minuto da adesso", - "in_few_seconds": "pochi secondi da adesso", - "in_n_days": "%(num)s giorni da adesso", - "in_n_hours": "%(num)s ore da adesso", - "in_n_minutes": "%(num)s minuti da adesso", "left": "%(timeRemaining)s rimasti", "minutes_seconds_left": "%(minutes)sm %(seconds)ss rimasti", - "n_days_ago": "%(num)s giorni fa", - "n_hours_ago": "%(num)s ore fa", - "n_minutes_ago": "%(num)s minuti fa", "seconds_left": "%(seconds)ss rimanenti", "short_days": "%(value)sg", "short_days_hours_minutes_seconds": "%(days)sg %(hours)so %(minutes)sm %(seconds)ss", @@ -2899,8 +2883,7 @@ "m.audio": { "error_downloading_audio": "Errore di scaricamento dell'audio", "error_processing_audio": "Errore elaborazione messaggio audio", - "error_processing_voice_message": "Errore di elaborazione del vocale", - "unnamed_audio": "Audio senza nome" + "error_processing_voice_message": "Errore di elaborazione del vocale" }, "m.beacon_info": { "view_live_location": "Vedi posizione in tempo reale" diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index 0bdb4d18ff9..051d3c5e1c9 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -78,9 +78,7 @@ "next": "次へ", "no": "いいえ", "open": "開く", - "pause": "一時停止", "pin": "ピン", - "play": "再生", "quote": "引用", "react": "リアクション", "refresh": "再読み込み", @@ -2582,24 +2580,10 @@ "show_thread_filter": "表示:" }, "time": { - "about_day_ago": "約1日前", - "about_hour_ago": "約1時間前", - "about_minute_ago": "約1分前", "date_at_time": "%(date)s %(time)s", - "few_seconds_ago": "数秒前", "hours_minutes_seconds_left": "残り%(hours)s時間%(minutes)s分%(seconds)s秒", - "in_about_day": "今から約1日前", - "in_about_hour": "今から約1時間前", - "in_about_minute": "今から約1分前", - "in_few_seconds": "今から数秒前", - "in_n_days": "今から%(num)s日前", - "in_n_hours": "今から%(num)s時間前", - "in_n_minutes": "今から%(num)s分前", "left": "残り%(timeRemaining)s", "minutes_seconds_left": "残り%(minutes)s分%(seconds)s秒", - "n_days_ago": "%(num)s日前", - "n_hours_ago": "%(num)s時間前", - "n_minutes_ago": "%(num)s分前", "seconds_left": "残り%(seconds)s秒", "short_days": "%(value)s日", "short_days_hours_minutes_seconds": "%(days)s日%(hours)s時%(minutes)s分%(seconds)s秒", @@ -2643,8 +2627,7 @@ "m.audio": { "error_downloading_audio": "音声をダウンロードする際にエラーが発生しました", "error_processing_audio": "音声メッセージを処理する際にエラーが発生しました", - "error_processing_voice_message": "音声メッセージを処理する際にエラーが発生しました", - "unnamed_audio": "名前のない音声" + "error_processing_voice_message": "音声メッセージを処理する際にエラーが発生しました" }, "m.beacon_info": { "view_live_location": "位置情報(ライブ)を表示" diff --git a/src/i18n/strings/ka.json b/src/i18n/strings/ka.json index f7413dc8219..cef91bf4995 100644 --- a/src/i18n/strings/ka.json +++ b/src/i18n/strings/ka.json @@ -67,9 +67,7 @@ "next": "შემდეგი", "no": "არა", "ok": "OK", - "pause": "პაუზა", "pin": "$", - "play": "დაკვრა", "proceed": "განაგრძეთ", "quote": "ციტირება", "react": "რეაგირება", @@ -2194,24 +2192,10 @@ }, "thread_view_back_action_label": "თემაში დაბრუნება", "time": { - "about_day_ago": "დაახლოებით ერთი დღის წინ", - "about_hour_ago": "დაახლოებით ერთი საათის წინ", - "about_minute_ago": "დაახლოებით ერთი წუთის წინ", "date_at_time": "%(date)s ზე %(time)s", - "few_seconds_ago": "რამდენიმე წამის წინ", "hours_minutes_seconds_left": "%(hours)sს %(minutes)sწთ %(seconds)sწმ დარჩა", - "in_about_day": "დაახლოებით ერთი დღის შემდეგ", - "in_about_hour": "დაახლოებით ერთი საათის შემდეგ", - "in_about_minute": "დაახლოებით ერთი წუთის შემდეგ", - "in_few_seconds": "რამდენიმე წამის შემდეგ", - "in_n_days": "%(num)sდღეებიდან", - "in_n_hours": "%(num)sსაათის შემდეგ", - "in_n_minutes": "%(num)sწუთის შემდეგ", "left": "%(timeRemaining)sდატოვა", "minutes_seconds_left": "%(minutes)sწთ %(seconds)sწმ დარჩა", - "n_days_ago": "%(num)sდღის წინ", - "n_hours_ago": "%(num)sსაათის წინ", - "n_minutes_ago": "%(num)sწუთის წინ", "seconds_left": "%(seconds)sწმ დარჩა", "short_days": "%(value)sდ", "short_days_hours_minutes_seconds": "%(days)sდ%(hours)s თ%(minutes)s მ%(seconds)s ს", @@ -2255,8 +2239,7 @@ "m.audio": { "error_downloading_audio": "შეცდომა აუდიოს ჩამოტვირთვისას", "error_processing_audio": "შეცდომა აუდიო შეტყობინების დამუშავებისას", - "error_processing_voice_message": "შეცდომა ხმოვანი შეტყობინების დამუშავებისას", - "unnamed_audio": "უსახელო აუდიო" + "error_processing_voice_message": "შეცდომა ხმოვანი შეტყობინების დამუშავებისას" }, "m.beacon_info": { "view_live_location": "" diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index cd91b89c2d6..b740a205130 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -3,14 +3,6 @@ "emoji_picker": "이모지 선택", "jump_first_invite": "첫 초대로 건너뜁니다.", "message_composer": "메세지 작성자", - "n_unread_messages": { - "%(count)s개의 읽지 않은 메시지.": "other", - "1개의 읽지 않은 메시지.": "one" - }, - "n_unread_messages_mentions": { - "언급을 포함한 %(count)s개의 읽지 않은 메시지.": "other", - "1개의 읽지 않은 언급.": "one" - }, "recent_rooms": "최근 방", "room_messsage_not_sent": "%(roomName)s에 미발송 메시지가 있는 방을 엽니다.", "room_n_unread_invite": "공개 방 %(roomName)s에 초대 되었습니다.", @@ -98,9 +90,7 @@ "ok": "네", "open": "열기", "open_menu": "메뉴 열기", - "pause": "일시중지", "pin": "핀", - "play": "재생", "proceed": "진행", "quote": "인용", "react": "리액션", @@ -468,10 +458,6 @@ "advanced": "고급", "all_chats": "모든 채팅", "analytics": "정보 분석", - "and_n_others": { - "외 한 명...": "one", - "외 %(count)s명...": "other" - }, "appearance": "모습", "application": "애플리케이션", "are_you_sure": "확신합니까?", @@ -1411,10 +1397,6 @@ "inviting_user_and_n_others": { "other": "%(user)s 및 다른 %(count)s명 초대 중" }, - "items_and_n_others": { - "님 외 한 명": "one", - "님 외 %(count)s명": "other" - }, "keyboard": { "activate_button": "선택한 버튼 활성화", "alt": "Alt", @@ -2097,9 +2079,6 @@ "some_messages_not_sent": "일부 메시지가 전송되지 않았습니다" }, "unknown_status_code_for_timeline_jump": "알 수 없는 상태 코드", - "unread_notifications_predecessor": { - "이 방의 이전 버전에서 읽지 않은 %(count)s개의 알림이 있습니다.": "one" - }, "upgrade_error_description": "서버가 선택한 방 버전을 지원하는지 확인한 뒤에 다시 시도해주세요.", "upgrade_error_title": "방 업그레이드 오류", "upgrade_warning_bar": "이 방을 업그레이드하면 현재 방의 인스턴스는 문을 닫고 같은 이름의 업그레이드된 방을 만듭니다.", @@ -2107,9 +2086,6 @@ "upgrade_warning_bar_unstable": "이 방은 방 버전 에서 실행 중이고, 이 홈서버가 불안정으로 표시됩니다.", "upgrade_warning_bar_upgraded": "이 방은 이미 업그레이드됬습니다.", "upload": { - "uploading_multiple_file": { - "%(filename)s 외 %(count)s개를 올리는 중": "other" - }, "uploading_single_file": "%(filename)s을(를) 올리는 중" }, "video_room": "이 채팅방은 영상채팅방입니다", @@ -2198,9 +2174,6 @@ }, "room_options": "채팅방 옵션", "show_less": "간단히 표시", - "show_n_more": { - "%(count)s개 더 보기": "other" - }, "show_previews": "메시지 미리 보기 표시", "sort": "정렬", "sort_by": "정렬 기준", @@ -3346,24 +3319,10 @@ "no_rooms_with_unread_threads": "아직 읽지 않은 스레드가 있는 방이 없습니다." }, "time": { - "about_day_ago": "약 1일 전", - "about_hour_ago": "약 1 시간 전", - "about_minute_ago": "약 1분 전", "date_at_time": "%(date)s, %(time)s", - "few_seconds_ago": "몇 초 전", "hours_minutes_seconds_left": "남은 시간: %(hours)s시간 %(minutes)s분 %(seconds)s초", - "in_about_day": "하루 정도 후", - "in_about_hour": "지금부터 한 시간 정도 후에", - "in_about_minute": "지금부터 약 1분 후", - "in_few_seconds": "몇 초 후", - "in_n_days": "지금부터 %(num)s 일 후에", - "in_n_hours": "지금부터 %(num)s 시간 후", - "in_n_minutes": "지금부터 %(num)s분 후", "left": "%(timeRemaining)s 남음", "minutes_seconds_left": "남은 시간: %(minutes)s분 %(seconds)s초", - "n_days_ago": "%(num)s일 전", - "n_hours_ago": "%(num)s 시간 전", - "n_minutes_ago": "%(num)s분 전", "seconds_left": "남은 시간: %(seconds)s초", "short_days": "%(value)s일", "short_days_hours_minutes_seconds": "%(days)s일 %(hours)s시간 %(minutes)s분 %(seconds)s초", @@ -3418,11 +3377,9 @@ "unable_to_find": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 찾을 수 없었습니다." }, "m.audio": { - "audio_player": "오디오 플레이어", "error_downloading_audio": "오디오 다운로드 중 오류 발생", "error_processing_audio": "오디오 메시지 처리 중 오류 발생", - "error_processing_voice_message": "음성 메시지 처리 중 오류 발생", - "unnamed_audio": "이름 없는 오디오" + "error_processing_voice_message": "음성 메시지 처리 중 오류 발생" }, "m.beacon_info": { "view_live_location": "실시간 위치 보기" @@ -3669,28 +3626,12 @@ "send_state_sending": "메시지를 보내는 중…", "send_state_sent": "귀하의 메시지가 전송되었습니다", "summary": { - "banned": { - "님이 %(count)s번 출입 금지 당했습니다": "other", - "님이 출입 금지 당했습니다": "one" - }, - "banned_multiple": { - "이 %(count)s번 출입 금지 당했습니다": "other", - "이 출입 금지 당했습니다": "one" - }, "changed_avatar": { "other": "%(oneUser)s님이 프로필 사진을 %(count)s회 변경했습니다" }, "changed_avatar_multiple": { "other": "%(severalUsers)s님이 프로필 사진을 %(count)s회 변경했습니다" }, - "changed_name": { - "%(oneUser)s님이 이름을 %(count)s번 바꿨습니다": "other", - "%(oneUser)s님이 이름을 바꿨습니다": "one" - }, - "changed_name_multiple": { - "%(severalUsers)s이 이름을 %(count)s번 바꿨습니다": "other", - "%(severalUsers)s이 이름을 바꿨습니다": "one" - }, "format": "%(nameList)s %(transitionList)s", "hidden_event": { "other": "%(oneUser)s님이 숨겨진 메시지 %(count)s개를 보냈습니다" @@ -3698,60 +3639,12 @@ "hidden_event_multiple": { "other": "%(severalUsers)s님이 숨겨진 메시지 %(count)s개를 보냈습니다" }, - "invite_withdrawn": { - "%(oneUser)s님이 초대를 %(count)s번 취소했습니다": "other", - "%(oneUser)s님이 초대를 취소했습니다": "one" - }, - "invite_withdrawn_multiple": { - "%(severalUsers)s이 초대를 %(count)s번 취소했습니다": "other", - "%(severalUsers)s이 초대를 취소했습니다": "one" - }, - "invited": { - "님이 초대받았습니다": "one", - "님이 %(count)s번 초대받았습니다": "other" - }, - "invited_multiple": { - "%(count)s번 초대했습니다": "other", - "초대했습니다": "one" - }, - "joined": { - "%(oneUser)s님이 %(count)s번 참여했습니다": "other", - "%(oneUser)s님이 참여했습니다": "one" - }, - "joined_and_left": { - "%(oneUser)s님이 %(count)s번 참여하고 떠났습니다": "other", - "%(oneUser)s님이 참여하고 떠났습니다": "one" - }, - "joined_and_left_multiple": { - "%(severalUsers)s님이 %(count)s번 참여하고 떠났습니다": "other", - "%(severalUsers)s님이 참여하고 떠났습니다": "one" - }, - "joined_multiple": { - "%(severalUsers)s님이 참여했습니다": "one", - "%(severalUsers)s이 %(count)s번 참여했습니다": "other" - }, "kicked": { "other": "%(count)s회 제거됨" }, "kicked_multiple": { "other": "%(count)s회 제거됨" }, - "left": { - "%(oneUser)s님이 %(count)s번 떠났습니다": "other", - "%(oneUser)s님이 떠났습니다": "one" - }, - "left_multiple": { - "%(severalUsers)s이 %(count)s번 떠났습니다": "other", - "%(severalUsers)s이 떠났습니다": "one" - }, - "no_change": { - "%(oneUser)s님이 %(count)s번 변경 사항을 되돌렸습니다": "other", - "%(oneUser)s님이 변경 사항을 되돌렸습니다": "one" - }, - "no_change_multiple": { - "%(severalUsers)s이 %(count)s번 변경 사항을 되돌렸습니다": "other", - "%(severalUsers)s이 변경 사항을 되돌렸습니다": "one" - }, "pinned_events": { "other": "%(oneUser)s님이 이 채팅방의 고정된 메시지를 %(count)s회 변경했습니다" }, @@ -3764,22 +3657,6 @@ "redacted_multiple": { "other": "%(severalUsers)s님이 메시지 %(count)s개를 삭제했습니다" }, - "rejected_invite": { - "%(oneUser)s님이 초대를 %(count)s번 거절했습니다": "other", - "%(oneUser)s님이 초대를 거절했습니다": "one" - }, - "rejected_invite_multiple": { - "%(severalUsers)s이 초대를 거절했습니다": "one", - "%(severalUsers)s이 초대를 %(count)s번 거절했습니다": "other" - }, - "rejoined": { - "%(oneUser)s님이 %(count)s번 떠나고 다시 참여했습니다": "other", - "%(oneUser)s님이 떠나고 다시 참여했습니다": "one" - }, - "rejoined_multiple": { - "%(severalUsers)s님이 떠나고 다시 참여했습니다": "one", - "%(severalUsers)s님이 %(count)s번 떠나고 다시 참여했습니다": "other" - }, "server_acls": { "other": "%(oneUser)s님이 서버 ACL을 %(count)s회 변경했습니다." }, @@ -3795,10 +3672,6 @@ }, "thread_info_basic": "한 스레드에서", "typing_indicator": { - "more_users": { - "%(names)s 외 %(count)s명이 적고 있습니다 …": "other", - "%(names)s 외 한 명이 적고 있습니다 …": "one" - }, "one_user": "%(displayName)s님이 적고 있습니다 …", "two_users": "%(names)s님과 %(lastPerson)s님이 적고 있습니다 …" }, @@ -3810,9 +3683,6 @@ } } }, - "truncated_list_n_more": { - "%(count)s개 더...": "other" - }, "unsupported_browser": { "description": "계속 진행할 경우 일부 기능이 작동하지 않을 수 있으며, 향후 데이터 손실 위험이 있습니다. %(brand)s 을 계속 사용하려면 브라우저를 업데이트하십시오.", "title": "%(brand)s 이 브라우저를 지원하지 않습니다" @@ -3853,10 +3723,7 @@ "not_image": "선택하신 파일은 유효한 이미지 파일이 아닙니다.", "title": "파일 업로드", "title_progress": "파일 업로드 (총 %(total)s개 중 %(current)s개)", - "upload_all_button": "전부 업로드", - "upload_n_others_button": { - "%(count)s개의 다른 파일 업로드": "one" - } + "upload_all_button": "전부 업로드" }, "user_info": { "admin_tools_section": "관리자 도구", @@ -3894,10 +3761,6 @@ "kick_space_warning": "관리자가 아닌 항목에는 여전히 접근할 수 있습니다.", "promote_warning": "사용자를 자신과 같은 권한 등급으로 올리는 것은 취소할 수 없습니다.", "redact": { - "confirm_button": { - "%(count)s개의 메시지 삭제": "other", - "1개의 메시지 삭제": "one" - }, "confirm_description_1": { "other": "%(user)s님이 작성한 %(count)s개의 메시지를 삭제하려고 합니다. 이 작업은 되돌릴 수 없으며, 대화에 참여한 모든 사용자에게서 해당 메시지가 영구적으로 삭제됩니다. 계속하시겠습니까?" }, diff --git a/src/i18n/strings/lo.json b/src/i18n/strings/lo.json index 14ed5f7f1fa..db7ef6ba1e2 100644 --- a/src/i18n/strings/lo.json +++ b/src/i18n/strings/lo.json @@ -75,9 +75,7 @@ "no": "ບໍ່", "ok": "ຕົກລົງ", "open": "ເປີດ", - "pause": "ຢຸດຊົ່ວຄາວ", "pin": "ປັກໝຸດ", - "play": "ຫຼິ້ນ", "quote": "ວົງຢືມ", "react": "ປະຕິກິລິຍາ", "refresh": "ໂຫຼດຫນ້າຈໍຄືນ", @@ -2287,21 +2285,7 @@ "show_thread_filter": "ສະແດງ:" }, "time": { - "about_day_ago": "ປະມານຫນຶ່ງມື້ກ່ອນຫນ້ານີ້", - "about_hour_ago": "ປະມານຫນຶ່ງຊົ່ວໂມງກ່ອນຫນ້ານີ້", - "about_minute_ago": "ປະມານໜຶ່ງວິນາທີກ່ອນຫນ້ານີ້", - "few_seconds_ago": "ສອງສາມວິນາທີກ່ອນຫນ້ານີ້", - "in_about_day": "ປະມານນຶ່ງມື້ຈາກນີ້", - "in_about_hour": "ປະມານຫນຶ່ງຊົ່ວໂມງຈາກປະຈຸບັນນີ້", - "in_about_minute": "ປະມານໜຶ່ງນາທີຕໍ່ຈາກນີ້", - "in_few_seconds": "ສອງສາມວິນາທີຕໍ່ຈາກນີ້ໄປ", - "in_n_days": "%(num)s ມື້ຕໍ່ຈາກນີ້", - "in_n_hours": "%(num)s ຊົ່ວໂມງຈາກປະຈຸບັນນີ້", - "in_n_minutes": "%(num)s ນາທີຕໍ່ຈາກນີ້", "left": "ຍັງເຫຼືອ %(timeRemaining)s", - "n_days_ago": "%(num)sມື້ກ່ອນຫນ້ານີ້", - "n_hours_ago": "%(num)s ຊົ່ວໂມງກ່ອນ", - "n_minutes_ago": "%(num)s ນາທີກ່ອນ", "seconds_left": "ຍັງເຫຼືອ %(seconds)s" }, "timeline": { @@ -2336,8 +2320,7 @@ "m.audio": { "error_downloading_audio": "ເກີດຄວາມຜິດພາດໃນການດາວໂຫຼດສຽງ", "error_processing_audio": "ການປະມວນຜົນຂໍ້ຄວາມສຽງຜິດພາດ", - "error_processing_voice_message": "ການປະມວນຜົນຂໍ້ຄວາມສຽງຜິດພາດ", - "unnamed_audio": "ສຽງບໍ່ມີຊື່" + "error_processing_voice_message": "ການປະມວນຜົນຂໍ້ຄວາມສຽງຜິດພາດ" }, "m.beacon_info": { "view_live_location": "ເບິ່ງສະຖານທີ່ປັດຈຸບັນ" diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index 8f3add6d433..0c04e1090d9 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -1782,21 +1782,7 @@ "open_thread": "Atidaryti temą" }, "time": { - "about_day_ago": "maždaug prieš dieną", - "about_hour_ago": "maždaug prieš valandą", - "about_minute_ago": "maždaug prieš minutę", "date_at_time": "%(date)s %(time)s", - "few_seconds_ago": "prieš kelias sekundes", - "in_about_day": "apie dieną nuo dabar", - "in_about_hour": "apie valandą nuo dabar", - "in_about_minute": "apie minutę nuo dabar", - "in_few_seconds": "keletą sekundžių nuo dabar", - "in_n_days": "%(num)s dienas(-ų) nuo dabar", - "in_n_hours": "%(num)s valandas(-ų) nuo dabar", - "in_n_minutes": "%(num)s minutes(-ų) nuo dabar", - "n_days_ago": "prieš %(num)s dienas(-ų)", - "n_hours_ago": "prieš %(num)s valandas(-ų)", - "n_minutes_ago": "prieš %(num)s minutes(-ų)", "seconds_left": "%(seconds)ss liko", "short_hours": "%(value)sval" }, diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index 951a5bae1e0..47d25ced021 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -87,9 +87,7 @@ "no": "Nē", "ok": "Labi", "open": "Atvērt", - "pause": "Pauzēt", "pin": "Piespraust", - "play": "Atskaņot", "proceed": "Turpināt", "quote": "Citēt", "react": "Reaģēt", @@ -1552,8 +1550,6 @@ "files_button": "Datnes", "pinned_messages": { "limits": { - "zero": "", - "one": "", "other": "Varat piespraust ne vairāk kā %(count)s logrīkus" } }, @@ -2764,24 +2760,10 @@ "no_rooms_with_unread_threads": "Jums vēl nav istabu ar nelasītiem pavedieniem." }, "time": { - "about_day_ago": "aptuveni dienu iepriekš", - "about_hour_ago": "aptuveni stundu iepriekš", - "about_minute_ago": "aptuveni minūti iepriekš", "date_at_time": "%(date)s pulksten %(time)s", - "few_seconds_ago": "pirms dažām sekundēm", "hours_minutes_seconds_left": "%(hours)sh %(minutes)s m %(seconds)s s atlicis", - "in_about_day": "aptuveni dienu kopš šī brīža", - "in_about_hour": "aptuveni stundu kopš šī brīža", - "in_about_minute": "aptuveni minūti kopš šī brīža", - "in_few_seconds": "dažas sekundes kopš šī brīža", - "in_n_days": "%(num)s dienas kopš šī brīža", - "in_n_hours": "%(num)s stundas kopš šī brīža", - "in_n_minutes": "%(num)s minūtes kopš šī brīža", "left": "%(timeRemaining)s atlicis", "minutes_seconds_left": "%(minutes)sm %(seconds)s s atlicis", - "n_days_ago": "%(num)s dienas iepriekš", - "n_hours_ago": "%(num)s stundas iepriekš", - "n_minutes_ago": "%(num)s minūtes iepriekš", "seconds_left": "%(seconds)s sekundes atlikušas", "short_days": "%(value)s d.", "short_days_hours_minutes_seconds": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", @@ -2828,8 +2810,7 @@ "m.audio": { "error_downloading_audio": "Kļūda skaņas lejupielādēšanā", "error_processing_audio": "Kļūda audio ziņas apstrādē", - "error_processing_voice_message": "Balss ziņas apstrādes kļūda", - "unnamed_audio": "Nenosaukts audio" + "error_processing_voice_message": "Balss ziņas apstrādes kļūda" }, "m.beacon_info": { "view_live_location": "Skatīties reāllaika atrašanās vietu" diff --git a/src/i18n/strings/mg_MG.json b/src/i18n/strings/mg_MG.json index d68e1454d64..ca70cf769f8 100644 --- a/src/i18n/strings/mg_MG.json +++ b/src/i18n/strings/mg_MG.json @@ -84,9 +84,7 @@ "next": "Fanarahana", "no": "Tsya", "ok": "Eny", - "pause": "Mihato", "pin": "Hahantona", - "play": "Milalao", "proceed": "Izotra", "quote": "Notsongaina", "react": "Mamaly", @@ -1613,7 +1611,6 @@ "files_button": "Rakitra", "pinned_messages": { "limits": { - "one": "", "other": "Azonao atao ihany ny manoratra%(count)s gadget" } }, @@ -2820,24 +2817,10 @@ "header": "Hetsika kofehy" }, "time": { - "about_day_ago": "Tokony ho iray andro izay", - "about_hour_ago": "Manakaiky adin'iray Teo ho eo", - "about_minute_ago": "Misy iray minitra Teo izay", "date_at_time": "% (Mihaona amin'ny % (fotoana", - "few_seconds_ago": "Segondra vitsy lasa", "hours_minutes_seconds_left": "% (ora) s h%(minitra) s m%(segondra) s ny tavela", - "in_about_day": "Anatiny iray andro eo ho eo", - "in_about_hour": "Adiny iray eo ho eo", - "in_about_minute": "Afaka iray minitra eo ho eo", - "in_few_seconds": "Afaka segondra vitsy", - "in_n_days": "%(num) s andro manomboka izao", - "in_n_hours": "% (num) sAnatiny ora vitsivitsy", - "in_n_minutes": "% (Num) sAfaka minitra vitsy", "left": "%(timeRemaining) sAnkavia", "minutes_seconds_left": "% (minutes) sm% (segondra) s ny ambiny", - "n_days_ago": "%(num)s Andro vitsivitsy izay", - "n_hours_ago": "%(num)sOra maromaro", - "n_minutes_ago": "%(Num)s Minitra vitsivitsy izay", "seconds_left": "% (secondes) s ny ambiny", "short_days": "% (Sandales d", "short_days_hours_minutes_seconds": "%(andro) s d % (ora) sh% (minitra) s m % (segondra)s s", @@ -2882,8 +2865,7 @@ "m.audio": { "error_downloading_audio": "Hadisoana tamin'ny fampidinana feo", "error_processing_audio": "Hadisoana tamin'ny fanodinana hafatra audio", - "error_processing_voice_message": "Hadisoana tamin'ny fanodinana hafatra feo", - "unnamed_audio": "Audio tsy voatonona anarana" + "error_processing_voice_message": "Hadisoana tamin'ny fanodinana hafatra feo" }, "m.beacon_info": { "view_live_location": "Jereo ny toerana mivantana" @@ -3284,7 +3266,6 @@ } }, "truncated_list_n_more": { - "one": "", "other": "SY%(count)s Bebe kokoa..." }, "unsupported_server_description": "Ity mpizara ity dia mampiasa dikan-teny taloha any. Hiverina any amin'ny %(version)s mampiasa%(brand)s tsy misy hadisoana.", diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json index ee867e79bba..6a85b964702 100644 --- a/src/i18n/strings/nb_NO.json +++ b/src/i18n/strings/nb_NO.json @@ -100,9 +100,7 @@ "ok": "OK", "open": "Åpne", "open_menu": "Åpne meny", - "pause": "Pause", "pin": "Fest", - "play": "Spill av", "proceed": "Fortsett", "quote": "Sitat", "react": "Reager", @@ -1872,7 +1870,6 @@ "other": "%(count)s festede meldinger" }, "limits": { - "one": "", "other": "Du kan bare feste opptil %(count)s widgets" }, "menu": "Åpne meny", @@ -2199,9 +2196,6 @@ }, "room_options": "Rominnstillinger", "show_less": "Vis mindre", - "show_n_more": { - "Vis %(count)s til": "Vis %(count)s mer" - }, "show_previews": "Vis forhåndsvisninger av meldinger", "sort": "Sorter", "sort_by": "Sorter etter", @@ -3362,24 +3356,10 @@ "no_rooms_with_unread_threads": "Du har ikke rom med uleste tråder ennå." }, "time": { - "about_day_ago": "cirka 1 dag siden", - "about_hour_ago": "cirka 1 time siden", - "about_minute_ago": "cirka 1 minutt siden", "date_at_time": "%(date)s klokken %(time)s", - "few_seconds_ago": "noen sekunder siden", "hours_minutes_seconds_left": "%(hours)st%(minutes)s m%(seconds)s s igjen", - "in_about_day": "rundt en dag fra nå", - "in_about_hour": "rundt en time fra nå", - "in_about_minute": "rundt et minutt fra nå", - "in_few_seconds": "om noen sekunder fra nå", - "in_n_days": "%(num)s dager fra nå", - "in_n_hours": "%(num)s timer fra nå", - "in_n_minutes": "%(num)s minutter fra nå", "left": "%(timeRemaining)s igjen", "minutes_seconds_left": "%(minutes)sm%(seconds)s s igjen", - "n_days_ago": "%(num)s dager siden", - "n_hours_ago": "%(num)s timer siden", - "n_minutes_ago": "%(num)s minutter siden", "seconds_left": "%(seconds)ser igjen", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)s t %(minutes)s m %(seconds)s er", @@ -3434,11 +3414,9 @@ "unable_to_find": "Prøvde å laste inn et bestemt punkt i dette rommets tidslinje, men klarte ikke å finne det." }, "m.audio": { - "audio_player": "Lydavspiller", "error_downloading_audio": "Feil ved nedlasting av lyd", "error_processing_audio": "Feil ved prosessering av lydmelding", - "error_processing_voice_message": "Feil ved prosessering av talemelding", - "unnamed_audio": "Ikke navngitt lyd" + "error_processing_voice_message": "Feil ved prosessering av talemelding" }, "m.beacon_info": { "view_live_location": "Se lokasjon i sanntid" @@ -3709,9 +3687,6 @@ "one": "%(oneUser)s endret navn", "other": "%(oneUser)s endret navn %(count)s ganger" }, - "changed_name_multiple": { - "%(severalUsers)s endret navnene sine": "one" - }, "format": "%(nameList)s%(transitionList)s", "hidden_event": { "one": "%(oneUser)ssendte en skjult melding", @@ -3725,9 +3700,6 @@ "one": "%(oneUser)sfikk invitasjonen trukket tilbake", "other": "%(oneUser)sfikk invitasjonen trukket tilbake %(count)s ganger" }, - "invite_withdrawn_multiple": { - "%(severalUsers)sfikk sine invitasjoner trukket tilbake": "one" - }, "invited": { "one": "ble invitert", "other": "ble invitert %(count)s ganger" @@ -3740,9 +3712,6 @@ "one": "%(oneUser)sble med", "other": "%(oneUser)sble med %(count)s ganger" }, - "joined_and_left": { - "%(oneUser)sble med og forlot igjen": "one" - }, "joined_and_left_multiple": { "one": "%(severalUsers)sble med og forlot", "other": "%(severalUsers)sble med og forlot %(count)s ganger" @@ -3842,9 +3811,6 @@ } } }, - "truncated_list_n_more": { - "Og %(count)s til...": "other" - }, "unsupported_browser": { "description": "Hvis du fortsetter, kan noen funksjoner slutte å fungere, og det er en risiko for at du kan miste data i fremtiden. Oppdater nettleseren din for å fortsette å bruke%(brand)s.", "title": "%(brand)s støtter ikke denne nettleseren" @@ -3885,11 +3851,7 @@ "not_image": "Filen du har valgt, er ikke en gyldig bildefil.", "title": "Last opp filer", "title_progress": "Last opp filer (%(current)s av %(total)s)", - "upload_all_button": "Last opp alle", - "upload_n_others_button": { - "Last opp %(count)s andre filer": "Last opp %(count)s andre filer", - "Last opp %(count)s annen fil": "Last opp %(count)s en annen fil" - } + "upload_all_button": "Last opp alle" }, "user_info": { "admin_tools_section": "Adminverktøy", @@ -3927,10 +3889,6 @@ "kick_space_warning": "De vil fortsatt kunne få tilgang til det du ikke er administrator av.", "promote_warning": "Du vil ikke kunne angre denne endringen ettersom du promoterer brukeren til å ha samme tilgangsnivå som deg selv.", "redact": { - "confirm_button": { - "Slett %(count)s meldinger": "Fjern 1 melding", - "Slett 1 melding": "Fjern %(count)s meldinger" - }, "confirm_description_1": { "one": "Du er i ferd med å fjerne %(count)s melding fra %(user)s. Dette vil fjerne dem permanent for alle i samtalen. Ønsker du å fortsette?", "other": "Du er i ferd med å fjerne %(count)s meldinger fra %(user)s. Dette vil fjerne dem permanent for alle i samtalen. Ønsker du å fortsette?" diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 723b8b3a6dd..8526543614d 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -86,9 +86,7 @@ "no": "Nee", "ok": "Oké", "open": "Openen", - "pause": "Pauze", "pin": "Vastmaken", - "play": "Afspelen", "proceed": "Doorgaan", "quote": "Citeren", "react": "Reageren", @@ -2420,24 +2418,10 @@ "show_thread_filter": "Toon:" }, "time": { - "about_day_ago": "ongeveer een dag geleden", - "about_hour_ago": "ongeveer een uur geleden", - "about_minute_ago": "ongeveer een minuut geleden", "date_at_time": "%(date)s om %(time)s", - "few_seconds_ago": "enige tellen geleden", "hours_minutes_seconds_left": "%(hours)su, %(minutes)sm %(seconds)ss over", - "in_about_day": "over een dag of zo", - "in_about_hour": "over ongeveer een uur", - "in_about_minute": "over ongeveer een minuut", - "in_few_seconds": "over een paar tellen", - "in_n_days": "over %(num)s dagen", - "in_n_hours": "over %(num)s uur", - "in_n_minutes": "over %(num)s minuten", "left": "%(timeRemaining)s over", "minutes_seconds_left": "%(minutes)sm %(seconds)ss over", - "n_days_ago": "%(num)s dagen geleden", - "n_hours_ago": "%(num)s uur geleden", - "n_minutes_ago": "%(num)s minuten geleden", "seconds_left": "%(seconds)s's over", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)su %(minutes)sm %(seconds)ss", @@ -2477,8 +2461,7 @@ "m.audio": { "error_downloading_audio": "Fout bij downloaden van audio", "error_processing_audio": "Fout bij verwerking audiobericht", - "error_processing_voice_message": "Fout bij verwerking spraakbericht", - "unnamed_audio": "Naamloze audio" + "error_processing_voice_message": "Fout bij verwerking spraakbericht" }, "m.beacon_info": { "view_live_location": "Bekijk live locatie" diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index 7332281e5e7..727f3c80735 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -102,9 +102,7 @@ "ok": "OK", "open": "Otwórz", "open_menu": "Otwórz menu", - "pause": "Wstrzymaj", "pin": "Przypnij", - "play": "Odtwórz", "proceed": "Kontynuuj", "quote": "Cytuj", "react": "Dodaj reakcję", @@ -3380,24 +3378,10 @@ "no_rooms_with_unread_threads": "Nie masz jeszcze pokoi z nieprzeczytanymi wątkami." }, "time": { - "about_day_ago": "około dzień temu", - "about_hour_ago": "około godziny temu", - "about_minute_ago": "około minuty temu", "date_at_time": "%(date)s o %(time)s", - "few_seconds_ago": "kilka sekund temu", "hours_minutes_seconds_left": "pozostało %(hours)s godz. %(minutes)s min. %(seconds)ss", - "in_about_day": "około dnia od teraz", - "in_about_hour": "około godziny od teraz", - "in_about_minute": "około minuty od teraz", - "in_few_seconds": "za kilka sekund", - "in_n_days": "za %(num)s dni", - "in_n_hours": "za %(num)s godzin", - "in_n_minutes": "za %(num)s minut", "left": "%(timeRemaining)s pozostało", "minutes_seconds_left": "pozostało %(minutes)s min. %(seconds)ss", - "n_days_ago": "%(num)s dni temu", - "n_hours_ago": "%(num)s godzin temu", - "n_minutes_ago": "%(num)s minut temu", "seconds_left": "pozostało %(seconds)ss", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)s godz. %(minutes)s min. %(seconds)ss", @@ -3452,11 +3436,9 @@ "unable_to_find": "Próbowano załadować konkretny punkt na osi czasu w tym pokoju, ale nie można go znaleźć." }, "m.audio": { - "audio_player": "Odtwarzacz audio", "error_downloading_audio": "Wystąpił błąd w trakcie pobierania audio", "error_processing_audio": "Wystąpił błąd procesowania wiadomości audio", - "error_processing_voice_message": "Wystąpił błąd procesowania wiadomości głosowej", - "unnamed_audio": "Audio bez nazwy" + "error_processing_voice_message": "Wystąpił błąd procesowania wiadomości głosowej" }, "m.beacon_info": { "view_live_location": "Pokaż lokalizację na żywo" diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index 2ed647b43ef..7ff51fb9cab 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -88,9 +88,7 @@ "ok": "OK", "open": "Abrir", "open_menu": "Abrir menu", - "pause": "Pausar", "pin": "Fixar", - "play": "Reproduzir", "proceed": "Prosseguir", "quote": "Citar", "react": "Reagir", @@ -1781,7 +1779,6 @@ "other": "%(count)s Mensagens fixadas" }, "limits": { - "one": "", "other": "Só podes fixar até %(count)s widgets" }, "menu": "Abrir o menu", @@ -3182,24 +3179,10 @@ "no_rooms_with_unread_threads": "Ainda não tens salas com tópicos não lidos." }, "time": { - "about_day_ago": "há cerca de um dia", - "about_hour_ago": "há cerca de uma hora", - "about_minute_ago": "há cerca de um minuto", "date_at_time": "%(date)s às %(time)s", - "few_seconds_ago": "há alguns segundos atrás", "hours_minutes_seconds_left": "%(hours)sh %(minutes)sm %(seconds)ss restantes", - "in_about_day": "daqui a um dia", - "in_about_hour": "daqui a uma hora", - "in_about_minute": "daqui a um minuto", - "in_few_seconds": "daqui a alguns segundos", - "in_n_days": "daqui a %(num)s dias", - "in_n_hours": "daqui a %(num)s horas", - "in_n_minutes": "daqui a %(num)s minutos", "left": "%(timeRemaining)s ainda", "minutes_seconds_left": "%(minutes)sm %(seconds)ss restantes", - "n_days_ago": "%(num)s dias atrás", - "n_hours_ago": "%(num)s horas atrás", - "n_minutes_ago": "%(num)s minutos atrás", "seconds_left": "%(seconds)ss restantes", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", @@ -3256,8 +3239,7 @@ "m.audio": { "error_downloading_audio": "Erro ao descarregar áudio", "error_processing_audio": "Erro no processamento da mensagem de áudio", - "error_processing_voice_message": "Erro no processamento da mensagem de voz", - "unnamed_audio": "Áudio sem nome" + "error_processing_voice_message": "Erro no processamento da mensagem de voz" }, "m.beacon_info": { "view_live_location": "Vê a localização ao vivo" @@ -3664,7 +3646,6 @@ } }, "truncated_list_n_more": { - "one": "", "other": "E %(count)s mais..." }, "unsupported_browser": { diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index d1d8e16e61d..55272a4e920 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -101,9 +101,7 @@ "ok": "Ok", "open": "Abrir", "open_menu": "Abrir menu", - "pause": "Pausar", "pin": "Alfinete", - "play": "Reproduzir", "proceed": "Prosseguir", "quote": "Citar", "react": "Adicionar reação", @@ -3390,24 +3388,10 @@ "no_rooms_with_unread_threads": "Você ainda não tem salas com tópicos não lidos." }, "time": { - "about_day_ago": "há aproximadamente um dia", - "about_hour_ago": "há aproximadamente uma hora", - "about_minute_ago": "há aproximadamente um minuto", "date_at_time": "%(date)s às %(time)s", - "few_seconds_ago": "há alguns segundos", "hours_minutes_seconds_left": "%(hours)sh %(minutes)sm %(seconds)ss restantes", - "in_about_day": "dentro de aproximadamente um dia", - "in_about_hour": "dentro de aproximadamente uma hora", - "in_about_minute": "dentro de aproximadamente um minuto", - "in_few_seconds": "dentro de alguns segundos", - "in_n_days": "dentro de %(num)s dias", - "in_n_hours": "dentro de %(num)s horas", - "in_n_minutes": "dentro de %(num)s minutos", "left": "%(timeRemaining)s restante(s)", "minutes_seconds_left": "%(minutes)sm %(seconds)ss restantes", - "n_days_ago": "há %(num)s dias", - "n_hours_ago": "há %(num)s horas", - "n_minutes_ago": "há %(num)s minutos", "seconds_left": "%(seconds)s restantes", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)s h %(minutes)s m %(seconds)s s", @@ -3462,11 +3446,9 @@ "unable_to_find": "Não foi possível carregar um trecho específico da conversa desta sala." }, "m.audio": { - "audio_player": "Reprodutor de Áudio", "error_downloading_audio": "Erro ao baixar o áudio", "error_processing_audio": "Erro ao processar a mensagem de áudio", - "error_processing_voice_message": "Erro ao processar a mensagem de voz", - "unnamed_audio": "Áudio sem nome" + "error_processing_voice_message": "Erro ao processar a mensagem de voz" }, "m.beacon_info": { "view_live_location": "Ver localização ao vivo" diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 71b78402c45..1430467e034 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -103,9 +103,7 @@ "ok": "ОК", "open": "Открыть", "open_menu": "Открыть меню", - "pause": "Пауза", "pin": "Закрепить", - "play": "Воспроизведение", "proceed": "Продолжить", "quote": "Цитировать", "react": "Отреагировать", @@ -3412,24 +3410,10 @@ "no_rooms_with_unread_threads": "У вас пока нет комнат с непрочитанными обсуждениями." }, "time": { - "about_day_ago": "около суток назад", - "about_hour_ago": "около часа назад", - "about_minute_ago": "около минуты назад", "date_at_time": "%(date)s в %(time)s", - "few_seconds_ago": "несколько секунд назад", "hours_minutes_seconds_left": "Осталось %(hours)sч %(minutes)sм %(seconds)sс", - "in_about_day": "примерно через день", - "in_about_hour": "примерно через час", - "in_about_minute": "примерно через минуту", - "in_few_seconds": "несколько секунд назад", - "in_n_days": "%(num)s дней спустя", - "in_n_hours": "%(num)s часов спустя", - "in_n_minutes": "%(num)s минут спустя", "left": "Осталось %(timeRemaining)s", "minutes_seconds_left": "Осталось %(minutes)sм %(seconds)sс", - "n_days_ago": "%(num)s дней назад", - "n_hours_ago": "%(num)s часов назад", - "n_minutes_ago": "%(num)s минут назад", "seconds_left": "%(seconds)s осталось", "short_days": "%(value)sд", "short_days_hours_minutes_seconds": "%(days)s д %(hours)s ч %(minutes)s мин %(seconds)s с", @@ -3484,11 +3468,9 @@ "unable_to_find": "Попытка загрузить выбранный интервал истории чата этой комнаты не удалась, так как запрошенный элемент не найден." }, "m.audio": { - "audio_player": "Аудиоплеер", "error_downloading_audio": "Ошибка загрузки аудио", "error_processing_audio": "Ошибка обработки звукового сообщения", - "error_processing_voice_message": "Ошибка при обработке голосового сообщения", - "unnamed_audio": "Безымянное аудио" + "error_processing_voice_message": "Ошибка при обработке голосового сообщения" }, "m.beacon_info": { "view_live_location": "Посмотреть трансляцию местоположения" @@ -3897,11 +3879,6 @@ } } }, - "truncated_list_n_more": { - "one": "%(count)s...", - "few": "И еще %(count)s...", - "many": "И еще %(count)s..." - }, "unsupported_browser": { "description": "Если вы продолжите, некоторые функции могут перестать работать, и существует риск потери данных в будущем. Обновите браузер, чтобы продолжить использование %(brand)s.", "title": "%(brand)s не поддерживает этот браузер" diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 628cddb9239..11d1f2f3773 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -105,9 +105,7 @@ "ok": "OK", "open": "Otvoriť", "open_menu": "Otvoriť ponuku", - "pause": "Pozastaviť", "pin": "Špendlík", - "play": "Prehrať", "proceed": "Pokračovať", "quote": "Citovať", "react": "Reagovať", @@ -1933,8 +1931,6 @@ "other": "%(count)s pripnutých správ" }, "limits": { - "one": "Môžete pripnúť iba %(count)s widget", - "few": "Môžete pripnúť iba %(count)s widgety", "other": "Môžete pripnúť iba %(count)s widgetov" }, "menu": "Otvoriť ponuku", @@ -2153,7 +2149,6 @@ "status_bar": { "delete_all": "Vymazať všetko", "exceeded_resource_limit": "Vaša správa nebola odoslaná, pretože bol prekročený limit prostriedkov tohoto domovského servera. Prosím, kontaktujte správcu služieb aby ste službu mohli naďalej používať.", - "history_visible": "Správy, ktoré odošlete, budú zdieľané s novými členmi pozvanými do tejto miestnosti. Zistiť viac", "homeserver_blocked": "Vaša správa nebola odoslaná, pretože tento domovský server bol zablokovaný jeho správcom. Prosím, kontaktujte správcu služieb, aby ste službu mohli naďalej používať.", "monthly_user_limit_reached": "Vaša správa nebola odoslaná, pretože bol dosiahnutý mesačný limit počtu aktívnych používateľov tohoto domovského servera. Prosím, kontaktujte správcu služieb aby ste službu mohli naďalej používať.", "requires_consent_agreement": "Nemôžete posielať žiadne správy, kým si neprečítate a neodsúhlasíte naše zmluvné podmienky.", @@ -3452,24 +3447,10 @@ "no_rooms_with_unread_threads": "Zatiaľ nemáte miestnosti s neprečítanými vláknami." }, "time": { - "about_day_ago": "asi pred jedným dňom", - "about_hour_ago": "približne pred hodinou", - "about_minute_ago": "približne pred minútou", "date_at_time": "%(date)s o %(time)s", - "few_seconds_ago": "pred pár sekundami", "hours_minutes_seconds_left": "ostáva %(hours)sh %(minutes)sm %(seconds)ss", - "in_about_day": "približne o deň", - "in_about_hour": "približne o hodinu", - "in_about_minute": "približne o minútu", - "in_few_seconds": "o pár sekúnd", - "in_n_days": "o %(num)s dní", - "in_n_hours": "o %(num)s hodín", - "in_n_minutes": "o %(num)s minút", "left": "zostáva %(timeRemaining)s", "minutes_seconds_left": "ostáva %(minutes)sm %(seconds)ss", - "n_days_ago": "pred %(num)s dňami", - "n_hours_ago": "pred %(num)s hodinami", - "n_minutes_ago": "pred %(num)s minútami", "seconds_left": "%(seconds)ss ostáva", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", @@ -3524,11 +3505,9 @@ "unable_to_find": "Pokus o načítanie konkrétneho bodu na časovej osi tejto miestnosti, ale nepodarilo sa ho nájsť." }, "m.audio": { - "audio_player": "Prehrávač zvuku", "error_downloading_audio": "Chyba pri sťahovaní zvuku", "error_processing_audio": "Chyba pri spracovaní hlasovej správy", - "error_processing_voice_message": "Chyba pri spracovaní hlasovej správy", - "unnamed_audio": "Nepomenovaný zvukový záznam" + "error_processing_voice_message": "Chyba pri spracovaní hlasovej správy" }, "m.beacon_info": { "view_live_location": "Zobraziť polohu v reálnom čase" diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 30200eeae9b..a5248c2c51e 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -78,9 +78,7 @@ "next": "Pasuesja", "no": "Jo", "open": "Hape", - "pause": "Ndalesë", "pin": "Fiksoje", - "play": "Luaje", "quote": "Citim", "react": "Reagoni", "refresh": "Rifreskoje", @@ -2651,24 +2649,10 @@ "show_thread_filter": "Shfaq:" }, "time": { - "about_day_ago": "rreth një ditë më parë", - "about_hour_ago": "rreth një orë më parë", - "about_minute_ago": "rreth një minutë më parë", "date_at_time": "%(date)s më %(time)s", - "few_seconds_ago": "pak sekonda më parë", "hours_minutes_seconds_left": "Edhe %(hours)sh %(minutes)sm %(seconds)ss", - "in_about_day": "rreth një ditë nga tani", - "in_about_hour": "rreth një orë nga tani", - "in_about_minute": "rreth një minutë nga tani", - "in_few_seconds": "pak sekonda nga tani", - "in_n_days": "%(num)s ditë nga tani", - "in_n_hours": "%(num)s orë nga tani", - "in_n_minutes": "%(num)s minuta nga tani", "left": "Edhe %(timeRemaining)s", "minutes_seconds_left": "Edhe %(minutes)sm %(seconds)ss", - "n_days_ago": "%(num)s ditë më parë", - "n_hours_ago": "%(num)s orë më parë", - "n_minutes_ago": "%(num)s minuta më parë", "seconds_left": "Edhe %(seconds)ss" }, "timeline": { @@ -2704,8 +2688,7 @@ "m.audio": { "error_downloading_audio": "Gabim në shkarkim audioje", "error_processing_audio": "Gabim në përpunim mesazhi audio", - "error_processing_voice_message": "Gabim në përpunimin e mesazhit zanor", - "unnamed_audio": "Audio pa emër" + "error_processing_voice_message": "Gabim në përpunimin e mesazhit zanor" }, "m.beacon_info": { "view_live_location": "Shihni vendndodhje aty për aty" diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 31033980330..68ecf098f53 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -100,9 +100,7 @@ "ok": "OK", "open": "Öppna", "open_menu": "Öppna menyn", - "pause": "Pausa", "pin": "Häftstift", - "play": "Spela", "proceed": "Fortsätt", "quote": "Citera", "react": "Reagera", @@ -3297,24 +3295,10 @@ "no_rooms_with_unread_threads": "Du har inga rum med olästa trådar än." }, "time": { - "about_day_ago": "cirka en dag sedan", - "about_hour_ago": "cirka en timme sedan", - "about_minute_ago": "cirka en minut sedan", "date_at_time": "%(date)s vid %(time)s", - "few_seconds_ago": "några sekunder sedan", "hours_minutes_seconds_left": "%(hours)st %(minutes)sm %(seconds)ss kvar", - "in_about_day": "om cirka en dag", - "in_about_hour": "om cirka en timme", - "in_about_minute": "om cirka en minut", - "in_few_seconds": "om några sekunder", - "in_n_days": "om %(num)s dagar", - "in_n_hours": "om %(num)s timmar", - "in_n_minutes": "om %(num)s minuter", "left": "%(timeRemaining)s kvar", "minutes_seconds_left": "%(minutes)sm %(seconds)ss kvar", - "n_days_ago": "%(num)s dagar sedan", - "n_hours_ago": "%(num)s timmar sedan", - "n_minutes_ago": "%(num)s minuter sedan", "seconds_left": "%(seconds)ss kvar", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)st %(minutes)sm %(seconds)ss", @@ -3369,11 +3353,9 @@ "unable_to_find": "Försökte ladda en specifik punkt i det här rummets tidslinje, men kunde inte hitta den." }, "m.audio": { - "audio_player": "Ljudspelare", "error_downloading_audio": "Fel vid nedladdning av ljud", "error_processing_audio": "Fel vid hantering av ljudmeddelande", - "error_processing_voice_message": "Fel vid hantering av röstmeddelande", - "unnamed_audio": "Namnlöst ljud" + "error_processing_voice_message": "Fel vid hantering av röstmeddelande" }, "m.beacon_info": { "view_live_location": "Se realtidsposition" diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index ecd80897a2d..a3d9bdddaae 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -87,9 +87,7 @@ "ok": "Tamam", "open": "Aç", "open_menu": "Menüyü aç", - "pause": "Durdur", "pin": "PIN Kodu", - "play": "Oynat", "proceed": "İlerle", "quote": "Alıntı", "react": "Tepki ver", @@ -1779,7 +1777,6 @@ "other": "%(count)s Sabitlenmiş mesaj" }, "limits": { - "one": "", "other": "En fazla %(count)s widget'ı sabitleyebilirsiniz" }, "menu": "Menüyü aç", @@ -3153,24 +3150,10 @@ "no_rooms_with_unread_threads": "Henüz okunmamış mesaj dizilerinin bulunduğu odalarınız yok." }, "time": { - "about_day_ago": "yaklaşık bir gün önce", - "about_hour_ago": "yaklaşık bir saat önce", - "about_minute_ago": "yaklaşık bir dakika önce", "date_at_time": "%(date)s e %(time)s", - "few_seconds_ago": "bir kaç saniye önce", "hours_minutes_seconds_left": "%(hours)sh %(minutes)sm %(seconds)ss kaldı", - "in_about_day": "şu andan itibaren yaklaşık bir gün", - "in_about_hour": "şu andan itibaren yaklaşık bir saat", - "in_about_minute": "şu andan itibaren yaklaşık bir dakika", - "in_few_seconds": "şu andan itibaren bir kaç saniye", - "in_n_days": "şu andan itibaren %(num)s gün", - "in_n_hours": "şu andan itibaren %(num)s saat", - "in_n_minutes": "şu andan itibaren %(num)s dakika", "left": "%(timeRemaining)s kaldı", "minutes_seconds_left": "%(minutes)sm %(seconds)ss kaldı", - "n_days_ago": "%(num)s gün önce", - "n_hours_ago": "%(num)s saat önce", - "n_minutes_ago": "%(num)s dakika önce", "seconds_left": "%(seconds)s saniye kaldı", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)sd %(hours)sh %(minutes)sm %(seconds)ss", @@ -3227,8 +3210,7 @@ "m.audio": { "error_downloading_audio": "Ses dosyası indirilirken hata oluştu", "error_processing_audio": "Sesli mesaj işlenirken hata oluştu", - "error_processing_voice_message": "Sesli mesaj işlenirken hata oluştu", - "unnamed_audio": "İsimsiz ses" + "error_processing_voice_message": "Sesli mesaj işlenirken hata oluştu" }, "m.beacon_info": { "view_live_location": "Canlı konumu görüntüle" diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index bfc97d0fde0..31f567a4b32 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -103,9 +103,7 @@ "ok": "Гаразд", "open": "Відкрити", "open_menu": "Відкрити меню", - "pause": "Призупинити", "pin": "Кнопка", - "play": "Відтворити", "proceed": "Продовжити", "quote": "Цитувати", "react": "Відреагувати", @@ -3400,24 +3398,10 @@ "no_rooms_with_unread_threads": "У вас ще немає кімнат з непрочитаними гілками." }, "time": { - "about_day_ago": "близько доби тому", - "about_hour_ago": "близько години тому", - "about_minute_ago": "близько хвилини тому", "date_at_time": "%(date)s о %(time)s", - "few_seconds_ago": "Декілька секунд тому", "hours_minutes_seconds_left": "Залишилося %(hours)sгод %(minutes)sхв %(seconds)sс", - "in_about_day": "приблизно через день", - "in_about_hour": "приблизно через годину", - "in_about_minute": "приблизно через хвилинку", - "in_few_seconds": "декілька секунд тому", - "in_n_days": "%(num)s днів по тому", - "in_n_hours": "%(num)s годин по тому", - "in_n_minutes": "%(num)s хвилин по тому", "left": "Іще %(timeRemaining)s", "minutes_seconds_left": "Залишилося %(minutes)sхв %(seconds)sс", - "n_days_ago": "%(num)s днів тому", - "n_hours_ago": "%(num)s годин тому", - "n_minutes_ago": "%(num)s хвилин тому", "seconds_left": "Ще %(seconds)s с", "short_days": "%(value)sд", "short_days_hours_minutes_seconds": "%(days)sд %(hours)sгод %(minutes)sхв %(seconds)sс", @@ -3472,11 +3456,9 @@ "unable_to_find": "Не вдалося знайти вказаної позиції в стрічці цієї кімнати." }, "m.audio": { - "audio_player": "Звуковий програвач", "error_downloading_audio": "Помилка завантаження аудіо", "error_processing_audio": "Помилка обробки аудіоповідомлення", - "error_processing_voice_message": "Помилка обробки голосового повідомлення", - "unnamed_audio": "Аудіо без назви" + "error_processing_voice_message": "Помилка обробки голосового повідомлення" }, "m.beacon_info": { "view_live_location": "Показувати місцеперебування наживо" @@ -3892,11 +3874,6 @@ } } }, - "truncated_list_n_more": { - "one": "", - "few": "І ще %(count)s…", - "many": "І ще %(count)s…" - }, "unsupported_browser": { "description": "Якщо ви продовжите, деякі функції можуть перестати працювати, і існує ризик втрати даних у майбутньому. Оновіть браузер, щоб продовжити користуватись %(brand)s.", "title": "%(brand)s не підтримує цей браузер" diff --git a/src/i18n/strings/vi.json b/src/i18n/strings/vi.json index 2fedb71c847..c611f48cd4e 100644 --- a/src/i18n/strings/vi.json +++ b/src/i18n/strings/vi.json @@ -83,9 +83,7 @@ "no": "Không", "ok": "Ok", "open": "Mở", - "pause": "Tạm dừng", "pin": "Ghim", - "play": "Chạy", "proceed": "Tiếp tục", "quote": "Trích", "react": "Phản ứng", @@ -2597,23 +2595,9 @@ "show_thread_filter": "Hiển thị:" }, "time": { - "about_day_ago": "khoảng một ngày trước", - "about_hour_ago": "khoảng một giờ trước", - "about_minute_ago": "khoảng một phút trước", "date_at_time": "%(date)s lúc %(time)s", - "few_seconds_ago": "vài giây trước", "hours_minutes_seconds_left": "Còn lại %(hours)s giờ %(minutes)s phút %(seconds)s giây", - "in_about_day": "khoảng một ngày kể từ bây giờ", - "in_about_hour": "khoảng một giờ kể từ bây giờ", - "in_about_minute": "khoảng một phút kể từ bây giờ", - "in_few_seconds": "một vài giây kể từ bây giờ", - "in_n_days": "%(num)s ngày kể từ bây giờ", - "in_n_hours": "%(num)s giờ kể từ bây giờ", - "in_n_minutes": "%(num)s phút kể từ bây giờ", "minutes_seconds_left": "Còn lại %(minutes)s phút %(seconds)s giây", - "n_days_ago": "%(num)s ngày trước", - "n_hours_ago": "%(num)s giờ trước", - "n_minutes_ago": "%(num)s phút trước", "seconds_left": "Còn %(seconds)s giây", "short_days": "%(value)sngày", "short_days_hours_minutes_seconds": "%(days)s ngày %(hours)s giờ %(minutes)s phút %(seconds)s giây", @@ -2656,8 +2640,7 @@ "m.audio": { "error_downloading_audio": "Lỗi khi tải xuống âm thanh", "error_processing_audio": "Lỗi khi xử lý tin nhắn âm thanh", - "error_processing_voice_message": "Lỗi khi xử lý tin nhắn thoại", - "unnamed_audio": "Âm thanh không tên" + "error_processing_voice_message": "Lỗi khi xử lý tin nhắn thoại" }, "m.call": { "video_call_ended": "Cuộc gọi truyền hình đã kết thúc", diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 489e56ca53c..9a399f3c1e7 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -81,9 +81,7 @@ "no": "不", "ok": "确定", "open": "打开", - "pause": "暂停", "pin": "别针", - "play": "播放", "proceed": "继续", "quote": "引述", "react": "回应", @@ -2522,24 +2520,10 @@ "show_thread_filter": "显示:" }, "time": { - "about_day_ago": "约一天前", - "about_hour_ago": "约一小时前", - "about_minute_ago": "约一分钟前", "date_at_time": "%(date)s 的 %(time)s", - "few_seconds_ago": "数秒前", "hours_minutes_seconds_left": "剩余%(hours)s小时%(minutes)s分钟%(seconds)s秒", - "in_about_day": "从现在开始约一天", - "in_about_hour": "从现在开始约一小时", - "in_about_minute": "从现在开始约一分钟", - "in_few_seconds": "从现在开始数秒", - "in_n_days": "从现在开始%(num)s天", - "in_n_hours": "从现在开始%(num)s小时", - "in_n_minutes": "从现在开始%(num)s分钟", "left": "剩余%(timeRemaining)s", "minutes_seconds_left": "剩余%(minutes)s分钟%(seconds)s秒", - "n_days_ago": "%(num)s天前", - "n_hours_ago": "%(num)s小时前", - "n_minutes_ago": "%(num)s分钟前", "seconds_left": "剩余 %(seconds)s 秒", "short_days": "%(value)s 天", "short_days_hours_minutes_seconds": "%(days)s天%(hours)s小时%(minutes)s分钟%(seconds)s秒", @@ -2581,8 +2565,7 @@ "m.audio": { "error_downloading_audio": "下载音频时出错", "error_processing_audio": "处理音频消息时出错", - "error_processing_voice_message": "处理语音消息时发生错误", - "unnamed_audio": "未命名的音频" + "error_processing_voice_message": "处理语音消息时发生错误" }, "m.beacon_info": { "view_live_location": "查看实时位置" diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 5094d81d180..e0e7bb4ec1d 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -85,9 +85,7 @@ "no": "否", "ok": "確定", "open": "開啟", - "pause": "暫停", "pin": "圖釘", - "play": "播放", "proceed": "繼續", "quote": "引用", "react": "反應", @@ -2835,24 +2833,10 @@ "show_thread_filter": "顯示:" }, "time": { - "about_day_ago": "大約一天前", - "about_hour_ago": "大約一小時前", - "about_minute_ago": "大約一分鐘前", "date_at_time": "%(date)s 於 %(time)s", - "few_seconds_ago": "數秒前", "hours_minutes_seconds_left": "剩餘 %(hours)s 小時 %(minutes)s 分鐘 %(seconds)s 秒", - "in_about_day": "從現在開始大約一天", - "in_about_hour": "從現在開始大約一小時", - "in_about_minute": "從現在開始大約一分鐘", - "in_few_seconds": "從現在開始數秒鐘", - "in_n_days": "從現在開始 %(num)s 天", - "in_n_hours": "從現在開始 %(num)s 小時", - "in_n_minutes": "從現在開始 %(num)s 分鐘", "left": "剩下 %(timeRemaining)s", "minutes_seconds_left": "剩餘 %(minutes)s 分鐘 %(seconds)s 秒", - "n_days_ago": "%(num)s 天前", - "n_hours_ago": "%(num)s 小時前", - "n_minutes_ago": "%(num)s 分鐘前", "seconds_left": "剩 %(seconds)s 秒", "short_days": "%(value)sd", "short_days_hours_minutes_seconds": "%(days)s 天 %(hours)s 小時 %(minutes)s 分鐘 %(seconds)s 秒", @@ -2895,8 +2879,7 @@ "m.audio": { "error_downloading_audio": "下載音訊時發生錯誤", "error_processing_audio": "處理音訊訊息時出現問題", - "error_processing_voice_message": "處理語音訊息時發生錯誤", - "unnamed_audio": "未命名的音訊" + "error_processing_voice_message": "處理語音訊息時發生錯誤" }, "m.beacon_info": { "view_live_location": "檢視即時位置" From 945626770a3cdd8148dcbc741f4a6ae32dfcc8e4 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 17 Dec 2025 17:58:43 +0000 Subject: [PATCH 10/18] Add shared components files to localazy --- localazy.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/localazy.json b/localazy.json index 7ba5ef25423..c76774ad3f7 100644 --- a/localazy.json +++ b/localazy.json @@ -18,6 +18,18 @@ "file": "element-web.json", "excludes": ["src/i18n/strings/en_EN.json"], "lang": "${autodetectLang}" + }, + { + "pattern": "packages/shared-components/src/i18n/strings/en_EN.json", + "file": "shared-components.json", + "lang": "inherited" + }, + { + "group": "existing", + "pattern": "packages/shared-components/src/i18n/strings/*.json", + "file": "shared-components.json", + "excludes": ["packages/shared-components/src/i18n/strings/en_EN.json"], + "lang": "${autodetectLang}" } ] }, @@ -25,7 +37,7 @@ "download": { "files": [ { - "conditions": "equals: ${file}, element-web.json", + "conditions": [["equals: ${file}, element-web.json", "equals: ${file}, shared-components.json"]], "output": "src/i18n/strings/${langLsrUnderscore}.json" } ], From e11d416fd30e6ba787bdb54bce2e5d747f5fdac2 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 18 Dec 2025 14:42:02 +0000 Subject: [PATCH 11/18] Merge element web & shared component translations for the built app --- scripts/copy-res.ts | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/scripts/copy-res.ts b/scripts/copy-res.ts index e74eb6fd2dd..f964236a414 100755 --- a/scripts/copy-res.ts +++ b/scripts/copy-res.ts @@ -9,8 +9,10 @@ import _ from "lodash"; import webpack from "webpack"; import type { Translations } from "matrix-web-i18n"; -const I18N_BASE_PATH = "src/i18n/strings/"; -const INCLUDE_LANGS = [...new Set([...fs.readdirSync(I18N_BASE_PATH)])] +const EW_I18N_BASE_PATH = "src/i18n/strings/"; +const SC_I18N_BASE_PATH = "packages/shared-components/src/i18n/strings/"; + +const INCLUDE_LANGS = [...new Set([...fs.readdirSync(EW_I18N_BASE_PATH)])] .filter((fn) => fn.endsWith(".json")) .map((f) => f.slice(0, -5)); @@ -41,11 +43,17 @@ const logWatch = (path: string) => { } }; -function prepareLangFile(lang: string, dest: string): [filename: string, json: string] { - const path = I18N_BASE_PATH + lang + ".json"; +/* + * Make a JSON language file for the given language by merging all translations + * into a single file (ie. element-web and shared-components). + * Returns the filename (including hash) and JSON content. + */ +function prepareLangFile(lang: string): [filename: string, json: string] { + const ewTranslationsPath = EW_I18N_BASE_PATH + lang + ".json"; + const scTranslationsPath = SC_I18N_BASE_PATH + lang + ".json"; let translations: Translations = {}; - [path].forEach(function (f) { + [ewTranslationsPath, scTranslationsPath].forEach(function (f) { if (fs.existsSync(f)) { try { translations = _.merge(translations, JSON.parse(fs.readFileSync(f).toString())); @@ -99,7 +107,7 @@ function genLangList(langFileMap: Record): void { * and regenerating languages.json with the new filename */ function watchLanguage(lang: string, dest: string, langFileMap: Record): void { - const path = I18N_BASE_PATH + lang + ".json"; + const path = EW_I18N_BASE_PATH + lang + ".json"; // XXX: Use a debounce because for some reason if we read the language // file immediately after the FS event is received, the file contents @@ -110,7 +118,7 @@ function watchLanguage(lang: string, dest: string, langFileMap: Record { - const [filename, json] = prepareLangFile(lang, dest); + const [filename, json] = prepareLangFile(lang); genLangFile(dest, filename, json); langFileMap[lang] = filename; genLangList(langFileMap); @@ -132,7 +140,7 @@ function watchLanguage(lang: string, dest: string, langFileMap: Record>((m, l) => { - const [filename, json] = prepareLangFile(l, I18N_DEST); + const [filename, json] = prepareLangFile(l); if (!watch) { genLangFile(I18N_DEST, filename, json); } From 93730d15932fa36463de43bf3ce910501d36cd1e Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 18 Dec 2025 15:08:12 +0000 Subject: [PATCH 12/18] Use right translations for shared component tests and fix missign en_EN strings --- packages/shared-components/src/i18n/strings/en_EN.json | 8 ++++---- packages/shared-components/src/test/setupTests.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/shared-components/src/i18n/strings/en_EN.json b/packages/shared-components/src/i18n/strings/en_EN.json index 75eade371be..54aff650c12 100644 --- a/packages/shared-components/src/i18n/strings/en_EN.json +++ b/packages/shared-components/src/i18n/strings/en_EN.json @@ -5,21 +5,21 @@ "action": { "delete": "Delete", "dismiss": "Dismiss", - "explore_rooms": "action|explore_rooms", + "explore_rooms": "Explore rooms", "pause": "Pause", "play": "Play", - "search": "action|search" + "search": "Search" }, "encryption": { "pinned_identity_changed": "%(displayName)s's (%(userId)s) identity was reset. Learn more", "withdraw_verification_action": "Withdraw verification" }, "left_panel": { - "open_dial_pad": "left_panel|open_dial_pad" + "open_dial_pad": "Open dial pad" }, "room": { "status_bar": { - "history_visible": "room|status_bar|history_visible" + "history_visible": "Messages you send will be shared with new members invited to this room. Learn more" } }, "time": { diff --git a/packages/shared-components/src/test/setupTests.ts b/packages/shared-components/src/test/setupTests.ts index 43ffc0c0712..516a5028bb2 100644 --- a/packages/shared-components/src/test/setupTests.ts +++ b/packages/shared-components/src/test/setupTests.ts @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import fetchMock from "fetch-mock-jest"; import { setLanguage } from "../../src/utils/i18n"; -import en from "../../../../src/i18n/strings/en_EN.json"; +import en from "../i18n/strings/en_EN.json"; export function setupLanguageMock(): void { fetchMock From 680b90188120b3b91493d53b33c8da6e36c9b863 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 18 Dec 2025 15:46:57 +0000 Subject: [PATCH 13/18] Pull shared components translations too --- test/setup/setupLanguage.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/test/setup/setupLanguage.ts b/test/setup/setupLanguage.ts index 124ff7cbbd6..50c3beb2757 100644 --- a/test/setup/setupLanguage.ts +++ b/test/setup/setupLanguage.ts @@ -10,9 +10,12 @@ import fetchMock from "fetch-mock-jest"; import { ModuleLoader } from "@element-hq/element-web-module-api"; import * as languageHandler from "../../src/languageHandler"; -import en from "../../src/i18n/strings/en_EN.json"; -import de from "../../src/i18n/strings/de_DE.json"; +import enElementWeb from "../../src/i18n/strings/en_EN.json"; +import deElementWeb from "../../src/i18n/strings/de_DE.json"; +import enSharedComponents from "../../packages/shared-components/src/i18n/strings/en_EN.json"; +import deSharedComponents from "../../packages/shared-components/src/i18n/strings/de_DE.json"; import { ModuleApi } from "../../src/modules/Api"; +import { merge } from "lodash"; const lv = { Save: "Saglabāt", @@ -31,14 +34,20 @@ const lv = { // lv.json - mock version with few translations, used to test fallback translation export function setupLanguageMock() { + // Pull the translations from shared components too as they have + // the strings for things like `humanizeTime` which do appear in + // snnapshots. + const enTranslations = merge(enElementWeb, enSharedComponents); + const deTranslations = merge(deElementWeb, deSharedComponents); + fetchMock .get("/i18n/languages.json", { en: "en_EN.json", de: "de_DE.json", lv: "lv.json", }) - .get("end:en_EN.json", en) - .get("end:de_DE.json", de) + .get("end:en_EN.json", enTranslations) + .get("end:de_DE.json", deTranslations) .get("end:lv.json", lv); } setupLanguageMock(); From f016147a8e0cc1a86a9669ec94e66276a45c0de3 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 18 Dec 2025 15:55:23 +0000 Subject: [PATCH 14/18] Fix/disable warnings --- test/setup/setupLanguage.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/setup/setupLanguage.ts b/test/setup/setupLanguage.ts index 50c3beb2757..02f3ff34e64 100644 --- a/test/setup/setupLanguage.ts +++ b/test/setup/setupLanguage.ts @@ -8,14 +8,17 @@ Please see LICENSE files in the repository root for full details. import fetchMock from "fetch-mock-jest"; import { ModuleLoader } from "@element-hq/element-web-module-api"; +import { merge } from "lodash"; import * as languageHandler from "../../src/languageHandler"; import enElementWeb from "../../src/i18n/strings/en_EN.json"; import deElementWeb from "../../src/i18n/strings/de_DE.json"; +// Cheat and import relatively here as these aren't exported by the module (should they be?) +// eslint-disable-next-line no-restricted-imports import enSharedComponents from "../../packages/shared-components/src/i18n/strings/en_EN.json"; +// eslint-disable-next-line no-restricted-imports import deSharedComponents from "../../packages/shared-components/src/i18n/strings/de_DE.json"; import { ModuleApi } from "../../src/modules/Api"; -import { merge } from "lodash"; const lv = { Save: "Saglabāt", From 6b39f556e71c1428c661e41ee4c19c020abdc23e Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 18 Dec 2025 16:39:14 +0000 Subject: [PATCH 15/18] We can now remove the build:res call ...right? (right?) --- packages/shared-components/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared-components/package.json b/packages/shared-components/package.json index b1867a72bfe..44e8ec2320c 100644 --- a/packages/shared-components/package.json +++ b/packages/shared-components/package.json @@ -38,7 +38,7 @@ "i18n:sort": "jq --sort-keys '.' src/i18n/strings/en_EN.json > src/i18n/strings/en_EN.json.tmp && mv src/i18n/strings/en_EN.json.tmp src/i18n/strings/en_EN.json", "i18n:lint": "matrix-i18n-lint && prettier --log-level=silent --write src/i18n/strings/ --ignore-path /dev/null", "test": "jest", - "prepare": "patch-package && yarn --cwd ../.. build:res && vite build", + "prepare": "patch-package && vite build", "storybook": "storybook dev -p 6007", "build-storybook": "storybook build", "lint": "yarn lint:types && yarn lint:js", From d6e981e2b77fcec8b568158524c4d9bbba0d296b Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 18 Dec 2025 17:31:45 +0000 Subject: [PATCH 16/18] Remove webpack import for languages index ..and just load it using a relative path which we do for the individual language files and also did anyway for the index because even in non-test it was an object, not a string, so we always usesd the 'test' code path. --- packages/shared-components/src/utils/i18n.tsx | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/shared-components/src/utils/i18n.tsx b/packages/shared-components/src/utils/i18n.tsx index 38bf7bab8bd..d3cf3960878 100644 --- a/packages/shared-components/src/utils/i18n.tsx +++ b/packages/shared-components/src/utils/i18n.tsx @@ -25,11 +25,11 @@ import React from "react"; import { KEY_SEPARATOR } from "matrix-web-i18n"; import counterpart from "counterpart"; -// @ts-ignore - $webapp is a webpack resolve alias pointing to the output directory, see webpack config -import webpackLangJsonUrl from "$webapp/i18n/languages.json"; - export { KEY_SEPARATOR, normalizeLanguageKey, getNormalizedLanguageKeys } from "matrix-web-i18n"; +// Path where we load language files from (the index plus translations for each language) +// The filename is appended to this, so a relative path here will result in a fetch for +// a relative URL. const i18nFolder = "i18n/"; // Control whether to also return original, untranslated strings @@ -419,13 +419,7 @@ async function getLanguage(langPath: string): Promise { } export async function getLangsJson(): Promise { - let url: string; - if (typeof webpackLangJsonUrl === "string") { - // in Jest this 'url' isn't a URL, so just fall through - url = webpackLangJsonUrl; - } else { - url = i18nFolder + "languages.json"; - } + const url = i18nFolder + "languages.json"; const res = await fetch(url, { method: "GET" }); From cd7e907f31619896dd27f754c73f8431fc3f325e Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 19 Dec 2025 14:22:05 +0000 Subject: [PATCH 17/18] Make the storybook language selector work ...without referring to the parent app's files --- .../.storybook/languageAddon.tsx | 8 ++-- packages/shared-components/.storybook/main.ts | 47 +++++++++++++++++-- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/packages/shared-components/.storybook/languageAddon.tsx b/packages/shared-components/.storybook/languageAddon.tsx index e1483738f53..b1474bd3080 100644 --- a/packages/shared-components/.storybook/languageAddon.tsx +++ b/packages/shared-components/.storybook/languageAddon.tsx @@ -10,16 +10,14 @@ import { WithTooltip, IconButton, TooltipLinkList } from "storybook/internal/com import React from "react"; import { GlobeIcon } from "@storybook/icons"; -// We can't import `shared/i18n.tsx` directly here. -// The storybook addon doesn't seem to benefit the vite config of storybook and we can't resolve the alias in i18n.tsx. -import json from "../../../webapp/i18n/languages.json"; -const languages = Object.keys(json).filter((lang) => lang !== "default"); +const languages = JSON.parse(process.env.STORYBOOK_LANGUAGES); /** * Returns the title of a language in the user's locale. */ function languageTitle(language: string): string { - return new Intl.DisplayNames([language], { type: "language", style: "short" }).of(language) || language; + const normalisedLang = language.toLowerCase().replace("_", "-"); + return new Intl.DisplayNames([normalisedLang], { type: "language", style: "short" }).of(normalisedLang) || language; } export const languageAddon: Addon = { diff --git a/packages/shared-components/.storybook/main.ts b/packages/shared-components/.storybook/main.ts index efc35752b51..322db29d954 100644 --- a/packages/shared-components/.storybook/main.ts +++ b/packages/shared-components/.storybook/main.ts @@ -7,12 +7,15 @@ Please see LICENSE files in the repository root for full details. import type { StorybookConfig } from "@storybook/react-vite"; import path from "node:path"; +import fs from "node:fs"; import { nodePolyfills } from "vite-plugin-node-polyfills"; import { mergeConfig } from "vite"; +// Get a list of available languages so the language selector can display them at runtime +const languages = fs.readdirSync("src/i18n/strings").map((f) => f.slice(0, -5)); + const config: StorybookConfig = { stories: ["../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], - staticDirs: ["../../../webapp"], addons: ["@storybook/addon-docs", "@storybook/addon-designs", "@storybook/addon-a11y"], framework: "@storybook/react-vite", core: { @@ -29,8 +32,42 @@ const config: StorybookConfig = { $webapp: path.resolve("../../webapp"), }, }, - // Needed for counterpart to work - plugins: [nodePolyfills({ include: ["process", "util"] })], + plugins: [ + // Needed for counterpart to work + nodePolyfills({ include: ["process", "util"] }), + { + name: "language-middleware", + configureServer(server) { + server.middlewares.use((req, res, next) => { + if (req.url === "/i18n/languages.json") { + // Dynamically generate a languages.json file based on what files are available + const langJson = {} as Record; + for (const lang of languages) { + const normalizedLanguage = lang.toLowerCase().replace("_", "-"); + const languageParts = normalizedLanguage.split("-"); + if (languageParts.length === 2 && languageParts[0] === languageParts[1]) { + langJson[languageParts[0]] = `${lang}.json`; + } else { + langJson[normalizedLanguage] = `${lang}.json`; + } + } + + res.setHeader("Content-Type", "application/json"); + res.end(JSON.stringify(langJson)); + } else if (req.url?.startsWith("/i18n/")) { + // Serve the individual language files, which annoyingly can't be a simple + // static dir because the directory structure in src doesn't match what + // the app requests. + const langFile = req.url.split("/").pop(); + res.setHeader("Content-Type", "application/json"); + fs.createReadStream(`src/i18n/strings/${langFile}`).pipe(res); + } else { + next(); + } + }); + }, + }, + ], server: { allowedHosts: ["localhost", ".docker.internal"], }, @@ -42,5 +79,9 @@ const config: StorybookConfig = { url: "https://element-hq.github.io/compound-web/", }, }, + env: (config) => ({ + ...config, + STORYBOOK_LANGUAGES: JSON.stringify(languages), + }), }; export default config; From a932ec39fd8b957aa089546a652ce09833d24b31 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 19 Dec 2025 15:02:05 +0000 Subject: [PATCH 18/18] Revert unnecessary yarn lock change --- yarn.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index b67a699e9d9..f1bd1515dc3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4212,7 +4212,7 @@ classnames "^2.5.1" vaul "^1.0.0" -"@vector-im/matrix-wysiwyg-wasm@link:../../Library/Caches/Yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm": +"@vector-im/matrix-wysiwyg-wasm@link:../../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm": version "0.0.0" uid "" @@ -4221,7 +4221,7 @@ resolved "https://registry.yarnpkg.com/@vector-im/matrix-wysiwyg/-/matrix-wysiwyg-2.40.0.tgz#53c9ca5ea907d91e4515da64f20a82e5586b882c" integrity sha512-8LRFLs5PEKYs4lOL7aJ4lL/hGCrvEvOYkCR3JggXYXDVMtX4LmfdlKYucSAe98pCmqAAbLRvlRcR1bTOYvM8ug== dependencies: - "@vector-im/matrix-wysiwyg-wasm" "link:../../Library/Caches/Yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm" + "@vector-im/matrix-wysiwyg-wasm" "link:../../../.cache/yarn/v6/npm-@vector-im-matrix-wysiwyg-2.40.0-53c9ca5ea907d91e4515da64f20a82e5586b882c-integrity/node_modules/bindings/wysiwyg-wasm" "@vitest/expect@3.2.4": version "3.2.4"